Autor
|
Tema: [C++]Numero ilimitado de argumentos en funciones. (Leído 2,549 veces)
|
huchoko
|
Buenas, tengo este código: #include <iostream> using namespace std; int sum(int num1, int num2); int sum(int num1, int num2) { return num1 + num2; } int main() { int i = sum(5, 4, 6, 7, 8); // <= como le haria para eso? cout << i << endl; }
Pero me gustaría poder pasarle multiples números (argumentos) a la función sum(). Como podría hacer esto? Saludos
|
|
|
En línea
|
|
|
|
Beginner Web
Desconectado
Mensajes: 634
youtu.be/0YhflLRE-DA
|
Me mataste no se, seguro has programado en otro lenguaje y podias hacerlo y quisiera saber como lo hacias #include <iostream> using namespace std; int sum(int num1, int num2, int num3, int num4, int num5) { return num1+num2+num3+num4+num5; } int main() { cout<<"Suma: "<<sum(5, 4, 6, 7, 8)<<endl; }
|
|
|
En línea
|
7w7
|
|
|
huchoko
|
Gracias, pero no es así, me refiero a que el numero de argumentos puede ser infinito. Te dare un ejemplo en Python: def add(*args): #Sumar (add) total = 0 for value in args: total = total + value print(total) print(add(5,3,5,29)) # salida 42 print(add(73,32,32,2)) # salida 139
|
|
|
En línea
|
|
|
|
Beginner Web
Desconectado
Mensajes: 634
youtu.be/0YhflLRE-DA
|
Ahora recuerdo que usaba eso con los switchs de esta forma: switch(opcion){ case 1 ... 100: sumar(1,2,3,4,5);break; default: cout<<"Opcion incorrecta"<<endl; }
Entonces lo que pides es algo asi ##include <iostream> #include <stdarg.h> using namespace std; void sum(int n, ...) { int i, suma=0; int val; va_list vl; va_start(vl,n); for(i=0;i<n;i++){ val=va_arg(vl,int); suma+=val; } va_end(vl); cout<<"Suma: "<<suma<<endl; } int main() { sum(4, 4, 6, 7, 8);//El primer argumento indica cuantos argumentos se sumaran a partir del segundo }
|
|
« Última modificación: 21 Octubre 2018, 02:20 am por Beginner Web »
|
En línea
|
7w7
|
|
|
huchoko
|
Gracias, funciona pero si cambio los numeros que se le pasan a sum(), se queda pegado mostrando 30, sin importar que numero le pongas. ... y depurando esto es lo que le pasa a la variable suma que esta en el for: 5 10 15 20 25 30. No tiene sentido sinceramente que eso pase?
|
|
|
En línea
|
|
|
|
Dresden
Desconectado
Mensajes: 5
First solve the problem, then write the code.
|
En este caso, el primer número indica la cantidad de elementos de la lista. Compila con el estándar C++ 98 en adelante: #include <iostream> #include <cstdarg> int sumar(int, ...); int main() { std::cout << sumar(5, 5, 4, 6, 7, 8) << '\n'; return 0; } int sumar(int nNumeros, ...) { va_list numeros; va_start(numeros, nNumeros); int suma = 0; for (int i = 0; i < nNumeros; ++i) { suma += va_arg(numeros, int); } va_end(numeros); return suma; }
Estos compilan con el estándar C++ 11 o superior: #include <iostream> #include <vector> int sumar(const std::vector<int> &); int main() { int suma = sumar({ 5, 4, 6, 7, 8 }); std::cout << suma << '\n'; return 0; } int sumar(const std::vector<int> &numeros) { int suma = 0; for (const int &num : numeros) { suma += num; } return suma; }
#include <iostream> template <typename T> T sumar(T inicio) { return inicio; } template <typename T, typename... Nums> T sumar(T inicio, Nums... nums) { return inicio + sumar(nums...); } int main() { const int suma = sumar(5, 4, 6, 7, 8); std::cout << suma << '\n'; return 0; }
|
|
|
En línea
|
PROGRAMMERnoun. [pro-gram-mer]
Someone who solves a problem you didn't know you had, in a way that you don't understand.
See also wizard, magician.
|
|
|
huchoko
|
Muchas gracias, va a la perfección. Saludos
|
|
|
En línea
|
|
|
|
CalgaryCorpus
|
Para complementar la respuesta dada previamente, si tienes un vector de enteros v, una manera de sumarlos es esta: suma = accumulate(v.begin(), v.end(), 0)
Tienes que agregar #include <numeric>
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Funciones con número arbitrario de argumentos [PHP]
PHP
|
madpitbull_99
|
3
|
5,085
|
6 Marzo 2011, 22:31 pm
por JungleBoogie
|
|
|
ver argumentos de funciones codeblocks
Programación C/C++
|
_niu
|
2
|
2,920
|
15 Diciembre 2011, 21:57 pm
por _niu
|
|
|
Problema con argumentos por defectos en funciones.
Programación C/C++
|
anonimo12121
|
3
|
2,539
|
25 Julio 2012, 14:18 pm
por overxfl0w13
|
|
|
Funciones con nº variable de argumentos - stdarg.h
Programación C/C++
|
SSantiago90
|
5
|
3,524
|
6 Mayo 2013, 22:05 pm
por 85
|
|
|
Funciones con argumentos OR: ¿Como?
Programación C/C++
|
Desiresportal
|
1
|
1,614
|
1 Junio 2016, 14:34 pm
por class_OpenGL
|
|