Programación General > C/C++
Buenas!!
Lregrey:
Aquí ando de nuevo! =) La verdad que pasarme por aquí me ha servido para dar comienzo con el proyecto y ya me queda poco =)
Aquí pego mi codigo... solo me falta dos opciones una de echas no dificil... la dificil y la que me gustaría que me ayudaran si fuera posible es la de ordenar de mejor a peor el resultado de la prueba... :S
Este es el main.c:
--- Código: C --- #include "opositores.h" #include <stdio.h> #include <stdlib.h> #include <string.h> main(){ int repetir,seleccion, contador, posicion; contador=0; repetir=1; char dni[10]; opositor opositores[100]; //Mostramos el menu mientras repetir sea igula a true o 1 ;-) while (repetir==1) { printf("n1. Dar de alta un opositorn"); printf("n2. Dar de baja un opositorn"); printf("n3. Listado completo de los opositoresn"); printf("n4. Consultar para un opositor el resultado de sus pruebasn"); printf("n5. Realizar la prueba para un opositorn"); printf("n6. Listar el resultado de una prueba de mejor a peor resultadon"); printf("n7. Salirn"); printf("n¨Que desea hacer?n"); scanf("%d",&seleccion);//Capturando la seleccion switch(seleccion) { case 1: printf("Haz elegido dar de altan"); altaopositor(opositores,contador); contador++; break; case 2: printf("Haz elegido dar de bajan"); printf("nDame el DNI del opositorn"); scanf("%s",dni); posicion=buscar(opositores,contador,dni); dardebaja(opositores,contador,posicion); contador--; break; case 3: printf("Haz elegido ver el listado completon"); listar(opositores, contador); break; case 4: printf("Haz elegido consultar las pruebas de un opositorn");break; case 5: printf("Haz elegido realizar prueban"); printf("nDame el DNI del opositorn"); scanf("%s",dni); posicion=buscar(opositores,contador,dni); dardebaja(opositores,contador,posicion); realizar(opositores,posicion); break; case 6: printf("Haz elegido listar el las pruebas de mejor a peorn");break; case 7: repetir=0;break;//se indica que debe salir //Si la opcion es incorrecta, entra aqui default: printf("Opcion Invalida"); } } }
Este es oposiores.c:
--- Código: C --- #include "opositores.h" #include <stdio.h> #include <string.h> #include <stdlib.h> void altaopositor(opositor opositores[],int contador){ char nombre[20], apellidos[40], dni[10]; printf("nDame el nombre del opositorn"); scanf("%s",opositores[contador].nombre); printf("nDame el primer apellido del opositorn"); scanf("%s",opositores[contador].apellidos); printf("nDame el DNI del opositorn"); scanf("%s",opositores[contador].dni); } int buscar(opositor opositores[],int contador, char dni[]){ int c, op, pOp; c=0; op=0; pOp=-1; while(c<contador && !op) { int comparar=strcmp(opositores[c].dni,dni); if (comparar==0) { op=1; pOp=c; } else { c++; } } return pOp; } void dardebaja(opositor opositores[],int contador, int posicion){ while (posicion<contador-1&&posicion!=-1){ opositores[posicion]=opositores[posicion+1]; posicion++; } } void listar(opositor opositores[],int contador){ int c=0; printf("nListado de opositores.n"); while(c<contador){ printf("n%s, %s, DNI:%sn",opositores[c].apellidos, opositores[c].nombre, opositores[c].dni); c++; }} void realizar(opositor opositores[],int posicion){ int s, salver, milm, cienm ;int SALTOV=60;int CIENMETROS=12;int MILMETROS=180; printf("nIntroduce la distancia saltada en cm del participanten"); fflush (stdin); scanf("%d",&salver); opositores[posicion].prueba1[0]=salver; printf("nIntroduce el tiempo que ha tardado en recorrer los 100 metros en segundos del participanten"); fflush (stdin); scanf("%d",&cienm); opositores[posicion].prueba2[0]=cienm; printf("nIntroduce el tiempo que ha tardado en recorrer los 1000 metros en segundos del participanten"); fflush (stdin); scanf("%d",&milm); opositores[posicion].prueba3[0]=milm; for(s=1;s<3;s++){ if (salver<SALTOV&&cienm<=CIENMETROS&&milm<=MILMETROS) { printf("nEl participante debe repertir la prueba de salto.(Tiene %d intentos mas)n", 3-s); printf("nIntroduce la distancia saltada en cm del participanten"); fflush (stdin); scanf("%d",&salver); opositores[posicion].prueba1[s]=salver; }//Fin cuarto else if else if (salver>=SALTOV&&cienm>CIENMETROS&&milm<=MILMETROS) { printf("nEl participante debe repertir la prueba de 100 m.(Tiene %d intentos mas)n", 3-s); printf("nIntroduce el tiempo nuevo que ha tardado en recorrer los 100 metros en segundos del participanten"); fflush (stdin); scanf("%d",&cienm); opositores[posicion].prueba2[s]=cienm; }//Fin quinto else if else if (salver>=SALTOV&&cienm<=CIENMETROS&&milm>MILMETROS) { printf("nEl participante debe repertir la prueba de 1000 m.(Tiene %d intentos mas)n", 3-s); printf("nIntroduce el tiempo nuevo que ha tardado en recorrer los 1000 metros en segundos del participanten"); fflush (stdin); scanf("%d",&milm); opositores[posicion].prueba3[s]=milm; }//Fin sexto else if probable else if (salver>=SALTOV&&cienm>CIENMETROS&&milm>MILMETROS) { printf("nEl participante debe repertir las prueba de 100 m. y 1000 m. (Tiene %d intentos mas)n", 3-s); printf("nIntroduce el tiempo nuevo que ha tardado en recorrer los 100 metros en segundos del participanten"); fflush (stdin); scanf("%d",&cienm); opositores[posicion].prueba2[s]=cienm; printf("nIntroduce el tiempo nuevo que ha tardado en recorrer los 1000 metros en segundos del participanten"); fflush (stdin); scanf("%d",&milm); opositores[posicion].prueba3[s]=milm; }//Fin del primer else if probable else if (salver<SALTOV&&cienm>CIENMETROS&&milm<=MILMETROS) { printf("nEl participante debe repertir las prueba de salto y 100 m.(Tiene %d intentos mas)n", 3-s); printf("nIntroduce la distancia saltada en cm del participanten"); fflush (stdin); scanf("%d",&salver); opositores[posicion].prueba1[s]=salver; printf("nIntroduce el tiempo nuevo que ha tardado en recorrer los 100 metros en segundos del participante:n"); fflush (stdin); scanf("%d",&cienm); opositores[posicion].prueba2[s]=cienm; }//Fin del segundo else if probable else if (salver<SALTOV&&cienm<=CIENMETROS&&milm>MILMETROS) { printf("nEl participante debe repertir las prueba de salto y 1000 m.(Tiene %d intentos mas)n", 3-s); printf("nIntroduce la distancia saltada en cm del participante:n"); fflush (stdin); scanf("%d",&salver); opositores[posicion].prueba1[s]=salver; printf("nIntroduce el tiempo nuevo que ha tardado en recorrer los 1000 metros en segundos del participante:n"); fflush (stdin); scanf("%d",&milm); opositores[posicion].prueba3[s]=milm; }//Fin del tercer else if probable else if (salver<SALTOV&&cienm>CIENMETROS&&milm>MILMETROS){ printf("nEl participante debe repertir todas las prueba de nuevo.(Tiene %d intentos mas)n", 3-s); printf("nIntroduce la nueva distancia saltada en cm del participante:n"); fflush (stdin); scanf("%d",&salver); opositores[posicion].prueba1[s]=salver; printf("nIntroduce el tiempo nuevo que ha tardado en recorrer los 100 metros en segundos del participante:n"); fflush (stdin); scanf("%d",&cienm); opositores[posicion].prueba2[s]=cienm; printf("nIntroduce el tiempo nuevo que ha tardado en recorrer los 1000 metros en segundos del participante:n"); fflush (stdin); scanf("%d",&milm); opositores[posicion].prueba3[s]=milm; }//Fin septimo probable }//fin else for sif (salver>=SALTOV&&cienm<=CIENMETROS&&milm<=MILMETROS) printf("nEl participante numero ha superado la prueba.n");else printf("nEl participante no ha superado la prueba.n"); }
Aquí opositores.h
--- Código: C ---#include <stdio.h>#include <stdlib.h>#include <string.h> typedef struct opositor{ char apellidos[40]; char nombre[20]; char dni[10]; int edad; float prueba1[3]; float prueba2[3]; float prueba3[3]; }opositor; void altaopositor(opositor opositores[],int contador);int buscar(opositor opositores[],int contador, char dni[]);void dardebaja(opositor opositores[],int contador, int posicion);void listar(opositor opositores[],int contador);void realizar(opositor opositores[],int posicion);
Lregrey:
Niguna idea para ordenar las pruebas de mejor a peor?? :S
m0skit0:
Burbuja.
Navegación
[*] Página Anterior
Ir a la versión completa