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

0x08 graphic
0x01 graphic

#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");

}

}