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 ningn comentario todava


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

Artculos 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