Torna indietro   Hardware Upgrade Forum > Software > Programmazione

WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
Abbiamo provato la beta di World of Warcraft: Forever, il Classic+ di Blizzard in arrivo il 4 novembre: la nuova razza Skyborne restituisce la sensazione di un gioco nuovo, ma le zone storiche conservano la noia divertita di Classic. Classi ribilanciate, sciamani anche nell'Alleanza e un motore grafico che in 4K gira bene anche su una RTX 3070. Cosa cambia in Forever? La risposta nell'articolo
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 è una gioia per gli occhi e per le dita
TCL P80 Ultra abbina per la prima volta un pannello AMOLED alla tecnologia NXTPAPER con finitura opaca, affiancandoci una fotocamera periscopica da 50 MP con zoom ottico 3x, il SoC Dimensity 7400 Elite e una batteria da 5.800 mAh. Nella prova sul campo emergono luminosità di picco molto elevata, comparto fotografico solido per la fascia di prezzo e autonomia nella media, a fronte di velocità di scrittura dello storage piuttosto contenute
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air combina diverse carte molto interessanti: un OLED PaperMatte da 12 pollici, un corpo sottile e una tastiera molto comoda. Durante la prova abbiamo apprezzato fluidità, audio e comfort visivo, mentre i test hanno chiarito pregi e qualche limite nelle prestazioni. L'autonomia ha convinto anche nell'uso intermittente; la scelta passa dalla compatibilità delle proprie app e dal valore del pacchetto con accessori, proposto a 749 euro
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


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...
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica NVIDIA RTX Spark: il PC Windows on ARM costruito...
Motorola razr fold, dalla conchiglia al formato a libro. La recensione Motorola razr fold, dalla conchiglia al formato ...
Generative Bionics apre la più gr...
Mercury 3 di Inception: 1 milione di tok...
RAM per portatili e PC all-in-one in off...
PHP, due falle critiche: patch alle 16 e...
ISRO sta proseguendo lo sviluppo della n...
Greenpeace interrompe il keynote di Jens...
YouTube sperimenta una nuova interfaccia...
WhatsApp prepara una nuova barra di navi...
Apple è pronta ad assemblare Mac ...
ESA OASIS: il sistema che aiuterà...
ho. Mobile aggiorna il listino: solo off...
L'IA accelera i processi di modernizzazi...
Amazon apre un secondo laboratorio di ro...
GM chiuderà la fabbrica di batterie di B...
Un detrito di un razzo spaziale cinese L...
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: 14:47.


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