rendered paste body#include <stdio.h>
#include <string.h>
#include <malloc.h>
long max(char nazwa[])
{
FILE *p;
long max=0; //maksymalna dlugosc slowa w pliku
long rozmiar; //zawiera liczbe bajtuw od poczatku do konca
char *s; //dlogosc bedzie ruwna 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);
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[34];
char s[3];// 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;
int ilosc=0; //ilosc palindromów
repeat:
printf("Podaj nazwe pliku jaki chcesz otworzyc: ");
gets(nazwa_pliku);fflush(stdin);
strcat(nazwa_pliku,".txt");
plik=fopen(nazwa_pliku,"r");
if(plik==NULL)
{
system("cls");
printf("Nie ma takiego pliku !!!\n");
printf("Czy chcesz podac nazwe jeszcze raz (TAK/NIE): ");
gets(s);fflush(stdin);
system("cls");
strupr(s);
if(strcmp(s,"TAK")==0)
goto repeat;
else
{
system("cls");
if(strcmp(s,"NIE")==0)
printf("GOODBYE :)");
}
}
else
{
system("cls");
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 ");
system("cd");
printf("\\%s znajduje sie %i palindrom\n",nazwa_pliku,ilosc);
}
else
{
if(ilosc>=2&&ilosc<=4)
{
printf("\n\n\nW pliku ");
system("cd");
printf("\\%s znajduja sie %i palindromy\n",nazwa_pliku,ilosc);
}
else
{
printf("\n\n\nW pliku ");
system("cd");
printf("\\%s znajduje sie %i palindromow\n",nazwa_pliku,ilosc);
}
}
}
fclose(plik);
}
free(p);
printf("\n\n\n");
system("pause");
}
void main()
{
printf("\nProgram wypisuje wszystkie palindromy znajdujace sie w pliku.\n\n");
wypisz();
}