Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: enol826 en 28 Noviembre 2014, 22:19 pm



Título: Variables "infinitas"
Publicado por: enol826 en 28 Noviembre 2014, 22:19 pm
Buenas,

Me estoy iniciando en C++, ya he hecho algún programa y me ha surgido una duda. Imaginemos que quiero hacer un programa para sumar números.

Si quiero sumar dos número, debo declarar dos variables, si quiero sumar tres, debo declarar tres, pero ¿a alguien se le ocurre la forma de hacer que el usuario pueda introducir tantos números como quiera? Por ejemplo, si quiere introducir 100 números, no tener que declarar 100 variables.

Gracias :)


Título: Re: Variables "infinitas"
Publicado por: engel lex en 28 Noviembre 2014, 22:35 pm
Existen los array (arreglos)

Quenes como tal una varible de multiples posiciones

Ej
Código
  1. int cantidad = 3;
  2. int arreglo[cantidad];
  3.  
  4. arreglo[0] = 10;
  5. arreglo[1] = 20;
  6. arreglo[2] = arreglo[0] + arreglo[1];
  7.  

Si tienes un arreglo declarado y quieres cambiar el tamaño, es mas complicado


Título: Re: Variables "infinitas"
Publicado por: Orubatosu en 28 Noviembre 2014, 23:05 pm
Depende de muchas cosas, pero en realidad para sumar muchos números, solo necesitas un par de variables. Una para cada entrada de número, y otra para acumular

Por ejemplo:

Código
  1. int main(){
  2.    int numero;
  3.    int acumulado=0;
  4.    while (cin >> numero){
  5.        acumulado += numero;
  6.    }
  7.    cout << acumulado;
  8. }
  9.  

Así en plan bruto (se puede hacer mucho mejor obviamente) puedes hincharte a meter números... decenas, cientos... la suma va a parar a una variable, y solo usas una para capturar el dato actual.

Si la pregunta es almacenar números, o cualquier otra cosa, como muy bien te han contestado existen varios métodos, el mas usado el array o "arreglo" como también se le llama.

Existen otros tipos, como los vectores, que son básicamente arreglos donde puedes meter datos y el tamaño del mismo va creciendo según las necesidades, y donde teóricamente solo estás limitado a las capacidades de tu máquina. Mientras haya memoria para almacenar números (o lo que sea) el programa "traga".

Generalmente es raro tener que declarar una cantidad enorme de variables. Si pensamos (por ejemplo) en que quieres sacar un calculo de un enorme fichero con cientos, o miles incluso de números (ya almacenado en un archivo) el procedimiento es el mismo... una variable va leyendo números, uno por vez y acumulas, y si los necesitas para alguna otra cosa (por lo que sea) entonces recurres a un arreglo (array), un vector o cualquier otro tipo de contenedor.

Luego hay diferentes maneras de acceder a esto. Puedes pensar en un arreglo como en una cajonera, donde tu dices "quiero un mueble con 10 cajones"... estupendo, tienes un mueble llamado (por ejemplo) "Mueble" (nombre de variable) y que puede contener 10 elementos (ya sean enteros, coma flotante o lo que elijas al crearlo), y luego accedes al mismo como has visto como "Mueble[0], Mueble[1]..."

A medida que vayas avanzando verás que existen incluso otros métodos (literalmente) para hacer eso, que puedes incluso agrupar diferentes tipos de variables en nuevos tipos de variables, que puedes agruparlos en arreglos de tamaño variable y muchas cosas mas, pero poco a poco.




Título: Re: Variables "infinitas"
Publicado por: enol826 en 29 Noviembre 2014, 15:12 pm
Muchas gracias por vuestra ayuda, ya lo he conseguido :)


Título: Re: Variables "infinitas"
Publicado por: Miky Gonzalez en 29 Noviembre 2014, 17:11 pm
Aunque el problema parece resolvido, podrías incluso hacerlo usando una única variable:

Código
  1. int numero = 0;
  2. while(cin +>> numero) if((cin +>>numero) == 0)break; else continue; // para finalizar poner un numero negatio suficientemente alto.