Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: De ce nu-mi merge programul din topic in C++?  (Citit de 3153 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
adc98
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 9



Vezi Profilul
« : Octombrie 19, 2013, 19:15:52 »

Acesta este programul, mai exact algorimtul fundamental de primalitate

#include <fstream>

using namespace std;
ifstream fin("primalitate.in");
ofstream fout("primalitate.out");
int n,i,prim;

int main()
{
    fin>>n;
    prim=1;
     if(n==0||n==1) prim=0;
      else for(i=2;i<=n/2;i++)
       if(n%i==0) prim=0;
       if(n%i!=0) prim=1;
    fout<<"Numarul este prim";
     else fout<<"Numarul nu este prim";
    fin.close();
    fout.close();
    return 0;
}

Vreau sa stiu de ce nu merge, deoarece de randul cu else fout imi apare o eroare spunandu-mi ca trebuie sa scriu in fata lui else if. Cand fac acest lucru imi spune ca este incorect ceea ce am scris.
Va rog mult daca ar putea cineva sa ma ajute si pe mine ca sa inteleg si eu unde am gresit
Memorat
RaduGabriel2012
Strain
*

Karma: 7
Deconectat Deconectat

Mesaje: 26



Vezi Profilul
« Răspunde #1 : Octombrie 19, 2013, 20:07:29 »

Cod:
      if(n%i!=0)  prim=1;
    fout<<"Numarul este prim";
     else fout<<"Numarul nu este prim";

Primul if nu prea are sens , tu ai facut verificarea in primul for , deci trebuie eliminat.
Iti da eroarea pentru ca else-ul tau nu e corespondent niciunui if. Tu trebuie sa verifici
daca variabila prim este egala cu 1.In caz afirmativ afisezi ca nr e prim altfel afisezi mesajul ca nu e prim.

deci :
Cod:
    if (prim==1)
      fout<<"Numarul este prim";
    else fout<<"Numarul nu este prim";

  P.S nu e nevoie sa testezi divizorii decat pana la radical din n si e si mult mai rapid.
Memorat
adc98
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 9



Vezi Profilul
« Răspunde #2 : Octombrie 19, 2013, 20:32:53 »

Cod:
      if(n%i!=0)  prim=1;
    fout<<"Numarul este prim";
     else fout<<"Numarul nu este prim";

Primul if nu prea are sens , tu ai facut verificarea in primul for , deci trebuie eliminat.
Iti da eroarea pentru ca else-ul tau nu e corespondent niciunui if. Tu trebuie sa verifici
daca variabila prim este egala cu 1.In caz afirmativ afisezi ca nr e prim altfel afisezi mesajul ca nu e prim.

deci :
Cod:
    if (prim==1)
      fout<<"Numarul este prim";
    else fout<<"Numarul nu este prim";

  P.S nu e nevoie sa testezi divizorii decat pana la radical din n si e si mult mai rapid.

Am incercat cum mi-ai spus tu si tot mi-a dat aceeasi eroare cum ca trebuie sa adaug if in fata lui else
Memorat
andrei8055
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #3 : Octombrie 19, 2013, 22:31:17 »

hei Smile
incearca sa folosesti niste acolade, se observa mai usor blocurile de cod. Incearca asta

#include <fstream>

using namespace std;
ifstream fin("primalitate.in");
ofstream fout("primalitate.out");
int n,i,prim;

int main()
{
    fin>>n;
    prim=1;
     if(n==0||n==1)
        prim=0;
     else
        {
         for(i=2;i<=n/2;i++)
                {
                if(n%i==0) prim=0;
                else
                 prim=1;
                }
        if(prim==1)
                fout<<"Numarul este prim";
        else
                fout<<"Numarul nu este prim";
        }
    fin.close();
    fout.close();
    return 0;
}

Memorat
adc98
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 9



Vezi Profilul
« Răspunde #4 : Octombrie 20, 2013, 07:26:22 »

hei Smile
incearca sa folosesti niste acolade, se observa mai usor blocurile de cod. Incearca asta

#include <fstream>

using namespace std;
ifstream fin("primalitate.in");
ofstream fout("primalitate.out");
int n,i,prim;

int main()
{
    fin>>n;
    prim=1;
     if(n==0||n==1)
        prim=0;
     else
        {
         for(i=2;i<=n/2;i++)
                {
                if(n%i==0) prim=0;
                else
                 prim=1;
                }
        if(prim==1)
                fout<<"Numarul este prim";
        else
                fout<<"Numarul nu este prim";
        }
    fin.close();
    fout.close();
    return 0;
}


Ms pt ajutor, Andrei
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines