Tema: Estructuras
Ver Mensaje Individual
  #6 (permalink)  
Antiguo 22/04/2012, 11:19
cesar_casla
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 3 meses
Puntos: 94
Respuesta: Estructuras

Hola! al final si tenias el error en la funcion buscoAlm(). El problema esta en el else del for:
Código C:
Ver original
  1. //Busco el alumno
  2. for(i=0;i<valor;i++){
  3. if(strcmp(dni, b[i].dni) == 0){
  4. val = 1;
  5. break;
  6. }
  7. else{
  8. printf("El alumno no existe\n");
  9. val = 0;
  10. break;
  11. }
  12. }
Ese else no deberia esta ahi; al hacer un break en el else estas obligando a que el for solo cumpla un ciclo y luego salga.. Deberia ser asi:
Código C:
Ver original
  1. //Busco el alumno que deseo ingresar las notas
  2. int buscoAlm(struct alumno b[], int valor){
  3.  
  4. //struct alumno doc;
  5. int i, con=0, registros=1, reg;
  6. int val = 0;
  7. char dni[10];
  8. //Ingreso el alumno a buscar
  9. printf("Ingrese el dni del alumno para buscarlo\n");
  10. fflush(stdin);
  11. gets(dni);
  12.  
  13. //Busco el alumno
  14. for(i=0;i<valor;i++){
  15. if(strcmp(dni, b[i].dni) == 0){
  16. val = 1;
  17. break;
  18. }
  19. }
  20.  
  21. if(val==0){
  22. printf("El alumno no existe\n");
  23. }
  24. return val;
  25. }


Cosas que vi:
1º para que buscas por dni si lo unico que haces es retornar un 1 si existe o un 0 en caso contrario, me refiero a q no lo utilizas para nada a ese dato.
Si lo que queres es encontrar por dni y luego cargar la nota a ese dni encontrado lo que deberias hacer es retornar la posicion del arreglo donde se encontro y luego pasarle ese dato a la funcion cargoNota() para cargar las notas
2º A cada alumno vos le queres ingresar 5 notas como maximo pero solo podes ingrasar una nota ya que en la estructura declaras int nota; deberias declarar un arreglo para ingresar mas de una nota por alumno,ej:
Código C:
Ver original
  1. typedef struct alumno{
  2. char nomApe[50];
  3. char dni[10];
  4. int nota[5];
  5. }alumno;

Revisa bien el programa y fijate si hace lo que vos queres

Saludos