rendered paste body#include <stdio.h>#include <string.h>#include <malloc.h>#ifdef _WIN32#define CLS system("cls");#define PAUSE system("pause");#define CD system("cd");#else#define CLS system("reset");#define PAUSE printf("\nNacisnij dowolny klawisz ..."); getchar();#define CD system("pwd");#endifchar* czytaj(FILE *plik,int n,int *prawda) { char *s, *ptr; int i; s=ptr=(char*)malloc(n*sizeof(char)); while(fgets(ptr,n,plik)) { for(i=0;i<(n-1);i++) { if(ptr[i]=='\n') { ptr[i]='\0'; return s; } } s=realloc(s,i+n-1); ptr=s+i+1; *prawda=0; }}long max(char nazwa[]){ FILE *p; long max=0; //maksymalna dlugosc slowa w pliku long rozmiar; //zawiera liczbe bajtow od poczatku do konca char *s; //dlogosc bedzie rowna liczbeie bajtow p=fopen(nazwa,"r"); fseek(p,0,SEEK_END); rozmiar=ftell(p); rewind(p); s=(char*)malloc(rozmiar*sizeof(char)); while(!feof(p)) { fscanf(p,"%s",s); if(max<strlen(s)) max=strlen(s); } fclose(p); if(s!=NULL) free(s); return max;}int czy_palindrom(char palin[]){ int p=0,k;//p - poczatek k - ustawiamy na koniec lancucha int czy_palin=0; //jesli 1 to tekst jest palindromem k=strlen(palin)-1; while(p<=((strlen(palin))/2)) { if(palin[p]==palin[k]) { p++;k--; czy_palin=1; } else { czy_palin=0; break; } } return czy_palin;}void wypisz(){ FILE *plik; char *nazwa_pliku; char *yes_or_no=NULL;// TAK / NIE char *p;//Do niej zapisuje lancuch z pliku int wyswietl;//jesli równa 1 to wyswietlamy tekst zawarty w p int pocz=1; //wyswietlam tekst "Oto Palindromy" long maximum; //maksymalna dlugosc najwiekszego palindromu int ilosc=0; //ilosc palindromów int prawda=1;repeat: printf("Podaj nazwe pliku jaki chcesz otworzyc: "); nazwa_pliku=czytaj(stdin,22,&prawda); if(prawda==0) { CLS printf("\nPodana przez ciebie nazwa pliku jes ZA DLUGA(maks. 20 znakow)\n"); free(nazwa_pliku); prawda=1; goto repeat; } strcat(nazwa_pliku,".txt"); plik=fopen(nazwa_pliku,"r"); if(plik==NULL) { CLS printf("Nie ma takiego pliku !!!\n"); printf("Czy chcesz podac nazwe jeszcze raz (TAK/NIE): "); yes_or_no=czytaj(stdin,5,&prawda); CLS if( ((strcmp(yes_or_no,"TAK")==0)||(strcmp(yes_or_no,"tak")==0))&&prawda==1 ) goto repeat; else { CLS if( (strcmp(yes_or_no,"NIE")==0||strcmp(yes_or_no,"nie")==0)&&prawda==1 ) { printf("\nGOODBYE :)"); free(yes_or_no); free(nazwa_pliku); } else { printf("\nDziwny wybor :)\n SEE YOU"); free(yes_or_no); free(nazwa_pliku); } } } else { CLS if(yes_or_no!=NULL) free(yes_or_no); maximum=max(nazwa_pliku); p=(char*)malloc(maximum*sizeof(char)); while(fscanf(plik,"%s",p)!=EOF) { wyswietl=czy_palindrom(p); if(wyswietl==1) { if(pocz==1) { printf("\n\n\nOto Palindromy:\n "); pocz=0; } printf("%s ",p); ilosc++; } } if(pocz==1) printf("\n\n\nW tekscie nie wystapily palindromy\n\n"); else { if(ilosc==1) { printf("\n\n\nW pliku "); CD printf("\\%s znajduje sie %i palindrom\n",nazwa_pliku,ilosc); } else { if(ilosc>=2&&ilosc<=4) { printf("\n\n\nW pliku "); CD printf("\\%s znajduja sie %i palindromy\n",nazwa_pliku,ilosc); } else { printf("\n\n\nW pliku "); CD printf("\\%s znajduje sie %i palindromow\n",nazwa_pliku,ilosc); } } } fclose(plik); if(nazwa_pliku!=NULL) free(nazwa_pliku); } printf("\n\n\n"); PAUSE } int main(){ printf("\nProgram wypisuje wszystkie palindromy znajdujace sie wpliku.\n\n"); wypisz();return 0;}