All pastes #37620 Raw Edit

Someone

public text v1 · immutable
#37620 ·published 2006-01-20 19:07 UTC
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();
}