Problema con un vector

Iniciado por NekoOs, 20 Julio 2012, 06:28 AM

0 Miembros y 2 Visitantes están viendo este tema.

NekoOs

Este es mi archivo principal. En el por medio de un for le asigno un valor a cade elemento de un vector
Código (cpp) [Seleccionar]
int main () {
suma s;
int elemento;
for (int i=0; i<=9; i++) {
cout << "Digite el elemento [" << i << "]: ";
cin >> elemento;
s.setvector(i, elemento);
}
s.sumavector();
return 0;
}


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 (cpp) [Seleccionar]
void suma::sumavector ( ) {
for (int n=0; n<=9; n++) {
sumatoria+=vector[n];
}
cout << sumatoria;
}


Un vistazo a como me ejecuta:


Nota: Estoy completamente seguro que el problema inicia en vector[9] pero no se porque.

x64core

pon todo el codigo, creo que todos detestamos intentar adivinar

NekoOs

#2
Cita de: RHL en 20 Julio 2012, 06:59 AM
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 (cpp) [Seleccionar]
void suma::sumavector ( ) {
for (int n=0; n<=9; n++) {
sumatoria+=vector[n];
}
cout << sumatoria;
}

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 (cpp) [Seleccionar]
void suma::sumavector ( ) {
sumatoria=0;
for (int n=0; n<=9; n++) {
sumatoria+=vector[n];
cout << "cuando n es: " << n << " el vector es: " << vector[n] << " y la sumatoria va por: " << sumatoria << endl;
}
cout << sumatoria;
}




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:

rir3760

Cita de: Nefkofan en 20 Julio 2012, 13:40 PMRealmente 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.


Cita de: Nefkofan en 20 Julio 2012, 13:40 PMcreo 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 (cpp) [Seleccionar]
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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

do-while

¡Buenas!

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

¡Saludos!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!