Esercizio c++

AlligatoreMarrone

Nuovo Utente
115
4
CPU
i7-7400
Scheda Madre
asus x99
HDD
2tb
RAM
hyperX fury 8gb
GPU
gtx 1070
OS
OSX
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.
 

_Achille

Utente Èlite
3,067
725
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
HDD
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
GPU
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
PSU
RM550X
Case
NZXT S340
Periferiche
Anne Pro 2, Razer Abyssus
OS
Windows 10 Pro
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.
 

Acquario1310

Nuovo Utente
74
1
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:

Acquario1310

Nuovo Utente
74
1
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:

_Achille

Utente Èlite
3,067
725
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
HDD
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
GPU
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
PSU
RM550X
Case
NZXT S340
Periferiche
Anne Pro 2, Razer Abyssus
OS
Windows 10 Pro
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.
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,946
11,581
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
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:
 
  • Mi piace
Reazioni: Andretti60

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili