C++ pomoc s chybou v programe

Programovacie jazyky, rady, poradňa...
JacobKE
Amateur
Amateur
Používateľov profilový obrázok
Príspevky: 11
Registrovaný: 01 jan 2012, 22:19
Bydlisko: Ruskov

C++ pomoc s chybou v programe

Príspevok od používateľa JacobKE »

Takže toto je môj príklad,verím že je tam nejaka hlupa chyba no už dlhšie ju neviem nájsť.
Ulohou tohto programu je že v subore "cisla2.txt" spocita pocet cisel,ked tam bude 5 cisel tak najprv vynasobi všetky tie čísla ktore su uvedene v subore a potom od sucinu tychto čísel odpočita 3tie číslo. Ak bude menej alebo viac ako 5 čísel tak vypíše "zly pocet čísel"
Program ma problem s "else" a ja neviem čo s tym...

Kód: Vybrať všetko

#include <conio.h>
#include <stdio.h>
main ()

{
     FILE *fr;
     int a,b,c,d,e;
     
fr=fopen("CISLA2.TXT","r");
     {
     if (fscanf (fr,"%d %d %d %d %d",a,b,c,d,e)==5)
     
     
     fscanf (fr,"%d",&a);
       fscanf (fr,"%d",&b);
         fscanf (fr,"%d",&c);
           fscanf (fr,"%d",&d);
             fscanf (fr,"%d",&e);
     
     printf ("Sucin je %d\n",a*b*c*d*e);
     printf ("Sucin minus tretie cislo je %d",(a*b*c*d*e)-c);
     
     else 
     printf ("Zly pocet cisel");
     }
     fclose(fr);
     getch();
     }
ďakujem
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8222
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: C++ pomoc s chybou v programe

Príspevok od používateľa harrison314 »

aj v tom prvom fscanf pouzi pointre ( skontroluj si &)
xadman
Medium Star
Medium Star
Príspevky: 305
Registrovaný: 09 mar 2011, 17:02

Re: C++ pomoc s chybou v programe

Príspevok od používateľa xadman »

máš tam kučeravé zátvorky zle

Kód: Vybrať všetko

if (podmienka) { ... }
else { ... }
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: C++ pomoc s chybou v programe

Príspevok od používateľa BX »

Program má problém, lebo ty máš problém so zátvorkami (hlavne)
Príkazy if, else, for, while... očakávajú za sebou jeden jediný príkaz (napr. if (a == 1) print("jeden");) Ak má tých príkazov byť viac, musíš ich obaliť do zložených zátvoriek.
Tá zátvorka za fopen je preto zbytočná. Zátvorka pôjde hneď za if, tam vykonáš čo treba príkazy ukončíš zatváracou zátvrokou.
Za to pôjde else a zase - ak jeden príkaz, tak pohoda, ak viac, musíš ich obaliť do zátvoriek.

Ďalej toto:

Kód: Vybrať všetko

if (fscanf (fr,"%d %d %d %d %d",a,b,c,d,e)==5) // tu nemas ampersandy
     
     fscanf (fr,"%d",&a); // tu uz asi nemam co nacitavat, lebo po poslednom fscanf som za piatym cislom v subore
       fscanf (fr,"%d",&b); // to iste...
         fscanf (fr,"%d",&c); // ...
           fscanf (fr,"%d",&d); // ...
             fscanf (fr,"%d",&e); // ...
A kým som toto napísal, už sa tu objavili odpovede, ale je mi ľúto to zmazať :P
JacobKE
Amateur
Amateur
Používateľov profilový obrázok
Príspevky: 11
Registrovaný: 01 jan 2012, 22:19
Bydlisko: Ruskov

Re: C++ pomoc s chybou v programe

Príspevok od používateľa JacobKE »

Pozrel som,"&" su opravene ale stale to nefunguje. Keby bol niekto taky dobry a rovno by mi napísal opraveny zdrojovy kód tak by som bol velmi vdačny :)
xadman
Medium Star
Medium Star
Príspevky: 305
Registrovaný: 09 mar 2011, 17:02

Re: C++ pomoc s chybou v programe

Príspevok od používateľa xadman »

Kód: Vybrať všetko

#include <conio.h>
#include <stdio.h>
int main ()
{
    FILE *fr;
    int a,b,c,d,e;
     
    fr=fopen("CISLA2.TXT","r");
    if (fscanf (fr,"%d %d %d %d %d",&a,&b,&c,&d,&e)==5){     
        fscanf (fr,"%d",&a);
        fscanf (fr,"%d",&b);
        fscanf (fr,"%d",&c);
        fscanf (fr,"%d",&d);
        fscanf (fr,"%d",&e);
     
        printf ("Sucin je %d\n",a*b*c*d*e);
        printf ("Sucin minus tretie cislo je %d",(a*b*c*d*e)-c);
     
    } else {
        printf ("Zly pocet cisel");
    }
    fclose(fr);
    getch();
}
// neukladaj to ako .cpp ale ako .c, lebo toto je Ccko
JacobKE
Amateur
Amateur
Používateľov profilový obrázok
Príspevky: 11
Registrovaný: 01 jan 2012, 22:19
Bydlisko: Ruskov

Re: C++ pomoc s chybou v programe

Príspevok od používateľa JacobKE »

Ježíš -.-...už som asi prepracovany,do kučeravych zatvoriek som dal toto "(fscanf (fr,"%d %d %d %d %d",a,b,c,d,e)==5)"
Ďakujem za pomoc :)
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: C++ pomoc s chybou v programe

Príspevok od používateľa BX »

Tých 5 fscanf tam ale nemá čo robiť, keď to všetko načítaš už v tom prvom!
Napísať odpoveď