Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: NekoOs en 20 Julio 2012, 06:28 am



Título: Problema con un vector
Publicado por: NekoOs en 20 Julio 2012, 06:28 am
Este es mi archivo principal. En el por medio de un for le asigno un valor a cade elemento de un vector
Código
  1. int main () {
  2. suma s;
  3. int elemento;
  4. for (int i=0; i<=9; i++) {
  5. cout << "Digite el elemento [" << i << "]: ";
  6. cin >> elemento;
  7. s.setvector(i, elemento);
  8. }
  9. s.sumavector();
  10. return 0;
  11. }
  12.  

Esta es la implementacion de mi función. En este sumo todos los elementos todo funciona bien hasta que llega a el vector[9]:
Código
  1. void suma::sumavector ( ) {
  2. for (int n=0; n<=9; n++) {
  3. sumatoria+=vector[n];
  4. }
  5. cout << sumatoria;
  6. }

Un vistazo a como me ejecuta:

(http://photos3.pix.ie/D7/5C/D75C8ED2D568422C8E3E95732E50720A-0000351152-0002937296-00357L-20F7A0FABCB14A9CA98B06486ABE205A.png)
Nota: Estoy completamente seguro que el problema inicia en vector[9] pero no se porque.


Título: Re: Problema con un vector
Publicado por: x64core en 20 Julio 2012, 06:59 am
pon todo el codigo, creo que todos detestamos intentar adivinar


Título: Re: Problema con un vector
Publicado por: NekoOs en 20 Julio 2012, 13:40 pm
pon todo el codigo, creo que todos detestamos intentar adivinar

Realmente no creo que sea necesario, eso es lo bueno de POO que no se necesita conocer todo el código para saber como funciona si te das cuenta todo funciona de 10. La pregunta es que estoy haciendo mal en la función sumavector():
Código
  1. void suma::sumavector ( ) {
  2. for (int n=0; n<=9; n++) {
  3. sumatoria+=vector[n];
  4. }
  5. cout << sumatoria;
  6. }
es aquí el problema porque lo que hace es esto: "imaginemos que para cada elemento del vector digitamos el numero 1 la suma debe ser igual a 10". Sin embargo arroja 18  :-[
adiciono una linea para que me muestre cada vuelta del ciclo:
Código
  1. void suma::sumavector ( ) {
  2. sumatoria=0;
  3. for (int n=0; n<=9; n++) {
  4. sumatoria+=vector[n];
  5. cout << "cuando n es: " << n << " el vector es: " << vector[n] << " y la sumatoria va por: " << sumatoria << endl;
  6. }
  7. cout << sumatoria;
  8. }

(http://photos2.pix.ie/AE/74/AE74FCDA18FE44FAAA6EB6AC260E69F1-0000351152-0002937340-00484L-97ADB139B427486CA953B34DE4F2CFC2.png)

Ahora fíjense que cuando n=9 el vector=18 :[ osea vector[9]=18 pero no entiendo si esta claro que le he asignado 1.

Tengo una teoría quizás sea problema de dimensión en el vector no se si aquí aplique pero en el caso de los arreglos char el atributo debe contener un espacio extra donde se le asigna el valor final_de_linea, el problema es que el profesor nos indico realice un vector de dimensión 10 y sume sus elementos y planteo que la forma de declarar un vector es vector[n-1] donde n es la dimensión que deseo.
Una vez cambie la declaración vector[9] por vector[10] todo funciona ok. es mas creo que mi confusión era que el profesor me planteo que para definir un vector de dimensión 10 debía especificar vector[9] creo que esto es un error, aunque 9 si es la décima posición del vector la declaración del vector debe ser vector[10] ya que debe reservar la ultima posición a Final_de_linea O.o...
Si mi teoria es cierta simplemente declarare vector[10] y esto estaría solucionado, sin emabrgo lo dejare abierto esperando una respuesta mas profunda para fundamentar frente al profesor  :silbar:


Título: Re: Problema con un vector
Publicado por: rir3760 en 20 Julio 2012, 15:35 pm
Realmente no creo que sea necesario, eso es lo bueno de POO que no se necesita conocer todo el código para saber como funciona
No. El problema esta en otra parte y lo mencionas mas adelante.


creo que mi confusión era que el profesor me planteo que para definir un vector de dimensión 10 debía especificar vector[9] creo que esto es un error, aunque 9 si es la décima posición del vector la declaración del vector debe ser vector[10] ya que debe reservar la ultima posición a Final_de_linea O.o...
Solo la ultima parte esta errada: "debe reservar la ultima posición a Final_de_linea", eso solo aplica a las cadenas "a la C" con cualquier otro tipo de array no tienes que reservar un elemento extra.

Cuando declaras un array:
Código
  1. int a[10];
Indicas el numero de elementos "N" y accedes a estos mediante los indices 0 .. N-1, en este caso son 0 .. 9. Solo dile a tu profesor que revise cualquier libro sobre C++.

Un saludo


Título: Re: Problema con un vector
Publicado por: do-while en 22 Julio 2012, 00:13 am
¡Buenas!

¿Has probado a inicalizar la variable sumatoria a cero antes de entrar en el for?

¡Saludos!