2010-11-27 14 views
0

Je travaille sur ce C++ fichier source pendant des semaines et ne comprends pas où je vais mal à ..types de retour de vide en utilisant des variables de référence en C++

//This program will ask the user for the measurement of all 3 sides of a triangle 
//and first determine if the numbers will equal a triangle, then give the area and 
//perimeter of the triangle. 

#include <iostream> 
#include <cmath> 
#include <iomanip> 
using namespace std; 

void calc(double , double , double ,double &, double &); 
void s(double , double , double , double &); 

int main() 
{  
    double a; 
    double b; 
    double c; 
    double per; 
    double sr; 
    double areat; 

    cout<<"Enter the three side of your triangle: "; 
    cin>> a >> b >> c; 
    per = a+b+c; 

    if (a > b || a < b || b > c || b < c) 
    { 
     cout<< "Sorry, this is not a triangle.\n"; 
    } 
    else 
    { 
     cout<<"For a Triangle with the sides of "<<a<<", "<<b<<",and " <<c <<endl; 
     cout<< setprecision(3)<<fixed<<showpoint; 
     cout<<"The Perimeter is "<<per<<endl; 
     calc(a,b,c,sr,areat); 
     cout<< "The Area is "<<areat<<endl; 
    } 
    system ("pause"); 
    return 0; 
}  

void s(double a, double b, double c, double &sr) 
{ 
    sr = (a+b+c)/2; 
} 

void calc(double a, double b, double c, double &sr, double &areat) 
{ 
    areat = sqrt(sr*(sr-a)*(sr-b)*(sr-c)); 
} 
+0

s'il vous plaît reformater le code, et laissez-nous savoir où est le problème – kellogs

+0

Quel est exactement le problème? Ne dites pas simplement "ça ne marche pas", donnez-nous quelques détails pour que nous puissions vous aider. – suszterpatt

+0

Modifié pour être plus lisible. –

Répondre

5

Vous n'êtes pas appeler la fonction s() donc La variable sr n'est pas initialisée.

Autres choses mineures:

if (a > b || a < b || b > c || b < c) 
    cout << "Sorry, this is not a triangle.\n"; 

Cette ligne exclura tous les triangles, sauf si a == b == c. Aviez-vous l'intention de vous limiter à des triangles équilatéraux? En fonction calc(), sr n'est pas une sortie, il n'a pas besoin d'être passé par référence

+0

Aaaahhh vous y êtes arrivé plus vite que je ne pouvais taper. +1 –

+0

Il en va de même pour 'calc', sauf s'il me manque quelque chose. – Maxpm

+4

@NineFingers Apparemment, vous avez besoin de plus de doigts Zecc