Hola! al final si tenias el error en la funcion buscoAlm(). El problema esta en el else del for:
Código C:
Ver original//Busco el alumno
for(i=0;i<valor;i++){
if(strcmp(dni
, b
[i
].
dni) == 0){ val = 1;
break;
}
else{
printf("El alumno no existe\n"); val = 0;
break;
}
}
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//Busco el alumno que deseo ingresar las notas
int buscoAlm(struct alumno b[], int valor){
//struct alumno doc;
int i, con=0, registros=1, reg;
int val = 0;
char dni[10];
//Ingreso el alumno a buscar
printf("Ingrese el dni del alumno para buscarlo\n");
//Busco el alumno
for(i=0;i<valor;i++){
if(strcmp(dni
, b
[i
].
dni) == 0){ val = 1;
break;
}
}
if(val==0){
printf("El alumno no existe\n"); }
return val;
}
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 originaltypedef struct alumno{
char nomApe[50];
char dni[10];
int nota[5];
}alumno;
Revisa bien el programa y fijate si hace lo que vos queres
Saludos