Autor Tema: Colocar una funcion dentro de una matriz... se puede???  (Leído 5981 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado guineo_17

  • Sv Full Member
  • *
  • Mensajes: 866
  • svmodding.com.sv
    • Modding Overclock & Hardware
Colocar una funcion dentro de una matriz... se puede???
« : septiembre 17, 2008, 11:40:42 pm »
Bueno señores tengo una tarea de progra.... casi no me dedico a postear aqui preguntando por tareas... pero esta si ya me tiene algo a verga... por eso decidi venir por estos laredos, el ejercicio es el siguiente...
Citar
/*Realizar un programa que solicite desde la función main() las 4 calificaciones (tarea 1, discusión, preparcial y
parcial respectivamente) de la materia Filosofía I de cada uno de 8 alumnos diferentes
Debe crear una función diferente para que realice una de estas tareas:
+ Reciba las 4 notas de un alumno por medio de parámetros, para después calcule la nota promedio aplicando
estos porcentajes (16.6%, 31%, 12.4% y 40%). Por ultimo, devuelva la nota calculada con return ().
+ Reciba en un parámetro de entrada la nota promedio de un alumno, para que muestre en pantalla este
promedio y la confirmación si aprobó (si promedio es mayor que 6.5) o reprobó la materia Filosofía I.
+ Determine la Mediana y Promedio del listado de notas finales.
*/

Yo lo tengo planteado de esta manera por el momento....
Código: [Seleccionar]
#include <stdio.h>
#include <conio.h>
void promedio( float notas[notas1]);
main( ){
    float notas[8][4];
    int alumno=1,notas1=1;
        for (alumno=0;alumno<8;alumno++){
            printf("\n**************************************\n");
            for (notas1=0;notas1<4;notas1++){
                   printf("Digite la nota %d del alumno %d: ",notas1+1,alumno+1);
                   scanf("%d",&notas[alumno][notas1]);
                   promedio(notas[notas1]);
                   }
                   }
                   
}
void promedio(float notas[notas1]){
     for (notas1=0;notas1<4;notas1++){
    prom1=0;
    prom1=(notas[1]*16.6)/100.0;
    prom1+=(notas[2]*31.0)/100.0;
    prom1+=(notas[3]*12.4)/100.0;
    prom1+=(notas[4]*40.0)/100.0;
    printf("\nEl promedio del alumno %d es %d",alumno,prom1);
}
}

Algunos de las piedritas q no puedo hacer son:
*Como hacer que una funcion haga las operaciones dentro de un indice de la matriz(Solamente dentro del indice).
*Y como incluir una funcion dentro de una matriz...


Bueno espero la ayuda de antemano gracias yoc que aqui hay varios que saben... Compartan el conocimiento....  :thumbsup:
« Última Modificación: septiembre 18, 2008, 12:32:43 am por guineo_17 »

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Colocar una funcion dentro de una matriz... se puede???
« Respuesta #1 : septiembre 18, 2008, 12:02:38 am »
 :shockd: primero lo basico:

La nota promedio a mi parecer no seria asi:
Código: [Seleccionar]
void promedio(float notas[notas1]){
     for (notas1=0;notas1<4;notas1++){
    prom1=prom1*notas[notas1];
printf("\nEl promedio del alumno %d es %d",alumno,prom1);
}

Mas bien *algo* asi:
Código: [Seleccionar]
void promedio(float notas[notas1]){
prom1=0;
prom1=(notas[1]*16.6)/100.0;
prom1+=(notas[2]*31.0)/100.0;
prom1+=(notas[3]*12.4)/100.0;
prom1+=(notas[2]*40.0)/100.0;

printf("\nEl promedio del alumno %s es %d",alumno,prom1);
}

Por cierto, usas la variable "alumno" pero no estas pasando ese parametro a tu funcion. Ademas que en el printf me imagino que seria mejor usar "%s" para alumno que "%d".

Por cierto, el prototipo que declaraste no tiene nada que ver con la funcion que hiciste :S

void promedio( float valor1, float valor2) <-¿wtf?-> void promedio(float notas[notas1])
« Última Modificación: septiembre 18, 2008, 12:06:48 am por Vlad »

Desconectado guineo_17

  • Sv Full Member
  • *
  • Mensajes: 866
  • svmodding.com.sv
    • Modding Overclock & Hardware
Re: Colocar una funcion dentro de una matriz... se puede???
« Respuesta #2 : septiembre 18, 2008, 12:14:33 am »
si awebo gracias Vlad lo que pasa es q me estaba apoyando en otro ejercicio que habia hecho... por eso las variables estaban asi pero ya las arregle

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Colocar una funcion dentro de una matriz... se puede???
« Respuesta #3 : septiembre 18, 2008, 05:12:25 am »
Vaya de ahi tenes que arreglar el prototipo y la funcion:

Como tenes que devolver (return) algo, y ese algo es un decimal, entonces la funcion tiene que ser del tipo del que se devuelve.

float promedio( float notas[notas1]);

float promedio( float notas[notas1]){
...
}

Ahi en las instrucciones te dice que al final de la funcion promedio tenes que hacer return, no imprimir algo :S

float promedio( float notas[notas1]){
...
return prom1
}


PD: me quede dormido jeje

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Colocar una funcion dentro de una matriz... se puede???
« Respuesta #4 : septiembre 18, 2008, 05:26:53 am »
Umm pense que querias el nombre del alumno, pero ya vi que solo van por numero. Olvida lo de la cadena y lo de %s.

Otra mas, ahi estas sacando el promedio cada vez que mete una nota, y tiene que ser hasta que meta las 4.

        for (alumno=0;alumno<8;alumno++){
            printf("\n**************************************\n");
            for (notas1=0;notas1<4;notas1++){
                   printf("Digite la nota %d del alumno %d: ",notas1+1,alumno+1);
                   scanf("%d",&notas[alumno][notas1]);
                   promedio(notas[notas1]);
                   }
                   }


Seria:

        for (alumno=0;alumno<8;alumno++){
            printf("\n**************************************\n");
            for (notas1=0;notas1<4;notas1++){
                   printf("Digite la nota %d del alumno %d: ",notas1+1,alumno+1);
                   scanf("%d",&notas[alumno][notas1]);
                   }
             promedio(notas[notas1]);
                   }


Otra cosa, como el printf no va en la funcion promedio, entonces va a ir en la misma funcion que la llama, por eso retorna un valor. Ademas el usuario puede meter una nota con decimales, como "5.5" y eso no lo cubre %d si no que %f.

        for (alumno=0;alumno<8;alumno++){
            printf("\n**************************************\n");
            for (notas1=0;notas1<4;notas1++){
                   printf("Digite la nota %d del alumno %d: ",notas1+1,alumno+1);
                   scanf("%f",&notas[alumno][notas1]);
                   }
             printf("El promedio de %d es %f, alumno, promedio(notas[notas1]));
                   }

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Colocar una funcion dentro de una matriz... se puede???
« Respuesta #5 : septiembre 18, 2008, 05:35:04 am »
Finalmente a parte del arreglo del float por void en la funcion, tambien estas declarando
float promedio( float notas[notas1]);

Ahi dos cosas:
1. Ahi no existe notas1
2. Que paso con la segunda parte del array?.

Aparte de eso resulta que te piden otra cosa totalmente direfente. Tenes que pasar 4 parametros a la funcion, 1 por nota. Tendria que quedar algo similar a esto:

float promedio( float notas1, float notas2, float notas3, float notas4);

Y llamarla asi:
printf("El promedio de %d es %f", alumno, promedio(notas[alumno][0],notas[alumno][1],notas[alumno][2],notas[alumno][3]));

Y la funcion:

float promedio( float notas1, float notas2, float notas3, float notas4){
prom1=0;
prom1=(notas1*16.6)/100.0;
prom1+=(notas2*31.0)/100.0;
prom1+=(notas3*12.4)/100.0;
prom1+=(notas4*40.0)/100.0;

return prom1
}