Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - crivello di eratostene
Forum - C/C++ - crivello di eratostene

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
dov'è che sbaglio secondo voi??

Codice sorgente - presumibilmente C++

  1. //intestazione...
  2.  
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. const int Max = 1000;//costante di riferimento per l'array A[].
  8.  
  9. int leggi(int [], int &, int); //prototipo funzione leggi.
  10.  
  11. int ordina(int [], int); //prototipo funzione ordina.
  12.  
  13. int crivello(int [], int &);//prototipo funzione crivello.
  14. //MAIN--------------------------------------------------------------
  15. int main ()
  16. {
  17.     int n, A[Max], idimA = 0;
  18.    
  19.     cout << "inserisci un numero. \n\n";
  20.    
  21.     cin >> n;
  22.    
  23.     leggi(A, idimA, n);
  24.    
  25.     crivello(A, idimA);
  26.    
  27.     cout << "la sequenza dei numeri primi contenuti tra l'unita' e il numero inserito e':\n\n\n";
  28.    
  29.     for(int i = 0; i < idimA; i++)
  30.     cout << A[i] << "   ";
  31.     cout << endl << endl;
  32.    
  33.    
  34.     system("pause");
  35.     return 0;
  36. }    
  37. //------------------------------------------------------
  38. //funzione che applica il concetto del crivello di Eratostene!
  39. //toglie i multipli dei numeri primi lasciando solo quest'ultimi.
  40. //(lavora sui numeri compresi tra l'unità e il numero inserito).
  41. int crivello(int A[], int & idimA)
  42. {
  43.     for (int i = idimA - 1; i >= (idimA - 1)/2; i--){
  44.        for(int z = 0; z <= (idimA - 1)/2; z++)
  45.         if (A[i] % A[z] == 0 && A[i] != A[z]){
  46.                 A[i] = 10000;
  47.                 ordina(A, idimA);
  48.                 idimA--;
  49.                 break;
  50.             }        
  51.        }
  52.     return 0;
  53. }  
  54. //------------------------------------------------------
  55. //funzione che inserisce nell'array A i numeri che vanno da 2 al numero n inserito da tastiera.
  56. int leggi(int A[], int & idimA, int n)
  57. {
  58.  
  59.     for (int i = 0, z = 2; z < n; i++, z++)
  60.     {
  61.          A[i] = z;  
  62.          idimA++;
  63.  
  64.    }
  65. return 0;
  66. }  
  67.  
  68. //--------------------------------------------------------
  69. //funzione che ordina l'array in modo crescente.
  70. int ordina(int A[], int idimA)
  71. {
  72.     int temp = 0;
  73.    
  74.     for (int z = 0; z < idimA; z++)
  75.         for (int i = 1; i <= idimA; i++)
  76.            
  77.            if (A[i - 1] > A[i]){
  78.              
  79.               temp = A[i];
  80.               A[i] = A[i - 1];
  81.               A[i - 1] = temp;
  82.       }
  83.      
  84.       return 0;
  85.      
  86. }



grazie per l'aiuto....questo forum mi piace un casino :rofl:

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 10:08
Sabato, 28/11/2009
ho risolto.
grazie comunque....

il codice giusto è:

Codice sorgente - presumibilmente C++

  1. //intestazione...
  2.  
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. const int Max = 1000;//costante di riferimento per l'array A[].
  8.  
  9. int leggi(int [], int &, int); //prototipo funzione leggi.
  10.  
  11. int ordina(int [], int); //prototipo funzione ordina.
  12.  
  13. int crivello(int [], int &);//prototipo funzione crivello.
  14. //MAIN--------------------------------------------------------------
  15. int main ()
  16. {
  17.     int n, A[Max], idimA = 0;
  18.    
  19.     cout << "inserisci un numero. \n\n";
  20.    
  21.     cin >> n;
  22.    
  23.     leggi(A, idimA, n);
  24.    
  25.     crivello(A, idimA);
  26.    
  27.     cout << "la sequenza dei numeri primi contenuti tra l'unita' e il numero inserito e':\n\n\n";
  28.    
  29.     for(int i = 0; i < idimA; i++)
  30.     cout << A[i] << "   ";
  31.     cout << endl << endl;
  32.    
  33.    
  34.     system("pause");
  35.     return 0;
  36. }    
  37. //------------------------------------------------------
  38. //funzione che applica il concetto del crivello di Eratostene!
  39. //toglie i multipli dei numeri primi lasciando solo quest'ultimi.
  40. //(lavora sui numeri compresi tra l'unità e il numero inserito).
  41. int crivello(int A[], int & idimA)
  42. {
  43.     for (int i = idimA - 1; i >= 2; i--){
  44.        for(int z = 0; z <= (idimA - 1)/2; z++)
  45.         if (A[i] % A[z] == 0 && A[i] != A[z]){
  46.                 A[i] = 10000;
  47.                 ordina(A, idimA);
  48.                 idimA--;
  49.                 break;
  50.             }        
  51.        }
  52.     return 0;
  53. }  
  54. //------------------------------------------------------
  55. //funzione che inserisce nell'array A i numeri che vanno da 2 al numero n inserito da tastiera meno uno.
  56. int leggi(int A[], int & idimA, int n)
  57. {
  58.  
  59.     for (int i = 0, z = 2; z < n; i++, z++)
  60.     {
  61.          A[i] = z;  
  62.          idimA++;
  63.  
  64.    }
  65. return 0;
  66. }  
  67.  
  68. //--------------------------------------------------------
  69. //funzione che ordina l'array in modo crescente.
  70. int ordina(int A[], int idimA)
  71. {
  72.     int temp = 0;
  73.    
  74.     for (int z = 0; z < idimA; z++)
  75.         for (int i = 1; i <= idimA; i++)
  76.            
  77.            if (A[i - 1] > A[i]){
  78.              
  79.               temp = A[i];
  80.               A[i] = A[i - 1];
  81.               A[i - 1] = temp;
  82.       }
  83.      
  84.       return 0;
  85.      
  86. }



ciao hedo :rofl:

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 10:19
Sabato, 28/11/2009
ciao :)


Ingegnere Informatico
https://ldlagency.it
PM Quote