Impresor de tablas de multiplicar - ¡Practicando con AzulSchool! [ESP-ENG] | C++

in Develop Spanish7 months ago (edited)

¡Hola! Por acá vuelvo para contar un poco más sobre lo que he avanzado en el curso de AzulSchool, en concreto sobre el proyecto número 2, enfocado a tablas de multiplicar. Al igual que en los anteriores programas, decidí subir un poco la apuesta al no limitar las cosas a las tablas del 1 al 10, sino permitir que el usuario pueda pedir hasta la tabla del 100, además de incluir validaciones que evitan que el programa colapse si se intentan incluir caracteres no numéricos o que rompan la lógica del código.

Este proyecto lo lleve a cabo en menos líneas de código en comparación a los trabajos anteriores de este curso. Diría que la causa de esto es que el objetivo principal podía lograrse a través de menos funciones.

Hello! I'm back to tell you a little more about my progress in the AzulSchool course, specifically about project number 2, focused on multiplication tables. As in the previous programs, I decided to up the ante a bit by not limiting things to tables from 1 to 10, but allowing the user to ask for tables up to 100, as well as including validations that prevent the program from crashing if you try to include non-numeric characters or characters that break the logic of the code.

This project was completed in fewer lines of code compared to the previous work in this course. I would say that the reason for this is that the main objective could be achieved through fewer functions.


Portada post programacion, tech.jpg
Edited with CANVA

Programación c++.png

image.png

Programación c++.png

Comencé con librerías que he mantenido en esta serie de publicaciones, junto al "using namespace std". Luego las declaraciones de funciones y posteriormente el main con una sola función invocada, que fue el menú principal. Luego reciclé un par de funciones, estas ya las había usado en el programa "calculadora de divisores", que estuvo enfocado en responder a un reto matemático de un Hiver, hace ya un tiempo.

La primera comprueba que el string que recibe por parámetro, que este sea un entero. Retornando un valor True o False. Esa primera función "bool isNumberInt" luego aparece en "comprobator", que a partir del valor que retorne la verificación, procede a convertir el número y pasarlo por otro filtro (que marca el máximo a 100) y que de cumplir con los requerimientos lo retorna. O por otro lado envía un mensaje de que el número ingresado es inválido, que solo se permiten enteros no negativos.

Posteriormente viene la función "mult_Tables" con dos parámetros, la tabla elegida y el máximo de multiplicaciones, por ejemplo (Tabla:6, máximo: 5 - 6x1 = 6, 6x2 = 12, 6x3 = 18, 6x4 = 24, 6x5 = 30). Para lograrlo simplemente usa un for que inicia el iterador en 1 y coloca el límite asociado al parámetro "max" ya explicado, en sentido creciente.

De tal manera que muestra un mensaje con la tabla elegida, el caracter "x" para ilustrar la multiplicación, luego el iterador, posteriormente el símbolo "=" y finalmente la multiplicación junto a un salto de línea. Esto tantas veces como sea necesario para llegar al límite solicitado.

I started with libraries that I have kept in this series of publications, along with the "using namespace std". Then the function declarations and then the main with only one function invoked, which was the main menu. Then I recycled a couple of functions, these I had already used in the program "divisor calculator", which was focused on answering a mathematical challenge from a Hiver, some time ago.

The first one checks that the string that it receives by parameter, that this one is an integer. It returns a True or False value. This first function "bool isNumberInt" then appears in "comprobator", which from the value returned by the verification, proceeds to convert the number and pass it through another filter (which marks the maximum to 100) and if it meets the requirements returns it. Or on the other hand it sends a message that the number entered is invalid, that only non-negative integers are allowed.

Then comes the function "mult_Tables" with two parameters, the chosen table and the maximum of multiplications, for example (Table:6, maximum: 5 - 6x1 = 6, 6x2 = 12, 6x3 = 18, 6x4 = 24, 6x5 = 30). To achieve this, it simply uses a for that starts the iterator at 1 and places the limit associated with the "max" parameter already explained, in increasing direction.

So it displays a message with the chosen table, the character "x" to illustrate the multiplication, then the iterator, then the symbol "=" and finally the multiplication together with a line break. This is done as many times as necessary to reach the requested limit.

Programación c++.png

image.png

image.png

image.png

Programación c++.png

Finalmente llega la función principal, que unifica toda la estructura para dar a lugar al resultado deseado. Esto con el uso de algunas variables. En concreto "opc" para el pequeño bucle para confirmar si el usuario desea continuar o no. Dos enteros "table" y "max" para la almacenar la tabla elegida y el límite para las multiplicaciones. Y un par de strings para el filtrado de los números recibidos por teclado. Añadiendo que la función comprobador tiene un parámetro de tipo string llamado "msj" que permite añadir un mensaje personalizado a la recolección de datos.

Una vez se recogen y filtran los datos, se limpia la pantalla y se llama a la función "mult_Tables" junto a un mensaje descriptivo de la tabla escogida. Luego de esto se pregunta si se desean seguir viendo otras tablas o no, esto dentro del bucle mencionado al describir la variable "opc", que se rompe si precionan "Y", "y", "n" o "N" y que luego pasa a verificar otro while que solo se rompe si se pulsa "n" o "N". Esto porque de romperse el primer bucle con "Y" o "y", se mantendría dentro del bucle principal, repitiendo el objetivo del programa, pero si lo hace con "N" o "n", rompe ambos bucles, cumpliendo así el deseo del usuario de ya no seguir comprobando tablas de multiplicar.

Algo que podría haber trabajado un poco más es la parte de los mensajes pues me faltó una despedida y otro para cuando escogiera "Y/y".

Finally comes the main function, which unifies the whole structure to give rise to the desired result. This with the use of some variables. In particular "opc" for the small loop to confirm whether the user wants to continue or not. Two integers "table" and "max" for the storage of the chosen table and the limit for the multiplications. And a couple of strings for filtering the numbers received by keyboard. Adding that the function tester has a string parameter called "msj" that allows to add a custom message to the data collection.

Once the data is collected and filtered, the screen is cleared and the function "mult_Tables" is called together with a descriptive message of the chosen table. After this, it is asked if you want to continue viewing other tables or not, this within the loop mentioned when describing the variable "opc", which is broken if you press "Y", "y", "n" or "N" and then goes on to check another while which is only broken if you press "n" or "N". This is because if the first loop is broken with "Y" or "y", it would stay inside the main loop, repeating the goal of the program, but if it does so with "N" or "n", it breaks both loops, thus fulfilling the user's desire to no longer keep checking multiplication tables.

Something that I could have worked a little more is the part of the messages because I missed a farewell and another one for when I chose "Y/y".

Programación c++.png

image.png

image.png

Programación c++.png

ProjectII.gif

Created with VSDC Free Video Editor and Img2Go

Programación c++.png

¡Y bueno... Eso es todo por hoy! Seguimos adelante con el curso, esperando lograr la meta de acabarlo antes de que la universidad me empiece a exigir una buena parte de mi horario diario. Si tienes comentarios sobre el programa ya sea correcciones, sugerencias, consejos en general o algún aporte, no dudes en compartirlo, sería de bendición para mi y para aquellos internautas curiosos que también anden en el camino de aprender sobre C++ y el mundo de la programación y por alguna razón terminen por estos lados.

And well... That's all for today! We continue with the course, hoping to achieve the goal of finishing it before the university begins to demand a good part of my daily schedule. If you have comments about the program, whether corrections, suggestions, tips in general or any contribution, do not hesitate to share it, it would be a blessing for me and for those curious Internet users who are also on the way to learn about C++ and the world of programming and for some reason end up here.

Programación c++.png

Puedes encontrar el curso gratuito en el que aparece el enunciado original en AzulSchool. En el módulo del proyecto 2

You can find the free course in which the original statement appears at AzulSchool. In the module of the project 2


Redes actualizada.gif


Puedes seguirme por acá si lo deseas:
You can follow me here if you want:

Cuenta secundaria
(Dibujos, edición y juegos) | Secondary account (Drawings, editing and games)

Sort:  


The rewards earned on this comment will go directly to the people( @gabrielrr17 ) sharing the post on Twitter as long as they are registered with @poshtoken. Sign up at https://hiveposh.com.

Debe ser bueno saber programar, me gusta mucho la tecnología, informática pero programación se ve genial. Gracias por compartir

untitled.gif

Oye suena interesante este curso, la verdad es que no soy muy tecnológica pero estos cursos que estás haciendo se ven muy interesantes. Exitos amigo

¡Muchas gracias por el apoyo!

Thanks for your contribution to the STEMsocial community. Feel free to join us on discord to get to know the rest of us!

Please consider delegating to the @stemsocial account (85% of the curation rewards are returned).

You may also include @stemsocial as a beneficiary of the rewards of this post to get a stronger support.