Показаны сообщения с ярлыком функции. Показать все сообщения
Показаны сообщения с ярлыком функции. Показать все сообщения

24 апреля 2016 г.

Дан двумерный массив размерностью 5х5, заполненный случайными числами из диапазона от 0 до 100. Переформировать массив таким образом, чтобы её столбцы располагались по убыванию их поэлементных сумм.

void InitAr(int A[][5],int size) {

for (size_t i = 0; i < size; i++) {
for (size_t j = 0; j < size; j++) {
A[i][j] = rand() % 100;
}
}

}




void ShowAr(int A[][5], int size) {

for (size_t i = 0; i < size; i++) {
for (size_t j = 0; j < size; j++) {
cout.width(3);
cout << A[i][j];
}
cout << endl;
}

}




void SummElem(int A[][5], int size, int S[]) {

for (size_t i = 0; i < size; i++)
for (size_t j = 0; j < size; j++)
S[j] += A[i][j];

}




void ShowSummElem(int S[], int size) {

for (size_t i = 0; i < size; i++) {
cout.width(4);
cout << S[i];
}
cout << endl << endl;

}




void ChangeColumns(int A[][5], int size, int x1,int x2) {

for (size_t i = 0; i < size; i++) {
for (size_t j = 0; j < size; j++) {
int tmp = A[i][x1];
A[i][x1] = A[i][x2];
A[i][x2] = tmp;
}
}

}




void SortArray(int A[][5], int size,int S[]) {

int tmp;
for (int i = 0; i < size; i++) {
for (int j = 1; j < size - i; j++) {
if (S[j - 1] > S[j]) {
tmp = S[j];
S[j] = S[j - 1];
S[j - 1] = tmp;
ChangeColumns(A, size, j, j-1);
}
}
}

}




void main() {

srand(time(0));
const int size = 5;
int A[size][size]{};
InitAr(A, size);
ShowAr(A, size);
int SUMM[size]{};
SummElem(A, size, SUMM);
ShowSummElem(SUMM,size);
SortArray(A, size, SUMM);
ShowAr(A, size);
system("pause");

}

21 сентября 2015 г.

Написать функцию, которая циклически сдвигает одномерный массив вправо или влево на указанное число позиций. Сдвиг также должен быть кольцевым, то есть те элементы, которые уходят вправо или влево за пределы массива, должны помещаться с другого его конца.



void init(int A[], int size);
void out(int A[], int size);
void sdvig(int A[], int size, int kol, int napr);

void main()
{
setlocale(LC_ALL, "Russian");

int size, kol, napr;

cout << "Введите размер массива: ";
cin >> size;
int* mass = new int [size];
init(mass, size);
out(mass, size);
cout << "Функция, которая циклически сдвигает одномерный массив вправо или влево на указанное число позиций";
cout << "\nВведите количество позиций: ";
cin >> kol;
do
{
cout << "\nВведите направление: 1 - влево, 2 - вправо\n";
cin >> napr;
} while (napr != 1 && napr != 2);
sdvig(mass, size, kol, napr);
out(mass, size);
delete[] mass;
}

void sdvig(int A[], int size, int kol, int napr)
{
if (napr == 1)
{
for (int i = 0; i <kol; i++)
{
int tmp = A[0];
for (int j = 1; j <size; j++)
{
A[j - 1] = A[j];
}
A[size - 1] = tmp;
}
}
if (napr == 2)
{
for (int i = 0; i < kol; i++)
{
int tmp = A[size-1];
for (int j = size-1; j > 0; j--)
{
A[j] = A[j-1];
}
A[0] = tmp;
}
}
}

void init(int *a, int size)
{
srand(time(NULL));
for (int i = 0; i < size; a++, i++)
*a = rand() % 99 + 1;
}

void out(int *a, int size)
{
cout << "\n";
for (int i = 0; i < size; a++, i++)
cout << *a << " ";
cout << "\n";
}

21 июня 2015 г.

обновлённый пример с операторами new и delete

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
void main(){
srand(time(NULL));
int size;
int * dar;
// запрос размера массива с клавиатуры
cout << "Enter size:\n";
cin >> size;
//выделение памяти под массив с количеством элементов size
dar = new int[size];
if (!dar){
cout << "Sorry, error!!!";
exit(0);// функция организует выход из программы
}
// заполнение массива и показ на экран
for (int i = 0; i<size; i++){
dar[i] = rand() % 100;
cout << dar[i] << "\t";
}
cout << "\n\n";
// освобождение памяти
delete[]dar;
}

Операция выделения памяти new

При выделении памяти объект можно инициализировать:
int *ip = new int(3);

Можно динамически распределить память и под массив:
double *mas = new double [50];

Далее с этой динамически выделенной памятью можно работать как с обычным массивом:


#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
void main(){
srand(time(NULL));
int size;
int * dar;
// запрос размера массива с клавиатуры
cout << "Enter size:\n";
cin >> size;
//выделение памяти под массив с количеством элементов size
dar = new int[size];
if (!dar){
cout << "Sorry, error!!!";
exit(0);// функция организует выход из программы
}
// заполнение массива и показ на экран
for (int i = 0; i<size; i++){
dar[i] = rand() % 100;
cout << dar[i] << "\t";
}
cout << "\n\n";
}

Нахождение максимального элемента в массиве и замена его на нуль

#include <iostream>
using namespace std;
Функция определяет ссылку на элемент
массива с максимальным значением.
int &rmax(int n, int d[])
{
int im = 0;
for (int i = 1; i<n; i++)
im = d[im]>d[i] ? im : i;
return d[im];
}

void main()
{
int x[] = { 10, 20, 30, 14 };
int n = 4;
cout << "\nrmax(n,x) = " << rmax(n, x) << "\n";
rmax(n, x) = 0;
for (int i = 0; i<n; i++)
cout << "x[" << i << "]=" << x[i] << " ";
cout << "\n";
}

Ссылки в качестве результатов функций. Заполнение двумерного массива одинаковыми числами.

#include <iostream>
using namespace std;
int a[10][2];
void main()
{
int & rf(int index); //Прототип функции.
int b;
cout << "Fill array.\n";
for (int i = 0; i<10; i++)
{
cout << i + 1 << " element: ";
cin >> b;
a[i][0] = b;
rf(i) = b;
}
cout << "Show array.\n";
cout << "1-st column 2-nd column" << "\n";
for (int i = 0; i<10; i++)
cout << a[i][0] << "\t\t" << rf(i) << "\n";
}

int &rf(int index)
{
return a[index][1]; //Возврат ссылки на элемент массива.
}

Здесь объявляется глобальный двумерный массив a, состоящий из целых чисел.
В начале функции main() содержится прототип ссылочной функции rf(),
которая возвращает ссылку на целое значение второго столбца массива a,
которое однозначно идентифицируется параметром-индексом index.
Так как функция rf() возвращает ссылку на целое значение, то имя функции
может оказаться слева от оператора присваивания, что продемонстрировано в строке: rf(i) = b;

18 июня 2015 г.

По данному натуральному n вычислите сумму 1×2+2×3+...+(n-1)×n.

int sos(int digit);

void main()
{
setlocale(LC_ALL, "Russian");
int a, b;
do
{
cout<<"По данному натуральному n вычислите сумму произведений соседних чисел 1*2+2*3+...+(n-1)*n.\n";
cout<<"\nВведите число:";
cin>>a;
cout<<"Сумма кубов равна "<<sos(a)<<"\n";
cout<<"Если хотите продолжить, нажмите 1:";
cin>>a;
}
while(a==1);
}

int sos(int digit)
{
int res=0;
for(int i=2;i<=digit;i++)
res+=(i-1)*i;
return res;
}

Дано натуральное число n. Напечатайте все n-значные нечетные натуральные числа в порядке убывания.

int cub(int digit);

void main()
{
setlocale(LC_ALL, "Russian");
int a;
do
{
cout<<"По данному натуральном n вычислите сумму кубов 1*1*1+2*2*2+3*3*3+...+n*n*n. .\n";
cout<<"\nВведите число:";
cin>>a;
cout<<"Сумма кубов равна "<<cub(a)<<"\n";
cout<<"Если хотите продолжить, нажмите 1:";
cin>>a;
}
while(a==1);
}

int cub(int digit)
{
int res=0;
for(int i=0;i<=digit;i++)
res+=i*i*i;
return res;
}

Даны два целых числа A и В. Выведите все числа от A до B включительно, в порядке возрастания, если A < B, или в порядке убывания в противном случае.

void les(int a, int b);

void main()
{
setlocale(LC_ALL, "Russian");
int a, b;
do
{
cout<<"Даны два целых числа A и В. Выведите все числа от A до B включительно, \nв порядке возрастания, если A < B, или в порядке убывания в противном случае\n";
cout<<"\nВведите первое число:";
cin>>a;
cout<<"\nВведите второе число:";
cin>>b;
les(a,b);
cout<<"Если хотите продолжить, нажмите 1:";
cin>>a;
}
while(a==1);

}

void les(int a, int b)
{
if (a<b)
for(;a<=b;a++)
cout<<a<<" ";
else
for(;a>=b;a--)
cout<<a<<" ";
cout<<"\n";
}

17 июня 2015 г.

Даны два массива : А[n] и B[m]. Необходимо создать третий массив, в котором нужно собрать: 1) Элементы обоих массивов; 2) Общие элементы двух массивов; 3) Элементы массива A, которые не включаются в B; 4) Элементы массива B, которые не включаются в A; 5) Элементы массивов A и B, которые не являются общими для них (то есть объединение результатов двух предыдущих вариантов).

void init(int *a, int size);
void out(int *a, int size);
void out_c(int *a, int size);

void main()
{
setlocale(LC_ALL, "Russian");
int digit;

const int size_a = 15;
int a[size_a];
int *pa;
pa = &a[0];
//^ первый массив с указателем
const int size_b = 15;
int b[size_b];
int *pb;
pb = &b[0];
//^ второй массив с указателем
const int size_c = size_a + size_b;
int c[size_c];
int *pc;
pc = &c[0];
//^ третий массив с указателем
int tmp = 0;
do
{
init(a, size_a);
out(a, size_a);
Sleep(1000);//необходимая пауза для инициализации второго массива (необходимо подключить библиотеку windows.h)
init(b, size_b);
out(b, size_b);

cout << "Эта программа создаёт третий массив, в котором собирает:\n";
cout << "1 - Элементы обоих массивов;\n";
cout << "2 - Общие элементы двух массивов;\n";
cout << "3 - Элементы массива A, которые не включаются в B;\n";
cout << "4 - Элементы массива B, которые не включаются в A;\n";
cout << "5 - Элементы массивов A и B, коотрые не являются общими для них(то есть объединение результатов двух предыдущих вариантов)\n\n";
cin >> digit;
switch (digit){
case 1:
for (pc = c, pa = a; pc < c + size_a + size_b; pc++, pa++)
*pc = *pa;
for (pc = c + size_a, pb = b; pc < c + size_a + size_b; pc++, pb++)
*pc = *pb;
cout << "\nРезультат:\n\n";
out(c, size_c);
break;
case 2:
pc = c;
for (pa = a; pa < a + size_a; pa++){
for (pb = b; pb <b + size_b; pb++){
if (*pa == *pb){
*pc = *pa;
pc++;
}
}
}
cout << "\nРезультат:\n\n";
out_c(c, size_c);
break;
case 3:
pc = c;
tmp = 0;
for (pa = a; pa < a + size_a; pa++){
for (pb = b; pb <b + size_b; pb++){
if (*pa == *pb)
tmp++;
}
if (tmp == 0){
*pc = *pa;
pc++;
}
tmp = 0;
}
cout << "\nРезультат:\n\n";
out_c(c, size_c);
break;
case 4:
pc = c;
tmp = 0;
for (pb = b; pb <b + size_b; pb++){
for (pa = a; pa < a + size_a; pa++){
if (*pb == *pa)
tmp++;
}
if (tmp == 0){
*pc = *pb;
pc++;
}
tmp = 0;
}
cout << "\nРезультат:\n\n";
out_c(c, size_c);
break;
case 5:
pc = c;
tmp = 0;
for (pa = a; pa < a + size_a; pa++){
for (pb = b; pb <b + size_b; pb++){
if (*pa == *pb)
tmp++;
}
if (tmp == 0){
*pc = *pa;
pc++;
}
tmp = 0;
}
for (pb = b; pb <b + size_b; pb++){
for (pa = a; pa < a + size_a; pa++){
if (*pb == *pa)
tmp++;
}
if (tmp == 0){
*pc = *pb;
pc++;
}
tmp = 0;
}
cout << "\nРезультат:\n\n";
out_c(c, size_c);
break;
}
cout << "\nЕсли хотите продолжить, нажмите 1:";
cin >> digit;
} while (digit == 1);
}

void init(int *a, int size)
{
srand(time(NULL));
for (int i = 0; i < size; a++, i++)
*a = rand() % 20 + 1;
}

void out(int *a, int size)
{
cout << "\n";
for (int i = 0; i < size; a++, i++)
cout << *a << " ";
cout << "\n";
}

void out_c(int *a, int size)
{
cout << "\n";
for (int i = 0; i < size; a++, i++)
if (*a>0) cout << *a << " ";
cout << "\n";
}

Даны два массива, упорядоченных по возрастанию: А[n] и B[m]. Сформируйте массив C[n+m], состоящий из элементов массивов А и В, упорядоченный по возрастанию

void sort(int *a, int size);
void init(int *a, int size);
void out(int *a, int size);


void main()
{
setlocale(LC_ALL, "Russian");
int digit;
const int size_a = 15;
int a[size_a];
int *pa;
pa = &a[0];
//^ первый массив с указателем
const int size_b = 15;
int b[size_b];
int *pb;
pb = &b[0];
//^ второй массив с указателем
const int size_c = size_a + size_b;
int c[size_c];
int *pc;
pc = &c[0];
//^ третий массив с указателем
do
{
cout << "Эта программа формирует упорядоченный массив из двух массивов\n";
cout << "\nИнициализация первого массива:";
init(a, size_a);
out(a, size_a);
Sleep(1000);//необходимая пауза для инициализации второго массива (необходимо подключить библиотеку windows.h)
cout << "\nИнициализация второго массива:";
init(b, size_b);
out(b, size_b);
sort(a, size_a);
sort(b, size_b);
cout << "\nРезультат:\n\n";
cout << "Отсортированный первый массив:";
out(a, size_a);
cout << "\nОтсортированный второй массив:";
out(b, size_b);
//заполнение третьего массива значениями первого и второго массивов
for (pc=c, pa=a; pc < c+size_a+size_b; pc++, pa++)
{
*pc = *pa;
}
for (pc = c+size_a, pb = b; pc < c + size_a + size_b; pc++, pb++)
{
*pc = *pb;
}
sort(c, size_c);
cout << "\nОтсортированный объединённый массив:";
out(c, size_c);
cout << "\nЕсли хотите продолжить, нажмите 1:";
cin >> digit;
} while (digit == 1);
}


void init(int *a, int size)
{
srand(time(NULL));
for (int i = 0; i < size; a++, i++)
*a = rand() % 100 + 1;
}


void out(int *a, int size)
{
cout << "\n";
for (int i = 0; i < size; a++, i++)
cout << *a << " ";
cout << "\n";
}


void sort(int *a, int size)
{
int x, i, j;
for (i = 0; i<size; i++)
{
for (j = size - 1; j > i; j--)
{
if (*(a+j - 1) > *(a+j))
{
x = *(a + j - 1);
*(a + j - 1) = *(a + j);
*(a + j) = x;
}
}
}
}

Дан массив целых чисел. Воспользовавшись указателями, поменяйте местами элементы массива с четными и нечетными индексами(т.е.те элементы массива, которые стоят на четных местах, поменяйте с элементами, которые стоят на нечетных местах)

void zamena(int *a, int size);
void init(int *a, int size);
void out(int *a, int size);


void main()
{
setlocale(LC_ALL, "Russian");
int digit;
const int size = 15;
int b[size];
int *A;//инициализация указателя
A = &b[0];//присваивание приводит к тому, что A указывает на нулевой элемент массива b. Это означает, что A содержит адрес элемента b[0].
do
{
cout << "Эта программа меняет местами элементы массива с четными и нечетными индексами\n";
init(A, size);
out(A, size);
zamena(A, size);
out(A, size);
cout << "Если хотите продолжить, нажмите 1:";
cin >> digit;
} while (digit == 1);
}


void zamena(int *a, int size)
{
for (int i = 0; i < size; a++, i++)
{
if (i % 2 != 0)
{
int tmp = *a;
*a = *(a - 1);
*(a - 1) = tmp;
}
}
}


void init(int *a, int size)
{
srand(time(NULL));
for (int i = 0; i < size; a++, i++)
*a = rand() % 100 + 1;
}


void out(int *a, int size)
{
cout << "\n";
for (int i = 0; i < size; a++, i++)
cout << *a << " ";
cout << "\n";
}

21 мая 2015 г.

"Ханойские" башни.

/*
Легенда гласит, что где-то в Ханое находится храм, в котором размещена следующая конструкция:
на основании укреплены 3 алмазных стержня, на один из которых при сотворении мира Брахма
нанизал 64 золотых диска с отверстием посередине, причем внизу оказался самый большой диск,
на нем – чуть меньший и так далее, пока на верхушке пирамиды не оказался самый маленький диск.
Жрецы храма обязаны перекладывать диски по следующим правилам:

1. За один ход можно перенести только один диск.

2. Нельзя класть больший диск на меньший.

Руководствуясь этими нехитрыми правилами, жрецы должны перенести исходную пирамиду с 1-го стержня на 3-й.
Как только они справятся с этим заданием, наступит конец света.

Мы предлагаем Вам решить данную задачу с помощью рекурсии.
*/

//Решение взято с vk.com.

void hanoi_towers(int quantity, int from, int to, int buf_peg)
//quantity-число колец, from-начальное положение колец(1-3),to-конечное положение колец(1-3)
{
//buf_peg - промежуточный колышек(1-3)
if (quantity != 0)
{
hanoi_towers(quantity-1, from, buf_peg, to);

cout << from << " -> " << to << "\n";
hanoi_towers(quantity-1, buf_peg, to, from);
}
}

void main()
{
setlocale(LC_ALL, "Russian");
int start_peg, destination_peg, buffer_peg, plate_quantity;
cout << "\nНомер первого столбика:";
cin >> start_peg;
cout << "\nНомер конечного столбика:";
cin >> destination_peg;
cout << "\nНомер промежуточного столбика:";
cin >> buffer_peg;
cout << "\nКоличество дисков:";
cin >> plate_quantity;
cout<<"\n";

hanoi_towers(plate_quantity, start_peg, destination_peg, buffer_peg);
}

Написать функцию, которая находит максимальное значение в массиве, используя рекурсию

int max(int A[], int size)
{
if(size==1) return A[0];
else
{
int tmp=max(A,size-1);
return tmp>A[size-2]?tmp:A[size-2];
}
}

void init(int A[], int size)
{
srand(time(NULL));
for (int i = 0; i < size; i++)
A[i] = rand() % 20+1;
}

void out(int A[], int size)
{
cout << "\n";
for (int i = 0; i < size; i++)
cout << A[i] << " ";
cout << "\n";
}

void main()
{
setlocale(LC_ALL, "Russian");
int digit;
const int size=15;
int A[size];

do
{
cout<<"Эта программа находит максимальное значение в массиве, используя рекурсию\n";
init(A,size);
out(A,size);
cout<<"\nМаксимальное значение - "<<max(A,size)<<"\n";
cout<<"Если хотите продолжить, нажмите 1:";
cin>>digit;
}while(digit==1);
}

Пример на рекурсию

long int Fact(long int N)
{
// если произведена попытка вычислить факториал нуля
// или единицы - вернуть 1,
// именно здесь произведется выход из рекурсии
if (N == 1 || N == 0) return 1;
// любое другое число вызывает функцию заново с формулой N-1
else return N * Fact(N-1);
}

void main()
{
long number=5;
//первый вызов рекурсивной функции
long result=Fact(number);
cout<<"Result "<<number<<"! is - "<<result<<"\n";
}

Двоичный поиск

int BinarySearch (int A[], int Lb, int Ub, int Key)
{
int M;
while(1)
{
M = (Lb + Ub)/2;
if (Key < A[M])
Ub = M - 1;
else
if (Key > A[M])
Lb = M + 1;
else
return M;

if (Lb > Ub)
return -1;
}
}

void main()
{
srand(time(NULL));
const long SIZE=10;
int ar[SIZE];
int key,ind;

// до сортировки
for(int i=0;i<SIZE;i++)
{
ar[i]=rand()%100;
cout<<ar[i]<<"\t";
}
cout<<"\n\n";
cout<<"Enter any digit:";
cin>>key;
ind=BinarySearch(ar,0,SIZE,key);
cout<<"Index - "<<ind<<"\t";
cout<<"\n\n";
}

Написать функцию, которая упорядочит в массиве сначала чётные значения, а потом нечётные

void init(int A[], int size);
void out(int A[], int size);
void sort(int A[], int size);

void main()
{
setlocale(LC_ALL, "Russian");
const int s = 20;
int A[s];
int a;
do
{
cout << "Эта программа сортирует массив по возрастанию сначала чётные значения, а потом нечётные.\n";
init(A, s);
out(A, s);
sort(A, s);
cout << "\nРезультат:\n";
out(A, s);
cout << "\nЕсли хотите продолжить, нажмите 1\n";
cin >> a;
} while (a == 1);
}

void init(int A[], int size)
{
srand(time(NULL));
for (int i = 0; i < size; i++)
A[i] = rand() % 100;
}

void out(int A[], int size)
{
cout << "\n";
for (int i = 0; i < size; i++)
cout << A[i] << " ";
cout << "\n";
}

void sort(int A[], int size)
{
int x, i, j;
for (i = 0; i < size; i++)
{
for (j = size - 1; j > i; j--)
{
if (A[j-1]%2 != 0 && A[j]%2==0)
{
x = A[j - 1];
A[j - 1] = A[j];
A[j] = x;
}
if (A[j - 1] > A[j] && A[j] % 2 == 0 && A[j - 1] % 2 == 0)
{
x = A[j - 1];
A[j - 1] = A[j];
A[j] = x;
}
if (A[j - 1] > A[j] && A[j] % 2 && A[j - 1] % 2)
{
x = A[j - 1];
A[j - 1] = A[j];
A[j] = x;
}
}
}
}

"Угадай число". Компьютер загадывает число от 0 до 10000. А пользователь должен его угадать, получая подсказки "больше" или "меньше"

void main()
{
srand(time(NULL));
setlocale(LC_ALL, "Russian");
int tmp;
do
{
int digit = rand() % 10000;
cout << "Игра ""Угадай число"". Компьютер загадал число от 0 до 10000 - отгадайте его!)\n";
int a=0;
for (;;)
{
cin >> tmp;
if (digit > tmp)
cout << "Моё число больше!)\n";
else if (digit < tmp)
cout << "Моё число меньше!)\n";
else if (digit == tmp)
{
cout << "Вы угадали!) Моё число - " << digit << "\n";
cout << "Вы использовали " << a << " попыток\n" ;
break;
}
a++;
}
cout << "\nЕсли хотите продолжить, нажмите 1\n";
cin >> tmp;
} while (tmp == 1);
}

Написать функцию, которая сортирует двумерный массив

void init(int A[][10], int weight, int length);
void out(int A[][10], int weight, int length);
void sort(int A[][10], int weight, int length);

void main()
{
setlocale(LC_ALL, "Russian");
const int length = 10;
const int weight = 15;
int A[weight][length];
int a;
do
{
cout << "Эта программа сортирует двумерный массив.\n";
init(A, weight, length);
out(A, weight, length);
sort(A, weight, length);
cout << "\nРезультат:\n";
out(A, weight, length);
cout << "\nЕсли хотите продолжить, нажмите 1\n";
cin >> a;
} while (a == 1);
}

void init(int A[][10], int weight, int length)
{
srand(time(NULL));
for (int i = 0; i < weight; i++)
{
for (int j = 0; j < length; j++)
{
A[i][j] = rand() % 100;
}
}
}

void out(int A[][10], int weight, int length)
{
cout << "\n";
for (int i = 0; i < weight; i++)
{
for (int j = 0; j < length; j++)
{
cout << A[i][j] << "\t";
}
cout << "\n";
}
cout << "\n";
}

void sort(int A[][10], int weight, int length)
{
int x, i, j, k;
for (k = 0; k < weight*length; k++)
{
for (i = 0; i < weight; i++)
{
for (j = 0; j < length; j++)
{
if (A[i][j-1] > A[i][j])
{
x = A[i][j-1];
A[i][j-1] = A[i][j];
A[i][j] = x;
}
}
}
}
}

Написать функцию, которая сортирует в двумерном массиве каждую строку по отдельности

void init(int A[][10], int weight, int length);
void out(int A[][10], int weight, int length);
void sort(int A[][10], int weight, int length);

void main()
{
setlocale(LC_ALL, "Russian");
const int length = 10;
const int weight = 15;
int A[weight][length];
int a;
do
{
cout << "Эта программа сортирует в двумерном массиве каждую строку по отдельности.\n";
init(A, weight, length);
out(A, weight, length);
sort(A, weight, length);
cout << "\nРезультат:\n";
out(A, weight, length);
cout << "\nЕсли хотите продолжить, нажмите 1\n";
cin >> a;
} while (a == 1);
}

void init(int A[][10], int weight, int length)
{
srand(time(NULL));
for (int i = 0; i < weight; i++)
{
for (int j = 0; j < length; j++)
{
A[i][j] = rand() % 100;
}
}
}

void out(int A[][10], int weight, int length)
{
cout << "\n";
for (int i = 0; i < weight; i++)
{
for (int j = 0; j < length; j++)
{
cout << A[i][j] << "\t";
}
cout << "\n";
}
cout << "\n";
}

void sort(int A[][10], int weight, int length)
{
int x, i, j, k;
for (k = 0; k < weight; k++)
{
for (i = 0; i < length; i++)
{
for (j = length - 1; j > i; j--)
{
if (A[k][j - 1] > A[k][j])
{
x = A[k][j - 1];
A[k][j - 1] = A[k][j];
A[k][j] = x;
}
}
}
}
}