Arvutifoorum VISTA

Aastast 2007





Tee uus teema Vasta teemale  [ 4 postitust ] 
Autor Sõnum
 Teema pealkiri: Programmeerimine keeles c++
PostitusPostitatud: 04 Mai 2012, 16:24 
Eemal
Aktiivne huviline

Liitunud: 19 Veebr 2011, 19:56
Postitusi: 21
Ma loodan, et keegi teist on kokku puutud c++ keelega. Ma üritan programmi kirjutada, aga midagi on valesti, kuna ei tööta nii nagu vaja. Väike jupp koodist:
Kood:
...
andmebaas=fopen("andmebaas.txt", "r");
      if(andmebaas==NULL){printf("Faili andmebaas.txt avamine ebaõnnestus!\n"); printf("Vajuta suvalisele klahvile..."); getch(); return 0;}
     
     
      n = 0;
      do
      {
      n += 1;
      fgets(rida, 100, andmebaas);
      raamat[n]=new char[80];
      if(raamat[n] == NULL)
      {
          printf("Nii palju vaba mälu ei ole!\n");
          printf("Vajuta suvalisele klahvile...");   
         getch();
         return 0;         
      }
      raamat[n] = rida;
     
      }while(!feof(andmebaas));
      for(int i = 1; i <= 5; i++)
      {
      printf("%s", raamat[i]);       
      }
     
      for(int i = 1; i <= n; i++)
      {
         
      free(raamat[i]);       
      }
...


Sellega on selline jama, et ta töötab küll nii aga väljastamisel trükib ta ühesugused read failist. Antud juhul trükib siis korduslause järgi 5 korda faili viimast rida, kuid ta peaks faili algusest trükkima esimesed 5 rida.. Oskab keegi aidata mind sellega?


Top
 Profiil  
 
 Teema pealkiri: Re: Programmeerimine keeles c++
PostitusPostitatud: 05 Mai 2012, 20:52 
Eemal
Moderaator
Kasutaja avatar

Liitunud: 08 Sept 2011, 20:07
Postitusi: 348
Asukoht: Järvamaa Türi kandis
OS: Windows 7 x64
Kahjuks pole õrna aimugi c++ keelest, kuid huvi pärast sai natuke googeldatud.

Kõigepealt peaksid vist määrama muutuja rida tüübi ehk enne fgets läheb "char rida [100];"

Siiski antud koodi loogika jääb mulle arusaamatuks. Mis juhtub selle koodiga?:

Kood:
char rida [100];
m=0;
if(fgets(rida,100,andmebaas))!=NULL)
{
m+=1;
raamat[m]=rida;
}

      n = 0;
      do
      {
      n += 1;
      if(raamat[n] == NULL)
      {
          printf("Nii palju vaba mälu ei ole!\n");
          printf("Vajuta suvalisele klahvile...");   
         getch();
         return 0;         
      }
     
      }while(!feof(andmebaas));
      for(int i = 1; i <= 5; i++)
      {
      printf("%s", raamat[i]);       
      }
     
      for(int i = 1; i <= n; i++)
      {
         
      free(raamat[i]);       
      }

See on suht võhiku pakkumine. Kui selles on formaalsuse vigu, siis paranda neid. Kuna ma ei tea, kuidas see kood toimib, siis kasutasin seda loogikat, et kõigepealt saab iga rida oma muutuja (raamat[m]) ning muutuja m maksimaalne väärtus on ridade hulk.
Kuna sul on tarvis ainult esimest viite, siis i on 1-5.

Kui mingit lollust rääkisin, siis anna andeks! :|

_________________
alias tudiludi


Top
 Profiil  
 
 Teema pealkiri: Re: Programmeerimine keeles c++
PostitusPostitatud: 05 Mai 2012, 22:27 
Eemal
Aktiivne huviline

Liitunud: 19 Veebr 2011, 19:56
Postitusi: 21
Sinu pakutud kood on tegelikult õige, kuid see ei sobi minule. Ja alguse jutt oli ka õige, et igal muutujal peab olema määratud ta tüüp. Kuid ma jätsin selle alguse koodist välja, et tuleks lühem ja seal oleks veel lisasid olnud. Sul on kirjutatud rea võtmine failist, kontrollimine, kas võrdub nulliga ja siis väljastamine. Kuid minu koodist jäi üks oluline rida vahele.
Kood:
raamat[n]=new char[80];

See rida on selleks, et lugeda andmeid mällu ja siis mälu kaudu kasutada. Lihtsalt failist rea väljastamine on lihtne tegu. Probleem ongi selles, et ma eriti ei ole kindlel selle mälu kasutamise osas.
Aga noh, nagu näha siis siin foorumis ei valdata c++ keeles programeerimist, kurb küll, kuid eks ma otsin siis abi mujalt.
Kuid aitäh üritamast, hoolimata sellest, et teema on täitsa võõrras sulle, LiivaneLord.


Top
 Profiil  
 
 Teema pealkiri: Re: Programmeerimine keeles c++
PostitusPostitatud: 05 Mai 2012, 22:45 
Eemal
Moderaator
Kasutaja avatar

Liitunud: 08 Sept 2011, 20:07
Postitusi: 348
Asukoht: Järvamaa Türi kandis
OS: Windows 7 x64

_________________
alias tudiludi


Top
 Profiil  
 


Näita postitusi eelmisest:  Sorteeri  
Tee uus teema Vasta teemale  [ 4 postitust ] 


Kes on foorumil

Kasutajad foorumit lugemas: Registreeritud kasutajaid pole ja 0 külalist


Sa ei saa teha uusi teemasid siin foorumis
Sa ei saa postitustele vastata siin foorumis
Sa ei saa muuta oma postitusi siin foorumis
Sa ei saa kustutada oma postitusi siin foorumis

Otsi...:
Hüppa:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpbb.ee 3.0.7
phpBB SEO
Create a Forum | Terms of Service | Privacy Policy | Report the forum