Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    14

    [C++] Contare numeri primi in un array.

    Buonasera a tutti!
    Scusate per l'ora ma ho un esercizio da risolvere e siccome sono malato mi ci sono messo ora
    L'esercizio chiede questo: Definire una funzione che, dato un intero n, conta quanti sono i numeri primi minori o uguali a n, servendosi di un' ulteriore funzione che controlli la primalità del numero.
    Io nella mia stolta ignoranza ho implementato questa soluzione(riveltasi errata) che però mi restituisce che nell'array ci sono N numeri primi Sapreste dirmi dove è che sbaglio per piacere??
    Grazie in anticipo.
    Posto il codice per chiarezza:
    codice:
    //Funzioni che determinano la presenza di numeri primi un array. Se ci sono valuta quelli minori di n(dimensione)
    #include <iostream>
    using namespace std;
    char if_primo (int a[], int n){
         int k = 2;
         for (int i = 0; i < n; i++,k++){
             if (a[i] % k == 0)
             return 'n'; // Se trova divisori il numero non è primo e restituisce n(no)
             }
             return 'y'; // Se non li trova il numero è primo e restituisce y(yes)
         }
    int conta_primi (int a[], int n){
        int conta = 0;
        for (int i = 0; i < n; i++){
            if (if_primo(a,n) == 'y' && a[i] < n)
            conta++;
            } 
            return conta;
        }     
    int main () {
        cout << "Inserisci dimensione array: ";
        int n;
        cin >> n;
        int a[n];
        cout << "Ora inserisci gli elementi dell'array" << endl;
        for (int i = 0; i < n; i++){
            cin >> a[i];
            }
            char esiste = if_primo(a,n);
            cout << "Ci sono primi nella sequenza che hai inserito?? " << esiste << endl;
            if (esiste == 'y'){
                       cout << "Ci sono esattamente: " << conta_primi(a,n) << " primi nell'array" << endl;
                       }
                       else if (esiste == 'n'){
                            cout << "Primi nell'array: " << conta_primi(a,n) << endl;
                            }
                            system("PAUSE");
                            return 0;
            
        }
    (Scusate ma sono sempre quello che non conosce i puntatori quindi per piacere se potete solo aiuti che non li prevedano nel codice grazie mille )

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Per cominciare, se devi scrivere una funzione per determinare se un numero è primo, il suo prototipo dovrebbe essere simile a

    bool primo(int n)

    in quanto deve accettare un solo parametro (il numero da controllare) e restituire un valore vero/falso
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    14
    Ok allora cambio solo il tipo di dato restituito nella prima funzione??
    Ma se poi io devo verificare tutti i dati nell'array, perché gli passo solo il valore
    in input alla funzione, invece che tutto l'array??
    La prima funzione diventa quindi in questo modo??
    codice:
    #include <iostream>
    using namespace std;
    bool if_primo (int n){
    //resto del codice
    //dove inserisco la valutazione di un numero primo dentro un array
    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da jimmikid
    Ma se poi io devo verificare tutti i dati nell'array, perché gli passo solo il valore
    in input alla funzione, invece che tutto l'array??
    Ma di che array parli? Cosa c'è in questo array?

    Hai chiesto "... funzione che controlli la primalità del numero" ... quindi parliamo di una funzione che deve controllare la primalità di *un* numero.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.