Forum ::BIOTECHNOLOGIA:: Strona Główna ::BIOTECHNOLOGIA::
Forum studentów kierunku biotechnologia Politechniki Śląskiej
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Informatyka - zadania z informatyki z listy nr 5

 
To forum jest zablokowane, nie możesz pisać dodawać ani zmieniać na nim czegokolwiek   Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi    Forum ::BIOTECHNOLOGIA:: Strona Główna -> Archiwum
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
adalgrim
Starosta grupy AU (2rok)



Dołączył: 05 Lis 2005
Posty: 380
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: RAu

PostWysłany: Śro 20:23, 06 Gru 2006    Temat postu: Informatyka - zadania z informatyki z listy nr 5

no to sie jutro ponudzilmy na informatyce, bo dalej ta sama lista bu Razz

Oto rozwiazania:
1:
Kod:

 FILE *fp;
      float p,k,delta;
      float i;

      printf("Podaj poczatek przedzialu: \n");
      scanf("%f",&p);
      printf("Podaj koniec przedzialu: \n");
      scanf("%f",&k);
      printf("Podaj krok: \n");
      scanf("%f",&delta);

      if((fp=fopen("mojwynik.txt","w"))==NULL){
        perror("Nie mozna otworzyc pliku\n");
        exit(1);
      }

      for(i=p;i<k;i+=delta){
         fprintf(fp,"[ %f ]",i);
         fprintf(fp,"[ %f ]",i*i);
         fprintf(fp,"[ %f ]\n",i*i*i);
      }

      fclose(fp);

      system("PAUSE");
      return 0;


2: (dodac dodatkowo biblioteke time.h>
Kod:

 FILE *fp;
      float n;
      float i,z;
      int a;

      if((fp=fopen("mojedane.txt","w"))==NULL){
        perror("Nie mozna otworzyc pliku\n");
        exit(1);
      }

      printf("Podaj liczbe A: \n");
      scanf("%d",&a);
      printf("Ile liczb wygenerowac: \n");
      scanf("%f",&n);

      if(a<1){
         printf("Liczba mniejsza od 1");
         exit(1);
      }

      srand(time(0));

      for(i=0;i<n;i++){

         z = rand()%(2*a)-a+1;
         fprintf(fp,"%f\n",z);

      }
      fclose(fp);

      system("PAUSE");
      return 0;


3:
Kod:

FILE *dane;
      FILE *dane1;
      FILE *dane2;
      float tab[100]={0,};
      int i=0;

      if((dane=fopen("mojedane.txt","r"))==NULL){
         perror("Nie mozna otworzyc pliku");
         exit(1);
      }
      if((dane1=fopen("dane1.txt","w"))==NULL){
         perror("Nie mozna otworzyc pliku");
         exit(1);
      }
      if((dane2=fopen("dane2.txt","w"))==NULL){
         perror("Nie mozna otworzyc pliku");
         exit(1);
      }


      while(fscanf(dane,"%f",&tab[i]) != EOF){
       if(tab[i]>0){
         fprintf(dane1,"%f\n",tab[i]);
       }
       if(tab[i]<0){
         fprintf(dane2,"%f\n",tab[i]);
       }

       i++;
      }

      fclose(dane);
      fclose(dane1);
      fclose(dane2);

      system("PAUSE");
      return 0;


4:
Kod:

FILE *dane;
      FILE *rap; float tab[100]={0,};
      float suma=0,srednia,odchylenie,x; int p1=0,p2=0,p3=0,i=0,z,c;

      if((dane=fopen("mojedane.txt","r"))==NULL){perror("Nie mozna otworzyc pliku");exit(1);}


      while(fscanf(dane,"%f",&tab[i]) != EOF){
      suma+=tab[i];
      i++;
      }srednia=suma/i;

      for(z=0;z<i;z++) x+=pow(srednia-tab[z],2); odchylenie=sqrt(x/(i-1));

      for(c=0;c<i;c++){
         if(tab[c]>=(srednia-odchylenie) && tab[c]<=(srednia+odchylenie)) p1++;
         if(tab[c]>=(srednia-odchylenie*2) && tab[c]<=(srednia+odchylenie*2)) p2++;
         if(tab[c]>=(srednia-odchylenie*3) && tab[c]<=(srednia+odchylenie*3)) p3++;
      }

      printf("Ilosc liczb w przedziale 1: %d\n",p1);
      printf("Ilosc liczb w przedziale 2: %d\n",p2);
      printf("Ilosc liczb w przedziale 3: %d\n",p3);

      if((rap=fopen("mojraport.txt","a+"))==NULL){perror("Nie mozna otworzyc pliku");exit(1);}

      fprintf(rap,"Ilosc liczb w przedziale 1: %d\n",p1);
      fprintf(rap,"Ilosc liczb w przedziale 2: %d\n",p2);
      fprintf(rap,"Ilosc liczb w przedziale 3: %d\n",p3);

      fclose(rap);
      fclose(dane);


      system("PAUSE");
      return 0;


5:
Kod:

FILE *dane; FILE *ndane;
      FILE *rap; float tab[100]={0,};
      float suma=0,srednia,odchylenie,x; int p1=0,p2=0,p3=0,i=0,z,c;

      if((dane=fopen("mojedane.txt","r"))==NULL){perror("Nie mozna otworzyc pliku");exit(1);}
      if((ndane=fopen("ndane.txt","w"))==NULL){perror("Nie mozna otworzyc pliku");exit(1);}

      while(fscanf(dane,"%f",&tab[i]) != EOF){
      suma+=tab[i];
      i++;
      }srednia=suma/i;

      for(z=0;z<i;z++) x+=pow(srednia-tab[z],2); odchylenie=sqrt(x/(i-1));

      for(c=0;c<i;c++){
         if(tab[c]>=(srednia-odchylenie) && tab[c]<=(srednia+odchylenie)){
         p1++;
         fprintf(ndane,"%f\n",tab[c]);
         }
         if(tab[c]>=(srednia-odchylenie*2) && tab[c]<=(srednia+odchylenie*2)) p2++;
         if(tab[c]>=(srednia-odchylenie*3) && tab[c]<=(srednia+odchylenie*3)) p3++;
      }

      printf("Ilosc liczb w przedziale 1: %d\n",p1);
      printf("Ilosc liczb w przedziale 2: %d\n",p2);
      printf("Ilosc liczb w przedziale 3: %d\n",p3);

      if((rap=fopen("mojraport.txt","a+"))==NULL){perror("Nie mozna otworzyc pliku");exit(1);}

      fprintf(rap,"Ilosc liczb w przedziale 1: %d\n",p1);
      fprintf(rap,"Ilosc liczb w przedziale 2: %d\n",p2);
      fprintf(rap,"Ilosc liczb w przedziale 3: %d\n",p3);

      fclose(rap);
      fclose(dane);
      fclose(ndane);

      system("PAUSE");
      return 0;


6:
Kod:

FILE *dane;
      float tab[100]={0,};
      float przedzial[10]={0};
      float suma=0,ilosc=0,srednia,odchylenie,x,min,max; int p1=0,p2=0,p3=0,i=0,z,c,h;

      printf("Podaj liczbe przedzialow histogramu: \n");
      scanf("%d",&h);

      if(h>10){
       printf("za duzo przedzialow!\n");
       system("PAUSE");
       return 0;
      }



      if((dane=fopen("mojedane.txt","r"))==NULL){perror("Nie mozna otworzyc pliku");exit(1);}


      while(fscanf(dane,"%f",&tab[i]) != EOF){
      if(tab[i]<min)min=tab[i];
      if(tab[i]>max)max=tab[i];
      i++;
      }
       printf("Max: %f\n",max);
       printf("Min: %f\n",min);
      suma=max-min;
       printf("Suma: %f\n",suma);
      ilosc=suma/h;
      printf("Wartosc skoku miedzy przedzialami: %f\n\n",ilosc);

      for(z=0;z<i;z++){
         if(tab[z]<=(min+ilosc)) przedzial[0]++;
         if(tab[z]>(min+ilosc) && tab[z]<=(min+2*ilosc)) przedzial[1]++;
         if(tab[z]>(min+2*ilosc) && tab[z]<=(min+3*ilosc)) przedzial[2]++;
         if(tab[z]>(min+3*ilosc) && tab[z]<=(min+4*ilosc)) przedzial[3]++;
         if(tab[z]>(min+4*ilosc) && tab[z]<=(min+5*ilosc)) przedzial[4]++;
         if(tab[z]>(min+5*ilosc) && tab[z]<=(min+6*ilosc)) przedzial[5]++;
         if(tab[z]>(min+6*ilosc) && tab[z]<=(min+7*ilosc)) przedzial[6]++;
         if(tab[z]>(min+7*ilosc) && tab[z]<=(min+8*ilosc)) przedzial[7]++;
         if(tab[z]>(min+8*ilosc) && tab[z]<=(min+9*ilosc)) przedzial[8]++;
         if(tab[z]>(min+9*ilosc) && tab[z]<=(min+10*ilosc)) przedzial[9]++;
     }

      for(c=0;c<h;c++){
         printf("Przedzial %d = %f\n",c+1,przedzial[c]);
      }



      fclose(dane);


      system("PAUSE");
      return 0;


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Michele




Dołączył: 15 Sty 2006
Posty: 1041
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: BioAut, Gleiwitz-Petersdorf

PostWysłany: Śro 20:33, 06 Gru 2006    Temat postu:

na temat 6 to zrobiłem w ten sposób:
Kod:
     for (int k=0;k<2;k++)
       {fseek (we,0,SEEK_SET); //komenda przesuwa na początek pliku nasz "kursor",aby czytać od początku
        while (!feof(we))  //zliczenie zadania
         {fscanf(we,"%f", &read);
           if (k==0)
              { if (read>max) max=read;
                if (read<min) min=read;
                if (N>1) skok=float(max-min)/float(N-1);
                  else skok=2*(max-min);}
           if (k==1)
              for (int i=0;i<N;i++)
               if ((read>=min+i*skok-skok*0.5)&&(read<min+i*skok+skok*0.5))
                {tablica[i]++;
                 if ((i==0)||(tablica[i]>il_max)) il_max=tablica[i];}
         }
       }
// tzn. przy id (N>1) zrobiłem w ostatecznej wersji inaczej. Bo problem pojawia się, gdy N>1 i mam jedną liczbę. Niestety źródla są na uczelni, więc może jutro dam cynka tutaj jak to zrobiłem:) Wcześniej jest też kod, ale nie wiem, czy cały wklejaćSmile chodzi mi o pomysł na przedziały Smile

BTW. zamiast suma powinna być różnica: roznica=max-min:), ale to nie gra roli, bo to od programisty zalezy jak nazwie zmiennąSmile


Post został pochwalony 0 razy

Ostatnio zmieniony przez Michele dnia Czw 20:32, 07 Gru 2006, w całości zmieniany 1 raz
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Kropka:P




Dołączył: 13 Lis 2005
Posty: 81
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Tarnowskie Góry BioAut

PostWysłany: Śro 22:01, 06 Gru 2006    Temat postu:

takie małe pytanko a do tego trzeba używać tablic??

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Michele




Dołączył: 15 Sty 2006
Posty: 1041
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: BioAut, Gleiwitz-Petersdorf

PostWysłany: Czw 0:16, 07 Gru 2006    Temat postu:

nie musisz, ale jest wygodniej. Wogóle nie trzeba używać, ale to tylko kamikadze nie zrobi tablicy.

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
To forum jest zablokowane, nie możesz pisać dodawać ani zmieniać na nim czegokolwiek   Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi    Forum ::BIOTECHNOLOGIA:: Strona Główna -> Archiwum Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Regulamin