
Int main()
{
const int N = 10;
int M=0;
int a[N];
int tmp;
for (int j = 0; j < N; j++)
{
cout << a[j] << " " ;
}
cout << endl;
for(int i = 0; i < N-1; i++)
{
for(int j = 0; j < N-1; j++)
{
if (a[j] > a[j+1])
{
tmp = a[j];
a[j]=a[j+1];
a[j+1]=tmp;
M=M+1;
}
}
}
for (int j = 0; j < N-1; j++)
{
cout << a[j] << " " ;
}
cout << endl;
cout << M << endl;
return 0;
}
Листинг результатов:
Рис. 15 – результат работы алгоритма для случайного массива
Другие задачи:
Минимальное, максимальное и среднее значения массива
#include <iostream>
#include <math.h>
using namespace std;
Int main()
{
setlocale(LC_ALL, "Rus");
int n, a, b = 0, c = 0, d, j, k;
int x[10000];
cout << "";
cin >> n;
for (b = 0; b < n; ++b)
{
cout << "";
cin >> a;
x[b] = a;
c = c + x[b];
if (x[b]<x[b - 1])
{
d = x[b] - x[b - 1];
x[b] = x[b] - d;
x[b - 1] = x[b - 1] + d;
}
}
j = x[n-1];
k = x[0];
c = c / n;
cout << c << " среднее; ";
cout << j << " максимальное; ";
cout << k << " минимальное. ";
return 0;
}
Рис. 16
Замена символа в строке
#include <iostream>
#include <math.h>
using namespace std;
Int main()
{
setlocale(LC_ALL, "Rus");
char s[80];
int i;
cout << "Введите строку: ";
cin >> s;
i = 0;
while (s[i] != '\0')
{
if (s[i] == 'A')
s[i] = 'D';
i++;
}
cout << s;
return 0;
}
Рис. 17
Подсчет символов в строке функцией strlen
#include <iostream>
#include <math.h>
#include <string.h>
using namespace std;
Int main()
{
int len;
char s[] = "123456789";
len = strlen(s);
cout << len;
return 0;
}
Рис. 18
Проверка строк на идентичность функцией strcmp
#include <iostream>
#include <math.h>
#include <string.h>
using namespace std;
Int main()
{
setlocale(LC_ALL, "Rus");
char s1[] = "12345";
char s2[] = "54321";
if (0 == strcmp(s1, s2))
cout << "Идентичны";
else cout << "Неидентичны";
return 0;
}
Рис. 19
Указатели и функции:
Указатель — это переменная, значением которой является адрес ячейки памяти. То есть указатель ссылается на блок данных из области памяти, причём на самое его начало.
Указатели используются для:
- Передачи по ссылке данных. Это ускоряет процесс обработки данных (особенно если объём большой), так как их не надо копировать, как при передаче по значению.
- Организации динамического распределения памяти. Например, при объявлении массива не нужно ограничивать его размер, так как программист заранее не может знать, какого размера нужен массив тому или иному пользователю.
Любой указатель необходимо объявить перед использованием, как и любую переменную. Принцип объявления указателей такой же, как и принцип объявления переменных, отличие заключается только в том, что перед именем ставится символ звёздочки *.
Чтобы получить значение, записанное в области, на которое ссылается указатель, нужно воспользоваться операцией разыменования указателя (*).
Пользователь указывает количество членов массива и то, чему они равны - программа выдает их через указатели:
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;