Текст программы. #include <locale.h>
#include <stdio.h> #include <locale.h> #include <stdlib.h> #include <time.h> int main() { srand(time(NULL)); setlocale(LC_ALL, "RUS"); const int n=50; int A1[n][n], A2[n][n], i, j, k, ksk, ksv, c, vd=0, vd2=0, obr=0, f, x; do { printf("\n"); puts("Меню: "); puts("1) Ввести размеры матрицы"); puts("2) Ввести новую матрицу"); puts("3) Посмотреть введённую матрицу"); puts("4) Обработать введённую матрицу"); puts("5) Показать обработанную матрицу"); puts("6) Выход"); printf("Введите номер пункта: "); scanf("%d", &c); printf("\n"); switch(c) { case 1: vd2=0; obr=0; printf("Сколько строк будет в матрице?\n"); do { scanf("%d", &ksk); if(ksk<1 || ksk>n) printf("Количество строк - целое положительное число от 1 до %d.\nВведите число заново.\n", n); } while(ksk<1 || ksk>n); printf("Сколько столбцов будет в матрице?\n"); do { scanf("%d", &ksv); if(ksv<1 || ksv>n) printf("Количество столбцов - целое положительное число от 1 до %d.\nВведите число заново.\n", n); } while(ksv<1 || ksv>n); vd=1; break; case 2: if(vd==1) { obr=0; for(i=0; i<ksk; i++) { printf("Введите элементы %d строки матрицы\n", i+1); for(j=0; j<ksv; scanf("%d", &A1[i][j]), j++); } vd2=1; } else printf("Сначала нужно ввести размеры матрицы, выбрав пункт 1)\n"); break; case 3: if(vd==1) if(vd2==1) { printf("Введённая матрица: \n"); for(i=0; i<ksk; printf("\n"), i++) for(j=0; j<ksv; printf("%3d", A1[i][j]), j++); } else printf("Сначала нужно ввести матрицу, выбрав пункт 2)\n"); else printf("Сначала нужно ввести размеры матрицы, выбрав пункт 1)\n"); break; case 4: if(vd==1) if(vd2==1) { obr=1; for(i=x=0,f=1; i<ksk; i++, f=1) { for(j=0; j<ksv && f==1; j++) { f=1; for(k=j+1; k<ksv && f==1; k++) if(A1[i][j]==A1[i][k]) f=0; } if(f==0) { for(j=0; j<ksv; j++) A2[x][j]=A1[i][j]; x++; } } printf("Матрица обработана.\n"); } else printf("Сначала нужно ввести матрицу, выбрав пункт 2)\n"); else printf("Сначала нужно ввести размеры матрицы, выбрав пункт 1)\n"); break; case 5: if(obr==1 && x==0) printf("Строк, где есть хоть 2 одинаковых элемента, не обнаружено.\n"); else if(obr==1) for(i=0; i<x; printf("\n"), i++) for(j=0; j<ksv; printf("%3d", A2[i][j]), j++); else if(vd2==0) if(vd==0) printf("Сначала нужно ввести размеры матрицы, выбрав пункт 1)\n"); else printf("Сначала нужно ввести матрицу, выбрав пункт 2)\n"); else printf("Сначала нужно обработать матрицу, выбрав пункт 4)\n"); break; case 6: printf("Пока!"); break; default: printf("Такого пункта не существует. Введите пункт меню ещё раз\n"); } } while (c!=6); } Результаты решения задачи
При выполнении программы были получены результаты, совпадающие со значениями, приведенными в Таблице 1.Ошибок не обнаружено. Вывод При выполнении лабораторной работы были получены практические навыки использования двумерных массивов и операторов выбора на языке программирования «С/C++».
|