Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - consiglio....
Forum - C/C++ - consiglio....

Avatar
biricchina1234 (Normal User)
Newbie


Messaggi: 9
Iscritto: 08/05/2008

Segnala al moderatore
Postato alle 16:11
Domenica, 25/05/2008
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...

PM Quote
Avatar
biricchina1234 (Normal User)
Newbie


Messaggi: 9
Iscritto: 08/05/2008

Segnala al moderatore
Postato alle 16:18
Domenica, 25/05/2008
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)
      {
         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.leggi_lato();
               cout<<"altezza del rombo numero "<<i+1<<" e': ";
               r.leggi_altezza();
               perimetri=r.perimetro();
               aree=r.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");
}

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 18:10
Domenica, 25/05/2008
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 ...

Codice sorgente - presumibilmente C++

  1. // quadrila.h
  2. #ifndef QUADRILA
  3. #define QUADRILA
  4.  
  5. class rombo
  6. {
  7. protected:
  8.         int lato,altezza;
  9.  
  10. public:
  11.         rombo();
  12.         void leggi_lato();
  13.         void leggi_altezza();
  14.         int perimetro();
  15.         int area();
  16.         int calcola_max();
  17. };
  18.  
  19. #endif



Codice sorgente - presumibilmente C++

  1. // quadrila.cpp
  2. #include <iostream>
  3. #include "QUADRILA.h"
  4.  
  5. using namespace std;
  6.  
  7. rombo::rombo()
  8. {
  9.         lato=0;
  10.         altezza=0;
  11. }
  12.  
  13. void rombo::leggi_lato()
  14. {
  15.         cin>>lato;
  16. }
  17.  
  18. void rombo::leggi_altezza()
  19. {
  20.         cin>>altezza;
  21. }
  22.  
  23. int rombo::perimetro()
  24. {
  25.         return lato*4;
  26. }
  27.  
  28. int rombo::area()
  29. {
  30.         return lato*altezza;
  31. }



Codice sorgente - presumibilmente C++

  1. // main
  2. #include <stdio.h>
  3. #include <iostream>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <math.h>
  7. #include "QUADRILA.h"
  8.  
  9. using namespace std;
  10.  
  11. int calcola_max(int vet[])
  12. {
  13.         int max=0;
  14.  
  15.         for(int i=1; i<4; i++)
  16.                 if(vet[i]>vet[max])
  17.                         max=i;
  18.  
  19.         return max;
  20. }
  21.  
  22. int main()
  23. {
  24.         rombo r[4];
  25.         int perimetri[4], aree[4];
  26.         int max_p, max_a;
  27.  
  28.         for(int i=0; i<4; i++)
  29.         {
  30.                 cout<<"lato del rombo numero "<<i+1<<" e': ";
  31.                 r[i].leggi_lato();
  32.                
  33.                 cout<<"altezza del rombo numero "<<i+1<<" e': ";
  34.                 r[i].leggi_altezza();
  35.                
  36.                 perimetri[i] = r[i].perimetro();
  37.                 aree[i] = r[i].area();
  38.         }
  39.        
  40.         max_p=calcola_max(perimetri);
  41.         max_a=calcola_max(aree);
  42.  
  43.         if(max_p == max_a)
  44.         {
  45.                 cout<<"Il rombo numero "<<max_p+1<<" ha il perimetro ("<<perimetri[max_p]<<") piu' grande.\n\n";
  46.                 cout<<"Il rombo numero "<<max_p+1<<" ha l'area ("<<aree[max_a]<<") piu' grande\n\n";
  47.         }
  48.         else
  49.         {
  50.                 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";
  51.         }
  52.        
  53.         system("PAUSE");
  54. }


PM Quote
Avatar
biricchina1234 (Normal User)
Newbie


Messaggi: 9
Iscritto: 08/05/2008

Segnala al moderatore
Postato alle 11:11
Lunedì, 26/05/2008
grazie mille sei stato molto gentile ad aiutarmi.. :k:
ti chiedo un'ultima cosa..l'operazione
using namespace std;
a cosa serve?

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 11:56
Lunedì, 26/05/2008
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 il 26/05/2008 alle 11:57
PM Quote
Avatar
biricchina1234 (Normal User)
Newbie


Messaggi: 9
Iscritto: 08/05/2008

Segnala al moderatore
Postato alle 16:36
Lunedì, 26/05/2008
ok grazie mille per il tuo aiuto..;)

PM Quote