C/Visual C - Problemas con los parámetros de una funcion en c

 
Vista:
sin imagen de perfil
Val: 21
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problemas con los parámetros de una funcion en c

Publicado por mefesto (8 intervenciones) el 07/04/2020 05:19:03
Tengo el siguiente código :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdarg.h>
void parametros(int n, ...);
 
void main(void)
{
	parametros(3, 1, 5, 4);
}
 
void parametros(int n, ...)
{
	va_list puntero;
	va_start(puntero, n);
	float max, min, actual, suma, media;
	suma = max = min = va_arg(puntero, float);
	printf("%f\n", suma);
 
	for (int i = 1; i <= n; i++)
	{
		actual = va_arg(puntero, float);
		printf("%f\n", actual);
		suma += actual;
 
		if (max < actual)
			max = actual;
		else if (min > actual)
			min = actual;
 
	}
 
	media = suma / n;
	printf("Maximo = %f\n", max);
	printf("Minimo = %f\n", min);
	printf("Suma = %f\n", suma);
	printf("Media = %f\n", media);
 
	va_end(puntero);
}

tengo a "parametros()" como una función con un numero indefinido de parámetros, el problema es que al momento de ejecutar el programa los valores de max, min y suma no están recibiendo los valores enviados desde la función main. Que esta pasando?, que estoy haciendo mal?.
Agradezco su ayuda y muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 28
Ha aumentado su posición en 2 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problemas con los parámetros de una funcion en c

Publicado por Andrés (9 intervenciones) el 07/04/2020 15:43:04
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
#include <stdarg.h>
 
void parametros(int, ...);
 
void main(void) {
  parametros(3, 1, 5, 4);
}
 
void parametros(int n, ...) {
 
  va_list valist;
  va_start(valist, n);
 
  int suma = 0;
  int max, min, actual;
 
  max = min = actual = va_arg(valist, int);
 
  double media = 0;
 
  for (int i = 1; i < n; i++) {
 
    actual = va_arg(valist, int);
    suma += actual;
 
    if (max < actual)
      max = actual;
 
    if (min > actual)
      min = actual;
 
  }
 
  media = suma / n;
  printf("Máximo = %d\n", max);
  printf("Mínimo = %d\n", min);
  printf("Suma = %d\n", suma);
  printf("Media = %.2f\n", media);
 
  va_end(valist);
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problemas con los parámetros de una funcion en c

Publicado por mefesto (8 intervenciones) el 07/04/2020 20:34:05
Muchas Gracias, pero aun no entiendo cual era el error?
porque yo veo tu código y el mio y son básicamente iguales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problemas con los parámetros de una funcion en c

Publicado por Rodrigo (119 intervenciones) el 08/04/2020 06:08:08
Creo que la respuesta esta en el tipo que pasas como parametro

1
actual = va_arg(valist, int); // <-- int
vs

1
actual = va_arg(puntero, float); // <-- float 

En el main envias enteros, deberias especificar int cada vez que obtienes un nuevo parametro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar