Codigo en dev c++ matriz y vector dinamicos

Iniciado por jengley, 7 Marzo 2016, 01:31 AM

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

jengley

Hola necesito que el valor de tres digitos que el usuario ingrese sea buscado digito por digito en la matriz. mi programa lo hace con errores :cccc



#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);
void izq_der(int** matriz, int filas, int columnas, int* valor1, int* valor2, int* valor3);
void der_izq(int** matriz, int filas, int columnas, int* valor1, int* valor2, int* valor3);
void arr_aba(int** matriz, int filas, int columnas, int* valor1, int* valor2, int* valor3);
void aba_arr(int** matriz, int filas, int columnas, int* valor1, int* valor2, int* valor3);



int main(int argc, char** argv) {
   
   
      int **matriz, filas, colum, i,j,k;
      int *vector, tam;
      int valor1, valor2, valor3, valor;
      
         
   printf("Ingrese numero de filas\n");
   scanf("%d", &filas);
   
   printf("Ingrese numero de columnas\n");
   scanf("%d", &colum);
   
   
   //matriz dinamica
   
   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");
   
   //vector dinamico
   
   printf("Ingrese tamano del vector\n");
   scanf("%d",&tam);
   
   vector = (int *)malloc(sizeof(int)*tam);

for(k=0; k<tam; k++)
{//for

printf("Ingrese valor:\n");
scanf("%d", &valor);

   if(valor>=0)
   {//1
   
   
    if(valor<=999)
       {//2

          valor1 = valor / 100;
          valor2 = (valor % 100) / 10;
          valor3 = (valor % 100) % 10 / 1;
         
            if(valor>=100)
            {//3
            
            printf("%d   %d   %d  \n\n", valor1, valor2, valor3);
   
             }//3       
                }//2
      
                  }//1
        else
         {
            printf("ERROR\n");
            printf("Ingrese un numero de 3 digitos\n");
            
         }   
           
         
         
      
      izq_der(matriz, filas, colum,&valor1, &valor2, &valor3);
      der_izq(matriz, filas, colum,&valor1, &valor2, &valor3);
      arr_aba(matriz, filas, colum,&valor1, &valor2, &valor3);
      aba_arr(matriz, filas, colum,&valor1, &valor2, &valor3);
      
}//for

   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 izq_der(int** matriz, int filas, int columnas, int* valor1, int* valor2, int* valor3)
{
   
   int i, j;
   
   
   for(i=0; i<filas; i++)
   {//f1
      for(j=0;j<columnas;j++)
      {//f2   
      
         
         if(matriz[j]==*valor1)
         {//1
            
               if(matriz[j+1]==*valor2)
         {//2
            
                  if(matriz[j+2]==*valor3)
         {//3
            
               
                  printf("La posicion del valor 1: %d,%d \n\n",i,j);
                  printf("La posicion del valor 2: %d,%d \n\n",i,j+1);
                  printf("La posicion del valor 3: %d,%d \n\n",i,j+2);
                  
               //   i=filas;   
               //   j=columnas;   
         }//3
            
         
         }//2            
                  
         
         }//1
               
      
   }//f2
      
   }//f1
   
   
    }
   
   
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------//


void der_izq(int** matriz, int filas, int columnas, int* valor1, int* valor2, int* valor3)
{
   int i, j;
      for(i=0; i<filas; i++)
   {
      for(j=0;j<columnas;j++)
      {
      
         if(matriz[j]==*valor1)
         {//1
            
               if(matriz[j-1]==*valor2)
         {//2
            
                  if(matriz[j-2]==*valor3)
         {//3
            
               
                  printf("La posicion del valor 1: %d,%d \n\n",i,j);
                  printf("La posicion del valor 2: %d,%d \n\n",i,j-1);
                  printf("La posicion del valor 3: %d,%d \n\n",i,j-2);
                  
                  i=filas;
                  j=columnas;
                  
                  
         }//3

         }//2            
                  
         
         }//1
         

      }//f2
      
   }//f1
      

    }
   
   
   
   
    //----------------------------------------------------------------------------------------------------------------------------//
   
   
void arr_aba(int** matriz, int filas, int columnas, int* valor1, int* valor2, int* valor3)
    {
       
   int i, j;
      for(i=0; i<filas; i++)
   {
      for(j=0;j<columnas;j++)
      {
      
         if(matriz[j]==*valor1)
         {//1
            
               if(matriz[i+1][j]==*valor2)
         {//2
            
                  if(matriz[i+2][j]==*valor3)
         {//3
            
               
                  printf("La posicion del valor 1: %d,%d \n\n",i,j);
                  printf("La posicion del valor 2: %d,%d \n\n",i+1,j);
                  printf("La posicion del valor 3: %d,%d \n\n",i+2,j);
                  
                  i=filas;
                  j=columnas;
                  
   
         }//3

            
         
         }//2            
                  
         
         }//1
         
            
      
               
      }
      
      }
    }
   
       
       
    //--------------------------------------------------------------------------------------------------------------------------//   
   
void aba_arr(int** matriz, int filas, int columnas, int* valor1, int* valor2, int* valor3)
       {
       
   int i, j;

      for(i=0; i<filas; i++)
   {//f1
      for(j=0;j<columnas;j++)
      {//f2
      
         if(matriz[j]==*valor1)
         {//1
               
               if(matriz[i-1][j]==*valor2)
         {//2
            
                  if(matriz[i-2][j]==*valor3)
         {//3
            
               
                  printf("La posicion del valor 1: %d,%d \n\n",i,j);
                  printf("La posicion del valor 2: %d,%d \n\n",i-1,j);
                  printf("La posicion del valor 3: %d,%d \n\n",i-2,j);
                  
                  i=filas;
                  j=columnas;
               
         
         }//3

            
         
         }//2      
      
                  
         
         }//1

         }//f2
      }//f1

    }