Работа над массивами с помощью языка С++
Работа над массивами с помощью языка С++
Задание 1. Дан двумерный массив размерностью 5x6, заполненный целыми числами, введёнными с клавиатуры. Сформировать одномерный массив, каждый элемент которого равен наибольшему по модулю элементу соответствующего столбца. Входные данные: matr[5][6] - двумерный массив. Выходные данные: mas[6] - одномерный массив. Текст программы: #include <stdio.h> #include <conio.h> #include <math.h> #define N 5 #define M 6 void main(void) { int matr[N][M]; int mas[M]; int i,j; do{ clrscr(); printf("Введите двумерный массив \n"); for(i=0;i<N;i++) for(j=0;j<M;j++) { scanf("%d",&matr[i][j]); } printf("\n двумерный массив:\n"); for(i=0;i<N;i++) { for(j=0;j<M;j++) printf("%7d",matr[i][j]); printf("\n"); } printf("\n массив наибольших по модулю элементов:\n"); for(j=0;j<M;j++) { mas[j]=matr[0][j]; for(i=0;i<N;i++) if(abs(matr[i][j])>abs(mas[j])) mas[j]=matr[i][j]; printf("%7d",mas[j]); } printf("\n\n1 - повторить"); }while(getch()=='1'); } Блок-схема: Тестирование: двумерный массив: 1 -3 5 -7 0 0 0 5 8 -9 3 0 3 4 -8 4 3 0 -4 3 0 7 3 0 0 3 3 7 1 0 массив наибольших по модулю элементов: -4 5 8 -9 3 0 Задание 2. Дан двумерный массив n * m. Определить, есть ли в данном массиве столбец, в котором равное количество положительных и отрицательных элементов. Входные данные: matr[n][m] - двумерный массив, n, m - размер массива. s[60] - строка. Текст программы: #include <stdio.h> #include <conio.h> #include <string.h> void main(void) { int i,j; int n,m; int matr[10][10]; int pol,otr; char s[60]; do{ strcpy(s,0); clrscr(); printf("Введите размер массива (n*m)\n"); scanf("%d %d",&n,&m); printf("Введите массив\n"); for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%d",&matr[i][j]); printf("\nОпределить, есть ли в данном массиве столбец,\ в котором\nравное количество положительных и отрицательных элементов.\n"); for(j=0;j<m;j++) { otr=0; pol=0; for(i=0;i<n;i++) { if(matr[i][j]<0) ++otr; if(matr[i][j]>0) ++pol; } if(pol==otr) strcat(s," есть"); else strcat(s," нет"); } printf("\n"); for(i=0;i<n;i++) { for(j=0;j<m;j++) printf("%6d",matr[i][j]); printf("\n"); } printf("%s",s); printf("\n\n1 - повторить"); }while(getch()=='1'); } Блок-схема: Тестирование: Определить, есть ли в данном массиве столбец, в котором равное количество положительных и отрицательных элементов. 0 1 -2 3 4 0 2 -4 5 -8 0 0 9 -7 0 0 -3 4 0 0 есть нет есть нет есть Задание 3. Дан двумерный массив размерностью 8x7. а). Удалить все столбцы, а которых первый элемент больше последнего. б). Заменить все элементы первых трёх столбцов на их квадраты. Входные данные: matr[8][7] - двумерный массив. Функции: Print - вывод массив на экран. Текст программы: #include <stdio.h> #include <conio.h> #define N 8 #define M 7 void Print(int matr[][M],int m) { int i,j; for(i=0;i<N;i++) { for(j=0;j<m;j++) printf("%6d",matr[i][j]); printf("\n"); } } void main(void) { int m; int i,j; int matr[N][M]; int r,t; do{ m=M; clrscr(); printf("Введите массив\n"); for(i=0;i<N;i++) for(j=0;j<m;j++) { scanf("%d",&matr[i][j]); } clrscr(); printf(" массив\n"); Print(matr,m); for(j=0;j<m;j++) { if(matr[0][j]>matr[N-1][j]) { for(t=0;t<N;t++) for(r=j;r<m-1;r++) matr[t][r]=matr[t][r+1]; --m; --j; } } printf("а) .Удалить все столбцы, а которых первый элемент больше последнего.\n"); Print(matr,m); for(j=0;j<3;j++) for(i=0;i<N;i++) { matr[i][j]*=matr[i][j]; } printf("б). Заменить все элементы первых трёх столбцов на их квадраты.\n"); Print(matr,m); printf("\n\n1 - повторить"); }while(getch()=='1'); } Блок-схема: Функция Print Тестирование: массив 1 2 3 4 5 6 7 -8 0 5 5 4 4 5 4 5 5 5 5 5 5 5 5 5 -7 5 5 5 9 4 4 5 0 5 3 5 6 3 4 5 4 5 6 7 8 9 0 4 8 -4 5 9 0 9 9 0 а) .Удалить все столбцы, в которых первый элемент больше последнего. 2 3 5 6 0 5 4 4 5 5 5 5 5 5 5 5 4 4 0 5 6 3 5 4 7 8 0 4 5 9 9 9 б). Заменить все элементы первых трёх столбцов на их квадраты. 4 9 25 6 0 25 16 4 25 25 25 5 25 25 25 5 16 16 0 5 36 9 25 4 49 64 0 4 25 81 81 9
|