Busqueda en matrices

Iniciado por jengley, 3 Marzo 2016, 02:15 AM

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

jengley

Hola soy nueva en este mundo (comenzando) :c tengo que hacer una búsqueda en la matriz para encontrar un numero de 3 dígitos introducido por el usuario y hacer la búsqueda dígito por dígito. Este es el enunciado

. Función separar_digitos: debe recibir el valor a buscar y separarlo en dígitos
6. Función buscar izq_der: realizar la búsqueda del valor de izquierda a derecha en toda la
matriz
7. Función buscar der_izq: realizar la búsqueda del valor de derecha a izquierda en toda la
matriz
8. Función buscar arr_aba: realizar la búsqueda del valor de arriba a abajo en toda la matriz
9. Función buscar aba_arr: realizar la búsqueda del valor de abajo a arriba en toda la matriz
10. Desde el método main invocar todas las funciones de búsqueda y presentar en pantalla la
ubicación en donde se encontró cada valor


LO QUE LLEVO DE CODIGO ES ESTO:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>


/* run this program using the console pauser or add your own getch, system("pause") or input loop */

void cargar(int** matriz, int filas, int colum);
void mostrar(int** matriz, int filas, int colum);
void cargar_vec(int* vector, int tam);
int separar(int valor);




int main(int argc, char** argv) {
   
   
      int **matriz, filas, colum, i,j;
      int *vector, tam;
   
   printf("Ingrese numero de filas\n");
   scanf("%d", &filas);
   
   printf("Ingrese numero de columnas\n");
   scanf("%d", &colum);
   
   if(filas>=3 && colum>=3)
   {
   
   
      matriz=(int **)malloc(sizeof(int)*filas);
   
      for(i=0;i<filas;i++)
      {
      matriz=(int *)malloc(sizeof (int)*colum);   
      }
      
   cargar(matriz,filas,colum);
   mostrar(matriz,filas,colum);
   
   
   }
   
      else
   {
      printf("\nERROR\n\n");
      return 0;
   }
   
   getch();
   system("cls");
   
   printf("Ingrese tamano del vector\n");
   scanf("%d",&tam);
   
   vector = (int *)malloc(sizeof(int)*tam);
   
   cargar_vec(vector,tam);
   
   


 

   return 0;
}

//----------------------------------------------------------------------------------------------------------------------//
void cargar(int** matriz, int filas, int colum)
{
   int i,j;
   srand(time(NULL));
   
   for(i=0; i<filas; i++)
   {
      for(j=0;j<colum;j++)
      {
      fflush(stdin);   
      matriz[j]=rand()%9;
         
      }
   }
   
   
}

//---------------------------------------------------------------------------------------------------------------------------//

void mostrar(int** matriz, int filas, int colum)
{
   int i,j;
   
   for(i=0; i<filas; i++)
   {
      for(j=0;j<colum;j++)
      {
      
      printf("%d\t",matriz[j]);
         
      }
      printf("\n");
   }
   
   
}
//--------------------------------------------------------------------------------------------------------------------------------//

   void cargar_vec(int* vector, int tam)
   {
      int i, valor,  valor1,valor2,valor3;
      
      for(i=0; i<tam; i=i+3)
      {
         printf("Ingrese valor");
         scanf("%d", &valor);
         separar(valor);

         
         
         
         
      }   
      
   }
   
   //----------------------------------------------------------------------------------------------------------------------------------//
   

      int separar(int valor)
{
    int valor1,valor2,valor3;
   
    if (valor >= 0)
    {
       if (valor <= 999)
       {
          valor1 = valor / 100;
          valor2 = (valor % 100) / 10;
          valor3 = (valor % 100) % 10 / 1;

         if(valor>=100)
         {
            printf("%d   %d   %d  \n", valor1, valor2,valor3);


         }
         else
         {
         
            printf("ERROR\n");
            printf("Ingrese un numero de 3 digitos\n");
         }
       }
    }
   
   
}

//---------------------------------------------------------------------------------------------------------------------------------//


Seria de gran ayuda gracias.

abaadoon

#1
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define MAX_ARGS 90
#define MAX_CADENA 100
int extrae_argumentos(char *orig, char *delim, char args[][MAX_CADENA], int max_args)
{
 char *tmp;
 int num=0;
 /* Reservamos memoria para copiar la candena ... pero la memoria justa */
 char *str = malloc(strlen(orig)+1);
 strcpy(str, orig);

 /* Extraemos la primera palabra */
 tmp=strtok(str, delim);
 do
   {
     if (num==max_args)
   return max_args+1;  /* Si hemos extraído más cadenas que palabras devolvemos */
               /* El número de palabras máximo y salimos */

     strcpy(args[num], tmp);   /* Copiamos la palabra actual en el array */
     num++;

     /* Extraemos la siguiente palabra */
     tmp=strtok(NULL, delim);
   } while (tmp!=NULL);

 return num;
}


// Aquí copiamos extrae_argumentos o extrae_argumentos_d
char cadena[30];
int main()
{
 printf("dame la palabra a separar: \n");
 fgets(cadena,30,stdin);

 char args[MAX_ARGS][MAX_CADENA]; // Para extrae_argumentos
//  char *args2[MAX_ARGS];                  // Para extrae_argumentos_d

 int nargs = extrae_argumentos(cadena, " ", args, MAX_ARGS);
 int i;

 if (nargs>MAX_ARGS)
   {
     printf ("Se han devuelto más palabras del máximo\n");
     nargs=MAX_ARGS;
   }

 printf("CADENA: %s\n", cadena);
 for (i=0; i<nargs; i++)
   printf("Palabra %d: \"%s\"\n", i, args);

 return 0;
}