Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - jengley

#1
Programación C/C++ / ejercicio x.x
15 Marzo 2016, 01:17 AM
PROYECTO II PARC IAL
MULTIPLICACION ARABE
Las operaciones aritméticas básicas han tenido a lo largo de las historia diversos procedimientos de resolución dependiendo de la cultura que los desarrolló y no por ello los hacen ser ni mejores ni peores, sino tan solo diferentes. Uno de las más populares, es el método de multiplicación árabe, su procedimiento consiste en lo siguiente:
1. Si queremos multiplicar por ejemplo: 274*382:
2. Dibujamos una matriz con tantas filas como cifras tenga el primer factor y tantas columnas como cifras tenga el segundo factor. En el ejemplo planteado será una matriz de 3 filas por 3 columnas.
3. Se divide cada celda en dos, mediante una diagonal y se ubica cada factor, el primero a la izquierda de la tabla y el segundo arriba, ubicando las cifras en el sentido de las agujas del reloj
4. Se rellena cada casilla con el producto de la intersección de los valores, colocando en las partes divididas cada una de las cifras del resultado
5. Se suman las cifras de cada diagonal, para establecer el resultado de la multiplicación. Debe iniciarse por la diagonal mas hacia la derecha y seguir hacia la izquierda, acarreando la cifra si la suma resulta mayor a diez(10).
6. Se repite este procedimiento hasta obtener el resultado final
Se requiere que Ud. desarrolle un programa que permita realizar multiplicaciones de 3 y 4 dígitos utilizando el método explicado. Debe realizar su programa utilizando como estructuras de almacenamiento arreglos unidimensionales y bidimensionales y debe estructurar su programa en funciones
#2
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

    }
#3
Programación C/C++ / Busqueda en matrices
3 Marzo 2016, 02:15 AM
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.