[C con Clase] Buenas tardes, tengo problemas para mantener el valor de las variables generadas en cada case, estas variables son usadas en las otras opciones, pero permanecen inmutables. desearía saber como solucionarlo, gracias.

gino cerda hinostroza gino_kaku en hotmail.com
Mar Nov 8 22:21:50 CET 2016


#include<iostream>
#include<conio.h>
#include<cstdlib>
#include<stdio.h>
#include<string.h>
using namespace std;
struct Curso{
   char ciclo[30];
   char codigo[30];
   char nombre[30];
   char credito[5];
   char profesor[30];
   int alumnos;
   struct Alumno{
      char codigo[30];
      char nombre[30];
      char escuela[30];
      float promedio;
      }alum[50];
}c1;
void cabezera(){
   cout<<"\t\t\tTrabajo de estructuras"<<endl;
   cout<<"\t\t\t**********************\n\n"<<endl;
}


int llenadodelcurso( int &a){
   cout<<"Ciclo del curso: ";
   cin.ignore();
   cin.getline(c1.ciclo,30);
   cout<<"\nCodigo del curso: ";
   cin.getline(c1.codigo,30);
   cout<<"\nNombre del curso: ";
   cin.getline(c1.nombre,30);
   cout<<"\nIngrese cuantos credito vale la asignatura: ";
   cin.getline(c1.credito,30);
   cout<<"\nNombre del profesor asignado: ";
   cin.getline(c1.profesor,30);

   cout<<"\nCantidad de alumnos maximos a matricular en la clase: ";
   cin>>a;
   return a;

}
int llenadodenotas(int &x){
   int i=0,a,b,c;
   float prom;
   do{
      cout<<"\nDigitar las notas del alumno "<<i+1<<" :"<<endl;
      cout<<"\nNota del examen parcial: ";
      cin>>a;
      cout<<"\nNota del examen final: ";
      cin>>b;
      prom=(a+b)/2;
      cout<<"\nPromedio: "<<prom<<endl;
      (c1.alum[i].promedio)=prom;
      i++;
      cout<<"\nDesea llenar otra nota? SI::1 NO::0 "<<endl;
      cin>>c;
   }
   while(i<x && c!=0);
}
int llenadodealumnos(int &x){
   int i=0,b;
   do{
      cout<<"\n\tCantidad de vacantes: "<<x-i<<endl;
      cout<<"\t**********************"<<endl;
      cout<<"\nCodigo del alumno: ";
      cin.ignore();
      cin.getline(c1.alum[i].codigo,30);
      cout<<"\nNombre del alumno: ";
      cin.getline(c1.alum[i].nombre,30);
      cout<<"\nEscuela a la que pertenece: ";
      cin.getline(c1.alum[i].escuela,30);
      cout<<"\n¿Desea Matricular a otro alumno? "<<endl;
      cout<<"\nSi::1 o No::0 ";
      cin>>b;
      i++;
   }while(i<x && b!=0);
   if (i==x){
      cout<<"\n\tVacantes agotadas"<<endl;
   }
   else{
      cout<<"\nAun quedan "<<x-i<<" vacantes."<<endl;
   }
   (c1.alumnos)=i;
   return i;
}
void mostrarCurso(){
   cout<<"\t\t\tASIGNATURA"<<endl;
   cout<<"\t\t\t**********\n"<<endl;
   cout<<"Semestre: "<<c1.ciclo<<endl;
   cout<<"Codigo:   "<<(c1.codigo)<<endl;
   cout<<"Nombre:   "<<(c1.nombre)<<endl;
   cout<<"Profesor: "<<(c1.profesor)<<endl;
   cout<<"Creditos: "<<(c1.credito)<<endl;
   cout<<"Alumnos:  "<<(c1.alumnos)<<endl;
}

void mostrarAlumno(int x){
   for(int i=0;i<x;i++){
      cout<<"\n\t\t\tAlUMNO "<<i+1<<endl;
      cout<<"\t\t\t********\n"<<endl;
      cout<<"Codigo:    "<<(c1.alum[i].codigo)<<endl;
      cout<<"Nombre:    "<<(c1.alum[i].nombre)<<endl;
      cout<<"Esuela:    "<<(c1.alum[i].escuela)<<endl;
      cout<<"Promedio:    "<<(c1.alum[i].promedio)<<endl;
   }
}

void ordenalfabetico(int x){
   system("cls");
   char temp1[30];

   for(int i=0;i<x;i++){
      for(int j=i;j<x;j++){
         if(strcmp((c1.alum[i].nombre),(c1.alum[j].nombre))>0){
            strcpy(temp1,(c1.alum[i].nombre));
            strcpy((c1.alum[i].nombre),(c1.alum[j].nombre));
            strcpy((c1.alum[j].nombre),temp1);
         }
      }
   }
   cout<<"\t\t\tActa de Matricula"<<endl;
   mostrarCurso();
   for(int i=0;i<x;i++){
      cout<<"\n\t\t\tAlUMNO "<<i+1<<endl;
      cout<<"\t\t\t********\n"<<endl;
      cout<<"Codigo:    "<<(c1.alum[i].codigo)<<endl;
      cout<<"Nombre:    "<<(c1.alum[i].nombre)<<endl;
      cout<<"Esuela:    "<<(c1.alum[i].escuela)<<endl;
      cout<<"Promedio:    "<<(c1.alum[i].promedio)<<endl;
   }
}

void ordenmayormenor(int x){
   system("cls");
   float temp;
   for(int i=0;i<x-1;i++){
      for(int j=1+i;j<x;j++){
         if( (c1.alum[i].promedio)<(c1.alum[j].promedio)){
            temp=c1.alum[i].promedio;
            (c1.alum[i].promedio)=(c1.alum[j].promedio);
            (c1.alum[j].promedio)=temp;
         }
      }
   }
   cout<<"\t\t\tActa de Matricula"<<endl;
   mostrarCurso();
   for(int i=0;i<x;i++){
      cout<<"\n\t\t\tAlUMNO "<<i+1<<endl;
      cout<<"\t\t\t********\n"<<endl;
      cout<<"Codigo:    "<<(c1.alum[i].codigo)<<endl;
      cout<<"Nombre:    "<<(c1.alum[i].nombre)<<endl;
      cout<<"Esuela:    "<<(c1.alum[i].escuela)<<endl;
      cout<<"Promedio:    "<<(c1.alum[i].promedio)<<endl;
   }
}

int ordenando(int &x){
   int a;
   cout<<"Desea ordenar la lista de alumnos por:\nOrden alfabetico::1 \nDe mayor a menor promedio::2"<<endl;
   cin>>a;
   switch (a){
      case 1:
         ordenalfabetico(x);
         break;
      case 2:
         ordenmayormenor(x);
         break;
      default:
         cout<<"ERROR #404 NOT FOUND"<<endl;
         break;
   }
   system("PAUSE");
   system("cls");
}
void pregunta(){
   int op;
   int a=0,b=0;
   cout<<"\t\t\tMenu\t\t\t"<<endl;
   cout<<"\nGenerar curso    (1) :";
   cout<<"\nMatricular   (2) :";
   cout<<"\nNotas       (3) :";
   cout<<"\nRectificacion    (4) :";
   cout<<"\nImprimir acta   (5) :"<<endl;
   cout<<"\nDigite su opcion (1-5)"<<endl;
   cin>>op;
   switch (op){
      case 1 :
         system("cls");
         a = llenadodelcurso(a);
         cout<<"\nCurso creado con exito!"<<endl;
         system("cls");
         mostrarCurso();
         system("pause");
         system("cls");
         pregunta();
         break;

      case 2 :
         system("cls");
         b = llenadodealumnos(a);
         mostrarCurso();
         mostrarAlumno(b);
         system("pause");
         system("cls");
         pregunta();
         break;

      case 3 :
         system("cls");
         llenadodenotas(b);
         system("cls");
         pregunta();
         break;

      case 4 :


      case 5 :
         system("cls");
         ordenando(b);
         system("pause");
         pregunta();
         break;
   }



}
int main(){
   cabezera();
   pregunta();

   system("PAUSE");
   return 0;
}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20161108/3a5eb50b/attachment.html>


Más información sobre la lista de distribución Cconclase