Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Problema con le variabili!

    Ciao a tutti!
    Sono nuovo e ho cominciato a programmare con C++ da circa 3 settimane. Ho creato questo programma che, in base ai dati inseriti calcola diversi dati incogniti di un triangolo.
    C'è però un problema: se inserisco tutti i dati lasciando incognitiIl lato BC e AB (la base) il programma dovrebbe, prima calcolare AB (area diviso altezza), poi BC, conoscendo il perimetro e i due lati AB e CA (perimetro meno AB meno CA), invece lascia BC incognito e restituisce errore!!
    Qualcuno saprebbe dirmi come fare??
    Grazie in anticipo!

    codice:
    #include <iostream> 
    using namespace std;
    int main()
    {
    	
    	double AB=0, BC=0, CA=0, p=0, A=0, h=0;
    	cout<<"Benvenuto!\ngrazie a questo programma puoi calcolare dati incogniti di un triangolo\n a partire dal quelli conosciuti\ninserisci i dati del problema scrivendo '0' per quelli incogniti...\n\n\n"
    		<<"      C"<<endl
    		<<"      *"<<endl
    		<<"     *    *"<<endl
    		<<"    *        *"<<endl
    		<<"   * * * * * *"<<endl
    		<<"  A                B"<<endl<<endl<<endl;
    	cout<<"AB:"; cin>>AB;
    	cout<<"BC:"; cin>>BC;
    	cout<<"CA:"; cin>>CA;
    	cout<<"p:"; cin>>p;
    	cout<<"A:"; cin>>A;
    	cout<<"h:"; cin>>h;
    	cout<<endl<<endl<<"Ecco i risultati:"<<endl<<endl;
    
    if(AB==0) AB=p-BC-CA;
    if(BC==0) BC=p-AB-CA;
    if(CA==0) CA=p-BC-AB;
    if(p==0) p=AB+BC+CA;
    if(A==0) A=AB*h;
    if(h==0) h=A/AB;
    if(AB==0) AB=A/h;
    if(BC==0) BC=p-AB-CA;
    if(CA==0) CA=p-BC-AB;
    if(p==0) p=AB+BC+CA;
    if(A==0) A=AB*h;
    if(h==0) h=A/AB;
    	cout<<"AB:"<<AB<<endl;
    	cout<<"BC:"<<BC<<endl;
    	cout<<"CA:"<<CA<<endl;
    	cout<<"p:"<<p<<endl;
    	cout<<"A:"<<A<<endl;
    	cout<<"h:"<<h<<endl;
    	if(AB==0||BC==0||CA==0||A==0||p==0||h==0)cout<<"ERRORE!! DATI INSUFFICENTI PER ELABORARE!\a\a\a\n\n";
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Le linee vengono eseguite nella sequenza esatta con cui l'hai scritte.

    Se non indichi i due lati AB e BC, come fa a calcolare in queste linee?

    if(AB==0) AB=p-BC-CA;
    if(BC==0) BC=p-AB-CA;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Io, però, chiedo al programma prima di calcolare AB usando
    if(AB==0) AB=p-BC-CA;
    poi, se AB risulata ancora 0 (quindi manca un dato per la risoluzione del problema), di calcolarlo con
    if(AB==0) AB=A/h;
    siccome conosco sia "A" che "h", ho di conseguenza la misura di AB, con essa posso calcolare BC.

  4. #4
    Grazie mille, comunque!

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    Come per tutti i nuovi iscritti: c'è un regolamento che va letto prima di postare (è pure scritto).

    1) Il linguaggio di programmazione va sempre specificato nel titolo
    2) Il titolo va scelto con accuratezza: deve descrivere bene il problema


    Aggiungo l'informazione sul linguaggio nel titolo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da quit10
    Io, però, chiedo al programma prima di calcolare AB usando
    if(AB==0) AB=p-BC-CA;
    Sì, ma se questo calcolo avviene usando BC che e' uguale a zero, il risultato assegnato a AB sarà sbagliato.

    poi, se AB risulata ancora 0 (quindi manca un dato per la risoluzione del problema), di calcolarlo con
    if(AB==0) AB=A/h;
    Ma AB NON sarà uguale a zero perche' la formula precedente (p-BC-CA) darà un risultato sbagliato ma diverso da zero.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Grazie, Oregon! Ora ho capito!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.