Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Grazie ad un mocio rotante che viene costantemente bagnato e pulito, Narwal Flow assicura un completo e capillare lavaggio dei pavimenti di casa. La logica di intellignza artificiale integrata guida nella pulizia tra i diversi locali, sfruttando un motore di aspirazione molto potente e un sistema basculante per la spazzola molto efficace sui tappeti di casa
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Con un prezzo di 2.999 euro, il Panasonic Z95BEG entra nella fascia ultra-premium dei TV OLED: pannello Primary RGB Tandem, sistema di raffreddamento ThermalFlow, audio Technics integrato e funzioni gaming avanzate lo pongono come un punto di riferimento
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


Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro) Recensione Google Pixel 10 Pro XL: uno zoom 100x...
Spazio Lenovo riapre a Milano. Cosa camb...
Prime foto di ID. Polo GTI: Volkswagen p...
BYD ha grandi novità per IAA: la ...
ASML investe 1,3 miliardi in Mistral AI ...
Tecnologia d'altri tempi e benessere del...
Come va il modem Apple C1 di iPhone 16e?...
smart alla IAA Mobility 2025, elogia i n...
Star Wars, chiusa l'asta per la spada or...
Nova Launcher è morto? Il fondato...
PayPal offre un anno gratuito di Perplex...
Borderlands 4: svelati gli orari di pubb...
ECOVACS mostra il futuro delle faccende ...
Prezzo shock per Samsung Galaxy S25 e S2...
Leon, Formentor e Terramar diventano 'ri...
DREAME Aqua10 Ultra Roller Complete e Mo...
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:04.


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