PDA

Visualizza la versione completa : [C++] Programma sequenza di triangoli


tofetta
03-02-2014, 10:43
"Scrivere un programma C++ che legge i dati relativi ad una sequenza di 50triangoli (rappresentati ognuno da tre numeri interi: i lati) e verifica se nella sequenza esistono almeno 7 triangoli equilateri."
Farlo normalmente non Ŕ un problema, per˛ per farlo devo usare obbligatoriamente questa fuzione:
"bool equilatero(int l1, int l2, int l3)
restituisce il valore booleano true se i tre valori passati come parametri alla funzione sono uguali, false altrimenti." e non riesco ad inserirla appropriatamente.

Ho provato cosi:


bool equilatero (int L1, int L2, int L3)
{
int k=0;
if (L1==L2 && L2=L3)
{
cout << "il triangolo e' equilatero" << endl;
k=k+1;
}
}


Domande:
-Come faccio a stampare nel main il numero di triangoli equilateri usando questa funzione oppure dire almeno se sono 7 o no? (piu utile al programma)
-Come faccio invece a restituire i valori booleani True o False se Ŕ equilatero e poi contare questi triangoli col contatore e a portare il valore k nel main?

Grazie mille :)

tofetta
03-02-2014, 10:48
Questo Ŕ il programma senza la funzione in bool



#include <iostream>
#include <stdlib.h>


using namespace std;


void leggi_triangolo (int &a,int &b,int &c)
{
cout << "Inserisci i valori dei lati del triangolo" << endl;
cin >> a;
cin >> b;
cin >> c;
}




int main()
{
int a,b,c,i=0,k=0;


for(i=0; i<50;i++)
{
leggi_triangolo(a,b,c);


if (a==b && b==c)
{
cout << "il triangolo Ŕ equilatero" << endl;
++k;
}
}


if (k>= 7)
{
cout << "Nella serie ci sono almeno 7 triangoli equilateri" << endl;
}
else
{
cout << "Nella serie non ci sono almeno 7 triangoli equilateri" << endl;
}


system("pause");
return 0;

MItaly
03-02-2014, 11:10
Non mischiare le "responsabilitÓ" delle varie funzioni... "equilatero" deve semplicemente valutare se i tre lati sono uguali, per cui sarÓ una cosa del tipo:


bool equilatero (int L1, int L2, int L3)
{
return L1==L2 && L2=L3;
}
Poi nel main stampi e incrementi k in base a quello che ti restituisce la funzione.

tofetta
03-02-2014, 17:06
Se inserisco la funzione che mi hai scritto e nel main, nel ciclo per i 50 triangoli inserisco
"equilatero(a,b,c)" mi da 1 error e 1 warning:

error: lvalue required as left operand of assignment
warning: control reaches end of non-void function [-Wreturn-type]

come faccio poi a vedere nel main quando Ŕ true e quando Ŕ false per poi incrementare la variabile per il contatore?

grazie

Loading