АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Приклади програм

Читайте также:
  1. Creating a VHDL Source (создание файла, содержащего текст программы на языке VHDL).
  2. II-й этап: Гала – концерт 25 июня 2013года. В программе празднования Дня города.
  3. II. Требования к структуре образовательной программы дошкольного образования и ее объему
  4. III. Обучение по образовательным программам
  5. III. ПРОГРАМА НАВЧАЛЬНОЇ ТА ВИРОБНИЧОЇ ПРАКТИКИ В ОРГАНАХ ДЕРЖАВНОЇ ВИКОНАВЧОЇ СЛУЖБИ УКРАЇНИ
  6. III. Требования к условиям реализации основной образовательной программы дошкольного образования
  7. IV ПРОГРАМА ПРАКТИКИ
  8. IV. Программа соревнований
  9. IV. Требования к результатам освоения основной образовательной программы дошкольного образования
  10. SWOT-анализ раздела «Цели образовательной программы»
  11. USB программатор ЭБУ.
  12. V. КРОССВОРД «ПУТЕШЕСТВИЕ ПО ТЕАТРАЛЬНОЙ ПРОГРАММКЕ»

Приклад 1. Дано натуральне число n і масив з n цілих чисел (). Чи правда, що вміст масиву однаково читається в прямому і зворотному напрям­ках?

Розв’язок.

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int n; // Кількість елементів масиву
int a[20]; // Масив
cout << "n = ";
cin >> n;
for (int i = 0; i < n; i++)
{
cout << "a[" << i << "] = ";
cin >> *(a + i); // Доступ до окремих елементів масиву
// здійснюється додаванням до вказівника цілого
} // числа і розіменуванням
bool flag = true;
// Вказівники pt1 і pt2 встановлюються на початок
for (int *pt1 = a, *pt2 = a + n - 1; // і кінець масиву
pt1 < pt2; pt1++, pt2--) // і зсуваються назустріч
// один одному, поки виконується умова pt1 < pt2
if (*pt1!= *pt2) // Порівняння двох елементів масиву
{
flag = false;
break;
}
if (flag)
cout << "Yes";
else
cout << "No";
cout << "\nPress any key";
_getch();
return 0;
}

Приклад 2. Дано натуральне число () і дійсні числа , , …, , , , …, . Обчислити .

Розв’язок.

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int n; // Кількість елементів кожного з масивів
double v[100], w[100]; // Масиви
cout << "n = ";
cin >> n;
for (double *pt = v; pt < v + n; pt++) // Цикл зсуву
{ // вказівника pt від першого елемента масиву v
cout << "v[" << pt - v << "] = "; // до останнього
cin >> *pt; // з доступом до окремих елементів масиву
} // розіменуванням вказівника pt
for (double *pt = w; pt < w + n; pt++) // Аналогічний
{ // цикл для масиву w
cout << "w[" << pt - w << "] = ";
cin >> *pt;
}
double d = 1;
// Вказівник ptv - на перший елемент масиву v,
// а вказівник ptw - на останній елемент масиву w
for (double *ptv = v, *ptw = w + n - 1;
ptv < v + n; // Поки ptv усередині масиву v
ptv++, ptw--) // Зсуваємо вказівники
d *= *ptv + *ptw; // Доступ за адресами
cout << "Result = " << d;
cout << "\nPress any key";
_getch();
return 0;
}

Приклад 3. Дано натуральне число n () і масив з n дійсних чисел. Вивести його вміст, починаючи з першого додатного елемента і закінчуючи останнім від’ємним (з урахуванням напряму перегляду при виведенні).

Розв’язок.

#include <iostream>
using namespace std;
int main()
{
int n;
double a[20], *Pt1 = NULL, *Pt2 = NULL;
cout << "n = ";
cin >> n;
for (int i = 0; i < n; i++) // Звичайне введення масиву
{
cout << "a[" << i << "] = ";
cin >> a[i];
}
for (int i = 0; i < n; i++)
if (a[i] > 0)
{
Pt1 = &a[i]; // Pt1 отримує адресу першого
break; // додатного елемента; завершуємо цикл
}
if (Pt1) // Перевірка умови Pt1!= NULL
{ // Якщо додатні елементи є, шукаємо останній з них
for (int i = n - 1; i >= 0; i--)
if (a[i] > 0)
{
Pt2 = &a[i]; // Pt2 отримує адресу останнього
break; // додатного елемента; завершуємо цикл
}
if (Pt2)
{
cout << "Result\n";
if (Pt2 > Pt1)
// Нижче Pt1 сприймається як ім'я масиву,
// що містить Pt2 - Pt1 + 1 елементів
// зі звичайним індексуванням (від 0),
// тобто ілюструється операція
// індексування вказівника
for (int i = 0; i < Pt2 - Pt1 + 1; i++)
cout << Pt1[i] << '\t';
else // Тут вже Pt2 сприймається як ім'я
// масиву, що містить Pt1 – Pt2 + 1 елементів
for (int i = Pt1 - Pt2; i >= 0; i--)
cout << Pt2[i] << '\t';
cout << endl;
}
else
cout << "There are no negative numbers \n";
}
else
cout << "There are no positive numbers\n";
system("pause");
return 0;
}

Приклад 4. Дано натуральне число n () і послідовність дійсних чисел , , …, . Упорядкувати члени послідовності за незростанням мето­дом «занурення» («камінчика»). Сутність методу полягає в наступному: для будь-якого значення k з ряду 1, 2,..., n – 1 послідовно розглядаються всі члени , j = 1, 2,..., k, і при виконанні умови члени і міняються міс­цями з переходом до нового значення j незалежно від того, переставлялися числа чи ні.

Розв’язок.

#include <iostream>

using namespace std;
int main()
{
int n;
double a[100], *Pt;
cout << "n = ";
cin >> n;
for (int j = 0; j < n; j++) // Звичайне введення масиву
{
cout << "a[" << j + 1 << "] = ";
cin >> a[j];
}
for (int k = 0; k < n - 1; k++)
{ // На кожному кроці вказівник
Pt = a; // встановлюємо на початок масиву
for (int j = 0; j < n - 1 - k; j++)
{
if (*Pt > *(Pt + 1))
{
double d = *(Pt + 1);
*(Pt + 1) = *Pt;
*Pt = d;
}
Pt++; // Зсув вказівника на один елемент
}
}
cout << "Result\n";
for (int j = 0; j < n; j++) // Виведення масиву
cout << "a[" << j + 1 << "] = " << a[j] << '\n';
system("pause");
return 0;

}

Приклад 5. Дано натуральні числа m, n () і два впорядкованих за неубуванням дійсних масиви, які містять відповідно m і n елементів. Пере­писати вміст цих масивів у третій масив, забезпечивши неубування вмісту ре­зультуючого масиву.

Розв’язок.

#include <iostream>

using namespace std;
int main()
{
int m, n;
double a[100], b[100], c[200];
cout << "Count of array a: ";
cin >> m;
for (int j = 0; j < m; j++) // Звичайне введення масиву a
{
cout << "a[" << j << "] = ";
cin >> a[j];
}
cout << "Count of array b: ";
cin >> n;
for (int j = 0; j < n; j++) // Звичайне введення масиву b
{
cout << "b[" << j << "] = ";
cin >> b[j];
}
double *p_a = a, *p_b = b, *p_c = c;
for (int j = 0; j < m + n; j++)
{
if (p_a == a + m) // Чи досягнутий кінець масиву a?
{
*p_c = *p_b; // Нижче тричі замість трьох опе-
p_b++; // раторів, подібних тим, що записані тут,
p_c++; // використовується один оператор
}
else
if (p_b == b + n) // Чи вичерпався масив b?
*p_c++ = *p_a++;
else // Обидва масиви ще не вичерпалися
if (*p_a < *p_b)
*p_c++ = *p_a++;
else
*p_c++ = *p_b++;
}
cout << "Result\n";
for (int j = 0; j < m + n; j++) // Виведення масиву c
cout << "c[" << j << "] = " << c[j] << '\n';
system("pause");
return 0;
}

Приклад 6. Дано натуральне число () і послідовність з n дійс­них чисел. Знайти в ній найдовшу підпослідовність, що містить тільки додатні числа.

Розв’язок.

#include <iostream>
using namespace std;
int main()
{
int n;
double a[100];
cout << "Count of array a: ";
cin >> n;
for (int j = 0; j < n; j++) // Звичайне введення масиву a
{
cout << "a[" << j << "] = ";
cin >> a[j];
}
double *p_max = NULL, *p = a, *p1;
int Len = 0; // Початкова довжина підпослідовності
while (true)
{
while (p < a + n && *p <= 0) // Пропускаємо недодатні
p++; // числа
p1 = p; // Запам’ятовуємо адресу першого додатного
while (p < a + n && *p > 0) // Йдемо по додатним
p++;
if (p - p1 > Len)
{
Len = p - p1;
p_max = p1;
}
if (p == a + n) // Якщо вказівник вийшов за масив,
break; // закінчуємо обробку масиву
}
cout << "Result:\n";
if (p_max)
for (int j = 0; j < Len; j++)
cout << p_max[j] << '\t'; // Індексування від 0
else
cout << "There are no positive numbers";
cout << '\n';
system("pause");
return 0;
}

Приклад 7. Дано натуральне число n (), дійсне число w і масив з n дійсних чисел. Видалити з масиву елемент, що є найближчим до числа w.

#include <iostream>

using namespace std;
int main()
{
int n;
double a[100], w;
cout << "Count of array a: ";
cin >> n;
for (int j = 0; j < n; j++) // Звичайне введення масиву a
{
cout << "a[" << j << "] = ";
cin >> a[j];
}
cout << "w = ";
cin >> w;
double *p_res = &a[0];
double Len = fabs(w - *p_res);
for (double *p = a + 1; p < a + n; p++)
if (fabs(w - *p) < Len)
{
Len = fabs(w - *p);
p_res = p;
}
for (double *p = p_res + 1; p < a + n; p++)
*(p - 1) = *p;
n--;
cout << "Result:\n";
if (n!= 0)
for (double *p = a; p < a + n; p++)
cout << *p << '\t';
else // У масиві був всього один елемент. Він видалений
cout << "Empty";
cout << '\n';
system("pause");
}


1 | 2 | 3 | 4 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.008 сек.)