how to compress thhe code while getting the same results?
Oct 27, 2017 at 6:31pm UTC
This is a small program I wrote with what I have learned since I started codeing in C++ about a week ago.
¿how to compress the code to minimum, while getting the same results?
ejercicio2.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
#include<iostream>
#include"opciones.h"
#include"multi.h"
#include"mensaje.h"
#include"div.h"
#include"cuadricula.h"
using namespace std;
int main()
{
int val1;
int val2;
int repe;
mensaje miMensaje1;
miMensaje1.mostrarMensaje();
while ( repe != 2 )
{
cout << "Introduce el primer valor : " ;
cin >> val1;
cout << "\n\nIntroduce el segundo valor : " ;
cin >> val2;
cout << "\n\n" ;
opciones opc1( val1, val2 );
multi multiple1( val1, val2 );
div divicion1( val1, val2 );
cuadricula miCuadricula;
cout << "El resultado de la suma es : " << opc1.obtenerResultado() << "!" << endl;
cout << "\n\nEL resultado de la multiplicacion es : " << multiple1.obtenerResultado() << "!" << endl;
cout << "\n\nEl resultado de la division es : " << divicion1.obtenerResultado() << "!" << endl;
cout << "\n\n\n\n" ;
miCuadricula.mostrarCuadricula();
cout << "\n\nDeseas seguir usando el programa? : ( 1 )SI ( 2 )NO : " ;
cin >> repe;
}
miMensaje1.mostrarDespedida();
}
opciones.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#define OPCIONES_H_INCLUDED
#endif // OPCIONES_H_INCLUDED
class opciones
{
public :
explicit opciones( int , int );
void establecerDatos( int , int );
int obtenerResultado() const ;
private :
int opcion1;
int opcion2;
int resultado;
};
opciones.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#include<iostream>
#include"opciones.h"
using namespace std;
opciones::opciones( int op1, int op2 )
:opcion1( op1 ), opcion2( op2 ), resultado(opcion1 + opcion2)
{
}
void opciones::establecerDatos( int op1, int op2 )
{
opcion1 = op1;
opcion2 = op2;
resultado = opcion1 + opcion2;
}
int opciones::obtenerResultado() const
{
return resultado;
}
multi.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#define MULTI_H_INCLUDED
#endif // MULTI_H_INCLUDED
class multi
{
public :
explicit multi( int , int );
void establecerDatos( int , int );
int obtenerResultado() const ;
private :
int opcion1;
int opcion2;
int resultado;
};
multi.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#include<iostream>
#include"multi.h"
using namespace std;
multi::multi( int op1, int op2 )
:opcion1( op1 ), opcion2( op2 ), resultado(opcion1 * opcion2)
{
}
void multi::establecerDatos( int op1, int op2 )
{
opcion1 = op1;
opcion2 = op2;
resultado = opcion1 * opcion2;
}
int multi::obtenerResultado() const
{
return resultado;
}
mensaje.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
#ifndef MENSAJE_H_INCLUDED
#define MENSAJE_H_INCLUDED
#endif // MENSAJE_H_INCLUDED
#include<string>
class mensaje
{
public :
explicit mensaje();
void mostrarMensaje() const ;
void mostrarDespedida() const ;
private :
std::string texto;
};
mensaje.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#include<iostream>
#include"mensaje.h"
using namespace std;
mensaje::mensaje()
{
}
void mensaje::mostrarMensaje() const
{
cout << "Bienvenido a calculos v1.0 ! \n\n" ;
}
void mensaje::mostrarDespedida() const
{
cout << "\n\nGracias por usar calculos v1.0 ! \n\n" ;
}
div.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
#ifndef DIV_H_INCLUDED
#define DIV_H_INCLUDED
#endif // DIV_H_INCLUDED
class div
{
public :
explicit div( double , double );
void establecerDatos( double , double );
double obtenerResultado() const ;
private :
double opcion1;
double opcion2;
double resultado;
};
div.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#include<iostream>
#include"div.h"
using namespace std;
div::div( double op1, double op2 )
:opcion1( op1 ), opcion2( op2 ), resultado(opcion1 / opcion2)
{
}
void div::establecerDatos( double op1, double op2 )
{
opcion1 = op1;
opcion2 = op2;
resultado = opcion1 / opcion2;
}
double div::obtenerResultado() const
{
return resultado;
}
cuadricula.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#ifndef CUADRICULA_H_INCLUDED
#define CUADRICULA_H_INCLUDED
#endif // CUADRICULA_H_INCLUDED
class cuadricula
{
public :
explicit cuadricula();
void mostrarCuadricula() const ;
private :
char simbolo = '*' ;
};
cuadricula.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#include<iostream>
#include"cuadricula.h"
using namespace std;
cuadricula::cuadricula()
{
}
void cuadricula::mostrarCuadricula() const
{
int x;
cout << "*********************************************************\n" ;
for ( x = 0; x < 8; x++ )
{
cout << simbolo << " " << simbolo << " " << simbolo << " " << simbolo << " "
<< simbolo << " " << simbolo << " " << simbolo << " " << simbolo << " " << simbolo << "\n" ;
cout << simbolo << " " << simbolo << " " << simbolo << " " << simbolo << " "
<< simbolo << " " << simbolo << " " << simbolo << " " << simbolo << " " << simbolo << "\n" ;
cout << simbolo << " " << simbolo << " " << simbolo << " " << simbolo << " "
<< simbolo << " " << simbolo << " " << simbolo << " " << simbolo << " " << simbolo << "\n" ;
cout << "*********************************************************\n" ;
}
}
Oct 27, 2017 at 6:52pm UTC
minimal code is over-rated, it won't run faster if it does the same work and it can be hard to read.
regardless, consider:
1 2 3 4
void div::establecerDatos( double op1, double op2 )
{
resultado = op1 / op2;
}
or -- not 100% sure if this is identical, but can you condense that print somehow LIKE this?
1 2 3 4 5 6
for ( x = 0; x < 8; x++ )
{
for (int j = 0; j < 9; j++)
cout << cout << simbolo << " " ;
}
cout << endl;
There isnt a lot of algorithm or iteration or such work here to reduce. I mean you can combine lines like
int a,b,c;
or if(cond) statement;
to save physical space but that is not really useful.
Last edited on Oct 27, 2017 at 6:53pm UTC
Oct 27, 2017 at 7:37pm UTC
thanks I will try out the "for" loop right away, and btw another question I have is: ¿is it necesary to use the code below?
1 2 3 4 5 6 7
opciones::opciones( int op1, int op2 )
:opcion1( op1 ), opcion2( op2 ), resultado(op1 + op2)
{
}
and
1 2 3 4 5
void opciones::establecerDatos( int op1, int op2 )
{
resultado = op1 + op2;
}
or just:
1 2 3 4 5
void opciones::establecerDatos( int op1, int op2 )
{
resultado = op1 + op2;
}
will do?
and btw the code you shared:
1 2 3 4 5 6
for ( x = 0; x < 8; x++ )
{
for (int j = 0; j < 9; j++)
cout << cout << simbolo << " " ;
}
cout << endl;
has
cout << cout
I'll try to fix it to make it work :D
I found the solution:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
void cuadricula::mostrarCuadricula() const
{
int x;
int y;
int z;
cout << "*********************************************************\n" ;
for ( x = 0; x < 8; x++ )
{
for ( z = 0; z < 3; z++ )
{
for ( y = 0; y < 9; y++ )
{
cout << simbolo << " " ;
}
cout << "\n" ;
}
cout << "*********************************************************\n" ;
}
}
Last edited on Oct 27, 2017 at 8:40pm UTC
Topic archived. No new replies allowed.