Guest User

youtu.be/F-iYfI0VfvM

a guest
Oct 27th, 2017
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.80 KB | None | 0 0
  1. /* Crear un programa que muestre un menú iterativo para realizar las siguientes acciones, almacenando los datos en arreglos estáticos en memoria:
  2.  * - Almacenar datos de alumnos que cursan una materia: número de legajo, nombre, email y teléfono. Almacenarlos ordenados por legajo. Máximo: 100.
  3.  * Se debe impedir ingresar legajos repetidos.
  4.  * - Almacenar datos de grupos de trabajo en clase, donde cada grupo está conformado por dos alumnos. De los grupos debe almacenarse: un código
  5.  * autonumérico que comenzará en el 1, y los legajos de los dos alumnos que componen el grupo. Máximo: 50.
  6.  * Se debe impedir ingresar legajos de alumnos inexistentes.
  7.  * - Imprimir el listado de todos los alumnos almacenados en el sistema.
  8.  * - Imprimir un listado de los grupos, mostrando el código y los nombres de los alumnos que lo componen.
  9. */
  10.  
  11.  
  12.  
  13.  
  14.  
  15. #include <iostream>
  16. #include <string>
  17.  
  18. using namespace std;
  19.  
  20. const int MAX_ALUMNOS=100;
  21. const int MAX_GRUPOS=50;
  22.  
  23. struct Alumno
  24. {
  25.     int legajo;
  26.     string nombre;
  27.     string email;
  28.     long int telefono;
  29. };
  30.  
  31. struct Grupo
  32. {
  33.     int codigo;
  34.     int legajo1;
  35.     int legajo2;
  36. };
  37.  
  38.  
  39. bool legajoExiste(const Alumno alumnos[], int dlA, int legajo){
  40.     for (int i=0; i!=dlA; i++){
  41.         if (alumnos[i].legajo==legajo)
  42.             return true;
  43.     }
  44.     return false;
  45. }
  46.  
  47.  
  48. string buscarNombrePorLegajo(Alumno alumnos[], int dlA, int legajo){
  49.     for (int i=0; i!=dlA; i++){
  50.         if (alumnos[i].legajo==legajo)
  51.             return alumnos[i].nombre;
  52.     }
  53.     return "";
  54. }
  55.  
  56.  
  57. void insertarOrdenado(Alumno alumnos[], int &dlA, Alumno alumno){
  58.     int indice = 0;
  59.     if (dlA < MAX_ALUMNOS){
  60.  
  61.         //Busco dónde insertarlo
  62.         while (indice < dlA && alumnos[indice].legajo <= alumno.legajo)
  63.             indice++;
  64.  
  65.         //Corrimiento
  66.         for (int j=dlA; j!=indice; j--)
  67.             alumnos[j] = alumnos[j-1];
  68.  
  69.         //Inserción
  70.         alumnos[indice] = alumno;
  71.         dlA++;
  72.     }
  73. }
  74.  
  75.  
  76. void cargarAlumnos(Alumno alumnos[], int &dlA){
  77.     Alumno alumno;
  78.     cout << "Numero de legajo (-1 para cortar la carga): ";
  79.     cin >> alumno.legajo;
  80.     while (alumno.legajo!=-1 && dlA < MAX_ALUMNOS){
  81.         if (legajoExiste(alumnos, dlA, alumno.legajo)){
  82.             cout << "Ese legajo ya está cargado. Por favor, ingrese otro.\n";
  83.         }
  84.         else{
  85.             cout << "Nombre: ";
  86.             cin.ignore();
  87.             getline(cin,alumno.nombre);
  88.             cout << "Email: ";
  89.             getline(cin,alumno.email);
  90.             cout << "Numero de telefono: ";
  91.             cin >> alumno.telefono;
  92.             insertarOrdenado(alumnos,dlA,alumno);
  93.         }
  94.         cout << "Numero de legajo (-1 para cortar la carga): ";
  95.         cin >> alumno.legajo;
  96.     }
  97. }
  98.  
  99.  
  100. void imprimirAlumnos(Alumno alumnos[], int dlA){
  101.     for (int i=0; i!=dlA; i++){
  102.         cout << "Legajo: "<< alumnos[i].legajo << " - ";
  103.         cout << "Nombre: "<< alumnos[i].nombre << " - ";
  104.         cout << "Email: "<< alumnos[i].email << " - ";
  105.         cout << "Telefono: "<< alumnos[i].telefono << endl;
  106.         cout << " -------- \n";
  107.     }
  108. }
  109.  
  110.  
  111. int leerLegajo(Alumno alumnos[], int dlA, int n){
  112.     int legajo;
  113.     do {
  114.         cout << "Ingrese legajo de participante " << n << " (-1 para cortar): ";
  115.         cin >> legajo;
  116.     } while (!legajoExiste(alumnos, dlA, legajo) && legajo!=-1);
  117.     return legajo;
  118. }
  119.  
  120.  
  121. void cargarGrupos(Grupo grupos[], int &dlG, Alumno alumnos[], int dlA){
  122.     int ultElemento;
  123.     Grupo grupo;
  124.     grupo.legajo1=leerLegajo(alumnos, dlA, 1);
  125.     while (grupo.legajo1 != -1) {
  126.         grupo.legajo2=leerLegajo(alumnos, dlA, 2);
  127.         if (dlG==0){
  128.             grupo.codigo=1;
  129.         }
  130.         else{
  131.             ultElemento=dlG-1;
  132.             grupo.codigo=grupos[ultElemento].codigo+1;
  133.         }
  134.  
  135.         if (dlG < MAX_GRUPOS){
  136.             grupos[dlG]=grupo;
  137.             dlG++;
  138.             cout << "Grupo agregado exitosamente.\n\n";
  139.             grupo.legajo1=leerLegajo(alumnos, dlA, 1);
  140.         }
  141.         else{
  142.             cout << "No se puede agregar el grupo.\n\n";
  143.             break;
  144.         }
  145.     }
  146. }
  147.  
  148.  
  149. void imprimirGrupos(Grupo grupos[], int dlG, Alumno alumnos[], int dlA){
  150.     for (int i=0; i!=dlG; i++){
  151.         cout << "Grupo " << grupos[i].codigo << endl;
  152.         cout << "Alumno 1: " << buscarNombrePorLegajo(alumnos, dlA, grupos[i].legajo1) << endl;
  153.         cout << "Alumno 2: " << buscarNombrePorLegajo(alumnos, dlA, grupos[i].legajo2) << endl;
  154.         cout << "-----------";
  155.     }
  156. }
  157.  
  158.  
  159. /*Carga de datos de prueba*/
  160. void cargarDatosDePrueba(Alumno alumnos[], int &dlA, Grupo grupos[], int &dlG)
  161. {
  162.     Alumno alumno;
  163.     alumno={14562, "Josefina Meza", "jmeza@universidad.com", 56723565};
  164.     insertarOrdenado(alumnos,dlA,alumno);
  165.     alumno={12684, "Manuel Moreira", "mmoreira@universidad.com", 43560056};
  166.     insertarOrdenado(alumnos,dlA,alumno);
  167.     alumno={13118, "Alejandro Gomez", "agomez@universidad.com", 64223053};
  168.     insertarOrdenado(alumnos,dlA,alumno);
  169.     alumno={11902, "Marisa Iriarte", "miriarte@universidad.com", 74534230};
  170.     insertarOrdenado(alumnos,dlA,alumno);
  171.     alumno={12938, "Esteban Iraola", "eiraola@universidad.com", 99182321};
  172.     insertarOrdenado(alumnos,dlA,alumno);
  173.     alumno={14109, "Lorena Juarez", "ljuarez@universidad.com", 23943566};
  174.     insertarOrdenado(alumnos,dlA,alumno);
  175.     alumno={15739, "Karina Alonso", "kalonso@universidad.com", 92304324};
  176.     insertarOrdenado(alumnos,dlA,alumno);
  177.     alumno={13486, "Luis Pereyra", "lpereyra@universidad.com", 83025348};
  178.     insertarOrdenado(alumnos,dlA,alumno);
  179.  
  180.     grupos[0]={1, 14562, 12938};
  181.     grupos[1]={2, 13486, 13118};
  182.     grupos[2]={3, 12684, 11902};
  183.     grupos[3]={4, 14109, 15739};
  184.     dlG=4;
  185. }
  186.  
  187.  
  188.  
  189. //INICIO DEL PROGRAMA
  190. int main()
  191. {
  192.     Alumno alumnos[MAX_ALUMNOS];
  193.     int dlA=0;
  194.     Grupo grupos[MAX_GRUPOS];
  195.     int dlG=0;
  196.  
  197.     cargarDatosDePrueba(alumnos, dlA, grupos, dlG);
  198.  
  199.     int opcion;
  200.     do
  201.     {
  202.         cout << "***MENU***";
  203.         cout << "\n1. Cargar alumnos";
  204.         cout << "\n2. Imprimir datos completos de alumnos";
  205.         cout << "\n3. Cargar grupos";
  206.         cout << "\n4. Imprimir grupos (nombres de los integrantes)";
  207.         cout << "\n0. Salir";
  208.         cout << "\nSeleccione opcion: ";
  209.         cin >> opcion;
  210.         switch (opcion)
  211.         {
  212.         case 1:
  213.             cargarAlumnos(alumnos, dlA);
  214.             break;
  215.         case 2:
  216.             imprimirAlumnos(alumnos, dlA);
  217.             break;
  218.         case 3:
  219.             cargarGrupos(grupos,dlG,alumnos,dlA);
  220.             break;
  221.         case 4:
  222.             imprimirGrupos(grupos,dlG,alumnos,dlA);
  223.             break;
  224.         case 0:
  225.             return 0;
  226.         default:
  227.             cout << "Opcion incorrecta. Seleccione nuevamente: ";
  228.         }
  229.     } while (opcion != 0);
  230. }
Add Comment
Please, Sign In to add comment