PROBLEMA Programmino in c++ sui cerchi?

Maurocj

Utente Attivo
25
0
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
 

Roxas Shadow

Utente Attivo
116
10
CPU
Intel Core i7-2600K @ 4.5ghz
Scheda Madre
Asrock Z68 Extreme4 Gen3 Socket 1155 Intel Z68 DDR3 SATA3 USB3 HDMI ATX
HDD
SSD Corsair Force Series 3 120GB 2.5" Lettura 550MB/s Scrittura 510MB/s SATA3 CSSD-F120GB3-BK
RAM
DDR3 Corsair Vengeance Blue Low Profile CML4GX3M2A1600C9B 1600MHz 4GB (2x2GB) CL9
GPU
VGA XFX Radeon HD 6870 Core 900MHz Memory GDDR5 4200MHz 1GB 2xDVI HDMI 2xminiDisplayPort
Monitor
Akai 1080p 22''
PSU
Cooler Master Silent Pro M500 500W 80plus V2.91 Sli cerificated
Case
Midi Fractal Design R3 ATX Black Pearl
OS
Windows 8 e Ubuntu 12.04
Carica il codice su qualche pastebin e metti il link, così è illegibile. E non usare system, che nel 2013 è il cancro.
 
  • Mi piace
Reazioni: Maurocj

Roxas Shadow

Utente Attivo
116
10
CPU
Intel Core i7-2600K @ 4.5ghz
Scheda Madre
Asrock Z68 Extreme4 Gen3 Socket 1155 Intel Z68 DDR3 SATA3 USB3 HDMI ATX
HDD
SSD Corsair Force Series 3 120GB 2.5" Lettura 550MB/s Scrittura 510MB/s SATA3 CSSD-F120GB3-BK
RAM
DDR3 Corsair Vengeance Blue Low Profile CML4GX3M2A1600C9B 1600MHz 4GB (2x2GB) CL9
GPU
VGA XFX Radeon HD 6870 Core 900MHz Memory GDDR5 4200MHz 1GB 2xDVI HDMI 2xminiDisplayPort
Monitor
Akai 1080p 22''
PSU
Cooler Master Silent Pro M500 500W 80plus V2.91 Sli cerificated
Case
Midi Fractal Design R3 ATX Black Pearl
OS
Windows 8 e Ubuntu 12.04

Maurocj

Utente Attivo
25
0
Grazie intanto, ora provo (a ben pensarci mi chiedo perchè non ci abbia provato prima non ero poi così lontano XD). Return 19 sarebbe la mia ingenuità: pensavo esistesse una sorta di comando del tipo "torna a rigo" e avevo trovato questo return che poi ho capito non c'entrava niente e intanto è ancora lì; anzi forse nella versione salvata l'ho tolto comunque insomma nulla di fondamentale.
 

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
Ovvio che non va; righe 35 e 40: utilizzi il bitwise AND ( & ) piuttosto di quello logico ( && ).
Poi non ho capito perché includi iostream (addirittura due volte) ed altre librerie che non conosci/usi, quando utilizzi l'I/O del C.
 

Maurocj

Utente Attivo
25
0
Ripeto sono alle prime armi (terzo programma mai studiato programmazione in vita mia)
La libreria l'avrò inclusa perchè leggendo qualche guida e utilizzando qualche comando (forse poi cancellato) mi dicevano fosse necessaria. In secondo luogo: premesso che non ho ancora capito quale sia la differenza fra and e bitwise and mi sembra che la condizione con l'& semplice di per se funzioni. é chiaro che io voglio eprimere il concetto: finché errore è diverso sia da 1 che da 2 e mi sembra (E sottolineo sembra) che l'& semplice funzioni cioè la condizione, anche se con qualche bug che devo ancora evidentemente fixare (se ci riesco), funziona ed effettivamente ripete il circolo solo se errore è diverso sia da 1 che da 2.
Mi scuso per eventuali castronerie che ho detto sopra spero di non offendere al vostra sensibilità informatica:utonto:
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili