Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Abbiamo provato per dieci giorni la Hyundai IONIQ 5 N, con 650 CV, 770 Nm e uno 0-100 km/h in 3,4 secondi. Il suo punto forte è N e-Shift, che simula un cambio a otto rapporti con suoni da motore termico e perfino un bang supersonico
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale
La prima tappa italiana della Road to CES porta a Milano i vertici della Consumer Technology Association, con una nuova griglia di lettura dei trend tecnologici e una posizione netta su dazi e regolamentazione dell'IA
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
OPPO ha appena lanciato sul mercato la nuova serie Find X10, che ha come smartphone premium il Find X10 Pro Max, uno smartphone completo, che fa del comparto fotografico il suo vero punto di forza. Ma sono tante le novità, tra cui l'AI che adesso diventa agentica. Ma andiamo a vedere nel dettaglio questo nuovo smartphone.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-09-2011, 14:41   #1
biquidus
Junior Member
 
Iscritto dal: Sep 2011
Messaggi: 9
[C++] Esercizio Vettori

Salve ragazzi, devo scrivere questo programma in C++.. ma non sono riuscito a buttare giù niente.. mi fareste vedere come scrivere il seguente programma?

- Carica un vettore Vet di N componenti, con N <= 100, con numeri interi <= 99. Successivamente rileggi il vettore aggiornando un secondo vettore Vet2, formato da dieci componenti, in modo tale da ottenere, alla fine, la quantità di valori inferiori a 10 nella prima posizione di Vet2, i valori compresi tra 10 e 19 nella seconda posizione, i valori tra 20 e 29 nella terza e così via. Terminato l'aggiornamento, stampa il vettore Vet2.
biquidus è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 14:53   #2
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Quote:
Originariamente inviato da biquidus Guarda i messaggi
Salve ragazzi, devo scrivere questo programma in C++.. ma non sono riuscito a buttare giù niente..
misà che almeno qualcosa ti tocca buttare giù
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 14:55   #3
biquidus
Junior Member
 
Iscritto dal: Sep 2011
Messaggi: 9
Il problema è che non riesco a comprendere la traccia. Il codice saprei scriverlo.. mi aiuteresti anche a 'renderla più chiara'? Da quel che ho capito, ho scritto una cosa del tipo:

Codice:
int main() {
int vet[100],vet2[10], i;
for(i=0;i<100;i++)
{
cout<<"inserisci numero";
cin>>vet[i];
}
for(i=0;i<100;1++)
{
switch(vet[i]/10)
{
case1:=1
vet2[0]=vet2[0]+1;
case2:=2
vet2[1]=vet2[1]+1;
case3:=3
vet2[2]=vet2[2]+1;
case4:=4
vet2[3]=vet2[3]+1;
case5:=5
vet2[4]=vet2[4]+1;
case6:=6
vet2[5]=vet2[5]+1;
case7:=7
vet2[6]=vet2[6]+1;
case8:=8
vet2[7]=vet2[8]+1;
case9:=9
vet2[8]=vet2[8]+1;
case10:=0
vet2[9]=vet2[9]+1;
}
}
for(i=0;i<10;1++)
{
cout<<" "<<vet2[i]
}
return 0;
}
Ma c'è un errore.. non capisco

Ultima modifica di biquidus : 24-09-2011 alle 15:07.
biquidus è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 15:03   #4
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Hai un vettore 1 di dimensione 100. Ogni cella può contenere un valore tra 0 e 99
Hai un vettore 2 di dimensione 10. La prima cella conta quanti elementi hai nel primo vettore di valore da 0 - 9, la seconda cella conta quanti ne hai da 10 - 19 e così via
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 15:08   #5
Floris
Senior Member
 
L'Avatar di Floris
 
Iscritto dal: Jan 2007
Messaggi: 2267
Dovrebbe essere una cosa del genere:
Codice:
vector<int> Vet = new vector<int>();
for(int i=0; i<100;i++)
   Vet.push_back(rand(0,99))
vector<vector<int>> Vet2 = new vector<vector<int>>();
for(int i =0; i<10; i++){
   Vet2.push_back(new vector<int>());
   for(int j=0; j<100; j++){
      if(Vet[j]>10*i && Vet[j]<10*(i+1))
         Vet2[i].push_back(Vet[j]);
   }
}
Sicuramente non compilerà...bisogna sistemarlo.

Edit: Vedo che nel codice che hai appena postato hai usato gli array...scrivendo vettori e C++ pensavo volessi usare i vector!
__________________
Concluso con:...
Floris è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 15:10   #6
biquidus
Junior Member
 
Iscritto dal: Sep 2011
Messaggi: 9
Scusami, però non ho capito niente del tuo sorgente.. non per la sintassi, ma per le funzioni che hai usato.. mai viste! No allora ti chiedo scusa.. intendevo gli array!
biquidus è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 15:11   #7
Floris
Senior Member
 
L'Avatar di Floris
 
Iscritto dal: Jan 2007
Messaggi: 2267
Si scusa. Mi sono anche accorto che nel codice sopra ti salvo i valori mentre bastava semplicemente contarli. Allora diventa più semplice:
Codice:
int* Vet = new int[100];
for(int i=0; i<100;i++)
   Vet[i] = rand(0,99);
int* Vet2 = new int[10];
for(int i =0; i<10; i++){
   for(int j=0; j<100; j++){
      if(Vet[j]>10*i && Vet[j]<10*(i+1))
         Vet2[i]++;
   }
}
dove rand è la funzione di libreria che ritorna un intero casuale compreso tra 0 e 99 (forse si chiama con qualche altro parametro...guardati le specifiche in rete).
Probabilmente potresti anche farla più efficiente in qualche modo...ad esempio utilizzando funzioni per modificare i due cicli innestati ed averne uno solo:
Codice:
for(int j=0; j<100; j++){
   Vet2[floor(Vet[j]/10)]++;
}
dove floor arrotonda per difetto all'intero più vicino.

Edit:non serve floor...poiché essendo divisione tra interi, ritorna un intero tralasciando i decimali.
__________________
Concluso con:...

Ultima modifica di Floris : 24-09-2011 alle 15:21.
Floris è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 15:13   #8
biquidus
Junior Member
 
Iscritto dal: Sep 2011
Messaggi: 9
Edit. E' giusto il mio sorgente? Ho migliorato così:
Codice:
void main()
{

int vet[100],vet2[10],i,x=0;

for(i=0;i<100;i=i+1)

{
cout<<"inserisci numero";
cin>>vet[i];
}

for(i=0;i<100;i=i+1)
{
x=vet[i];
switch (x)
{
case1:1
vet2[0]=vet2[0]+1
case2:2
vet2[1]=vet2[1]+1
case3:3
vet2[2]=vet2[2]+1
case4:4
vet2[3]=vet2[3]+1
case5:5
vet2[4]=vet2[4]+1
case6:6
vet2[5]=vet2[5]+1
case7:7
vet2[6]=vet2[6]+1
case8:8
vet2[7]=vet2[8]+1
case9:9
vet2[8]=vet2[8]+1
case10:0
vet2[9]=vet2[9]+1;
}
}

for(i=0;i<10;i=i+1)
{
cout<<" "<<vet2[i];
getch();
}
return;
}

Ultima modifica di biquidus : 24-09-2011 alle 15:19.
biquidus è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 15:19   #9
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Quote:
Originariamente inviato da biquidus Guarda i messaggi
Ma c'è un errore.. non capisco
che tipo di errore
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 15:21   #10
biquidus
Junior Member
 
Iscritto dal: Sep 2011
Messaggi: 9
Quote:
Originariamente inviato da Floris Guarda i messaggi
Si scusa. Mi sono anche accorto che nel codice sopra ti salvo i valori mentre bastava semplicemente contarli. Allora diventa più semplice:
Codice:
int* Vet = new int[100];
for(int i=0; i<100;i++)
   Vet[i] = rand(0,99);
int* Vet2 = new int[10];
for(int i =0; i<10; i++){
   for(int j=0; j<100; j++){
      if(Vet[j]>10*i && Vet[j]<10*(i+1))
         Vet2[i]++;
   }
}
dove rand è la funzione di libreria che ritorna un intero casuale compreso tra 0 e 99 (forse si chiama con qualche altro parametro...guardati le specifiche in rete).
Probabilmente potresti anche farla più efficiente in qualche modo...ad esempio utilizzando funzioni per modificare i due cicli innestati ed averne uno solo:
Codice:
for(int j=0; j<100; j++){
   Vet2[floor(Vet[j]/10)]++;
}
dove floor arrotonda per difetto all'intero più vicino.
Ti ringrazio per tutto ciò che stai facendo, però ancor anon capisco.. io so che '*' è un putatore.. e non ho studiato questo.. sono solo ad un 4° Tecnico. In base al testo dell'esercizio, e in base al mio sorgente, puoi aiutarmi a capire da li se è giust?
biquidus è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 15:26   #11
Floris
Senior Member
 
L'Avatar di Floris
 
Iscritto dal: Jan 2007
Messaggi: 2267
Il case dello switch mi sembra sbagliato nel senso che case 1 sarebbe case 0, case 2 sarebbe case 1 e così via. Puoi semplificarlo usando direttamente l'argomento dello switch come indice sul vettore:
Codice:
for(int j=0; j<100; j++){
   Vet2[ Vet[j]/10 ]++;
}
Quote:
Ti ringrazio per tutto ciò che stai facendo, però ancor anon capisco.. io so che '*' è un putatore.. e non ho studiato questo.. sono solo ad un 4° Tecnico. In base al testo dell'esercizio, e in base al mio sorgente, puoi aiutarmi a capire da li se è giust?
Va bene anche come li hai dichiarati tu. Io sono abituato così. La differenza è che nel tuo modo il vettore viene allocato nello stack (più efficiente ma meno flessibile), nel mio modo nello heap (meno efficiente ma più flessibile). Per il tuo esercizio va benissimo il tuo metodo.
__________________
Concluso con:...
Floris è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato WoW Forever provato: il MMORPG che la community ...
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita TCL P80 Ultra: con un display AMOLED opaco &egra...
NordVPN anticipa il Black Friday: sconti...
HPE Spaceborne Computer-4: calcolo ad al...
500 chilometri in soli 5 minuti: la rica...
CATL e BAIC puntano a un milione di auto...
La Svezia blocca ChatGPT e Claude sui co...
La NASA ha tenuto una conferenza sulle f...
Galaxy S27 Ultra, spunta la batteria in ...
Google Maps porta l'intelligenza artific...
Una foto troppo perfetta può costare car...
Caldo in Europa, oltre 50.000 morti stim...
Il low cost spopola su Amazon: 7 offerte...
HP Envy 6120e a 49,90€ su Amazon: stampa...
Dove finiscono le ore che l’IA fa rispar...
Radiatori a olio in offerta su Amazon: M...
Tlc, l'occupazione crolla al minimo stor...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 19:57.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v