Buongiorno a tutti, sono un neofita della programmazione in c++ (ho iniziato da poche settimane) e così mi trovo di fronte a svariati problemi, che sicuramente per voi saranno banali. Quello che voglio sottoporvi riguarda un programmino che devo fare, il quale deve risolvere una semplice equazione e stampare i valori delle ascisse e delle ordinate ad intervalli di 0.02. Fin qui tutto bene, però il problema nasce perchè in questa equazione ci sono ben 3 parametri (d1,d2,d3 tutti >0 e la cui somma deve obbligatoriamente risultare =1) che devono essere inseriti di volta in volta dall'utente. Se il parametro da inserire fosse unico non avrei problemi, ma in questo caso mi trovo di fronte a qualche inghippo:
come fare se l'utente mi inserisce un valore dei parametri maggiore di 1, a farlo automaticamente tornare ad un nuovo tentativo quel per quel parametro?Perchè nel mio caso il compilatore li fa inserire tutti, e poi solo alla fine mi dice che ho sbagliato!e soprattutto alla fine, dopo avermi detto che ho sbagliato, non mi riporta ad un nuovo tentativo ma mi chiude il programma!!
vi riporto il codice del programma
#include"stdafx.h"
#include<iostream>
#include<math.h>
#include<cmath>
usingnamespace std;
class equazione
{
public:
double calcola_y (double x) {return 0.5*x*d1*d2*d3;};
double d1,d2,d3;
};
int _tmain(int argc, _TCHAR* argv[])
{
double d1,d2,d3;
bool input_valido = false;
cout << "Inserisci i valori di d1,d2,d3 (tutti >0) facendo in modo che la loro somma sia uguale a 1:" << endl;
{
do
{
cout << "Inserisci il valore di d1" << endl;
cin >> d1;
if ( cin.good() == false)
{
cout << "Devi inserire un numero!" << endl;
cin.clear();
cin.ignore(256,'\n');
}
elseif (d1 <= 0)
{
cout << "Il valore di d1 deve essere > 0!" << endl;
}
else
{
input_valido = true;
}
} while ( input_valido == false);
do
{
cout << "Inserisci il valore di d2" << endl;
cin >> d2;
if ( cin.good() == false)
{
cout << "Devi inserire un numero!" << endl;
cin.clear();
cin.ignore(256,'\n');
}
elseif (d2 <= 0)
{
cout << "Il valore di d2 deve essere > 0" << endl;
}
else
{
input_valido = true;
}
} while ( input_valido == false);
do
{
cout << "Inserisci il valore di d3" << endl;
cin >> d3;
if ( cin.good() == false)
{
cout << "Devi inserire un numero!" << endl;
cin.clear();
cin.ignore(256,'\n');
}
elseif (d3 <= 0)
{
cout << "Il valore di d3 deve essere > 0" << endl;
}
else
{
input_valido = true;
}
} while ( input_valido == false);
}
if (d1+d2+d3 != 1)
{
cout << "I valori inseriti non rispettano le condizioni iniziali!" << endl;
system("PAUSE");
return 0;
}
else
{
input_valido = true;
}
cout << "prova";
equazione miafunzione;
for (double xc = 0; xc <= 1; xc = xc + 0.02)
{
double y = miafunzione.calcola_y(xc);
cout << xc << " " << y;
cout << endl;
}
system("PAUSE");
return 0;
}
grazie in anticipo a tutti