Anuncios Google

FUNCIONES Y PUNTEROS

BUEN DIA, MI DUDA CONSISTE EN LO SIGUIENTE:

ESTOY COMENZANDO A UTILIZAR FUNCIONES, UTILIZO UNA PARA OBTENER EL PROMEDIO DE NUMEROS INGRESADOS POR EL USUARIO LOS CUALES SE GUARDAN EN UNA MATRIZ.  LO QUE NECESITO ES QUE EL PROGRAMA IMPRIMA LA MATRIZ PERO DENTRO DEL INT MAIN, MI PROFESOR NOS DIO LA PISTA DE QUE NECESITAMOS APUNTADORES, EL PROBLEMA ES QUE NO SE COMO SE UTILIZAN. EL CODIGO QUE ESTOY HACIENDO ES EL SIGUIENTE:

 

#include <stdio.h>

float  promedio(){
      float total=0, suma=0;
      float cal[8];
     
      for(int i=0;i<8;i++){
      printf("dame la calificacion ");
      scanf("%f",&cal[i]);
     
      }
      for(int i=0;i<8;i++){
              suma=suma+cal[i];
            }
            total=suma/8;
           
           
           
      return promedio;
      }
      int main(){
          printf ("%f",promedio());
         
          printf("\n");
          printf("1) para reiniciar el ");
         
          getchar();
          getchar();
          return 0;
          }

 

MUCHAS GRACIAS!


Editado: El uso abusivo de las letras mayúsculas dificulta la lectura y en los foros equivale a gritar, además incumple las Normas de la Comunidad, antes de volver a postear por favor revíselas.| AORV



Elena!! Beso



Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de joserc87

Promedio

Lo suyo sería que la función promedio se encargase solo de calcular el promedio de un vector, no de leer los datos ni escribir nada. Se puede leer en el main o puedes hacer una función para leer los datos, y otra para escribirlos:

#include <stdio.h>
 
#define N 8
 
void leer (float cal[]){
  for(int i=0;i<N;i++){
    printf("dame la calificacion ");
    scanf("%f",&cal[i]);  
  }
}
 
float  promedio(float cal[], int numElementos){
  float total=0, suma=0;
 
  for(int i=0;i<numElementos;i++){
    suma=suma+cal[i];
  }
  total=suma/numElementos;
 
  return total;
}
 
float escribir (float cal [], int numElementos){
  printf ("Las calificaicones son: ");
  for (int i=0; i<numElementos; i++){
    printf ("%f ", cal [i]);
  }
  printf ("\n");
}
 
int main(){
  float cal [N];
  leer (cal);
  float p = promedio (cal, N);
  escribir (cal, N);
 
  printf ("El promedio es %f\n",p);
  printf("\n");
 
 
  getchar();
  getchar();
  return 0;
}

EDIT: Si quieres que el número de calificaciones pueda variar y no sea siempre 8, necesitas vectores dinámicos (creados con malloc):

#include <stdio.h>
#include <stdlib.h>
 
 
float * leer (int &numElm){
  printf ("Dime el número de elementos: ");
  float *cal;
  scanf ("%d", &numElm); 
  cal = (float*)malloc (numElm*sizeof(float));
  for(int i=0;i<numElm;i++){
    printf("dame la calificacion ");
    scanf("%f",&cal[i]);  
  }
  return (cal);
}
 
float  promedio(float *cal, int numElementos){
  float total=0, suma=0;
 
  for(int i=0;i<numElementos;i++){
    suma=suma+cal[i];
  }
  total=suma/numElementos;
 
  return total;
}
 
float escribir (float cal [], int numElementos){
  printf ("Las calificaicones son: ");
  for (int i=0; i<numElementos; i++){
    printf ("%f ", cal [i]);
  }
  printf ("\n");
}
 
int main(){
  float *cal;
  int numElm=0;
  cal = leer (numElm);
  float p = promedio (cal, numElm);
  escribir (cal, numElm);
 
  printf ("El promedio es %f\n",p);
  printf("\n");
 
  free (cal);
  getchar();
  getchar();
  return 0;
}

Cualquier cosa que no entiendas, no tengas reparos en pregúntar ;)


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.