Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Jorge LuissxX en 17 Mayo 2019, 23:33 pm



Título: Ayuda con el scanf n el for
Publicado por: Jorge LuissxX en 17 Mayo 2019, 23:33 pm
Tengo este codigo, pero no  se como
 hacer que scanf lea y almacene en una variable diferente los numeros que vayamos ingresando. Mi programa  esta hecho para calcular el promedio de n numeros.
Esperpo me puedan ayudar. Gracias.

#include<stdio.h>

int main()

{
int vm, i;   
   
   printf("Ingresa cuantos valores de la media aritmetica vas a ingresar: ");
   scanf("%d",&vm);
   
   for(i=0;i<vm;i++)
   {
      printf("\nIngresa el numero: ");
      scanf("%d",&/aqui me falta o no se*/ );
//no se como hacerle//
   }
   
   
    printf("\nEl promedio es: %f", *aqui me falta*/ /vm);

return 0;
   
}


Título: Re: Ayuda con el scanf n el for
Publicado por: UsuarioZ en 18 Mayo 2019, 01:27 am
Podes declarar una variable que almacene la suma de todas las clasificaciones.

Por ejemplo:

Lexico:
float sumClasificaciones=0, nota;


En el cuerpo de for:

printf("...");
scanf("%f", &nota);
sumClasificaciones += nota;

Tambien deberias agregar una variable que cuente las veces que se repite el cuerpo del for, no seria correcto usar la "i" en este caso por que siempre quedaria con 1+ de las veces que se repitio el cuerpo del for, a menos que le decrementes uno,una vez que termine el for.


Título: Re: Ayuda con el scanf n el for
Publicado por: K-YreX en 18 Mayo 2019, 02:07 am
Supongo que estás empezando por tu duda y que por tanto no usas memoria dinámica. Entonces puedes hacer lo siguiente:
Código
  1. #define MAX_SIZE 100 // creamos un array/vector de capacidad maxima = 100
  2.  
  3. int main(){
  4.    float notas[MAX_SIZE]; // creamos un array de 100 elementos
  5.    int num_notas; // cantidad de notas que vamos a introducir. Tiene que ser menor o igual que el MAX_SIZE
  6.    float promedio = 0; // promedio de las notas
  7.  
  8.    printf("Introduce el numero de notas que vas a almacenar: ");
  9.    scanf("%d", &num_notas);
  10.  
  11.    for(int i = 0; i < num_notas; ++i){
  12.        printf("Introduce la nota %d: ", i+1);
  13.        scanf("%f", &notas[i]);
  14.    }
  15.  
  16.    // si queremos calcular el promedio...
  17.    for(int i = 0; i < num_notas; ++i)
  18.        promedio += notas[i];
  19.    promedio /= num_notas;
  20. }
Así ya tienes todas tus notas guardadas en un array. Cuando lo vayas a recorrer recuerda recorrerlo hasta <num_notas>, no hasta <MAX_SIZE> ya que desde la posición notas[num_notas] hasta notas[MAX_SIZE-1] tendrás basura.

Si lo quieres solo para el promedio. Puedes hacerlo más simple.
Código
  1. int num_notas; // numero de notas que vamos a introducir
  2. float nota; // guarda la nota actual
  3. float promedio = 0; // acumula la suma de las notas y al final guarda el promedio
  4. // preguntas la cantidad de notas a introducir
  5. for(int i = 0; i < num_notas; ++i){
  6.    printf("Introduce la nota %d: ", i+1);
  7.    scanf("%f", &nota);
  8.    promedio += nota; // equivalente a promedio = promedio + nota
  9. }
  10. promedio /= num_notas; // equivalente a promedio = promedio / num_notas

Citar
Tambien deberias agregar una variable que cuente las veces que se repite el cuerpo del for, no seria correcto usar la "i" en este caso por que siempre quedaria con 1+ de las veces que se repitio el cuerpo del for, a menos que le decrementes uno,una vez que termine el for.
Ya lo tiene agregado eso. En su caso es <vm> (aunque un nombre como <num_notas> es más específico)...