RISOLTO Esercizio numeri pari

Stato
Discussione chiusa ad ulteriori risposte.

L_AND_F(Hack)

Nuovo Utente
303
53
Monitor
mpman
Periferiche
usb,mouse,tastiera
OS
Windows 7
Salve a tutti , ho un esercizio da fare: SCRIVI UN PROGRAMMA IN C++ CHE VISUALIZZI I PRIMI 100 NUMERI PARI

Una volta fatto:
C++:
//librerie
#include<iostream>
using namespace std;
//determinare i primi 100 numeri pari
int main(){
    int N,Conta,Somma,Num;
    Conta=1;
    Somma=0;
    Pari=0
    cout<<"inserisci la quantita' dei numeri: ";
    cin>>N;
    while(Conta<=N)
         {
         cout<<"inserisci il numero: ";
         cin>>Num;
         if(Num%2==0)
            Pari++;
         Somma=Somma+1;
         Conta++;
         }
    cout<<"i primi 100 numeri pari sono: "<<pari<<endl;
    


}



Cosa sbaglio? cosa non ho messo ? non ho capito come visualizzare i 100 numeri pari.. me lo potete spiegare?
Cosa h sbaglaito nella codifica?

Grazie a tutti
 

clessidra

Utente Attivo
766
272
CPU
VIA C3
GPU
Ati Rage
OS
linux - Red Hat 1.1
Premetto che non conosco il c++, nè sono un programmatore, ma se la traccia è corretta devi solo visualizzare i primi 100 numeri pari.
Io non farei chiedere al programma di inserire alcun dato (100 è un dato di partenza noto).

Il ciclo dovrebbe valutare se Conta è o non è uguale a 100, e dovrebbe essere inizializzato a 0.

Nel ciclo, una volta verificato che il numero è pari lo stampo a video e incremento il contatore Conta.

Serve una variabile che venga incrementata ad ogni ciclo. Può essere inizializzata sia a zero, e in questo caso 0 verrà indicato e stampato come numero pari, sia a 1. La traccia non specifica. Io nel dubbio scriverei due programmi diversi con entrambe le ipotesi.
-----------
In alternativa si può usare solo Conta anzichè due variabili; Conta verrebbe inizializzato a 100: una volta trovato un numero pari Conta diminuisce di 1; il ciclo valuta Conta e se è maggiore di 0 continua.
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,662
11,444
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Nel ciclo il controllo è sbagliato: deve essere Conta<N (non <=, altrimenti quando ne hai stampati 100 il programma prosegue fino al 101°);
nell'if del ciclo, quando trovi un pari devi servono 2 istruzioni (tra parentesi graffe...):
la prima che incrementa di 1 il numero di pari trovati (Conta++), subito dopo devi stampare il numero pari che hai trovato con una cout, è per questo motivo che non vedi i risultati. Invece l'ultima cout fuori dal while devi toglierla.
Insomma devi stampare di volta in volta che trovi un pari,
se volessi stampare solo alla fine dovresti prima memorizzare i pari trovati (in un array per esempio) e poi stamparli

A parte questo, tu stai risolvendo un altro esercizio: stampare i primi 100 numeri pari inseriti da tastiera
 
Ultima modifica:

nman

Nuovo Utente
35
82
Io con VBA lo farei cosi ...... con stampa a video immediata
Magari ti puo essere di spunto ..........
Codice:
Private Sub Trova100Pari()
Dim Conta As Integer    ' Un numero intero crescente con il ciclo
Dim Somma As Integer    ' Il conteggio dei numeri pari trovato
Dim Limit As Integer    ' il valore limite a cui vuoi arrestare il ciclo
Conta = 0
Somma = 0
Limit = 100    '  Questo valore ti puo anche arrivare dall'esterno

    Do Until Somma >= Limit
    Conta = Conta + 1
        If ((Conta \ 2) = (Conta / 2)) Then    ' Verifico se è pari
            Somma = Somma + 1
            Debug.Print Conta       ' Stampo a video
        End If
    Loop

End Sub
 

clessidra

Utente Attivo
766
272
CPU
VIA C3
GPU
Ati Rage
OS
linux - Red Hat 1.1
Io con VBA lo farei cosi ...... con stampa a video immediata
Magari ti puo essere di spunto ..........
Codice:
Private Sub Trova100Pari()
Dim Conta As Integer    ' Un numero intero crescente con il ciclo
Dim Somma As Integer    ' Il conteggio dei numeri pari trovato
Dim Limit As Integer    ' il valore limite a cui vuoi arrestare il ciclo
Conta = 0
Somma = 0
Limit = 100    '  Questo valore ti puo anche arrivare dall'esterno

    Do Until Somma >= Limit
    Conta = Conta + 1
        If ((Conta \ 2) = (Conta / 2)) Then    ' Verifico se è pari
            Somma = Somma + 1
            Debug.Print Conta       ' Stampo a video
        End If
    Loop

End Sub
Io non userei Conta in questo modo, lui lo vorrebbe usare come contatore non come numero da verificare.
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,662
11,444
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
@nman
come hai fatto non va bene, lui deve stampare il numero controllato Num

Ripeto che l'esercizio fatto in questo modo risolve un altro problema: stampa i primi 100 pari inseriti da utente.
Invece lui dovrebbe stampare i primi 100 numeri pari (così dice il testo) e per farlo basta un banalissimo ciclo for che partendo da 0 (o da 2 se non interessa lo 0, stampa 0,2,4,6,8,..198 (200 se lo 0 non interessa)
 

nman

Nuovo Utente
35
82
Io non userei Conta in questo modo, lui lo vorrebbe usare come contatore non come numero da verificare.
Io non ho capito bene le sue variabili variabili (non tutte dichiarate) ......... pero mi sembrano troppe

Per me "Conta" è il contatore (che nel caso particolare viaggia da 0 a 200 )
ed è anche il numero da verificare se Pari oppure NonPari


....... stampa 0,2,4,6,8,..198
esatto, io sul mio "Debug.print" leggo: 2, 4, 6, ...... 198, 200
 

L_AND_F(Hack)

Nuovo Utente
303
53
Monitor
mpman
Periferiche
usb,mouse,tastiera
OS
Windows 7
Nel ciclo il controllo è sbagliato: deve essere Contanell'if del ciclo, quando trovi un pari devi servono 2 istruzioni (tra parentesi graffe...):
la prima che incrementa di 1 il numero di pari trovati (Conta++), subito dopo devi stampare il numero pari che hai trovato con una cout, è per questo motivo che non vedi i risultati. Invece l'ultima cout fuori dal while devi toglierla.
Insomma devi stampare di volta in volta che trovi un pari,
se volessi stampare solo alla fine dovresti prima memorizzare i pari trovati (in un array per esempio) e poi stamparli

A parte questo, tu stai risolvendo un altro esercizio: stampare i primi 100 numeri pari inseriti da tastiera
Come verrebbe ?

cosa metto nell'if?
@nman ciò che hai fatto non lo so fare , poiché il mio professore non li ha spiegati così, io uso il dev c++ comunque

Inviato da SM-J530F tramite App ufficiale di Tom\'s Hardware Italia Forum
 

nman

Nuovo Utente
35
82
........ poiché il mio professore non li ha spiegati così, io ......
Allora devi superare il professore ........ :) .........

comincia a fare un ciclo da 0 a infinito (qui usi una variabile che chiamiamo "Conta")

all'interno del ciclo verifichi se "Conta" è Pari o DisPari
---- If Pari
-----------------incrementi di una unita la variabile "Somma"
----------------- Stampi a video il valore di "Conta"
---- If DisPari
----------------- Non fa nulla

per ultimo prevedi una espressione di arresto del ciclo quando "Somma" arriva a 100
.
 

L_AND_F(Hack)

Nuovo Utente
303
53
Monitor
mpman
Periferiche
usb,mouse,tastiera
OS
Windows 7
Cosa dovrei aggiungere? comunque il mio prof non vuole che faccia cose che non ha spiegato
C++:
//librerie
#include<iostream>
using namespace std;
//determinare i primi 100 numeri pari
int main(){
    int N,Conta,Somma,Num;
    Conta=0;
    Somma=0;
    Pari=0;
    cout<<"inserisci la quantita' dei numeri: ";
    cin>>N;
    while(Conta<N)
         {
         cout<<"inserisci il numero: ";
         cin>>Num;
         if(Num%2==0)
            Pari=Pari+1;
         Somma=Somma+1;
         Conta++;
         }
    getchar();
    
}
 
Ultima modifica:

clessidra

Utente Attivo
766
272
CPU
VIA C3
GPU
Ati Rage
OS
linux - Red Hat 1.1
Forse faresti meglio a scrivere la traccia esatta del compito.
 

Fraiz

Nuovo Utente
25
3
OS
Windows 10
C++:
#include <iostream>
using namespace std;
#define N 100

int main(){
    int i;  //indice iterazione
    int n = 0;  //numero

    cout << "I numeri pari sono\n";
    for (i = 0; i < N; i++){
        n = n + 1;
        if (((n / 2) * 2) == n){
            cout <<"\n"<< n;
        }
    }
return 0;
}
 
Stato
Discussione chiusa ad ulteriori risposte.

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili