Problema con arreglo de enteros

Iniciado por Calensito, 6 Octubre 2010, 11:46 AM

0 Miembros y 1 Visitante están viendo este tema.

Calensito

Hola gente :)
Tengo un problema con este código.

Código (cpp) [Seleccionar]

#include <iostream>

using namespace std;

int main()
{
   int cadena[10];
   int i , j;

   cout << "'Inserte los 10 numeros a ordenar::";
   cout << endl;
   cout << "::";
   cin >> cadena[10];

   cout << "Numeros antes de ordenar::";
   cout << endl;
   cout << endl;

   for (j = 0 ; j < 10 ; j++)
   {
       cout << "Cadena [" << j << "] :: " << cadena[j];
       cout<<endl;
   }

   return 0;
}


Lo que tenia en mente era que al poner los 10 números deseados(en cualquier orden) por ejemplo: 9876543210, salga en la pantalla:


Cadena [O] :: 9
Cadena [1] :: 8
Cadena [2] :: 7
Cadena [3] :: 6
Cadena [4] :: 5
Cadena [5] :: 4
Cadena [6] :: 3
Cadena [7] :: 2
Cadena [8] :: 1
Cadena [9] :: 0

No me sale!!! ajajajjajaja  :xD :xD
Solo me sale esto:

Cadena [O] :: 0
Cadena [1] :: 4273120
Cadena [2] :: 2293508
Cadena [3] :: 2293560
Cadena [4] :: 2293728
Cadena [5] :: 2009095316
Cadena [6] :: 2008950864
Cadena [7] :: -1
Cadena [8] :: 2009091625
Cadena [9] :: 2009091650

Ya me fije varias veces pero no pasa mierd*.
No se que hago mal.

Littlehorse

Tu problema parte de varios errores conceptuales, te recomendaría que le des un repaso al material que tengas sobre vectores u al capitulo del libro que estés leyendo -si es que estas leyendo uno-

El primer error:

Código (cpp) [Seleccionar]
cin >> cadena[10];

Estas leyendo un solo valor que se guardara en la posicion que utilizas en el indice, no estas leyendo 10 numeros. Si lo que queres es leer 10 numeros, necesitas realizar un ciclo al igual que lo haces cuando imprimis los valores del vector.

El segundo error:

Código (cpp) [Seleccionar]
cin >> cadena[10];

En un vector de 10 posiciones, el rango valido es 0-9. La posición cadena[10] en este caso es invalida, la posición máxima accesible es cadena[9].

Los valores aleatorios se deben a que el arreglo no esta inicializado, por lo tanto al no leer ningún dato valido en las posiciones de este, lo que ves es el contenido basura del arreglo.

Y por cierto, solo como detalle, una cadena es un arreglo de caracteres, no de enteros.

Saludos!

PD: Utiliza titulos descriptivos para los posts :)
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Akai

Tu problema está en que tu sólo introduces una vez un número y lo envías a la última posición de la cadena, que por cierto debería darte una violación de segmento al intentar acceder a la posición 11 de un vector de 10 elementos (recuerda que en C/C++ los vectores van de 0 a n-1).

Código (cpp) [Seleccionar]
cin >> cadena[10];

Necesitas iterar la entrada de datos de una forma similar a la que lo haces con la salida.

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.

Bueno, ya lo dijo todo littlehorse

Calensito

Gracias por responder  :D.

Me rrreee havia olvidado de esoo jajajajajaj.

CitarEstas leyendo un solo valor que se guardara en la posicion que utilizas en el indice, no estas leyendo 10 numeros. Si lo que queres es leer 10 numeros, necesitas realizar un ciclo al igual que lo haces cuando imprimis los valores del vector.
CitarTu problema está en que tu sólo introduces una vez un número y lo envías a la última posición de la cadena, que por cierto debería darte una violación de segmento al intentar acceder a la posición 11 de un vector de 10 elementos (recuerda que en C/C++ los vectores van de 0 a n-1).
Voy a seguir practicando , pero igual gracias por la ayuda.