Tema: Ayuda arrays
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 31/07/2008, 18:10
yackcae
 
Fecha de Ingreso: junio-2008
Mensajes: 63
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: Ayuda arrays

Discúlpame por no haber revisado tu código con más atención, el error no solo está en el incorrecto uso de los arreglos, sino que también está en otros puntos:
Código:
cout << "Introduce 10 valores:"<< endl;

//arrays necesarios.
double valores [10];
double valores2[10][10];
double valores3[10];

cin >> valores [0];  // He corregido el uso de los arreglos en todo el código.
cin >> valores [1];
cin >> valores [2];
cin >> valores [3];
cin >> valores [4];
cin >> valores [5];
cin >> valores [6];
cin >> valores [7];
cin >> valores [8];
cin >> valores [9];

//variables para el bucle y la funcion .
int h;
int i=0;
int b = i+1;
int j = i-1;

//funcion que compara los dos primeros valores del primer array y los ordena de menor a mayor en el segundo de
//forma correlativa en las dos primeras posiciones.
if (valores [i] >= valores [b]) valores2 [i][b] = valores [i] , valores2 [i][i] = valores [b];
else valores2 [i][b] = valores [b] , valores2 [i][i] = valores [i];
i++;

//una vez ordenados los dos primeros valores, este bucle compara el resto de los valores en funcion del incremento
//y decremento de i,b,j guardando los valores ordenados en nuevas filas del array "valores2"
for (h = 0; h<10; h++)
{
// En este punto j tiene siempre el mismo valor en este bucle lo que es incorrecto
if (valores2 [j][i] >= valores [b]) valores2 [i][b] = valores2 [j][i] , valores2 [b][b] = valores [b];
else valores2 [i][b] = valores [b] , valores2 [b][b] = valores2 [j][i];
i++;
//return 0; // Esta instrucción termina el programa por lo que la he comentado (supongo que estabas haciendo pruebas y se te olvido quitarla)
}
// A partir de este punto no he hecho más cambios, porque los anteriores afectan demasiado al resto del código. El bucle no está ordenando nada.
Cita:
donde hay que empezar con 0 es en las cadenas de caracteres
Tal vez sea así en algún otro lenguaje de programación, pero en C/C++ todos los arreglos sin importar lo que contengan se operan de la misma forma, pueden ser arreglos de char, int, long, wchar_t, objetos, etc, siempre seguirán siendo arreglos.

Cita:
de todas formas en este otro programa que calcula la suma, la media y el valor mayor y menor, utilizo el array de la misma forma y funciona a la perfección
Lo que pasa es que cuando te pasas en un arreglo más allá de su limite, el compilador no lo reporta como error, el acceso se realiza igualmente, pero se está saliendo de su sector de memoria, casualmente en ese programa nada se ha visto afectado, pero hay ocasiones en que otras variables pueden verse afectadas, o incluso causar la terminación del programa por mal acceso a memoria.

Cita:
P.D: crei que estaba usando el metodo de la burbuja, quiza me haya equivocado xD
Revisando mejor tu código me he dado cuenta que ciertamente has intentado implementar el método de la burbuja, pero me temo que está mal, como veo que no has revisado el URL que te he dado ( Wikipedia ) te dejo aquí mismo el programa que ordena los elementos usando el correcto método de la burbuja:

Este código es el mismo de la Wikipedia pero adaptado a tu propio código:
Código:
cout << "Introduce 10 valores:"<< endl;

//arrays necesarios.
double valores [10];

cin >> valores [0];
cin >> valores [1];
cin >> valores [2];
cin >> valores [3];
cin >> valores [4];
cin >> valores [5];
cin >> valores [6];
cin >> valores [7];
cin >> valores [8];
cin >> valores [9];

int j, i;
double temp;
    for(i = 9; i >= 0; i--)
    {
      for(j = 1; j <= i; j++)
      {
        if(valores[j-1] > valores[j])
        {
          /* Intercambio de numeros*/
          temp = valores[j-1];
          valores[j-1] = valores[j];
          valores[j] = temp;
        }
      }
    }
cout <<"El orden de menor a mayor es:" <<endl;
cout <<valores[0];
cout <<", " <<valores[1];
cout <<", " <<valores[2];
cout <<", " <<valores[3];
cout <<", " <<valores[4];
cout <<", " <<valores[5];
cout <<", " <<valores[6];
cout <<", " <<valores[7];
cout <<", " <<valores[8];
cout <<", " <<valores[9];
cout <<"."<<endl;