• Viernes 8 de Noviembre de 2024, 21:40

Autor Tema:  problema con matriz.  (Leído 1051 veces)

pollomariov

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
problema con matriz.
« en: Lunes 8 de Junio de 2009, 17:51 »
0
Hola , que tal tengo un programa que estoy pasando a C, con matrices lo tengo listo pero al momento de ejecutarlo
se me cae el programa, aqui esta el código estoy usando Borland C++ 5.5 gracias.

#include <stdio.h>
main(){
    int notas[5][6],i,j,NotaMayor=0;
    char alumnos[5];
    //proceso leer
    for(i=1;i<=5;i++){
       printf("Ingrese el nombre del :");
       printf("%d",i);
       printf(" alumno :");
       scanf("%s",&alumnos);
    //ingreso de notas
        for(j=1;j<=5;j++){
          printf("n");
          printf("ingrese el promedio del ramo: ",j);
          scanf("%d",&notas[j]);
           notas[6]=notas[6]+notas[j];  
        }
            notas[6]=notas[6]/5;        
    }
    //proceso para buscar el alumno con mayor nota
        NotaMayor<-notas[1][6];
        for(i=1;i<=5;i++){
            if (notas[i+1][6]>NotaMayor){
               NotaMayor=notas[i+1][6];
               // j=i+1;
            }
        }
    //escribir el mayor promedio
       printf("El Alumno con mayor promedio es :");
       printf("%s",alumnos[j]);
       printf(" con un promedio de : ");
       printf("%d",notas[j][6]);
    //proceso para escribir todos los registros y sus promedios.
        for(i=1;i<=5;i++){
            printf("%s",alumnos);
            printf(" promedio :");
            printf("%d",notas[6]);
        }            
}

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: problema con matriz.
« Respuesta #1 en: Lunes 8 de Junio de 2009, 18:31 »
0
Cita de: "pollomariov"
char alumnos[5];
//proceso leer
for(i=1;i<=5;i++){

aqui tienes el fallo.
Cuando defines un array de 5 elementos, estas definiendo un array de elementos de 0 a N-1 o sea, que tienes el elemento 0, el 1, el 2, el 3 Y el 4, pero NO el 5.
el for deberia ser:
Código: C++
  1.  
  2. for(i=0;i<5;i++)
  3.  
  4.  

En los demas arrays, el mismo problema , el elemento N no existe! un array de N elementos va del 0 a N-1!

ah, y usa las etiquetas de codigo.

pollomariov

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: problema con matriz.
« Respuesta #2 en: Lunes 8 de Junio de 2009, 19:19 »
0
Como tan eficiente!!, bueno el tema del indice de la matriz lo hice a proposito en otros lenguajes como en Pascal puedes definir el inicio del subindice en donde quieras, solo con que lo tengas claro al momento de ejecutar tus rutinas, ¿necesariamente hay que iniciar en 0 en C hay alguna explicacion para ello?. bueno hice las modificaciones al programa y le puse los subindices en 0,pero al ejecutarlo me da
El Alumno con mayor promedio es :
por lo que intuyo que mi primer error esta en la siguiente linea
Código: C++
  1. printf("%s", alumnos[j]);
  2.  
me fije que habia dejamo como comentario la liea anteriror j=i+1; donde guardo la ubiccacion del alumno que obtuvo mejor promedio. pero lo arregle e igual obtuve una caida de programa.

pd: Gracias por tan pronta respuesta me han sorprendido.Felicitaciones!!

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: problema con matriz.
« Respuesta #3 en: Lunes 8 de Junio de 2009, 19:29 »
0
Cita de: "pollomariov"
¿necesariamente hay que iniciar en 0 en C hay alguna explicacion para ello?.
Sí, es así. Será mejor que te acostumbres  :P

Código: C
  1. printf("%s", alumnos[j]);
  2.  
Efectivamente. alumnos[j] es un carácter, no una cadena de caracteres, ya que lo has declarado como char alumnos[5]. Si lo que quieres es un vector de cadenas, debes declararlo como char* alumnos[5].