Salve gente! ebbene il giorno in cui mi sono deciso di interessarmi un po' alla programmazione è arrivato... ieri. Ed è senza dispiacere che dico che stanotte non ho dormito stando ore davanti al pc a programmare partendo da una cosa veramente base (somma di due numeri :lol::lol:) per poi giungere a qualcosa (ovviamente ancora basic) di più complesso. In primo luogo ci tengo a dire che è appena il mio terzo "programma" quindi può essere che ci siano passaggi inutili o cose che potevano esser fatte meglio (più che un dubbio è una certezza la mia) ma quel che mi turba è che non mi spiego perché una cosa "non funzioni". Intanto ecco il programma non compilato:
#include <cstdlib>
#include <iostream>
#include <math.h>
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc, char *argv[])
{
//Definisco cosa fa il programma
printf("Il programma restituisce il raggio della circonferenza in base ai dati forniti.\n\n\n");
//Definisco le variabili
float x;
float y;
float z;
float r;
char dato;
int uscire1;
int uscire2;
//Assumo informazioni sui dati posseduti dall'utente
printf("Immettere \"c\" se si conosce la circonferenza; \"d\" se si conosce il diametro; \"a\" se si conosce l'area:\n");
scanf("%c", &dato);
//Prima ipotesi: l'utente possiede la circonferenza
if(dato == 'c') {
//chiedo informazioni
printf("Inserire la misura della circonferenza:");
scanf("%f", &x);
//Eseguo il calcolo
r = x/3.14;
//Restituisco il risultato
printf("\nIl raggio della circonferenza in questione misura: %f\n\n", r);
//Inserisco possibilità di ripetere l'operazione
uscire1 = 1;
do { if (uscire1 != 1 & 2)
{printf("Scelta non contemplata\n"); }
printf("Vuoi uscire? Digitare \"1\" per uscire o \"2\"per eseguire un nuovo calcolo\n");
scanf("%d", &uscire1);
}
while (uscire1 != 1 & 2);
uscire1 = uscire2;
printf("%2", uscire2);
system("pause");
}
else {
//Seconda ipotesi: l'utente possiede il diametro
if(dato == 'd') {
//chiedo informazioni
printf("Inserire il diametro della circonferenza:");
scanf("%f", &y);
//eseguo il calcolo
r = y/2;
//Restituisco il risultato
printf("\nIl raggio della circonferenza in questione misura: %f\n", r);
system("PAUSE");
return EXIT_SUCCESS; }
else {
//Terza ipotesi: L'utente possiede l'area
if(dato == 'a') {
//Chiedo informazioni
printf("Inserire l'area della cerchio:");
scanf("%f", &z);
//Eseguo il calcolo
r = sqrt(z/3.14);
//Restituisco il risultato
printf("\nIl raggio della circonferenza in questoione misura: %f\n", r);
system("PAUSE");
return EXIT_SUCCESS; }
else {
printf("Il dato immesso non è valido prego immettere \"c\" se si consoce la circonferenza; \"d\" se si conosce il diametro;\"A\" se si conosce l'area:\n");
return 19;}
}
}
}
Di per se le varie opzioni e calcoli sembrano funzionare a dovere quello su cui vorrei, a vostro buon cuore, delle spiegazioni è la parte in cui commento \\Inserisco la possibilità di ripetere l'operazione che per qualche motivo non va. O meglio va ma non fa quello che dovrebbe il mio scopo era quello di introdurre la possibilità di ripetere le operazioni senza dover chiudere ed aprire il programma. Contemporaneamente (si tratta di curiosità non di utilità ovviamente) volevo anche fare in modo che in caso di errore da parte dell'utente il programma piuttosto che chiudersi riponesse la fatidica domanda.
Ho il vago sospetto che il mio errore stia nell'utilizzo di != ma non voglio cambiarlo anche perché se non in questa occasione forse in altre potrebbe tornare utile come operatore.
Nonostante il mio impegno non sono andato un granchè avanti qualcuno mi sa dire dove sbaglio?:grat::grat::grat:
- - - Updated - - -
Ah dimenticavo: la variabile uscire2 mi serve dopo per introdurre la possibilità di errore anche nella prima scelta (c, d,a)
- - - Updated - - -
ah e ovviamente le due righe printf/system(pause) mi servivano per verificare che il programma facesse quello che io volevo lui facesse
#include <cstdlib>
#include <iostream>
#include <math.h>
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc, char *argv[])
{
//Definisco cosa fa il programma
printf("Il programma restituisce il raggio della circonferenza in base ai dati forniti.\n\n\n");
//Definisco le variabili
float x;
float y;
float z;
float r;
char dato;
int uscire1;
int uscire2;
//Assumo informazioni sui dati posseduti dall'utente
printf("Immettere \"c\" se si conosce la circonferenza; \"d\" se si conosce il diametro; \"a\" se si conosce l'area:\n");
scanf("%c", &dato);
//Prima ipotesi: l'utente possiede la circonferenza
if(dato == 'c') {
//chiedo informazioni
printf("Inserire la misura della circonferenza:");
scanf("%f", &x);
//Eseguo il calcolo
r = x/3.14;
//Restituisco il risultato
printf("\nIl raggio della circonferenza in questione misura: %f\n\n", r);
//Inserisco possibilità di ripetere l'operazione
uscire1 = 1;
do { if (uscire1 != 1 & 2)
{printf("Scelta non contemplata\n"); }
printf("Vuoi uscire? Digitare \"1\" per uscire o \"2\"per eseguire un nuovo calcolo\n");
scanf("%d", &uscire1);
}
while (uscire1 != 1 & 2);
uscire1 = uscire2;
printf("%2", uscire2);
system("pause");
}
else {
//Seconda ipotesi: l'utente possiede il diametro
if(dato == 'd') {
//chiedo informazioni
printf("Inserire il diametro della circonferenza:");
scanf("%f", &y);
//eseguo il calcolo
r = y/2;
//Restituisco il risultato
printf("\nIl raggio della circonferenza in questione misura: %f\n", r);
system("PAUSE");
return EXIT_SUCCESS; }
else {
//Terza ipotesi: L'utente possiede l'area
if(dato == 'a') {
//Chiedo informazioni
printf("Inserire l'area della cerchio:");
scanf("%f", &z);
//Eseguo il calcolo
r = sqrt(z/3.14);
//Restituisco il risultato
printf("\nIl raggio della circonferenza in questoione misura: %f\n", r);
system("PAUSE");
return EXIT_SUCCESS; }
else {
printf("Il dato immesso non è valido prego immettere \"c\" se si consoce la circonferenza; \"d\" se si conosce il diametro;\"A\" se si conosce l'area:\n");
return 19;}
}
}
}
Di per se le varie opzioni e calcoli sembrano funzionare a dovere quello su cui vorrei, a vostro buon cuore, delle spiegazioni è la parte in cui commento \\Inserisco la possibilità di ripetere l'operazione che per qualche motivo non va. O meglio va ma non fa quello che dovrebbe il mio scopo era quello di introdurre la possibilità di ripetere le operazioni senza dover chiudere ed aprire il programma. Contemporaneamente (si tratta di curiosità non di utilità ovviamente) volevo anche fare in modo che in caso di errore da parte dell'utente il programma piuttosto che chiudersi riponesse la fatidica domanda.
Ho il vago sospetto che il mio errore stia nell'utilizzo di != ma non voglio cambiarlo anche perché se non in questa occasione forse in altre potrebbe tornare utile come operatore.
Nonostante il mio impegno non sono andato un granchè avanti qualcuno mi sa dire dove sbaglio?:grat::grat::grat:
- - - Updated - - -
Ah dimenticavo: la variabile uscire2 mi serve dopo per introdurre la possibilità di errore anche nella prima scelta (c, d,a)
- - - Updated - - -
ah e ovviamente le due righe printf/system(pause) mi servivano per verificare che il programma facesse quello che io volevo lui facesse