Valutazione discussione:
  • 1 voto(i) - 5 media
  • 1
  • 2
  • 3
  • 4
  • 5
C++ Esercizio su vettore
#1
Salve a tutti, apro un post perchè è alquanto strano!
Ieri ho fatto questo esercizio che mi aveva dato un amico:

Contenuto visibile solo per gli utenti registrati

Cosa doveva fare?
Doveva chiedere all'utente la dimensione del vettore (non superiore a 7), riempira, ordinarla in ordine crescente e moltiplicare tutti i valori che sono all'interno del vettore, se il calcolo della moltiplicazione supera 70 allora non darà il risultato, si chiude il programma.

Solo che si creano queste due strane circostanze:

che funziona perfettamente
[Solo gli utenti registrati possono visualizzare i link Clicca per registrarti o effettuare il ligin]

ma poi...
[Solo gli utenti registrati possono visualizzare i link Clicca per registrarti o effettuare il ligin]

e non capisco perchè!
Noto che se faccio un cout prima della fase del riordino i valori rimangono giusti, ma dopo il riordino il primo valore("In posizione 0 c'è x") varia o a 0 o a numeri a caso... WHY!?
Cita messaggio
#2
#include <iostream>
using namespace std;
int main()
{
int n=0;
int ord;
bool val;
int molt=1;
char dom;


do
{
cout<<"Dammi la dimensione del vettore: ";
cin>>n;
if(n>7)
{
cout<<"Valore troppo elevato\n";
}
}
while(n>7);
//riempi il vettore
int vex[n];
for(int i=0;i<n;i++)
{
cout<<"\nInserisci il valori nel vettore: ";
cin>>vex[i];
}

//ordinavalori
do
{
cout<<"\nVuoi riordinare i valori? (s/n)";
do
{
cin>>dom;
if(dom!='s' and dom!='n')
{
cout<<"(s/n)";
}
}
while (dom!='s' and dom!='n');

if(dom=='s')
{
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(vex[i]>vex[j])
{
ord=vex[i];
vex[i]=vex[j];
vex[j]=ord;
}
}
}
}

}

while(dom=='s' and dom=='n');
for(int l=0;l<n;l++)
{
cout<<"\nIn posizione "<<l<<" c'è: "<<vex[l];
}

//
cout<<"\nSe il prodotto non supera 70 avrai il risultato.\n"<<endl;
for(int m=0;m<n;m++)
{
molt=molt*vex[m];

}
if(molt<70)
val=true;
else
val=false;
if(val==true)
{
cout<<molt;
}
else
cout<<"\nIl prodotto ha superato il valore massimo.";
return 0;
}





questo è il tuo codice modificato da me.
Cita messaggio
#3
Ciao, grazie per la risposta.
Ho riprovato l'altro ieri a riscrivere da capo il codice senza usare il bool, funziona bene:


Contenuto visibile solo per gli utenti registrati



dopodichè, chiedendo delucidazioni altrove, mi ero reso conto che l'errore stava nella voce for di k, dovevo porre la variabile n con n-1.
Comunque il problema è risolto e ancora ti ringrazio per l'aiuto!
Cita messaggio


Vai al forum:


Utenti che stanno guardando questa discussione: 1 Ospite(i)