ZAD 12.doc

(49 KB) Pobierz
ZAD 12

ZAD 12. Dany jest plik liczb typu int, napisać program obliczający częstość wystąpień każdego z pierwszych 10 elementów.

 



 

#pragma hdrstop

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <dos.h>

 

 

FILE *fp;

char nazwa[20]="liczby.txt";

int i,k,l;

int licznik[10];

int pobrane[10];

 

void zapisywacz(void);

void sprawdzacz(void);

void drukowacz(void);

 

#pragma argsused

 

int main(int argc, char* argv[])

{

zapisywacz();

sprawdzacz();

drukowacz();

getch();

return 0;

}

 

void zapisywacz() //Pliku nie mam więc go tworze z losowych liczb.

{

int temp;

if(fp=fopen(nazwa,"wt"))

  {

   printf("\nPoprawne otwarcie pliku do zapisu\n");

   printf("\nLosowe numery zapisane do pliku: ");

   randomize();

   for(i=0;i<100;i++)

    {

     temp=random (10);

     printf("%d ",temp);

     fwrite(&temp,sizeof(int),1,fp);

    }

   fclose(fp);

  }

else

  printf("\n blad otwarcia pliku do dopisu\n");

}

 

void sprawdzacz()

{

fp=fopen(nazwa,"rt");

fflush(stdin);

fseek(fp,0,SEEK_END);

l=ftell(fp)/sizeof(int);

fseek(fp,0,SEEK_SET);

printf("\n\n");

for(i=0;i<10;i++)

  {

   fread(&pobrane[i],sizeof(int),1,fp);

   printf("Znak [%d] do wyszukania to: %d\n",i,pobrane[i]);

  }

fclose(fp);

}

 

void drukowacz()

{

int x,temp=0;

printf("\nLiczba poszczegolnych liczb w pliku:\n");

fp=fopen(nazwa,"rt");

fflush(stdin);

fseek(fp,0,SEEK_END);

l=ftell(fp)/sizeof(int);

fseek(fp,0,SEEK_SET);

for(i=0;i<10;i++)

  {

   printf("\nZnak [%d] wystepuje:   ",i);

   for(k=0;k<l;k++)

    {

     fread(&temp,sizeof(int),1,fp);

      if(temp==pobrane[i])

       {

              printf("\b\b");

              licznik[i]++;

              printf("%2d",licznik[i]);

              delay(30);

       }

    }

   fseek(fp,0,SEEK_SET);

   printf(" razy w pliku");

 

  }

}

...
Zgłoś jeśli naruszono regulamin