PDA

View Full Version : [c++] errori nel programma (area e volume di figure geometriche)


jokers85
14-02-2013, 14:55
sto realizzando un programma con:
calcolatrice (che funziona benissimo)
calcolo area e perimetro di semplici figure piane (mi da alcuni errori)
calcolo volume di semplici figure solide (mi da alcuni errori)

#include <iostream>
#include <math.h>
using namespace std;
#define pg= 3,14159
// funzione addizione
float addizione (float num1, float num2)
{

float ris;
cout<<"Inserisci primo numero"<<endl;
cin>> num1;
cout<<"Inserisci secondo numero"<<endl;
cin>> num2;
ris= num1+num2;
cout<<"La somma fra "<<num1<<" e " <<num2<<" = " <<ris<<endl;
return (ris);
}

// funzione sottrazzione

float sottrazzione (float nume1, float nume2)
{
float riss;
cout<<"Inserisci primo numero"<<endl;
cin>> nume1;
cout<<"Inserisci secondo numero"<<endl;
cin>> nume2;
riss= nume1-nume2;
cout<<"La differenza fra "<<nume1<<" e " <<nume2<<" = " <<riss<<endl;
return (riss);
}

// funzione moltiplicazione

float moltiplicazione (float numer1, float numer2)
{
float risult;
cout<<"Inserisci primo numero"<<endl;
cin>> numer1;
cout<<"Inserisci secondo numero"<<endl;
cin>> numer2;
risult= numer1*numer2;
cout<<"Il prodotto fra "<<numer1<<" e " <<numer2<<" = " <<risult<<endl;
return (risult);
}

// funzione divisione

float divisione (float divid, float divis)
{
float risp;
cout<<"Inserisci dividendo"<<endl;
cin>> divid;
cout<<"inserisci divisore"<<endl;
cin>> divis;
do
{
risp= divid/divis;
}
while (divis != 0);
cout<<"La divisione fra "<<divid<<" e "<<divis<<" = "<<risp<<endl;
return (risp);
}

// funzione radice libreria math.h

float radice (float a)
{float rad;
cout<<"Radice quadrata di "<<endl;
cin>> a;
rad= sqrt (a);
cout<<"La radice quadra di "<<a<<" = "<<rad<<endl;

return (rad);
}



// funzione switch che regola le scelte da eseguire sulla calcolatrice
void calcolatrice ()
{int scelta;
cout<<"****CALCOLATRICE****"<<endl;
cout<<"****SCEGLI****"<<endl;
cout<<"****1 addizzione****"<<endl;
cout<<"****2 sottrazzione****"<<endl;
cout<<"****3 moltiplicazione****"<<endl;
cout<<"****4 divisione****"<<endl;
cout<<"****5 radice quadrata****"<<endl;
cin >> scelta;

switch (scelta)
{float a, b;
case 1:
addizione (a, b);
break;
case 2:
sottrazzione (a, b);
break;
case 3:
moltiplicazione (a, b);
break;
case 4:
divisione (a, b);
break;
case 5:
radice (a);
break;
default:
cout<<"****ATTENZIONE SCELTA NON PRESENTE****"<<endl;
cin>>scelta;
}

}

// funzione che calcola l'area, il perimetro e la diagonale di un quadrato con lato inserito da tastiera
void quadrato ()
{
float l, p, a, d;
cout<<"inserisci il lato del quadrato"<<endl;
cin>>l;
p= l*4;
a= pow (l, 2);
d= l * sqrt (2);
cout<<"Il perimetro p= "<<p<<endl;
cout<<"L'area a="<<a<<endl;
cout<<"La diagonale d="<<d<<endl;
}

// funzione che calcola l'area e il perimetro di un rettangolo con base e altezza inseriti da tastiera
void rettangolo ()
{
float b, h, a, p;
cout<<"Inserisci la base"<<endl;
cin>>b;
cout<<"Inserisci l'altezza"<<endl;
cin>>h;
p= ((2*b)+(2*h));
a= b*h;
cout<<"L'area a="<<a<<endl;
cout<<"Il perimetro p="<<p<<endl;
}

// funzione cerchio errore
void cerchio ()
{
float r, d, a, c;
cout<<"Inserisci il diametro"<<endl;
cin>>d;
r= d/2;
c = 2*(pg*r); //PRIMO ERRORE
a= pg*(pow(r, 2);// sedcondo errore
cout<<"Il diametro d="<<d<<endl;
cout<<"La circonferenza c="<<c<<endl;
cout<<"L'area a="<<a<<endl;
}

void triangolo ()
{int tng;
float a, p, l, c1, c2, i, h;
cout<<"Triangolo equilatero premi 1"<<endl;
cout<<"Triangolo rettangolo premi 2"<<endl;
cin>>tng;

switch (tng)
{
case 1:
{
cout<<"Inserisci il lato"<<endl;
cin>>l;
p= l*3;
h= ((l/2)*(sqrt(3)));
a= (l*h)/2;
cout<<"Il perimetro p="<<p<<endl;
cout<<"L'area a="<<a<<endl;}
break;
case 2:
{
cout<<"Inserisci il primo cateto"<<endl;
cin>>c1;
cout<<"Inserisci secondo cateto"<<endl;
cin>>c2;
i= sqrt (pow(c1, 2)+pow(c2, 2));
p= c1+c2+i;
a= (c1*c2)/2;
cout<<"L'ipotenusa i="<<i<<endl;
cout<<"Il perimetro p="<<p<<endl;
cout<<"L'area a="<<a<<endl;
}
break;
default:
cout<<"Scelta non presente"<<endl;
}}





void piano ()
{
int scelta;
cout<<"1 Quadrato"<<endl;
cout<<"2 Rettangolo"<<endl;
cout<<"C Cerchio"<<endl;
cout<<"4 Triangolo"<<endl;
cin>> scelta;
switch (scelta)
{
case 1:
quadrato ();
break;
case 2:
rettangolo ();
break;
case 3:
cerchio ();
break;
case 4:
triangolo ();
break;
default:
cout<<"ATTENZIONE SCELTA NON PRESENTE"<<endl;
}}

void cubo ()
{
float lato, a, v;
cout<<"Inserisci il lato"<<endl;
cin>>lato;
a= pow(lato, 2);
v= pow(a, 3);
cout<<"Il volume v="<<v<<endl;
}

void cilindro ()
{
float r, h, v, a;
cout<<"Inserisci il raggio"<<endl;
cin>>r;
cout<<"Inserisci l'altezza"<<endl;
cin>>h;
a= pg * (pow(r, 2)); //errore
v= pg *(pow(r, 2))*h; //errore
cout<<"Il volume v="<<v<<endl;
}

void cono ()
{
float ra, ha, vo;
cout<<"Inserisci raggio"<<endl;
cin>>ra;
cout<<"Inserisci altezza"<<endl;
cin>>ha;
vo= (pg*(pow(ra, 2))*ha)/3; //errore
cout<<"Il volume v="<<vo<<endl;
}

void sfera ()
{
float rag, ae, vol;
cout<<"Inserisci il raggio"<<endl;
cin>>rag;
ae= a*pg*(pow(rag, 2)); //errore
vol= (ae*rag)/3;
cout<<"Il volume v="<<endl;
}


void solidi ()
{
int scegli;
cout<<" 1 Cubo"<<endl;
cout<<" 2 Cilindro"<<endl;
cout<<" 3 Cono"<<endl;
cout<<" 4 Sfera"<<endl;
cin>>scegli;
switch (scegli)
{
case 1:
cubo ();
break;
case 2:
cilindro ();
break;
case 3:
cono ();
break;
case 4:
sfera ();
break;
default:
cout<<"Scelta errata"<<endl;
}
}

int main()
{
int operazione;
cout<<"1 calcolatrice"<<endl;
cout<<"2 figuere piane"<<endl;
cout<<"3 figure solide"<<endl;
cin>>operazione;
switch (operazione)
{
case 1:
calcolatrice();
break;
case 2:
piano();
break;
case 3:
solidi();
break;
}
return 0;
}


gli errori (evidenziati nel codice), sono tutti lo stesso errore:
expected primary-expression before '=' token

jokers85
14-02-2013, 15:09
pg in cerchio() non e' definito, per esempio.

ma pg l'ho inserito come #define pg=3.14....(riga 4 del codice), non dovrebbe essere globale? :wtf:

jokers85
14-02-2013, 15:25
EDIT
trovato l'errore :
avevo #define pg 3,14159
invece di
3.14159
un . invece di una , ed ho risolto

vendettaaaaa
14-02-2013, 15:29
Sottrazione con una z. Per forza poi il programma non va! :cool:

[Kendall]
14-02-2013, 15:31
Nella riga di #define devi togliere l'uguale dopo il nome della costante.

jokers85
14-02-2013, 20:55
ho visto che hai risolto, comunque volevo ricordare che e' buona norma usare identificatori tutti in maiuscolo per le #define, ed e' norma ancora migliore limitare al minimo l'uso di quest'ultime per la leggibilita' del codice... :D

grazie del consiglio, comunque ho usato un solo #define, non è che ne ho messi 50 :sofico: