Esercizio c++

Pubblicità

AlligatoreMarrone

Nuovo Utente
Messaggi
115
Reazioni
4
Punteggio
38
Buona sera.

Abbiamo iniziato da poco la programmazione in c++ a scuola.
Ed il nostro professore (nonostante la classe non abbia capito quasi nulla.) ci ha dato esercizi su esercizi.
Potreste aiutarmi con questo?

- Prendere 10 numeri da tastiera in un array di interi e restituirne massimo e minimo.
 
Beh che sai di C++? Sai cosa è un array?
L’esercizio è davvero semplice: ovviamente l’array va inizializzato e vanno chiesti all’utente i valori tramite ciclo. Poi le variabili vMin e vMax vanno inizializzate rispettivamente a INT_MAX e INT_MIN (definite in <limits>, ma non dovrebbe servire che tu la includa). Se si trova un valore più grande di vMax allora vMax diventa quello, viceversa se di trova un valore più piccolo di vMin allora vMin diventa quello. Tutto ciò scorrendo da inizio a fine l’array. Il perché della scelta di INT_MAX/INT_MIN (che corrispondono a 2^31 - 1 e a -(2^31) ) penso tu possa capirlo.
 
Ciao, anch'io studio a scuola il c++ (sono al 3° anno) e credo anche di essere abbastanza bravo (ovviamente nulla in confronto ai veri programmatori... a scuola insegnano solo le basi ahimè). Ti spiegherò passo passo quello che c'e' da fare, ma non vorrei assolutamente fare l'esercizio al posto tuo, quindi per ora ti dico solo alcune cose. Se c'e' qualcosa che non capisci, dillo pure, il forum è fatto apposta per questo. Però ho due domande: che compilatore usi? Variano alcune cose da compilatore a compilatore. Hai fatto anche un po' di C? forse negli anni passati? Detto questo, iniziamo.

Prima di tutto, come in ogni programma, prima includiamo le librerie. In questo caso la libreria standard del c++ è sufficente, ovvero #include <iostream>. Poi, considerando che l'esercizio richiede di "prendere numeri da tastiera", abbiamo bisogno dell'istruzione "cin" che dovresti conoscere. Per poter usare quest'istruzione ci possono essere due possibilità (dipende dal professore), la prima è mettere la direttiva "using namespace std;" subito dopo le direttive al preprocessore (ovvero tutto ciò che inizia con #, infatti #include <iostream> è una direttiva al preprocessore), che serve per l'appunto ad usare istruzioni come cout e cin. Altrimenti per ogni cin o cout o qualunque altra istruzione permessa dal namespace std dovresti precedere un std::
Esempio:
Primo metodo
C++:
#include <iostream>
using namespace std;

int main() {
cout << "Ciao mondo";
cout << "Arrivederci mondo";
return 0;
}
Secondo metodo
C++:
#include <iostream>

int main() {
std::cout << "Ciao mondo";
std::cout << "Arrivederci mondo";
return 0;
}
Ora possiamo iniziare il programma (Penso tu conosca già il main quindi non mi soffermo sul spiegarti cos'e').
Innanzitutto l'array può essere di due tipi: monodimensionale (chiamato anche vettore) e bidimensionale (chiamato anche matrice), siccome non l'hai specificato penso tu ti riferisca ai vettori.
Dichiarare un vettore è molto simile a dichiarare una variabile qualsiasi. Ad esempio se inizializzi una variabile numerica intera con "int x;" per dichiarare un vettore di numeri interi devi fare così: "int x[d];"
x è il nome dell'array (che può chiamarsi come vuoi ovviamente) e d (che deve essere sempre tra parentesi quadre) è la dimensione dell'array (vettore in questo caso). d può essere un numero che sai già e che puoi già inserire (nel tuo caso 10) oppure può essere una variabile che hai inizializzato prima oppure che ricavi da tastiera, ecc... (dipende da cosa ti chiede la consegna). In questo caso la dimensione dell'array è 10, ciò significa che se volessi inizializzare il vettore dovresti scrivere:
int x[10];
x[0]= numero;
x[1]= numero;
e così via fino ad arrivare ad
x[9]= numero;

perché 9? perché il primo elemento del vettore è assegnato ad x[0].
Chiudiamo l'esempio.

Successivamente l'esercizio chiede di inserire da tastiera l'array. Per poterlo fare dovresti scrivere una cosa del genere:
cin>>x[0];
cin>>x[1];
e così via sempre fino a 9...
il problema è che è noioso scrivere per 10 volte sempre lo stesso comando... allora in questo caso possiamo usare un ciclo iterativo.
Esistono 3 tipi di cicli (o meglio, io ne ho studiati 3, poi non ho idea se ce ne siano altri):
precondizionale, postcondizionale ed enumerativo. Anche qui penso tu li abbia già studiati, in ogni caso il ciclo che ci fa più comodo in questo programma è il ciclo enumerativo, ovvero il ciclo for.
 
Ultima modifica:
Beh che sai di C++? Sai cosa è un array?
L’esercizio è davvero semplice: ovviamente l’array va inizializzato e vanno chiesti all’utente i valori tramite ciclo. Poi le variabili vMin e vMax vanno inizializzate rispettivamente a INT_MAX e INT_MIN (definite in <limits>, ma non dovrebbe servire che tu la includa). Se si trova un valore più grande di vMax allora vMax diventa quello, viceversa se di trova un valore più piccolo di vMin allora vMin diventa quello. Tutto ciò scorrendo da inizio a fine l’array. Il perché della scelta di INT_MAX/INT_MIN (che corrispondono a 2^31 - 1 e a -(2^31) ) penso tu possa capirlo.
Al liceo si fa davvero pochissimo, al ITIS credo facciano di più, penso comunque non sappia assolutamente l'esistenza della libreria limits e delle variabili che citi. Penso il loro professore gli abbia insegnato a prendere il massimo ed il minimo in questo modo:

C++:
int max=a[0];

for (int i=0; i<10; i++){
if (max<a[i]){
max=a[i];
}else{
}
}

Stessa cosa con il minimo

P.S.: Penso questo perché sono uno studente anch'io ed una volta scoperto il mondo della programmazione (cercando di imparare di più su internet) ho capito che quello che ti insegnano a scuola è solo una bozza e che hanno un programma ben preciso da rispettare, insegnando molto sommariamente le basi del linguaggio C (al primo anno) e poi quelle di C++.
 
Ultima modifica:
Al liceo si fa davvero pochissimo, al ITIS credo facciano di più, penso comunque non sappia assolutamente l'esistenza della libreria limits e delle variabili che citi. Penso il loro professore gli abbia insegnato a prendere il massimo ed il minimo in questo modo:

P.S.: Penso questo perché sono uno studente anch'io ed una volta scoperto il mondo della programmazione (cercando di imparare di più su internet) ho capito che quello che ti insegnano a scuola è solo una bozza e che hanno un programma ben preciso da rispettare, insegnando molto sommariamente le basi del linguaggio C (al primo anno) e poi quelle di C++.
Ho scoperto l'esistenza dei limiti grazie al mio prof, e faccio la seconda superiore di un liceo s., quindi ciò che hai detto non è sempre vero.
È vero ciò che riguarda dei linguaggi, non ti spegano a fondo, ad esempio ci stiamo concentrando su esercizi delle Olimpiadi. A mio vedere però è anche importante conoscere il proprio linguaggio, anche perché senza oggetti vettori, stringhe, iteratori ecc... non vai molto avanti.
 
non per "pignoleggaire" ma non è necessario inizializzare minimo e massimo con il massimo ed il minimo definiti nelle librerie di sistema:
il primo numero inserito da tastiera va benissimo come inizializzazione sia di minimo che di massimo, dopodiché gli aggiornamenti saranno ovvi.
Poi che il prof abbia detto di usare un array probabilmente è solo per fare esercizio su array e/o cicli, perché questo esercizio si può fare benissimo senza ricorrere ad array (man mano che leggi i numeri eventualmente aggiorni minimo e massimo, poi se proprio serve mamorizzarli tutti per esercitarsi con gli indici, che array sia!) :ok:
 
Pubblicità
Pubblicità
Indietro
Top