background image

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

background image

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