Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: jengley en 7 Marzo 2016, 01:31 AM

Título: Codigo en dev c++ matriz y vector dinamicos
Publicado por: jengley en 7 Marzo 2016, 01:31 AM
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

    }