• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Guida Semplice esercizio in C++

Clodoveo

Utente Assiduo
Autore del topic
12 Gennaio 2011
816
57
Miglior risposta
0
Salve utenti, quest'oggi vi spiegherò questo semplice esercizio in C++.

TITOLO:​
DATI N NUMERI INTERI IN INPUT, CHIEDERE N VOLTE UN NUMERO INTERO E DARE IN USCITA QUANTI NUMERI POSITIVI, NEGATIVI E NULLI SONO STATI DATI.

Iniziamo con l'aprire il nostro IDE (Dev-C++, Eclipse, xCode o quello che sia) e creiamo un nuovo progetto. Consiglierei di creare una "Console Application" (simile al cmd che trovate in Windows), giusto per farvi capire il funzionamento del programma.
Dopo aver selezionato il tipo di progetto da creare e il linguaggio da utilizzare, dichiariamo le nostre variabili, ossia:

N, a, numeriPositivi, numeriNegativi, numeriNulli.​

SPIEGAZIONE:
1) Variabile N: la variabile N conterrà il numero di numeri (scusate il gioco di parole) che dovremmo poi inserire in input durante la fase di iterazione.
La dichiariamo in questo modo:

"int n;"​

ATTENZIONE: NON METTETE I DOPPI APICI, ALTRIMENTI VERRÀ CONSIDERATA COME STRINGA DALL'IDE.

2) Variabile A: la variabile A conterrà i numeri che inseriremo durante la fase di iterazione. Quindi, ci verrà richiesto N volte di inserire un numero intero in input e questo numero sarà contenuto nella "scatola" A.

"int a;"​

ATTENZIONE: NON METTETE I DOPPI APICI, ALTRIMENTI VERRÀ CONSIDERATA COME STRINGA DALL'IDE.

3) Variabile numeriPositivi: questa variabile la vedremo durante la fase di iterazione; essa incrementerà di 1, ogni qualvolta verrà inserito un numero positivo.
La dichiariamo in questo modo:

"int numeriPositivi = 0;"​

ATTENZIONE: NON METTETE I DOPPI APICI, ALTRIMENTI VERRÀ CONSIDERATA COME STRINGA DALL'IDE.

4) Variabile numeriNegativi: anche questa variabile la vedremo durante la fase di iterazione; il suo funzionamento è uguale a quella citata precedentemente, ma quest'ultima incrementerà di 1, ogni qualvolta verrà inserito un numero negativo.
La dichiariamo in questo modo:

"int numeriNegativi = 0;"


ATTENZIONE: NON METTETE I DOPPI APICI, ALTRIMENTI VERRÀ CONSIDERATA COME STRINGA DALL'IDE.

5) Variabile numeriNulli: quest'ultima variabile incrementerà ogni qual volta verrà inserito il numero zero in input.
La dichiariamo in questo modo:

"int numeriNulli = 0;"​

ATTENZIONE: NON METTETE I DOPPI APICI, ALTRIMENTI VERRÀ CONSIDERATA COME STRINGA DALL'IDE.

Dopo questa breve spiegazione, vi mostro come sarà la parte principale del programma (detta anche main):

PARTE PRINCIPALE:


#include <cstdlib>
#include <iostream>
using namespace std;

Int main()
{
int n, a;
int numeriPositivi = 0;
int numeriNegativi = 0;
int numeriNulli = 0;

cout<<"Quanti numeri N vuoi inserire?";
cin>>n;

// Qui verrà inserito il contenuto successivo.

System("PAUSE");
Return EXIT_SUCCESS;
} // Chiusura del main.


ATTENZIONE: ATTRAVERSO LA LIBRERIA "<iostream>", SARÀ POSSIBILE UTILIZZARE IL COMANDO CHE CI SERVIRÀ PER DARE IN INPUT VALORI, STRINGHE O CARATTERI. LA LIBRERIA INCLUDE ANCHE LA GESTIONE DEGLI OUTPUT.
ATTRAVERSO IL COMANDO "cout<<", IL PROGRAMMA CI RESTITUIRÀ IN OUTPUT LA DOMANDA "Quanti numeri N vuoi inserire?".
CON IL COMANDO "cin>>", NOI DAREMO IN INPUT IL VALORE NUMERICO.
LE DOPPIE // NON SONO CONSIDERATE DALL'IDE POICHÈ I DOPPI SLASH INDICANO UN COMMENTO. I COMMENTI SERVONO A RENDERE PIÙ LEGGIBILE E QUINDI COMPRENSIBILE UN PROGRAMMA.
OLTRE AI DOPPI SLASH, È POSSIBILE INSERIRE ANCHE IL COMMENTO SU PIÙ RIGHE TRAMITE IL /* (APERTURA DEL COMMENTO) E */ (CHIUSURA DEL COMMENTO).


ESEMPIO 1:
// Commento di prova

ESEMPIO 2:
/* Commento di
prova. */


CONTENUTO SUCCESSIVO:

In questa parte, noi inseriremo le istruzioni che dovranno lavorare: il for, quindi un ciclo con contatore, la variabile a e infine inseriremo una selezione.

6) Ciclo For: con il ciclo for, intendiamo quel ciclo che utilizza una variabile contatore denominata i e che sa quante volte dobbiamo ciclare. Il ciclo, smetterà di funzionare quando raggiungerà l'obiettivo da noi richiesto.
Lo dichiariamo in questo modo:

for(int i=0; i<n; i++){​

// Contenuto.​

Quindi, abbiamo portato a zero la variabile contatore, poi abbiamo inserito una condizione (i<n) e infine un incremento.
In poche parole, il ciclo smetterà di funzionare quando raggiungerà N e incrementerà di 1 ogni volta che avrà controllato il numero inserito (se positivo, negativo o nullo).
Nel ciclo, inseriremo questo:

cout<<"Dammi un numero";
cin>>a;

if(a>0)
numeriPositivi++
else
if(a<0)
numeriNegativi++
else
if(a==0)
numeriNulli++
}

cout<<"Hai inserito "<<numeriPositivi<<" numeri positivi in input"; cout<<endl;
cout<<"Hai inserito "<<numeriNegativi<<" numeri negativi in input"; cout<<endl;
cout<<"Hai inserito "<<numeriNulli<<" numeri nulli in input"; cout<<endl;


ATTENZIONE: PER CAPIRE IL FUNZIONAMENTO DELLE VARIABILI "numeriPositivi", "numeriNegativi" e "numeriNulli", RILEGGERE LA PARTE INIZIALE DEL TOPIC.

Detto questo, il programma finale sarà:

#include <cstdlib>
#include <iostream>
using namespace std;


Int main()
{
int n, a;
int numeriPositivi = 0;
int numeriNegativi = 0;
int numeriNulli = 0;

cout<<"Quanti numeri N vuoi inserire?";
cin>>n;

for(int i=0; i<n; i++){
cout<<"Dammi un numero";
cin>>a;

if(a>0)
numeriPositivi++
else
if(a<0)
numeriNegativi++
else
if(a==0)
numeriNulli++
}

cout<<"Hai inserito "<<numeriPositivi<<" numeri positivi in input"; cout<<endl;
cout<<"Hai inserito "<<numeriNegativi<<" numeri negativi in input"; cout<<endl;
cout<<"Hai inserito "<<numeriNulli<<" numeri nulli in input"; cout<<endl;

System("PAUSE");
Return EXIT_SUCCESS;
}


Dopo aver compilato il programma, salvate e chiudete l'IDE; avviate il vostro file eseguibile e controllate il funzionamento del programma.
N.B: purtroppo tramite browser non c'è l'indentazione del codice, ma usando un IDE qualsiasi, esso la farà automaticamente.
Per qualsiasi domanda, mandatemi un messaggio privato, ciao! ;)
 
Ultima modifica:
  • Like
Reactions: 1 person
@Clodoveo il ciclo for , come tutti i cicli in C++ , ciclano per vero , quindi il seguente codice è sbagliato:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
perché se i vale 0 e n 3 (si presume), i==n risulta falso ed esce dal ciclo. la condizione è < di n.

Tra l'altro non c'è bisogno di usare la macro EXIT_SUCCESS non è che sia sbagliato , ma disolito si usa return 0. Di standard EXIT_SUCCESS e EXIT_FAILURE si usano come argomento di exit.
 
@Clodoveo il ciclo for , come tutti i cicli in C++ , ciclano per vero , quindi il seguente codice è sbagliato:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
perché se i vale 0 e n 3 (si presume), i==n risulta falso ed esce dal ciclo. la condizione è < di n.

Tra l'altro non c'è bisogno di usare la macro EXIT_SUCCESS non è che sia sbagliato , ma disolito si usa return 0. Di standard EXIT_SUCCESS e EXIT_FAILURE si usano come argomento di exit.

Sì, per quanto riguarda il for hai ragione. Infatti oggi, mentre facevo un simile esercizio in classe, mi sono reso conto dell'errore!
Per quanto riguarda il Return, noi su Dev-C++ usiamo il Return EXIT_SUCCESS, comunque hai ragione tu che non è sbagliata come forma! Grazie per l'avviso! ;)
 
Per quanto riguarda il Return, noi su Dev-C++ usiamo il Return EXIT_SUCCESS, comunque hai ragione tu che non è sbagliata come forma! Grazie per l'avviso! ;)

Dipende da quale compilatore vai ad utilizzare.
In ambito scolastico, io ho utilizzato molto Code::Blocks e inserisce lui in automatico un "return 0".
Comunque, come ti ha detto TBH, non è assolutamente sbagliato ;)

Un'altra pignoleria che vorrei farti notare, riguarda le dichiarazioni delle variabili. Personalmente, ho l'abitudine di inizializzarle tutte (quindi porle tutte = 0 nel momento in cui le vado a dichiarare) perchè nel momento in cui le dichiari, non sai quale "fetta" di memoria viene assegnata alla variabile e può essere una porzione di memoria già usata e "piena".
Mi successe un paio di anni fa a scuola con un programma per il calcolo di equazioni di secondo grado. Non avevo inizializzato una int e il programma impazziva nel momento in cui andavo a richiamare quella variabile per stampare un risultato.
Comunque il tuo programma, a livello di sintassi, va bene.
Continua così! :emoji_smiley: