Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Isótopo en 23 Julio 2010, 23:15 pm



Título: Dudas con array[solucionado]
Publicado por: Isótopo en 23 Julio 2010, 23:15 pm
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)
Código:
#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();
    }
}



Título: Re: Dudas con array
Publicado por: .:BlackCoder:. en 23 Julio 2010, 23:37 pm
Cuando haces:
Código
  1. 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
  1. int array[10][2];

Saludos...