Título: no entiendo los errores que me marca... Publicado por: fer_fer_73 en 23 Febrero 2011, 23:17 pm hola, buenos dias, no entiendo por que me marca errores en el renglon donde declaro: datos a[N], y notas b[N];y en los ultimos FOR.. puede ser que haya algun problema con el #define N 100?? desde ya, muchas gracias a los que me ayuden!
/*crear una aplicacion en c que lea nombre cedula edad y 3 notas de n estudiantes el programa debe decir si el usuario aprobo o no el curso sacando el promedio de sus 3 notas luego debe permitirle al usuario buscar por numero de cedula y mostras las notas promedio y permitir editar cualquiera de las notas ingresadas */ #include <stdio.h> #define N 100; main() { struct datos { char nombre[12]; int edad; long cedula; }; struct notas { float nota1; float nota2; float nota3; float prom; }; datos a[N]; notas b[N]; long l; int j,h,o,y,w,p; char m='s'; while (m='s') { for(j=0;j<N;j++) { printf("ingrese nombre del alumno: "); scanf("%s\n", &a[j].nombre); printf("ingrese edad del alumno: "); scanf("%s\n", &a[j].edad); printf("ingrese numero de cedula: "); scanf("%s\n", &a[j].cedula); printf("ingrese nota 1: "); scanf("%f\n", &b[j].nota1); printf("ingrese nota 2: "); scanf("%f\n", &b[j].nota2); printf("ingrese nota 3: "); scanf("%f\n", &b[j].nota3); b[j].promedio= (b[j].nota1 + b[j].nota2 + b[j].nota3)/3) ; } for (j=0;j<N;j++) { if (b[j].promedio>=7) { printf("el alumno %s aprobo con un promedio de %.2f\n", a[j].nombre, b[j].promedio); } else { printf("el alumno %s desaprobo con un promedio de %.2f\n", a[j].nombre, b[j].promedio); } } printf("desea buscar alumno por numero de cedula?, si=1, no=2: "); scanf("%d", &h); if (h==1) { printf ( "ingrese numero de cedula:"); scanf("%ld", &l); for (j=0;j<N;j++) { if (l==a[j].cedula) { printf("alumno: %s\n", a[j].nombre); printf ("notas: %.2f %.2f %.2f\n", b[j].nota1, b[j].nota2, b[j].nota3); printf ("promedio: %.2f\n", b[j].promedio); } } printf ("desea modificar alguna nota de este alumno? 1-si, 2-no"); scanf("%d", &o); if (o==1) { printf("que nota desea modificar? para nota 1: presione 1, para nota 2 presione 2, para nota 3 presione 3"); printf ("para modificar todas, predione 4"); scanf("%d", &y); switch (y) { case 1: { printf ("ingrese la nota 1: "); scanf ("%f", b[j].nota1); b[j].promedio= (b[j].nota1 + b[j].nota2 + b[j].nota3)/3 ; break; }; case 2: { printf ("ingrese la nota 2: "); scanf ("%f", b[j].nota2); b[j].promedio= (b[j].nota1 + b[j].nota2 + b[j].nota3)/3 ; break; }; case 3: { printf ("ingrese la nota 3: "); scanf ("%f", b[j].nota3); b[j].promedio= (b[j].nota1 + b[j].nota2 + b[j].nota3)/3 ; break; }; case 4: { printf ("ingrese la nota 1: "); scanf ("%f\n", b[j].nota1); printf ("ingrese la nota 2: "); scanf ("%f\n", b[j].nota2); printf ("ingrese la nota 3: "); scanf ("%f\n", b[j].nota3); b[j].promedio= (b[j].nota1 + b[j].nota2 + b[j].nota3)/3 ; break; }; } } } } printf("desea ver la lista de todos los alumnos y sus notas? si-1, no-2"); scanf("%d", &w); if (w==1) { for (p=0;p<N;p++) { printf ("%s\t", a[p].nombre); printf ("notas: %f %f %f\t", b[p].nota1, b[p]nota2, b[p]nota3); printf ("promedio: %.2f\n", b[p].promedio); } } printf ("desea iniciar el programa del principio? s-si, n-no"); scanf("%c", &m); } Título: Re: no entiendo los errores que me marca... Publicado por: xassiz~ en 23 Febrero 2011, 23:23 pm Deberías hacer:
Código
O en todo caso usar typedef. Saludos! Título: Re: no entiendo los errores que me marca... Publicado por: Oblivi0n en 24 Febrero 2011, 00:30 am mriandolo por encima tb veo esto
Código
deberia de ser Código
= es de asignacion y == de comparacion Título: Re: no entiendo los errores que me marca... Publicado por: ShadowStorm en 24 Febrero 2011, 08:52 am A simple vista puedo decirte lo siguiente:
- En vez de #define N 100, mejor usa; Código
Después de todo no se moverá. - Cambia la variable float prom por float promedio, ya que lo usas bastante en el programa. - Reemplaza el while (m='s') por while (m=='s'), recuerda lo de asignación y comparación. - En el código: Código
Tienes un error al final, al usar el carácter ")", borralo. - En el codigo: Código Olvidaste colocar los puntos. - No sé porque haces lo siguiente, fuera del bucle: Código No tiene sentido, lo ideal sería que este dentro del bucle (while). - Usa int main() con return 0 al final del código; Código
Es mejor para usarlo en cualquier otro IDE. Título: Re: no entiendo los errores que me marca... Publicado por: fer_fer_73 en 24 Febrero 2011, 19:04 pm Muchas gracias, ahi el programita se compila sin errores, pero hace algunas cosas que no entiendo por que, y revise revise y no encuentro la solucion, no se que pongo mal..
1. cuando me pide el primer nombre del alumno necesito poner dos palabras o dos caracteres separados para que pase a pedir la edad.(en los nombres posteriores no). 2. el promedio me saca cualquier cosa.. 3. cuando imprime los nombres de los alumnos con sus promedios, el segundo y tercer nombre me sale un numero, en vez del nombre.. 4. hace la pregunta de si desea buscar un alumno por Nº de cedula y al lado sale el cartel de desea modificar alguna nota... adjunto la imagen asi se dan cuenta.. Código: #include <stdio.h> (http://) muchas gracias... Título: Re: no entiendo los errores que me marca... Publicado por: xassiz~ en 26 Febrero 2011, 01:59 am Creo que ya llegaste a los problemas de scanf y el buffer de entrada :xD
Título: Re: no entiendo los errores que me marca... Publicado por: fer_fer_73 en 26 Febrero 2011, 02:06 am y cual seria la solucion? no entiendo que me queres decir...
Título: Re: no entiendo los errores que me marca... Publicado por: .:BlackCoder:. en 28 Febrero 2011, 04:06 am leete el post que se llama "lo que no se debe hacer en C/C++" algo asi, esta fijo aca en esta sección, es decir esta entre los primeros, ahi te dicen como leer las cadenas de caracteres y te hablan del buffer...
|