Está en la página 1de 10

Ejemplo:

El programa crea una clase denominada alumno, la cual contiene un arreglo para el nombre del
alumno y un arreglo para sus notas.
A partir de esta clase se crea un puntero al objeto alumno y a partir de este puntero se libera
memoria para un arreglo de objetos alumno por medio de NEW y el puntero a objeto para incluir
todos los alumnos de una clase en tiempo de ejecución.

#include <iostream>
#include <cstdlib>
using namespace std;
class alumno
{
private:
char nombre[20];
float notas[5];
public:
alumno(){};
~alumno(){};
void ingresar()
{
cout<<"Ingresar datos del alumno \n";
cout<<"Nombre: ";
cin>>nombre;
for(int i=0;i<5;i++)
{
cout<<"Nota"<<i+1<<" :";
cin>>notas[i];
}
}
void mostrardatos()
{
cout<<"Nombre alumno:"<<nombre<<endl;
for(int i=0;i<5;i++)
{
cout<<"Nota"<<i+1<<" : "<<notas[i]<<endl;
}
}
void getnombre()
{
cout<< "Nombre : "<<nombre;
}
};
int main()
{
alumno *p;
p=new alumno[10];
if(p==0)
{
cout<<"Error de memoria insuficiente";
return 0;
}
else
{
int opcion=0,j=0,codigo;
do
{
cout<<"1. Insertar alumno"<<endl;
cout<<"2. Reporte de alumno"<<endl;
cout<<"3. Listado de alumno"<<endl;
cout<<"4. Salir"<<endl;
cin>>opcion;
switch(opcion)
{
case 1:(p+j)->ingresar();
j++;
system("Cls");
break;
case 2:cout<<"Ingrese codigo del alumno :";
cin>>codigo;
codigo-=1;
if(codigo>0)
{
cout<<"Codigo alumno : "<<codigo+1<<endl;
(p+codigo)->mostrardatos();
}
else
{
cout<<"Error Codigo";
system("Cls");
}
system("Cls");
break;
case 3:cout<<"Listado alumno\n";
for(int i=0;i<j;i++)
{
cout<<"Codigo alumno : "<<i+1<<" :";
(p+i)->getnombre();
cout<<endl;
}
break;
}
}
while(opcion!=4);
}
delete p;
return 0;
}

Problemas Propuestos

Tomar el código anterior como referencia y realizar los cambios que Sean necesarios
para crear un programa que simula un sistema de control de notas.
Considere que cada alumno puede cursar como máximo 5 asignaturas por ciclo.
Para cada asignatura se deben considerar notas por cada periodo (el ciclo esta
formado por 3 periodos) y una nota final de laboratorio. Las notas deben promediarse
para obtener una nota global por materia, considerando los siguientesporcentajes
por periodo(1º:30%,2º:35% y 3º:35%), además debe considerarse que la parte teorica
tiene una ponderación del 60% y el laboratoriodel 40%
El programa debe tener un menú con las siguientes opciones:
Opcion de menú 1: Ingresar datos de los alumnos y las asignaturas.
Opcion de menú 2: Mostrar los datos de un alumno en particular, haciendo uso del
miembro “carnet”. A partir de los datos introducidos debe mostrarse a demás, la nota
promedio de cada asignatura, indicar si la materia esta “Aprobada” o “Reprobada”.
Opcion de menú 3: Salir del programa.
El menú deberá estar siempre activo, en la misma posición en pantalla, hasta que el
usuario seleccione la opción salir.

#include <iostream>
#include <cstdlib>
using namespace std;
class Alumno
{
private:
char nombre[20];
int carnet;
float notas[5][4];
public:
Alumno(){};
~Alumno(){};
void ingresar()
{
cout<<"Ingresar datos del alumno"<<endl;
cout<<"Nombre: ";
cin>>nombre;
cout<<"Carnet: ";
cin>>carnet;
for(int i=0;i<5;i++)
{
cout<<"Asignatura "<<i+1<<":"<<endl;
for(int j=0;j<3;j++)
{
cout<<"Periodo "<<j+1<<": ";
cin>>notas[i][j];
}
cout<<"Nota de laboratorio: ";
cin>>notas[i][3];
}
}
void mostrarDatos()
{
cout<<"Nombre alumno: "<<nombre<<endl;
cout<<"Carnet: "<<carnet<<endl;
for(int i=0;i<5;i++)
{
cout<<"Asignatura "<<i+1<<":"<<endl;
float promedioPeriodos=(notas[i][0]*0.3)+(notas[i][1]*0.35)+(notas[i][2]*0.35);
float promedioFinal=(promedioPeriodos*0.6)+(notas[i][3]*0.4);
cout<<"Promedio: "<< promedioFinal<<endl;
if(promedioFinal>=51)
{
cout<<"Estado: Aprobada"<<endl;
}
else
{
cout<<"Estado: Reprobada"<<endl;
}
}
float promedioTotal=0.0;
for(int i=0;i<5;i++)
{
float promedioPeriodos=(notas[i][0]*0.3)+(notas[i][1]*0.35)+(notas[i][2]*0.35);
float promedioFinal=(promedioPeriodos*0.6)+(notas[i][3]*0.4);
promedioTotal+=promedioFinal;
}
promedioTotal/=5;
cout<<"Promedio Total: "<<promedioTotal<<endl;
}
int getCarnet()
{
return carnet;
}
};
int main()
{
Alumno *p;
p=new Alumno[10];
if(p==0)
{
cout<<"Error de memoria insuficiente";
return 0;
}
else
{
int opcion=0,j=0,carnet;
do
{
cout<<"1. Insertar alumno"<<endl;
cout<<"2. Reporte de alumno"<<endl;
cout<<"3. Salir"<<endl;
cin>>opcion;
switch(opcion)
{
case 1:
(p+j)->ingresar();
j++;
system("cls");
break;
case 2:
cout<<"Ingrese carnet del alumno: ";
cin>>carnet;
bool encontrado=false;
for(int i=0;i<j; i++)
{
if((p+i)->getCarnet()==carnet)
{
encontrado=true;
cout<<"Carnet alumno: "<<carnet<<endl;
(p+i)->mostrarDatos();
break;
}
}
if(!encontrado)
{
cout<<"No se encontró ningún alumno con el carnet ingresado."<<endl;
}
cout<<"Presione cualquier tecla para continuar...";
cin.ignore();
cin.get();
system("cls");
break;
}
}
while(opcion!=3);
}
delete[] p;
return 0;
}

También podría gustarte