Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - controllo numeri primi...
Forum - C/C++ - controllo numeri primi...

Avatar
trane_dirtyboy (Normal User)
Newbie


Messaggi: 11
Iscritto: 19/11/2007

Segnala al moderatore
Postato alle 15:48
Lunedì, 19/11/2007
ho un probema con sto c++, e soo 1 mese k lo studio ma vorrei capire xk questo programma k credo sia scritto giusto ocme forma, si pianta pgni volta k si immette un numero tipo 5.




#include <iostream>
using namespace std;


void main()
{
    int div=2;
    int num;
    int r;
    
    
    cout<<"Che Numero Devo Controllare?"<<endl;
    cin>>num;

    r=num%div;

    while (num>div)
    {
        if (r==0)
        {
            cout<<"il numero non e' primo!"<<endl;
            div=num+10;
        }
        if(r==1)
        {
            div=div++;
        }
    }
if (num<div)
{
    cout<<"Fine!"<<endl;
}
if (num>div)
{
    cout<<"Il numero e' Primo!"<<endl;
}
    
    system ("pause");

se gentilmente puo aiutarmi qlk1 tenendo presente k sn moloto sega in c++.. grazie
}

PM Quote
Avatar
trane_dirtyboy (Normal User)
Newbie


Messaggi: 11
Iscritto: 19/11/2007

Segnala al moderatore
Postato alle 15:54
Lunedì, 19/11/2007
Testo quotato

Postato originariamente da trane_dirtyboy:

ho un probema con sto c++, e soo 1 mese k lo studio ma vorrei capire xk questo programma k credo sia scritto giusto ocme forma, si pianta pgni volta k si immette un numero tipo 5.




#include <iostream>
using namespace std;


void main()
{
    int div=2;
    int num;
    int r;
    
    
    cout<<"Che Numero Devo Controllare?"<<endl;
    cin>>num;

    r=num%div;

    while (num>div)
    {
        if (r==0)
        {
            cout<<"il numero non e' primo!"<<endl;
            div=num+10;
        }
        if(r==1)
        {
            div=div++;
        }
    }
if (num<div)
{
    cout<<"Fine!"<<endl;
}
if (num>div)
{
    cout<<"Il numero e' Primo!"<<endl;
}
    
    system ("pause");
}
se gentilmente puo aiutarmi qlk1 tenendo presente k sn moloto sega in c++.. grazie



ho risolto mettendo un else al posto dell'ultimo if. ma qlk1 mi spiega il xk? teoricamente o ne esegue unoo esegue l'altro...

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 17:54
Lunedì, 19/11/2007
guarda questa versione del programma (sbagliato ma con degli output):

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5. int main() {
  6.   int div=2;
  7.   int num;
  8.   int r;
  9.  
  10.  
  11. cout<<"Che Numero Devo Controllare?"<<endl;
  12. cin>>num;
  13.  
  14. r=num%div;
  15. while (num>div) {
  16. cout << "div: " << div << endl;
  17.   if (r==0) {
  18.     cout<<"il numero non e' primo!"<<endl;
  19.    num = div + 10;
  20.   }
  21.  
  22. if(r==1) {
  23.  div=div++;
  24. }
  25. }
  26.  
  27. cout << num << " " << div << endl;
  28. if (num<div) {
  29.   cout<<"Fine!"<<endl;
  30. }
  31.  
  32. if (num>div) {
  33.   cout<<"Il numero e' Primo!"<<endl;
  34. }
  35.  
  36. return 0;
  37. }



l'output è questo:
5
div: 2
div: 3
div: 4
5 5

quei due 5 alla fine sono num e div, e la situazione in cui sono uguali non è gestita dai tuoi if messi in quel modo, con l'else invece fai un'operazione quando l'if di prima risulta falso.
Quindi quei num < dim e num > div o esegue uno, o l'altro o nessuno dei due ed era il caso di 5.

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 18:04
Lunedì, 19/11/2007
cmq mi pare non funzioni il tuo programma anche con l'else, prova così:

edit: nono sembra funzionare anche il tuo(anche se per 0 e 1 non dice se primo o non primo), però così credo sia più chiaro da leggere così:

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5.   int div=2;
  6.   int num;
  7.   int r;
  8.   bool primo = true;
  9.  
  10.  
  11.   cout<<"Che Numero Devo Controllare?"<<endl;
  12.   cin>>num;
  13.  
  14.   while (num > div) {
  15.     r = num % div;
  16.     if (r==0) {
  17.      primo = false;
  18.      break;
  19.     } else div++;
  20.   }
  21.  
  22.   if (primo) {
  23.     cout<<"Il numero e' Primo!"<<endl;
  24.   } else cout<<"il numero non e' primo!"<<endl;
  25.  
  26.  return 0;
  27. }


Ultima modifica effettuata da netarrow il 19/11/2007 alle 18:15
PM Quote
Avatar
trane_dirtyboy (Normal User)
Newbie


Messaggi: 11
Iscritto: 19/11/2007

Segnala al moderatore
Postato alle 13:49
Martedì, 20/11/2007
grazie ma i break cosi nn so cs siano... e da poco k lo facio ho fatto solo i costrutti mentre e se... grazie cmq

PM Quote
Avatar
trane_dirtyboy (Normal User)
Newbie


Messaggi: 11
Iscritto: 19/11/2007

Segnala al moderatore
Postato alle 13:50
Martedì, 20/11/2007
Testo quotato

Postato originariamente da netarrow:

guarda questa versione del programma (sbagliato ma con degli output):

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5. int main() {
  6.   int div=2;
  7.   int num;
  8.   int r;
  9.  
  10.  
  11. cout<<"Che Numero Devo Controllare?"<<endl;
  12. cin>>num;
  13.  
  14. r=num%div;
  15. while (num>div) {
  16. cout << "div: " << div << endl;
  17.   if (r==0) {
  18.     cout<<"il numero non e' primo!"<<endl;
  19.    num = div + 10;
  20.   }
  21.  
  22. if(r==1) {
  23.  div=div++;
  24. }
  25. }
  26.  
  27. cout << num << " " << div << endl;
  28. if (num<div) {
  29.   cout<<"Fine!"<<endl;
  30. }
  31.  
  32. if (num>div) {
  33.   cout<<"Il numero e' Primo!"<<endl;
  34. }
  35.  
  36. return 0;
  37. }



l'output è questo:
5
div: 2
div: 3
div: 4
5 5

quei due 5 alla fine sono num e div, e la situazione in cui sono uguali non è gestita dai tuoi if messi in quel modo, con l'else invece fai un'operazione quando l'if di prima risulta falso.
Quindi quei num < dim e num > div o esegue uno, o l'altro o nessuno dei due ed era il caso di 5.




grazie davvero. nn c avevo pensato..

PM Quote