All pastes #37789 Raw Edit

Something

public cpp v1 · immutable
#37789 ·published 2006-01-21 10:11 UTC
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;}