Dudas con array[solucionado]

Iniciado por Isótopo, 23 Julio 2010, 23:15 PM

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

Isótopo

Hola. Estoy empezando en C y al hacer este programa que busca un numero introducido por el usuario dentro de un array tengo algunos problemillas. No se por qué, los valores dentro de la matriz no se ajustan a la posicion en la que deberian estar.

(Pongo el codigo ya corregido)

#include <stdio.h>

int main (void)
{
int ind = 0;
char obj = 'n';
int posicion[2];
int numero = 0;
int array[10][2] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
array[0][0]=1;
array[1][0]=2;
array[2][0]=3;
array[3][0]=4;
array[4][0]=5;
array[5][0]=6;
array[6][0]=7;
array[7][0]=8;
array[8][0]=9;
array[9][0]=10;
array[0][1]=11;
array[1][1]=12;
array[2][1]=13;
array[3][1]=14;
array[4][1]=15;
array[5][1]=16;
array[6][1]=17;
array[7][1]=18;
array[8][1]=19;
array[9][1]=20;
     
   
   printf("Escriba un numero: ");
   scanf("%d", &numero);
   fflush(stdin);
   /*Buscamos ese numero en la primera columna*/
   for (ind = 0; ind <= 9; ind++)
   {
    if (numero == array[ind][0])
      {
      posicion[0] = ind;
      posicion[1] = 0;
      obj = 's';
      }
   }
   /*Lo buscamos en la segunda columna*/
   for (ind = 0; ind <= 9; ind++)
   {
    if (numero == array[ind][1])
       {
       posicion[0] = ind;
       posicion[1] = 1;
       obj = 's';
       }
    }
   if (obj == 'n')
   {
           printf("\nNo se ha encontrado el numero");
           getchar();
   }
   else
   {
           printf("\nEl numero %d, esta en la posicion (%d, %d)", numero, posicion[0], posicion[1]);
           getchar();
   }
}



-Asus Crosshair IV Formula            
-AMD Phenom II X6 1090T 3.94Ghz @1.38V
-Corsair H70
-Sapphire Radeon HD 6970 2GB Dual-Fan
-G.Skill PIS PC3-17066 4GB 1900MHz 7-9-7-20 @1.65V
-WD Caviar Black 500GB
-Seagate Barracuda Green 2TB x2
-Antec TruePower New 750W Modular
-Cooler Master Dominator CM-690

.:BlackCoder:.

Cuando haces:
Código (cpp) [Seleccionar]
int v[3];

Se reservan 3 espacios de memoria para enteros... estos son,

v[0],v[1] y v[2]

v[3] NO forma parte del vector, v[3] seria estaria "al lado" de v[2] pero contiene basura... Asi que empieza distribuyendo bien el vector... Porque array[0][1] ni array[9][0] no forman parte del vector, el vector llega hasta array[8][0]... Es decir eso no es una matriz en realidad... Es un vector ya que la segunda dimencion es de 1 elemento...


Para lo que quieres deberias hacer:
Código (cpp) [Seleccionar]
int array[10][2];

Saludos...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja