Autor
|
Tema: Ayuda con declaracion de memoria dinamica en funcion (Leído 5,923 veces)
|
Roga
Desconectado
Mensajes: 23
|
Hola una duda como le doy memoria dinamica a un parametro en una funcion. el parametro es una matriz. mi duda es que valor colocar en la segunda llave de nota. void imprimir(int cedula_valida[],float nota[][],int total); int main(){ . . . . . printf("\n\nIngrese la cantidad de estudiantes de su clase:"); nota =(float **)malloc (total *sizeof(float *)); for(alumno=0;alumno<total;alumno++){ nota [alumno ]=(float *)malloc(alumno *sizeof(float));. . . . . }
gracias de antemano
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Fíjate que lo que estás haciendo en este código es una escalera. La nota alumno tendrá alumno entradas. Lo que lleva al siguiente problema: nota[0] tendrá 0 bytes (indefinido, lo debe resolver el compilador pero ¿y si no lo hace?). nota[1] tendrá 4 bytes nota[2] tendrá 8 bytes etc.
Supongo que te habrán dicho cuántas asignaturas tendrá cada alumno.
|
|
|
En línea
|
|
|
|
Roga
Desconectado
Mensajes: 23
|
este es el anunciado
/*Implementar un programa que lea las notas de todos los alumnos de una clase para una asignatura (Validar que las calificaciones estén comprendidas entre 1 y 20 puntos. Al estudiante que no presentó se le acepta la calificación de cero), calcule: a. Emitir un listado que muestre el número de cédula de cada estudiante con su respectiva calificación y su valoración cualitativa de “Aprobado” o “Reprobado” (trabajar el formato numérico para dos dígitos que aparezca el cero a la izquierda, cuando un estudiante posee nota de cero puntos, en su reemplazo debe aparecer las letras NP, que indican que no presentó). b. Calcular la media de la materia. c. Determine cuántos alumnos superan o igualan la media y cuántos están por debajo de la misma. d. Mostrar que estudiante tiene la nota máxima y cuál la nota mínima. e. Emitir el % de aprobados y el % de reprobados. */
1 asignatura pero n evaluaciones
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Pues en el segundo malloc, el que corresponde al número de evaluaciones, en vez de multiplicar por alumno lo debes hacer por n.
|
|
|
En línea
|
|
|
|
Roga
Desconectado
Mensajes: 23
|
gracias por esa acotacion y si era un error que no habia visto. pero aun tengo la duda de la funcion
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Si has creado los arrays en el main no debes hacerlos de nuevo dentro de una función. Pero si lo que quieres es pasar un puntero a la función y que ésta lo defina debes pasar un puntero a ese puntero. Tu duda y el código que has pasado dicen cosas diferentes.
|
|
|
En línea
|
|
|
|
Roga
Desconectado
Mensajes: 23
|
Emmmm pues cuando es una matriz y haces el prototipo y las variables que quieres pasar no tienes que declarar la memoria que tiene el segundo corchete o mejor dicho las columnas void imprimir(int cedula_valida[],float nota[][AQUI!!],int total);
??? tengo por entendido que si y si lo estoy declarando pero es memoria dinamica como hago para introducir la variable alli?.
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Usa la notación de punteros.
Para pasar arrays y tablas usa la notación de arrays y tablas. Para pasar punteros usa la notación de punteros.
|
|
|
En línea
|
|
|
|
Roga
Desconectado
Mensajes: 23
|
seria algo asi? void imprimir(int cedula_valida[],float **nota[][],int total);
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Más bien: void imprimir(int cedula_valida[],float **nota,size_t numalumnos,size_t numcalificaciones);
|
|
« Última modificación: 27 Junio 2017, 01:47 am por MAFUS »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda asignacion de memoria dinámica palabras en c
« 1 2 3 »
Programación C/C++
|
newfag
|
24
|
13,753
|
19 Mayo 2010, 20:42 pm
por Eternal Idol
|
|
|
Ayuda! Por favor. Tengo problema con memoria dinámica en c++ y función getline
Programación C/C++
|
DeathStar92
|
0
|
2,279
|
25 Noviembre 2012, 19:56 pm
por DeathStar92
|
|
|
Ayuda con memoria dinamica
Programación C/C++
|
d00ze13
|
3
|
2,265
|
24 Mayo 2014, 10:02 am
por eferion
|
|
|
como se traduce la declaración de una variable dentro de una función a asm i386?
Programación General
|
MRx86
|
4
|
2,452
|
7 Enero 2017, 20:06 pm
por xv0
|
|
|
Ayuda con memoria dinamica
Programación C/C++
|
mari2diaz
|
1
|
2,625
|
10 Febrero 2020, 11:18 am
por MAFUS
|
|