Estructuras

8. Solución Ejercicio.



#include<iostream>
#define cantidad 2
#define sin_nota -1
using namespace std;
int main()
{
bool nota_valida= true;
struct St_alumnos{char nombre[20];char apellido[20];};//para Nombre y apellido.
struct St_evaluaciones{float nota[2];};//indice 0:Parcial, Indice 1: Recuperatorio
>struct St_registros {St_alumnos alumno;St_evaluaciones calificaciones;} registro[cantidad];
// Carga de Nombres .
for(int a=0;a<cantidad;a++)
{cout<<endl<<"Ingrese Nombre: ";cin>>registro[a].alumno.nombre;
cout<<endl<<"Ingrese Apellido: ";cin>>registro[a].alumno.apellido;
registro[a].calificaciones.nota[0]= sin_nota;//para saber si se cargaron valores
registro[a].calificaciones.nota[1]= sin_nota;//para saber si se cargaron valores
}
// Carga de Notas

or(int a=0;a<cantidad;a++)
{
cout<<registro[a].alumno.nombre<<" "<<registro[a].alumno.apellido<<endl;
for(int h=0;h<2;h++)
{nota_valida=true;
cout<<"Ingrese nota Parcial "<<h+1<<": ";
 while (nota_valida)
   {cin>>registro[a].calificaciones.nota[h];//ingreso nota.
   //Controlo que esté en [0;10] o que sea -1
   if(((registro[a].calificaciones.nota[h]<0) or (registro[a].calificaciones.nota[h]>10))and !(registro[a].calificaciones.nota[h]==sin_nota))
   {cout<<"Nota no valida, reingrese :"; 
   nota_valida=true;}
   else nota_valida=false;
   }
}
}
//Muestro notas de parcial
for(int a=0;a<cantidad;a++)
{
cout<<registro[a].alumno.nombre<<" "<<registro[a].alumno.apellido<<endl;
 for(int h=0;h<2;h++)
  {
  cout<<" Parcial "<<h+1<<": "<<registro[a].calificaciones.nota[h]<<endl;
  }
  cout<<endl;
}   
//Carga de Recuperatorios Falta.
//Mostrar Regulares  Falta.
}

Esta es una propuesta de resolución, faltaría la parte de carga de recuperatorio y luego generar las condiciones para cada alumno.