ElTicus.com

Programación, lenguajes y recursos para programadores

Recurso no clasificado
Programa en C++ que multiplica 2 números de forma gráfica.
Mostrando paso a paso y digito a digito el proceso.
Publicado por JL Fecha: 2006-12-23 16:14:55 Idioma: Espa├▒ol Tipo de documento: C├│digo fuente

Programa en C++ que multiplica 2 n├║meros

Se trata de una de las ocurrencias de un maestro de programaci├│n (saludos profe Sergio Antonio).

Programa en C++ que reciba dos numeros menores a 100 (obviamente validados) y haga la multiplicaci├│n de los mismos tal como nos ense├▒aron en la primaria, es decir "digito por digito" mostrando los pasos intermedios y el resultado

Aqui les dejo mi implementación por si a alguien le interesa analizarla, creo que está bastante sencillo el código.
Les agradecer├ę sus comentarios

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


void Mensaje(char*L1, char*L2, char*L3)
{
 gotoxy(40,10); cout<<"├ë├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź┬╗";
 gotoxy(40,11); cout<<"┬║                                   ┬║";
 gotoxy(40,12); cout<<"┬║                                   ┬║";
 gotoxy(40,13); cout<<"┬║                                   ┬║";
 gotoxy(40,14); cout<<"├ł├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├Ź├ŹPresione una tecla├Ź┬╝";

 gotoxy(42,11); cout<<L1;
 gotoxy(42,12); cout<<L2;
 gotoxy(42,13); cout<<L3;
}


void BorraMensaje()
{
 gotoxy(40,10); cout<<"                                     ";
 gotoxy(40,11); cout<<"                                     ";
 gotoxy(40,12); cout<<"                                     ";
 gotoxy(40,13); cout<<"                                     ";
 gotoxy(40,14); cout<<"                                     ";
}


void Multiplica(int Uno,int Dos, int Por, int*RES, int X, int Y)
{

 int Poner;
 int Llevamos;
 char L1[50]="";
 char L2[50]="";
 char L3[50]="";

 if(Uno)
 {
  sprintf(L1,"%d x %d = %d",Por,Dos,Por*Dos);
  Poner=(Por*Dos)%10;
  Llevamos=(Por*Dos)/10;

  if(Llevamos)
  {
   sprintf(L2,"ponemos %d y llevamos %d",Poner,Llevamos);
  }
  else
  {
   sprintf(L2,"ponemos %d",Poner);
  }

  L3[0]=0;
  Mensaje(L1,L2,L3);

  RES[0]=Poner;
  gotoxy(X,Y); cout<<Poner;
  getch();

  sprintf(L1,"%d x %d = %d",Por,Uno,Por*Uno);

  Poner=Por*Uno;
  if(Llevamos){
   Poner=Poner+Llevamos;
   sprintf(L2,"m s %d que llevamos",Llevamos);
   sprintf(L3,"ponemos %d",Poner);
  }
  else
  {
   sprintf(L2,"ponemos %d",Poner);
   L3[0]=0;
  }

  Mensaje(L1,L2,L3);

  RES[1]=Poner%10;
  RES[2]=Poner/10;

  if(Poner/10) { gotoxy(X-4,Y); cout<<Poner/10; }
  gotoxy(X-2,Y); cout<<Poner%10;

  getch();
  BorraMensaje();
 }
 else
 {
  sprintf(L1,"%d x %d = %d",Por,Dos,Por*Dos);
  Poner=Por*Dos;
  sprintf(L2,"ponemos %d",Poner);
  L3[0]=0;

  Mensaje(L1,L2,L3);

  RES[0]=Poner%10;
  RES[1]=Poner/10;
  RES[2]=0;

  if(Poner/10) { gotoxy(X-2,Y); cout<<Poner/10;}
  gotoxy(X-0,Y); cout<<Poner%10;
  getch();
 }
}


int main () // Cabecera del programa principal
{
 int N1[2];
 int N2[2];
 int RES1[3]={0,0,0};
 int RES2[3]={0,0,0};
 int N;
 char L1[50]="";
 char L2[50]="";
 char L3[50]="";
 int Ponemos, Llevamos;

 clrscr();

 cout<<"PROGRAMA: 978371_2.CPP : Programa No. 2 \n";
 cout<<"PROPOSIT: Demostrar la multiplicaci┬ón entre 2 n┬úmeros entre 1 y 99\n";
 cout<<"AUTOR   : Juan Luis Campos Salcedo\n";
 cout<<"---------------------------------------\n\n";

 do{
  cout <<"Dame el primer n┬úmero:";
  cin >>N;
  if(N<1||N>99){
   cout <<"ERROR: El numero debe estar entre 1 y 99\n\n";
  }
 }while(N<1||N>99);
 N1[0]=N%10;
 N1[1]=N/10;

 do{
  cout <<"Dame el segundo n┬úmero:";
  cin >>N;
  if(N<1||N>99){
   cout <<"ERROR: El numero debe estar entre 1 y 99\n\n";
  }
 }while(N<1||N>99);

 gotoxy(1,8);
 clreol(); cout<<"\n";
 clreol(); cout<<"\n";
 clreol(); cout<<"\n";
 clreol(); cout<<"\n";
 clreol(); cout<<"\n";
 clreol(); cout<<"\n";
 clreol(); cout<<"\n";
 clreol(); cout<<"\n";
 clreol(); cout<<"\n";
 clreol(); cout<<"\n";
 clreol(); cout<<"\n";

 N2[0]=N%10;
 N2[1]=N/10;

 //Pintar el primer n┬úmero
 gotoxy(10,10);
 cout<<N1[0];
 gotoxy(8,10);
 if(N1[1]) cout<<N1[1];

 //Pintar el segundo n┬úmero
 gotoxy(10,11);
 cout<<N2[0];
 gotoxy(8,11);
 if(N2[1])  cout<<N2[1];

 gotoxy(12,11);
 cout<<"x";
 gotoxy(6,12);
 cout<<"-------";

 Multiplica(N1[1], N1[0], N2[0], RES1, 10,13);

 if(N2[1])
 {
  Multiplica(N1[1], N1[0], N2[1], RES2, 8,14);

  gotoxy(4,15);
  cout<<"-------";

  sprintf(L1,"Sumamos la primera columna");
  sprintf(L2,"%d m s cero = %d",RES1[0],RES1[0]);
  sprintf(L3,"");
  Mensaje(L1,L2,L3);

  gotoxy(10,16); cout<<RES1[0];
  getch();


  sprintf(L1,"Sumamos la siguiente columna");
  sprintf(L2,"%d m s %d = %d",RES1[1],RES2[0],RES1[1]+RES2[0]);
  Ponemos=(RES1[1]+RES2[0])%10 ,Llevamos=(RES1[1]+RES2[0])/10;
  if(Llevamos) sprintf(L3,"Ponemos %d y llevamos %d",Ponemos,Llevamos);
  else         sprintf(L3,"Ponemos %d",Ponemos);
  Mensaje(L1,L2,L3);

  gotoxy(8,16); cout<<Ponemos;
  getch();

  if(RES2[2] || RES1[2] || RES2[1])
  {

   sprintf(L1,"Sumamos la siguiente columna");

   if(Llevamos) sprintf(L2,"%d + %d y %d que llev bamos = %d",RES1[2],RES2[1],Llevamos,RES1[2]+RES2[1]+Llevamos);
   else         sprintf(L2,"%d + %d = %d",RES1[2],RES2[1],RES1[2]+RES2[1]);
   Ponemos=(RES1[2]+RES2[1]+Llevamos)%10 ,Llevamos=(RES1[2]+RES2[1]+Llevamos)/10;
   if(Llevamos) sprintf(L3,"Ponemos %d y llevamos %d",Ponemos,Llevamos);
   else         sprintf(L3,"Ponemos %d",Ponemos);
   Mensaje(L1,L2,L3);

   gotoxy(6,16); cout<<Ponemos;
   getch();

   if(RES2[2])
   {
    sprintf(L1,"Sumamos la ┬última columna");
    if(Llevamos) sprintf(L2,"cero + %d y %d que llev bamos = %d",RES2[2],Llevamos,RES2[2]+Llevamos);
    else         sprintf(L2,"cero + %d = %d",RES2[2],RES2[2]);
    Ponemos=(RES2[2]+Llevamos);
    sprintf(L3,"Ponemos %d",Ponemos);
    Mensaje(L1,L2,L3);

    gotoxy(4,16); cout<<Ponemos;
    getch();
   }
  }
 }

 cout<<"\n\n\nFin del proceso.\n";
 system("pause");
 return 0;
}




Nadie ha puesto ning˙n comentario todavÝa


Haz un comentario sobre este tema
Nombre email (no se muestra)
comentario:
Escribe las 2 letras que ves aquÝ: Imagen anti-spam =




No hay comentarios

ArtÝculos relacionados:
manual Curso Básico de HTML Recurso no clasificado Check de diseño Recurso no clasificado Estándares en Internet Recurso no clasificado Ataques de inyección de SQL Recurso no clasificado Como ponerle un contador de visitas a tu sitio en menos de 5 minutos.
Recurso no clasificado Como imprimir la fecha en espa├▒ol utilizando PHP aunque el idioma del servidor sea el ingl├ęs. Recurso no clasificado Diagramas de flujo Recurso no clasificado Para imprimir la fecha en espa├▒ol utilizando PHP independientemente del lenguaje del servidor (Utilizando ARRAYS) Recurso no clasificado Como generar n├║meros aleatorios o pseudoaleatorios Recurso no clasificado Clasificaci├│n de los lenguajes de programaci├│n
Recurso no clasificado HERENCIA. Pilar de la programci├│n Orientada a Objetos Manual Manejo de ARRAYS en PHP Manual Manejo de ARRAYS en PHP Recurso no clasificado Breve Historia de la Programaci├│n de Computadoras Recurso no clasificado Como convertir una fecha de Lenguaje Natural a tipo DATE