Oppure

Loading
25/05/08 14:11
biricchina1234
salve,ho un problema con il programma che dovevofare,mi da un errore che non riesco a risolvere..mi aiutate??
mi da errore nel file di elaborazione,all'assegnamento dei valori max_p...
aaa
25/05/08 14:18
biricchina1234
eccovi il programma:
/*File header: quadrila.h */
#ifndef QUADRILA
#define QUADRILA
class rombo {
protected:
int lato,altezza,;
public:
rombo();
void leggi_lato();
void leggi_altezza();
int perimetro();
int area();
int calcola_max();
};
#endif

/* File di implementazione: quadrila.cpp */
#include <iostream.h>
#include "QUADRILA.h"

rombo::rombo()
{
int lato;
lato=0;
int altezza;
altezza=0;

}

void rombo::leggi_lato()
{
cin>>lato;

}

void rombo::leggi_altezza()
{
cin>>altezza;

}
int rombo::perimetro()
{
return lato*4;
}

int rombo::area()
{

return lato*altezza;

}

int calcola_max(int vet[])
{
int max=0;

for(int i=1;i<4;i++)
{
if(vet[max]<vet[i])
{
max=i;
}
}
return max;
}

#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "QUADRILA.h"

int main()
{
rombo r[4];
int perimetri[4];
int aree[4];
int max_p;
int max_a;

for(int i=0;i<4;i++)
{
cout<<"lato del rombo numero "<<i+1<<" e': ";
r[i].leggi_lato();
cout<<"altezza del rombo numero "<<i+1<<" e': ";
r[i].leggi_altezza();
perimetri[i]=r[i].perimetro();
aree[i]=r[i].area();
}
max_p=calcola_max(perimetri);
max_a=calcola_max(aree);

if(max_p==max_a)
{
cout<<"Il rombo numero "<<max_p+1<<" ha il perimetro ("<<perimetri[max_p]<<";) piu' grande.\n\n";
cout<<"Il rombo numero "<<max_p+1<<" ha l'area ("<<aree[max_a]<<";) piu' grande\n\n";
}else
{
cout<<"Il perimetro piu' grande ("<<perimetri[max_p]<<";) è del rombo numero "<<max_p+1<<" \n mentre l'area maggiore ("<<aree[max_a]<<";) e' del quadrato numero "<<max_a<<"\n\n";
}
system("PAUSE";);
}
aaa
25/05/08 16:10
gantonio
Guarda ... ci sono un bel po' di errori e inesattezze ... Preferisco postarti tutto il codice corretto in modo che tu lo esamini linea per linea e correzione per correzione ... se hai dubbi, chiedi ...

// quadrila.h
#ifndef QUADRILA 
#define QUADRILA 

class rombo 
{ 
protected: 
	int lato,altezza; 

public: 
	rombo(); 
	void leggi_lato(); 
	void leggi_altezza(); 
	int perimetro(); 
	int area(); 
	int calcola_max(); 
}; 

#endif 


// quadrila.cpp
#include <iostream> 
#include "QUADRILA.h" 

using namespace std;

rombo::rombo() 
{ 
	lato=0; 
	altezza=0; 
} 

void rombo::leggi_lato() 
{ 
	cin>>lato; 
} 

void rombo::leggi_altezza() 
{ 
	cin>>altezza; 
} 

int rombo::perimetro() 
{ 
	return lato*4; 
} 

int rombo::area() 
{ 
	return lato*altezza; 
} 


// main
#include <stdio.h> 
#include <iostream> 
#include <stdlib.h> 
#include <string.h> 
#include <math.h> 
#include "QUADRILA.h" 

using namespace std;

int calcola_max(int vet[]) 
{ 
	int max=0; 

	for(int i=1; i<4; i++) 
		if(vet[i]>vet[max]) 
			max=i; 

	return max; 
} 

int main() 
{ 
	rombo r[4]; 
	int perimetri[4], aree[4]; 
	int max_p, max_a; 

	for(int i=0; i<4; i++) 
	{ 
		cout<<"lato del rombo numero "<<i+1<<" e': "; 
		r[i].leggi_lato(); 
		
		cout<<"altezza del rombo numero "<<i+1<<" e': "; 
		r[i].leggi_altezza(); 
		
		perimetri[i] = r[i].perimetro(); 
		aree[i] = r[i].area(); 
	} 
	
	max_p=calcola_max(perimetri); 
	max_a=calcola_max(aree); 

	if(max_p == max_a) 
	{ 
		cout<<"Il rombo numero "<<max_p+1<<" ha il perimetro ("<<perimetri[max_p]<<") piu' grande.\n\n"; 
		cout<<"Il rombo numero "<<max_p+1<<" ha l'area ("<<aree[max_a]<<") piu' grande\n\n"; 
	}
	else 
	{ 
		cout<<"Il perimetro piu' grande ("<<perimetri[max_p]<<") è del rombo numero "<<max_p+1<<" \n mentre l'area maggiore ("<<aree[max_a]<<") e' del quadrato numero "<<max_a<<"\n\n"; 
	} 
	
	system("PAUSE"); 
} 
aaa
26/05/08 9:11
biricchina1234
grazie mille sei stato molto gentile ad aiutarmi.. :k:
ti chiedo un'ultima cosa..l'operazione
using namespace std;
a cosa serve?
aaa
26/05/08 9:56
gantonio
Quella linea serve a dichiarare il "namespace standard" in modo da poter utilizzare gli oggetti

cin
cout

senza dovere indicare il namespace per ognuna delle chiamate.

P.S. Rispetto al codice che ti avevo fornito, devi eliminare dalla classe la dichiarazione

int calcola_max();

perche' quel metodo non esiste nella classe ma e' una funzione globale.
Ultima modifica effettuata da gantonio 26/05/08 9:57
aaa
26/05/08 14:36
biricchina1234
ok grazie mille per il tuo aiuto..;)
aaa