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