Multiplication tables in horizontal c ++

1

I need help with this problem:

Design the following class to show several tables at a time horizontally

class TablasMultiplicar{

  int TablaIni, TablaFin;

  public:
    void PedirNoTablas(); 
    /*
      Método para solicitar por teclado el número de la tabla de
      multiplicar inicial y final a ser mostradas. Si el valor introducido 
      en ambos atributos 
    */

    void MostrarTablas(); 
      /*
        es menor que uno o mayor que 10, el método volverá a
        solicitar ambos números de tabla.
        En el caso que el valor de TablaIni sea menor que TablaFin, el 
        método deberá intercambiarlos
      */
};

This is how it needs to be:

This comes to me if I make the table from 1 to 2:

And this is what I get if I put the table from 1 to 3 for example: For now it only makes two tables horizontally, if it has to do more than two it gets messed up. I have done this:

#include <iostream>

using namespace std;


class TablasMultiplicar{

int TablaIni, TablaFin;

public:

void PedirNoTablas();  /*Método para solicitar por teclado el número de la tabla de
                       multiplicar inicial y final a ser mostradas. Si el valor introducido en ambos atributos */

void MostrarTablas();  /*es menor que uno o mayor que 10, el método volverá a
                        solicitar ambos números de tabla.
                        En el caso que el valor de TablaIni sea menor que TablaFin, el método deberá
                        intercambiarlos*/

};

void TablasMultiplicar::PedirNoTablas(){

do{

cout<<"Introduzca el numero de la tabla de multiplicar inicial: ";cin>>TablaIni;
cout<<"\nIntroduzca el numero de la tabla de multiplicar final: ";cin>>TablaFin;

}while(((TablaIni <1 || TablaIni>10)||(TablaFin < 1 || TablaFin >10 )));

}

void TablasMultiplicar::MostrarTablas(){





for(int i=0;i<=10;i++){

cout<<TablaIni<<" x "<<i<<" = "<<TablaIni*i<<"\t";



    for(int j=(TablaIni+1);j<=TablaFin;j++){


        cout<<j<<" x "<<i<<" = "<<j*i<<"\n";



        }
       }


    }









int main()
{

    TablasMultiplicar tablas;

    tablas.PedirNoTablas();

    tablas.MostrarTablas();








    return 0;
}
    
asked by Woxtz 03.11.2017 в 18:23
source

1 answer

1

You have a problem ... which is called control cuts ...

Your forms are wrong ...

what you have to do is, print multiply by 0, the number of tables you have ... and then when you finish that, print the line break.

//ahora imprimimos las tablas.. primero por fila, y despues los saltos
for(int i=0;i<=10;i++)
{
    for(int j=(TablaIni+1);j<=TablaFin;j++)
    {
        cout<<j<<" x "<<i<<" = "<<j*i<<"\t";
    }
    //cuando ya imprimimos las tablas, ponemos el salto de linea
   cout<<"\n";
}
    
answered by 04.11.2017 в 00:40