Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
28/11/09 8:42
dov'è che sbaglio secondo voi??

//intestazione...

#include <iostream>

using namespace std;

const int Max = 1000;//costante di riferimento per l'array A[].

int leggi(int [], int &, int); //prototipo funzione leggi.

int ordina(int [], int); //prototipo funzione ordina.

int crivello(int [], int &);//prototipo funzione crivello.
//MAIN--------------------------------------------------------------
int main ()
{
    int n, A[Max], idimA = 0;
    
    cout << "inserisci un numero. \n\n";
    
    cin >> n;
    
    leggi(A, idimA, n);
    
    crivello(A, idimA);
    
    cout << "la sequenza dei numeri primi contenuti tra l'unita' e il numero inserito e':\n\n\n";
    
    for(int i = 0; i < idimA; i++)
    cout << A[i] << "   ";
    cout << endl << endl;
    
    
    system("pause");
    return 0;
}    
//------------------------------------------------------
//funzione che applica il concetto del crivello di Eratostene!
//toglie i multipli dei numeri primi lasciando solo quest'ultimi. 
//(lavora sui numeri compresi tra l'unità e il numero inserito).
int crivello(int A[], int & idimA)
{
    for (int i = idimA - 1; i >= (idimA - 1)/2; i--){
       for(int z = 0; z <= (idimA - 1)/2; z++)
        if (A[i] % A[z] == 0 && A[i] != A[z]){
                A[i] = 10000;
                ordina(A, idimA);
                idimA--;
                break;
            }        
       } 
    return 0;
}   
//------------------------------------------------------
//funzione che inserisce nell'array A i numeri che vanno da 2 al numero n inserito da tastiera.
int leggi(int A[], int & idimA, int n)
{

    for (int i = 0, z = 2; z < n; i++, z++)
    {
         A[i] = z;   
         idimA++;

   }
return 0;
}   

//--------------------------------------------------------
//funzione che ordina l'array in modo crescente.
int ordina(int A[], int idimA)
{
    int temp = 0;
    
    for (int z = 0; z < idimA; z++)
        for (int i = 1; i <= idimA; i++)
           
           if (A[i - 1] > A[i]){
              
              temp = A[i];
              A[i] = A[i - 1];
              A[i - 1] = temp;
      }
      
      return 0;
      
}  


grazie per l'aiuto....questo forum mi piace un casino :rofl:
28/11/09 9:08
ho risolto.
grazie comunque....

il codice giusto è:

//intestazione...

#include <iostream>

using namespace std;

const int Max = 1000;//costante di riferimento per l'array A[].

int leggi(int [], int &, int); //prototipo funzione leggi.

int ordina(int [], int); //prototipo funzione ordina.

int crivello(int [], int &);//prototipo funzione crivello.
//MAIN--------------------------------------------------------------
int main ()
{
    int n, A[Max], idimA = 0;
    
    cout << "inserisci un numero. \n\n";
    
    cin >> n;
    
    leggi(A, idimA, n);
    
    crivello(A, idimA);
    
    cout << "la sequenza dei numeri primi contenuti tra l'unita' e il numero inserito e':\n\n\n";
    
    for(int i = 0; i < idimA; i++)
    cout << A[i] << "   ";
    cout << endl << endl;
    
    
    system("pause");
    return 0;
}    
//------------------------------------------------------
//funzione che applica il concetto del crivello di Eratostene!
//toglie i multipli dei numeri primi lasciando solo quest'ultimi. 
//(lavora sui numeri compresi tra l'unità e il numero inserito).
int crivello(int A[], int & idimA)
{
    for (int i = idimA - 1; i >= 2; i--){
       for(int z = 0; z <= (idimA - 1)/2; z++)
        if (A[i] % A[z] == 0 && A[i] != A[z]){
                A[i] = 10000;
                ordina(A, idimA);
                idimA--;
                break;
            }        
       } 
    return 0;
}   
//------------------------------------------------------
//funzione che inserisce nell'array A i numeri che vanno da 2 al numero n inserito da tastiera meno uno.
int leggi(int A[], int & idimA, int n)
{

    for (int i = 0, z = 2; z < n; i++, z++)
    {
         A[i] = z;   
         idimA++;

   }
return 0;
}   

//--------------------------------------------------------
//funzione che ordina l'array in modo crescente.
int ordina(int A[], int idimA)
{
    int temp = 0;
    
    for (int z = 0; z < idimA; z++)
        for (int i = 1; i <= idimA; i++)
           
           if (A[i - 1] > A[i]){
              
              temp = A[i];
              A[i] = A[i - 1];
              A[i - 1] = temp;
      }
      
      return 0;
      
}  


ciao hedo :rofl:
28/11/09 9:19
HeDo
ciao :)
aaa
19/02/19 10:28
Federico Magni
salve a tutti, stavo provando il programma e ho notato che non funziona nell'esecuzione del programma inserendo 50 mi da un errore, elenco di seguito le stringhe che la console emette:

//console
inserisci un numero.

50

la sequenza dei numeri primi contenuti tra l'unita' e il numero inserito e':


-858993460 2 3 4 5 6 7 8 9 10 11 13 17 19 23 29 31 37 41 43 47

Press any key to continue . . .

//

come vedete da un errore sia sul primo valore che non so come mai esiste visto che il crivello dovrebbe partire dal 2 (non sono sicuro e non vorrei sbagliarmi) e inoltre stampa anche dei numeri non primi come 4, 6, 8, 10
Allego il link da cui ho visto il funzionamento del crivello aimè wikipedia...

it.wikipedia.org/wiki/…

attendo risposta
cordiali saluti,
- Federico Magni
Ultima modifica effettuata da Federico Magni 19/02/19 10:31
aaa
19/02/19 18:15
TheDarkJuster
Postato originariamente da Federico Magni:
salve a tutti, stavo provando il programma e ho notato che non funziona nell'esecuzione del programma inserendo 50 mi da un errore, elenco di seguito le stringhe che la console emette:

//console
inserisci un numero.

50

la sequenza dei numeri primi contenuti tra l'unita' e il numero inserito e':


-858993460 2 3 4 5 6 7 8 9 10 11 13 17 19 23 29 31 37 41 43 47

Press any key to continue . . .

//

come vedete da un errore sia sul primo valore che non so come mai esiste visto che il crivello dovrebbe partire dal 2 (non sono sicuro e non vorrei sbagliarmi) e inoltre stampa anche dei numeri non primi come 4, 6, 8, 10
Allego il link da cui ho visto il funzionamento del crivello aimè wikipedia...

it.wikipedia.org/wiki/…

attendo risposta
cordiali saluti,
- Federico Magni


Attendi risposta a cosa? Un post del 2009? Su un esercizio scolastico postato da qualcuni che magari nemmeno frequenta più il forum da anni? Hai letto il regolamento?
aaa
20/02/19 7:00
Postato originariamente da Federico Magni:

salve a tutti


A parte il fatto che non si riesumano i thread di 10 anni fa, avresti potuto controllare da solo che il problema era nell'ordinamento, ovvero nella for

for (int i = 1; i <= idimA; i++)

che deve essere

for (int i = 1; i < idimA; i++)

A parte questo, con il SECONDO codice, inserendo 50, non ho i tuoi risultati (4, 6 ...) ma quelli corretti ...
21/02/19 14:33
Federico Magni
Postato originariamente da TheDarkJuster:
Postato originariamente da Federico Magni:
salve a tutti, stavo provando il programma e ho notato che non funziona nell'esecuzione del programma inserendo 50 mi da un errore, elenco di seguito le stringhe che la console emette:

//console
inserisci un numero.

50

la sequenza dei numeri primi contenuti tra l'unita' e il numero inserito e':


-858993460 2 3 4 5 6 7 8 9 10 11 13 17 19 23 29 31 37 41 43 47

Press any key to continue . . .

//

come vedete da un errore sia sul primo valore che non so come mai esiste visto che il crivello dovrebbe partire dal 2 (non sono sicuro e non vorrei sbagliarmi) e inoltre stampa anche dei numeri non primi come 4, 6, 8, 10
Allego il link da cui ho visto il funzionamento del crivello aim&Atilde;&uml; wikipedia...

it.wikipedia.org/wiki/…

attendo risposta
cordiali saluti,
- Federico Magni


Attendi risposta a cosa? Un post del 2009? Su un esercizio scolastico postato da qualcuni che magari nemmeno frequenta più il forum da anni? Hai letto il regolamento?

ciao ho letto il regolamento posso accettare che magari non ho rispettato le richieste dell'admin riguardo intestazione ecc ecc. non ho obbligato nessuno a rispondermi, sul fatto del punto "non facciamo compiti a nessuno" beh sono un ragazzo che studia da solo e sta cercando di imparare qualcosa ho trovato questo esercizio su un libro di inforatica per scuole superiori del 2009, ho chiesto un aiuto perche visto il mio codice che non funzionava ho provato questo, avendo quell'errore e non capendone l'origine, sul fatto di riesumare un ost di 9 anni fa quale roblema c'era? finché è presente nel forum perche non posso usarlo?

buon pomeriggio,
cordiali saluti
-Federico Magni
aaa
21/02/19 14:34
Federico Magni
Postato originariamente da TheDarkJuster:
Postato originariamente da Federico Magni:
salve a tutti, stavo provando il programma e ho notato che non funziona nell'esecuzione del programma inserendo 50 mi da un errore, elenco di seguito le stringhe che la console emette:

//console
inserisci un numero.

50

la sequenza dei numeri primi contenuti tra l'unita' e il numero inserito e':


-858993460 2 3 4 5 6 7 8 9 10 11 13 17 19 23 29 31 37 41 43 47

Press any key to continue . . .

//

come vedete da un errore sia sul primo valore che non so come mai esiste visto che il crivello dovrebbe partire dal 2 (non sono sicuro e non vorrei sbagliarmi) e inoltre stampa anche dei numeri non primi come 4, 6, 8, 10
Allego il link da cui ho visto il funzionamento del crivello aim&amp;amp;Atilde;&amp;amp;uml; wikipedia...

it.wikipedia.org/wiki/…

attendo risposta
cordiali saluti,
- Federico Magni


Attendi risposta a cosa? Un post del 2009? Su un esercizio scolastico postato da qualcuni che magari nemmeno frequenta pi&amp;Atilde;&amp;sup1; il forum da anni? Hai letto il regolamento?

ciao ho letto il regolamento posso accettare che magari non ho rispettato le richieste dell'admin riguardo intestazione ecc ecc. non ho obbligato nessuno a rispondermi, sul fatto del punto non facciamo compiti a nessuno beh sono un ragazzo che studia da solo e sta cercando di imparare qualcosa ho trovato questo esercizio su un libro di inforatica per scuole superiori del 2009, ho chiesto un aiuto perche visto il mio codice che non funzionava ho provato questo, avendo quell'errore e non capendone l'origine, sul fatto di riesumare un post di 9 anni fa quale è il problema ? finche il post è presente nel forum perche non posso usarlo?

buon pomeriggio,
cordiali saluti
-Federico Magni
Ultima modifica effettuata da Federico Magni 21/02/19 14:40
aaa