Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.18 KB | None | 0 0
  1. #include <locale.h>
  2. #include <stdio.h>
  3. #include <windows.h>
  4. #include <conio.h>
  5. #define k 100
  6.  
  7. void Vvod(char *d, int *l)
  8. {
  9.     int s,i;
  10.     do{
  11.         for(i=0; *(d+i)!='\0'; i++)
  12.         printf("%c", *(d+i));
  13.         fflush(stdin);
  14.         s=scanf("%d", l);
  15.         system("CLS");
  16.     }while(s==0);
  17. }
  18.  
  19. int main()
  20. {
  21.     setlocale(LC_ALL, "Russian");
  22.     int i, j, g, prove;  //Переменные для ввода матрицы и выбора строки в переборе.
  23.     int end_of_word=0, start_of_word=0, x, z, y;
  24.     int copying=0, copy, stop_point=0, kolvo_polindromov=0;
  25.     int amnt_mt, size_n, size_m;
  26.  
  27.     Vvod("Введите кол-во матриц : ", &amnt_mt);
  28.     Vvod("Введите кол-во строк : ", &size_n);
  29.     Vvod("Введите кол-во столбцов : ", &size_m);
  30.  
  31.     char *string[amnt_mt][size_n][size_m];
  32.     char *massive;
  33.  
  34.     if(!(massive=(char*)malloc(size_n*size_m*amnt_mt*k*sizeof(char)))){
  35.         printf("Недостаточно памяти!");
  36.         return 0;
  37.     }
  38.     for(i=0; i<amnt_mt; i++){
  39.     for(j=0; j<size_n; j++){
  40.     for(g=0; g<size_m; g++){
  41.         if(!(string[i][j][g]=(char*)malloc(k))){
  42.             printf("Недостаточно памяти!");
  43.             for(i; i>0; i--)
  44.                 for(j=size_n; j>0; j--)
  45.                 for(g=size_m; g>0; g--)
  46.                 free(string[i][j][g]);
  47.             free(massive);
  48.             return 0;
  49.         }
  50.         if(i==0 && j==0 && g==0)gets(string[0][0][0]);
  51.         gets(string[i][j][g]);
  52.     }}}
  53.     for(i=0; i<amnt_mt; i++){
  54.             printf("---------------------------------------------------------\n");
  55.     for(j=0; j<size_n; j++){
  56.     for(g=0; g<size_m; g++){
  57.     do{
  58.         for(start_of_word=end_of_word; *(string[i][j][g]+start_of_word)==' ' && *(string[i][j][g]+start_of_word)!='\0'; start_of_word++);
  59.         for(end_of_word=start_of_word; *(string[i][j][g]+end_of_word)!=' ' && *(string[i][j][g]+end_of_word)!='\0'; end_of_word++);
  60.             for(x=start_of_word, z=end_of_word-1; x<end_of_word && z>start_of_word; x++, z--){
  61.                 if(*(string[i][j][g]+x)==*(string[i][j][g]+z)){prove=1; continue;}
  62.                 else if(*(string[i][j][g]+x)!=*(string[i][j][g]+z)) {prove=0; break;}
  63.             }
  64.         if(prove==1){
  65.             for(y=copying, copy=0; y<stop_point+(end_of_word-start_of_word);copy++, y++)
  66.                 *(massive+y)=*(string[i][j][g]+start_of_word+copy);
  67.             copying=y+1; stop_point=copying;
  68.             *(massive+y)=' '; kolvo_polindromov++;
  69.         }}while(*(string[i][j][g]+end_of_word)!='\0');
  70.         if(prove==1)printf("\tСтрока в ячейке[%d][%d] матрицы №%d содержит %d полиндром(а\ов)\n",j, g, i+1, kolvo_polindromov);
  71.         else printf("\tСтрока в ячейке[%d][%d] матрицы №%d не содержит полиндромов\n", j, g ,i+1);
  72.         kolvo_polindromov=0; start_of_word=0; end_of_word=0;
  73.         }}} printf("---------------------------------------------------------\n\n\tМассив палиндромов : ");
  74.     *(massive+copying)='\0';
  75.     puts(massive);
  76.     getchar(); getchar();
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement