Текст программы
#include <stdio.h> #include <locale.h> #include <stdlib.h> #include <time.h> int skolko(int);
int** mallok(int, int);
int** fre(int**, int);
void print(int**, int, int);
int** scan(int**, int, int);
int** obrabotka(int**, int**, int, int, int*);
int main() { srand(time(NULL)); setlocale(LC_ALL, "RUS"); const int n=50; int i, j, k, ksk, ksv, c, vd=0, vd2=0, obr=0, f, x, **y, **z; 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 0: vd2=0; obr=0; printf("Ñêîëüêî ñòðîê áóäåò â ìàòðèöå?\n"); ksk=skolko(n); printf("Ñêîëüêî ñòîëáöîâ áóäåò â ìàòðèöå?\n"); ksv=skolko(n); vd=1; break; case 1: if(vd==1) { obr=0; y=mallok(ksk,ksv); y=scan(y,ksk,ksv); vd2=1; } else printf("Ñíà÷àëà íóæíî ââåñòè ðàçìåðû ìàòðèöû, âûáðàâ ïóíêò 1)\n"); break; case 2: if(vd==1) if(vd2==1) { printf("Ââåä¸ííàÿ ìàòðèöà: \n"); print(y,ksk,ksv); } else printf("Ñíà÷àëà íóæíî ââåñòè ìàòðèöó, âûáðàâ ïóíêò 2)\n"); else printf("Ñíà÷àëà íóæíî ââåñòè ðàçìåðû ìàòðèöû, âûáðàâ ïóíêò 1)\n"); break; case 3: if(vd==1) if(vd2==1) { z=mallok(ksk,ksv); f=obr=1; obrabotka(y,z,ksk,ksv,&x); printf("Ìàòðèöà îáðàáîòàíà.\n"); } else printf("Ñíà÷àëà íóæíî ââåñòè ìàòðèöó, âûáðàâ ïóíêò 2)\n"); else printf("Ñíà÷àëà íóæíî ââåñòè ðàçìåðû ìàòðèöû, âûáðàâ ïóíêò 1)\n"); break; case 4: if(obr==1 && x==0) printf("Ñòðîê, ãäå åñòü õîòü 2 îäèíàêîâûõ ýëåìåíòà, íå îáíàðóæåíî.\n"); else if(obr==1) print(z,x,ksv); else if(vd2==0) if(vd==0) printf("Ñíà÷àëà íóæíî ââåñòè ðàçìåðû ìàòðèöû, âûáðàâ ïóíêò 1)\n"); else printf("Ñíà÷àëà íóæíî ââåñòè ìàòðèöó, âûáðàâ ïóíêò 2)\n"); else printf("Ñíà÷àëà íóæíî îáðàáîòàòü ìàòðèöó, âûáðàâ ïóíêò 4)\n"); break; case 5: printf("Ïîêà!"); break; default: printf("Òàêîãî ïóíêòà íå ñóùåñòâóåò. Ââåäèòå ïóíêò ìåíþ åù¸ ðàç\n"); } } while (c!=5); if(vd2==1) { y=fre(y,ksk); z=fre(z,x); } }
int skolko(int n) { int a; do { scanf("%d", &a); if(a<1 || a>n) printf("Òðåáóåòñÿ öåëîå ïîëîæèòåëüíîå ÷èñëî îò 1 äî %d.\nÂâåäèòå ÷èñëî çàíîâî.\n", n); } while(a<1 || a>n); return(a); }
int** mallok(int n, int m) { int i,**y; y=(int**)malloc(n*sizeof(int)); for(i=0;i<n;i++) *(y+i)=(int*)malloc(m*sizeof(int)); return(y); }
int** fre(int** t, int m) { if (t!=NULL) { for (int i = 0; i<m; i++) free(*(t+i)); free(t); } return NULL; }
void print(int **y, int n, int m) { int i,j; for(i=0; i<n; printf("\n"), i++) for(j=0; j<m; printf("%3d", *(*(y+i)+j)), j++); }
int** scan(int **y, int n, int m) { int i,j; for(i=0; i<n; i++) { printf("Ââåäèòå ýëåìåíòû %d ñòðîêè ìàòðèöû\n", i+1); for(j=0; j<m; scanf("%d", &y[i][j]), j++); } return(y); }
int** obrabotka(int **y, int **z, int n, int m, int *x) { int i,j,k=0,f=1; for(i=*x=0,f=1; i<n; i++, f=1) { for(j=0; j<m && f==1; j++) for(k=j+1; k<m && f==1; k++) if(y[i][j]==y[i][k]) f=0; if(f==0) { for(j=0; j<m; j++) z[*x][j]=y[i][j]; *x=*x+1; } } return(z); }
|