Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <locale.h>
- #include <stdio.h>
- #include <windows.h>
- #include <conio.h>
- #define k 100
- void Vvod(char *d, int *l)
- {
- int s,i;
- do{
- for(i=0; *(d+i)!='\0'; i++)
- printf("%c", *(d+i));
- fflush(stdin);
- s=scanf("%d", l);
- system("CLS");
- }while(s==0);
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- int i, j, g, prove; //Переменные для ввода матрицы и выбора строки в переборе.
- int end_of_word=0, start_of_word=0, x, z, y;
- int copying=0, copy, stop_point=0, kolvo_polindromov=0;
- int amnt_mt, size_n, size_m;
- Vvod("Введите кол-во матриц : ", &amnt_mt);
- Vvod("Введите кол-во строк : ", &size_n);
- Vvod("Введите кол-во столбцов : ", &size_m);
- char *string[amnt_mt][size_n][size_m];
- char *massive;
- if(!(massive=(char*)malloc(size_n*size_m*amnt_mt*k*sizeof(char)))){
- printf("Недостаточно памяти!");
- return 0;
- }
- for(i=0; i<amnt_mt; i++){
- for(j=0; j<size_n; j++){
- for(g=0; g<size_m; g++){
- if(!(string[i][j][g]=(char*)malloc(k))){
- printf("Недостаточно памяти!");
- for(i; i>0; i--)
- for(j=size_n; j>0; j--)
- for(g=size_m; g>0; g--)
- free(string[i][j][g]);
- free(massive);
- return 0;
- }
- if(i==0 && j==0 && g==0)gets(string[0][0][0]);
- gets(string[i][j][g]);
- }}}
- for(i=0; i<amnt_mt; i++){
- printf("---------------------------------------------------------\n");
- for(j=0; j<size_n; j++){
- for(g=0; g<size_m; g++){
- do{
- 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++);
- 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++);
- for(x=start_of_word, z=end_of_word-1; x<end_of_word && z>start_of_word; x++, z--){
- if(*(string[i][j][g]+x)==*(string[i][j][g]+z)){prove=1; continue;}
- else if(*(string[i][j][g]+x)!=*(string[i][j][g]+z)) {prove=0; break;}
- }
- if(prove==1){
- for(y=copying, copy=0; y<stop_point+(end_of_word-start_of_word);copy++, y++)
- *(massive+y)=*(string[i][j][g]+start_of_word+copy);
- copying=y+1; stop_point=copying;
- *(massive+y)=' '; kolvo_polindromov++;
- }}while(*(string[i][j][g]+end_of_word)!='\0');
- if(prove==1)printf("\tСтрока в ячейке[%d][%d] матрицы №%d содержит %d полиндром(а\ов)\n",j, g, i+1, kolvo_polindromov);
- else printf("\tСтрока в ячейке[%d][%d] матрицы №%d не содержит полиндромов\n", j, g ,i+1);
- kolvo_polindromov=0; start_of_word=0; end_of_word=0;
- }}} printf("---------------------------------------------------------\n\n\tМассив палиндромов : ");
- *(massive+copying)='\0';
- puts(massive);
- getchar(); getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement