SHARE
TWEET

TP REPASO

a guest Jun 20th, 2019 60 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "pila.h"
  5. #define archEquipo "Equipo.dat"
  6. #define archJugador "Jugador.dat"
  7. #define DIM 50
  8.  
  9.  
  10. const int fil = 30;
  11. const int col=30;
  12.  
  13. typedef struct
  14. {
  15.     int idEquipo;
  16.     char nombre[30];
  17.     int zona;
  18. } equipo;
  19.  
  20. typedef struct
  21. {
  22.     int idJugador;
  23.     char nombre[30];
  24.     int edad;
  25.     int idEquipo;
  26. } jugador;
  27.  
  28. int cargaEquipo (equipo eq[], int dim, int v);
  29. int cargaJugador (jugador jug[], equipo eq[], int dim, int valJug, int valEq);
  30. jugador buscarJugMayor ();
  31. jugador encuentraRegistro (int nroRegistro);
  32.  
  33.  
  34.  
  35.  
  36. int main()
  37. {
  38.     Pila p;
  39.     inicpila(&p);
  40.     int validosEq=0, validosJug=0, posmenor=0, cantEquiposStr=0;
  41.     char matriz[fil][col];
  42.     equipo eq[DIM];
  43.     jugador jug[DIM];
  44.     jugador mayor;
  45.     jugador elegir;
  46.  
  47.     /*validosEq = cargaEquipo(eq, DIM, validosEq);
  48.     validosJug = cargaJugador (jug, eq, DIM, validosJug, validosEq);
  49.     system("cls");
  50.     printf("\n\tARREGLO EQUIPOS.....");
  51.     mostrarEquipo(eq, validosEq);
  52.     printf("\n\tARREGLO JUGADORES");
  53.     mostrarJugador(jug, validosJug);
  54.     posmenor = posicionMenor(jug, validosJug, 0);
  55.     printf("Pos Menor = %d \n", posmenor);
  56.     printf("\n\n\n ARREGLO JUG ORDENADO \n\n");
  57.     ordenacionSeleccion(jug, validosJug);
  58.     mostrarJugador(jug, validosJug);
  59.     printf("\n\n\n ARREGLO EQ ORDENADO \n\n");
  60.     ordenarInsercion(eq, validosEq);
  61.     mostrarEquipo(eq, validosEq);
  62.     system("pause");
  63.     system("cls");
  64.     pasarArchMayores25(jug, validosJug);
  65.     pasarEquiposArchivo(eq, validosEq);*/
  66.     printf("Jugadores en archivo:\n\n");
  67.     mostrarArchiJug();
  68.     printf("Equipos en archivo: \n\n");
  69.     mostrarArchiEq();
  70.     pasarEquipoAPila(&p, 1);
  71.     printf("\nPILA: \n");
  72.     mostrar(&p);
  73.     mayor = buscarJugMayor();
  74.     printf("\nJugador de mayor edad: \n");
  75.     mostrarUnJug(mayor);
  76.     elegir = encuentraRegistro(0);
  77.     printf("\nJugador Elegido: \n");
  78.     mostrarUnJug(elegir);
  79.     system("pause");
  80.     cantEquiposStr=archivo2matriz(matriz, fil);
  81.     printf("\nArreglo de Strings: \n\n");
  82.     muestraMatriz(matriz, cantEquiposStr);
  83.     return 0;
  84. }
  85.  
  86. //1. Cargar un arreglo de Equipos.
  87.  
  88. int cargaEquipo (equipo eq[], int dim, int v)
  89. {
  90.     int fin=0;
  91.     while(fin!=27)
  92.     {
  93.         system("cls");
  94.         printf("Cargando Equipo.....");
  95.         printf("\nIngrese el id del equipo: ");
  96.         scanf("%d", &eq[v].idEquipo);
  97.         printf("\nIngrese el nombre del equipo: ");
  98.         fflush(stdin);
  99.         gets(eq[v].nombre);
  100.         printf("\nIngrese la zona en la que se encuentra: ");
  101.         scanf("%d", &eq[v].zona);
  102.         v++;
  103.         printf("\nESC para salir\n\nCualquier tecla para continuar");
  104.         fin=getch();
  105.     }
  106.     return v;
  107. }
  108.  
  109.  
  110.  
  111. int validarIdEquipo (equipo eq[], int v, int idJug)
  112. {
  113.     int flag=0, i=0;
  114.     while(i<v && flag != 1)
  115.     {
  116.         if(idJug == eq[i].idEquipo)
  117.         {
  118.             flag=1;
  119.         }
  120.         i++;
  121.     }
  122.     return flag;
  123. }
  124.  
  125. int cargaJugador (jugador jug[], equipo eq[], int dim, int valJug, int valEq)
  126. {
  127.     int fin=0, existe=0, idEquipo=0;
  128.     system("cls");
  129.     printf("\nId del equipo en el que juega: ");
  130.     scanf("%d", &idEquipo);
  131.     existe=validarIdEquipo(eq, valEq, idEquipo);
  132.     printf("existe= %d\n", existe);
  133.     system("pause");
  134.     if(existe == 1)
  135.     {
  136.         while(fin!=27)
  137.         {
  138.             system("cls");
  139.             printf("Cargando jugador....\n");
  140.             printf("\nIngrese el id del jugador: ");
  141.             scanf("%d", &jug[valJug].idJugador);
  142.             printf("\nIngrese el nombre del Jugador: ");
  143.             fflush(stdin);
  144.             gets(jug[valJug].nombre);
  145.             printf("\nIngrese la edad del jugador: ");
  146.             fflush(stdin);
  147.             scanf("%d", &jug[valJug].edad);
  148.             jug[valJug].idEquipo = idEquipo;
  149.             valJug++;
  150.             printf("\nESC para salir\n\nCualquier tecla para continuar");
  151.             fin=getch();
  152.         }
  153.     }
  154.     else
  155.     {
  156.         printf("El id ingresado no corresponde a ningun equipo");
  157.         system("pause");
  158.     }
  159.     return valJug;
  160. }
  161.  
  162. //3. Mostrar los arreglos por pantalla, primero mostrando la información de un equipo y
  163. //luego los jugadores que el corresponden (piense en cómo modularizarlo).
  164.  
  165. void mostrarEquipo (equipo eq[], int v)
  166. {
  167.     int i=0;
  168.     for (i=0; i<v; i++)
  169.     {
  170.         printf("\n-----------------------------------");
  171.         printf("\n Id Equipo............: %d", eq[i].idEquipo);
  172.         printf("\n Nombre Equipo........: %s", eq[i].nombre);
  173.         printf("\n Zona Equipo..........: %d", eq[i].zona);
  174.         printf("\n-----------------------------------\n");
  175.  
  176.     }
  177. }
  178.  
  179. void mostrarJugador (jugador jug[], int v)
  180. {
  181.     int i=0;
  182.     for (i=0; i<v; i++)
  183.     {
  184.         printf("\n-----------------------------------");
  185.         printf("\n Id Equipo............: %d", jug[i].idEquipo);
  186.         printf("\n Id Jugador...........: %d", jug[i].idJugador);
  187.         printf("\n Nombre del Jug.......: %s", jug[i].nombre);
  188.         printf("\n Edad.................: %d", jug[i].edad);
  189.         printf("\n-----------------------------------\n");
  190.  
  191.     }
  192. }
  193.  
  194. // 4. Ordenar el arreglo de jugadores por el método de selección (con el idJugador como
  195. // criterio de ordenación).
  196.  
  197. int posicionMenor (jugador jug[], int v, int inicio)
  198. {
  199.     int posMenor = inicio;
  200.     int menor = jug[posMenor].idJugador;
  201.     for(int i=inicio+1; i<v; i++)
  202.     {
  203.         if(jug[i].idJugador<menor)
  204.         {
  205.             posMenor = i;
  206.             menor = jug[i].idJugador;
  207.         }
  208.     }
  209.     return posMenor;
  210. }
  211.  
  212. void ordenacionSeleccion (jugador jug[], int v)
  213. {
  214.     int posMenor=0;
  215.     int i=0;
  216.     jugador aux;
  217.     while(i<(v-1))
  218.     {
  219.         posMenor = posicionMenor(jug, v, i);
  220.         aux = jug[posMenor];
  221.         jug[posMenor] = jug[i];
  222.         jug[i]=aux;
  223.         i++;
  224.     }
  225. }
  226.  
  227. //5. Ordenar el arreglo de equipos por el método de inserción (con el nombre como criterio de ordenación).
  228.  
  229. void insertar (equipo eq[], int v, equipo dato)
  230. {
  231.     int i=v;
  232.     while((i>=0)&& strcmp(dato.nombre, eq[i].nombre)>0)
  233.     {
  234.         eq[i+1]=eq[i];
  235.         i--;
  236.     }
  237.     eq[i+1]=dato;
  238. }
  239.  
  240.  
  241. void ordenarInsercion(equipo eq[], int v)
  242. {
  243.     int i=0;
  244.     equipo aux;
  245.     for(i=0; i<v-1; i++)
  246.     {
  247.         aux = eq[i+1];
  248.         insertar(eq,i,aux);
  249.     }
  250. }
  251.  
  252. //6. Pasar a un archivo todos los Jugadores mayores de 25 años.
  253.  
  254. void pasarArchMayores25 (jugador jug[], int v)
  255. {
  256.     int i=0;
  257.     FILE * pArchJug = fopen(archJugador, "ab");
  258.     if (pArchJug != NULL)
  259.     {
  260.         while(i<v)
  261.         {
  262.             if(jug[i].edad>=25)
  263.             {
  264.                 fwrite(&jug[i], sizeof(jugador), 1, pArchJug);
  265.             }
  266.             i++;
  267.         }
  268.         fclose(pArchJug);
  269.     }
  270. }
  271.  
  272.  
  273.  
  274. //7. Pasar a un archivo todos los Equipos.
  275.  
  276. void pasarEquiposArchivo (equipo eq[], int v)
  277. {
  278.     int i=0;
  279.     FILE * pArchEquipo = fopen(archEquipo, "ab");
  280.     if(pArchEquipo != NULL)
  281.     {
  282.         while(i<v)
  283.         {
  284.             fwrite(&eq[i], sizeof(equipo), 1, pArchEquipo);
  285.             i++;
  286.         }
  287.         fclose(pArchEquipo);
  288.     }
  289. }
  290.  
  291.  
  292.  
  293. //8. Mostrar los archivos por pantalla.
  294.  
  295. void mostrarUnEq(equipo eq)
  296. {
  297.     printf("\n--------------------------");
  298.     printf("\nEquipo.........: %s", eq.nombre);
  299.     printf("\nId Equipo......: %d", eq.idEquipo);
  300.     printf("\nZona...........: %d", eq.zona);
  301.     printf("\n--------------------------\n");
  302. }
  303.  
  304. void mostrarArchiEq ()
  305. {
  306.     equipo eq;
  307.     FILE * pArchEquipo = fopen(archEquipo, "rb");
  308.     if(pArchEquipo != NULL)
  309.     {
  310.         while(fread(&eq, sizeof(equipo), 1, pArchEquipo)>0)
  311.         {
  312.             mostrarUnEq(eq);
  313.         }
  314.         fclose(pArchEquipo);
  315.     }
  316. }
  317.  
  318. void mostrarUnJug (jugador j)
  319. {
  320.     printf("\n---------------------------\n");
  321.     printf("\nNombre...............: %s", j.nombre);
  322.     printf("\nEdad.................: %d", j.edad);
  323.     printf("\nId Jugador...........: %d", j.idJugador);
  324.     printf("\nId Equipo............: %d", j.idEquipo);
  325.     printf("\n---------------------------\n");
  326. }
  327.  
  328. void mostrarArchiJug ()
  329. {
  330.     jugador j;
  331.     FILE * pArchJug = fopen(archJugador, "rb");
  332.     if(pArchJug != NULL)
  333.     {
  334.         while(fread(&j,sizeof(jugador),1,pArchJug)>0)
  335.         {
  336.             mostrarUnJug(j);
  337.         }
  338.         fclose(pArchJug);
  339.     }
  340. }
  341.  
  342. //9. Utilizando el archivo de Equipos, pasar a una Pila los idEquipo de una determinada
  343. //zona (se pasan por parámetro la Pila y la zona).
  344.  
  345. void pasarEquipoAPila (Pila*p, int zona)
  346. {
  347.     equipo eq;
  348.     FILE * pArchEquipo = fopen(archEquipo, "rb");
  349.     if(pArchEquipo != NULL)
  350.     {
  351.         while(fread(&eq, sizeof(equipo), 1, pArchEquipo)>0)
  352.         {
  353.             if(eq.zona == zona)
  354.             {
  355.                 apilar(p, eq.idEquipo);
  356.             }
  357.         }
  358.         fclose(pArchEquipo);
  359.     }
  360. }
  361.  
  362. //10. Hacer una función que busque en el archivo el jugador de mayor edad. La función
  363. //imprime por pantalla los datos del jugador luego de realizar la búsqueda.
  364.  
  365. jugador buscarJugMayor ()
  366. {
  367.     jugador jug;
  368.     jugador mayor;
  369.     mayor = jug;
  370.     FILE * pArchJug = fopen(archJugador, "rb");
  371.     if(pArchJug != NULL)
  372.     {
  373.         while(fread(&jug, sizeof(jugador), 1, pArchJug)>0)
  374.         {
  375.             if(jug.edad>mayor.edad)
  376.             {
  377.                 mayor = jug;
  378.             }
  379.         }
  380.        fclose(pArchJug);
  381.     }
  382.  
  383.     return mayor;
  384. }
  385.  
  386. //11. Hacer una función que muestre un jugador determinado del archivo de Jugadores.
  387. //La función recibe un número de registro. No recorrer el archivo, usar fseek().
  388.  
  389. jugador encuentraRegistro (int nroRegistro)
  390. {
  391.     jugador jug;
  392.     FILE *pArchJugador = fopen(archJugador, "rb");
  393.     if(pArchJugador != NULL)
  394.     {
  395.         fseek(pArchJugador, sizeof(jugador)*nroRegistro, SEEK_SET);
  396.         fread(&jug, sizeof(jugador),1, pArchJugador);
  397.         fclose(pArchJugador);
  398.     }
  399.     return jug;
  400. }
  401.  
  402. //12. Hacer una función que pase los nombres de todos los equipos a un arreglo de strings
  403. //La función debe retornar la cantidad de nombres copiados.
  404.  
  405. int archivo2matriz (char m[][30], int fil)
  406. {
  407.     equipo eq;
  408.     int equiposCargados=0, i=0, j=0;
  409.     FILE * pArchEquipo = fopen(archEquipo, "rb");
  410.     if(pArchEquipo != NULL)
  411.     {
  412.         while(fread(&eq, sizeof(equipo), 1, pArchEquipo)>0 && i<fil)
  413.         {
  414.             strcpy(m[i], eq.nombre);
  415.             equiposCargados++;
  416.             i++;
  417.         }
  418.     }
  419.     return equiposCargados;
  420. }
  421.  
  422. void muestraMatriz (char m[][col], int cantEquipos)
  423. {
  424.     int i=0, j=0;
  425.     for(i=0; i<cantEquipos; i++)
  426.     {
  427.         printf("| %s |\t", m[i]);
  428.     }
  429. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top