Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - DeathStar92

#1
Hola, estoy diseñando un programa en POO que lea calificaciones de alumnos de tres periodos y luego calcule su promedio. Quiero que cuando se lean las calificaciones aparezca en nombre de cada alumno, pero hay un problema con la memoria dinámica :S, aquí está mi código....


#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <string.h>
#include <fstream.h>




class MATRIX;

class Alumnos

{
private:
    int i,k, temp, m;

public:
   int n; char **Arreglo;

  Alumnos(){n=0; m=0;}
   Alumnos(int F, int Long)
    {

      n=F;
      m=Long;
      Arreglo=new char *[n];
      for(i=0;i<=n;i++)
      Arreglo=new char [m];
    }


   void LeeCadena()
    {
      cout<<endl<<"El arreglo a ordenar es : "<<endl;
      for(i=1;i<=n;i++)
        {
          cout<<"Alumno "<<i<<" :";
           gets(Arreglo);
         }

    }

   void OrdenaCadena()
    {
      for(i=1;i<n;i++)
          for(k=1;k<n;k++)
        {
          temp=strcmp (Arreglo[k], Arreglo[k+1]);
            if(temp > 0)
            {
         strcpy (Arreglo[0],Arreglo[k]);
         strcpy (Arreglo[k],Arreglo[k+1]);
         strcpy (Arreglo[k+1],Arreglo[0]);
            }
        }
    }

      void GuardaCadena()
    {
      ofstream archivo;
      archivo.open("E:/Nombres.txt");
       for(i=1;i<=n;i++)
       archivo<<Arreglo<<endl;
       archivo.close();
    }

      void VerCadena()
    {
      // cout<<endl<<" Los nombres ordenados son: "<<endl;
       for(i=1;i<=n;i++)
       cout<<Arreglo<<endl;
    }


     void RecuperaCad()
     {
     ifstream archivo("E:/Nombres.txt");

      while (!archivo.eof())
      {
          for(i=0;i<=n;i++)
          archivo.getline(Arreglo,m);
      }
     }



     void LiberaMemoriaCad()
   {

     for (i=0; i<=n;i++)
          delete[]Arreglo;
          delete[]Arreglo;

   }

    friend class MATRIX;


};


class MATRIX
{
private:
      int Fil, Col, i, j, x;
      double **M;
public:


     MATRIX(){Fil=0; Col=0;}
     MATRIX(int F, int C)
     { Fil=F;
       Col=C;


     M=new double *[Fil];
        if(M==NULL)
             {cout<<"No hay MD";
              getch();
              exit(0);
           }
       for(i=0;i<Fil;i++)
        M=new double[Col];
       for(i=0;i<Fil;i++)
       if (M==NULL)
          {cout<<"No hay MD";
           getch();
           exit(0);
          }
       for(i=0;i<Fil;i++)
       for(j=0; j<Col; j++)
         M[j]=0.0;
     }

      Alumnos obj;

    // void LeeX(){cin>>x;}
     void Lee_Mtz()
         {
           cout<<"Alumno: ";
           obj.RecuperaCad();
           for(i=0;i<=obj.n;i++)
          cout<<obj.Arreglo;
             {
                for(i=0;i<Fil;i++)
                {
                  for(j=0;j<Col;j++)
                   {
                     cout<<"M["<<i<<"]["<<j<<"]= ";
                     cin>>M[j];
                    }

                }
            }
          }


     void Ver_Mtz()
       {
          for(int i=0; i<Fil;i++)
            {cout<<endl;

             for(int j=0;j<Col;j++)
              cout<<M[j]<<"   ";
            }
       }

     void LiberaMem()
       {
        for(int i=0;i<Fil;i++)
         delete []M;
            delete []M;
        }


     void PromedioPorMateria()
       {
        for(int i=0; i<Fil;i++)
        for(int j=0;j<Col;j++)
            M[j]=(M[j])/3;
       }


     void GuardaParcial1()
       {
          ofstream archivo;
          archivo.open("E:/Parcial1.txt");
          for(i=0; i<Fil;i++)
         for(j=0; j<Col;j++)
         archivo<<M[j]<<endl;
         cout<<"Datos almacenados..."<<endl;
         archivo.close();
         }



     void GuardaParcial2()
     {
        ofstream archivo;
          archivo.open("E:/Parcial2.txt");
          for(i=0; i<Fil;i++)
         for(j=0; j<Col;j++)
         archivo<<M[j]<<endl;
         cout<<"Datos almacenados..."<<endl;
         archivo.close();
      }


     void GuardaParcial3()
     {
       ofstream archivo;
       archivo.open("E:/Parcial3.txt");
       for(i=0; i<Fil;i++)
         for(j=0; j<Col;j++)
            archivo<<M[j]<<endl;
      cout<<"Datos almacenados..."<<endl;
      archivo.close();
      }


     void GuardaPromedio()
     {
       ofstream archivo;
       archivo.open("E:/PromedioPorMateria.txt");
       for(i=0; i<Fil;i++)
         for(j=0; j<Col;j++)
         archivo<<M[j]<<endl;
      cout<<"Datos almacenados..."<<endl;
      archivo.close();
      }


     void RecuperaParcial1()
      {
         ifstream archivo("E:/Parcial1.txt");

          do
         {
            for (int i=0;i<Fil;i++)
            for (int j=0;j<Col;j++)
            archivo >> M[j];
         }while (!archivo.eof());

     }

     void RecuperaParcial2()
     {
       ifstream archivo("E:/Parcial2.txt");

        do
       {
         for (int i=0;i<Fil;i++)
         for (int j=0;j<Col;j++)
          archivo >> M[j];
       }while (!archivo.eof());

     }



     void RecuperaParcial3()
     {
         ifstream archivo("E:/Parcial3.txt");

             do
            {
            for (int i=0;i<Fil;i++)
               for (int j=0;j<Col;j++)
               archivo >> M[j];
           }while (!archivo.eof());

      }



     void RecuperaPromedio()
     {
      ifstream archivo("E:/PromedioPorMateria.txt");

       do
      {
         for (int i=0;i<Fil;i++)
         for (int j=0;j<Col;j++)
        archivo >> M[j];
         }while (!archivo.eof());

      }

     MATRIX operator+(MATRIX M1)
     {
      MATRIX ObjAux(Fil, Col);
       for(i=0; i<Fil;i++)
         for(j=0; j<Col;j++)
            ObjAux.M[j]=M[j]+M1.M[j];
      return ObjAux;
       }




};


void main()
{
int F, C, Long;
C=6;
Long=50;

        cout<<"cuantas alumnos?   ";cin>>F;

       Alumnos Obj1(F, Long);
       MATRIX M1(F,C), M2(F,C), M3(F,C),M4(F,C), M5(F,C);
       Obj1.LeeCadena();
       Obj1.OrdenaCadena();
       Obj1.VerCadena();
       Obj1.GuardaCadena();

          M1.Lee_Mtz();
         M2.Lee_Mtz();
          M3.Lee_Mtz();


       M1.GuardaParcial1();
        M2.GuardaParcial2();
       M3.GuardaParcial3();

          M4=M1+M2;
         M5=M3+M4;

       M5.PromedioPorMateria();



       M1.Ver_Mtz();
         cout<<endl;
           M2.Ver_Mtz();
          cout<<endl;
          M3.Ver_Mtz();
         cout<<endl;
            M5.Ver_Mtz();
          cout<<endl<<endl;

       getch();
         M1.LiberaMem();
          M2.LiberaMem();
         M3.LiberaMem();
          M4.LiberaMem();
         M5.LiberaMem();
 }