Skip to content

Commit

Permalink
AmayaOS: CALC v0.4
Browse files Browse the repository at this point in the history
Calc 0.4 has been released!
Incluye un código fuente más ordenado y mejor planificado, con diferentes
procedimientos para cada función (suma, resta, multiplicación, división).
Compatible con AmayaOS 0.06 y superiores.
  • Loading branch information
dalmemail committed Apr 24, 2015
1 parent 7ca1c75 commit 55ed87c
Showing 1 changed file with 141 additions and 72 deletions.
213 changes: 141 additions & 72 deletions bin/calc/Main.cpp
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2014 Dan Rulos.
* Copyright (C) 2015 Dan Rulos.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Expand All @@ -22,77 +22,146 @@
#include <string.h>
#include <amaya.h>

void clean_calc()
{
char str[] = {0x1b, 0x5b, 0x48, 0x1b, 0x5b, 0x4a, '\0'};
printf("%s", str);
}

/* comprueba si un *char es un numero */
bool numberinchar(char *n)
{
for (int i=0; i <= (strlen(n)-1); i++) {
if (n[i] != '0' && n[i] != '1' && n[i] != '2' && n[i] != '3' && n[i] != '4' && n[i] != '5' && n[i] != '6'&&
n[i] != '7' && n[i] != '8' && n[i] != '9' && n[0] != '-') {
return false;
}
}
return true;
}

void sumar()
{
int resultado_sum=0;
char n1_sum[128];
char n2_sum[128];
printf("Sumar\r\n");
printf("Introduce numero 1 : ");
gets_s(n1_sum, 128); /* Pedimos al usuario numero1 */
printf("Introduce numero 2 : ");
gets_s(n2_sum, 128); /* Pedimos al usuario numero2 */
if (numberinchar(n1_sum) && numberinchar(n2_sum)) {
resultado_sum = atoi(n1_sum) + atoi(n2_sum);
printf("El resultado es : %d\n", resultado_sum);
}
else {
printf("Error: Introduce solo numeros.\n");
}
pause();
}

void restar()
{
int resultado_res=0;
char n1_res[128];
char n2_res[128];
printf("Restar\r\n");
printf("Introduce numero 1 : ");
gets_s(n1_res, 128); /* Pedimos al usuario numero1 */
printf("Introduce numero 2 : ");
gets_s(n2_res, 128); /* Pedimos al usuario numero2 */
if (numberinchar(n1_res) && numberinchar(n2_res)) {
resultado_res = atoi(n1_res) - atoi(n2_res);
printf("El resultado es : %d\n", resultado_res);
}
else {
printf("Error: Introduce solo numeros.\n");
}
pause();
}

void multiplicar()
{
int resultado_mul=0;
char n1_mul[128];
char n2_mul[128];
printf("Multiplicar\r\n");
printf("Introduce numero 1 : ");
gets_s(n1_mul, 128); /* Pedimos al usuario numero1 */
printf("Introduce numero 2 : ");
gets_s(n2_mul, 128); /* Pedimos al usuario numero2 */
if (numberinchar(n1_mul) && numberinchar(n2_mul)) {
resultado_mul = atoi(n1_mul) * atoi(n2_mul);
printf("El resultado es : %d\n", resultado_mul);
}
else {
printf("Error: Introduce solo numeros.\n");
}
pause();
}

void dividir()
{
int resultado_div=0;
char n1_div[128];
char n2_div[128];
printf("Sumar\r\n");
printf("Introduce numero 1 : ");
gets_s(n1_div, 128); /* Pedimos al usuario numero1 */
printf("Introduce numero 2 : ");
gets_s(n2_div, 128); /* Pedimos al usuario numero2 */
if (numberinchar(n1_div) && numberinchar(n2_div)) {
resultado_div = atoi(n1_div) / atoi(n2_div);
printf("El resultado es : %d\n", resultado_div);
}
else {
printf("Error: Introduce solo numeros.\n");
}
pause();
}

int main(int argc, char **argv) /* Funcion principal de la calculadora */
int main(int argc, char **argv)
{
char opcion='I'; /* Importante colocar opciones por defecto I, 0, etc Asi si el usuario pulsa enter el programa no se quedará colgado */
char numero1[128];
char numero2[128];
long int resultado=0;
printf("CALC 0.2\r\n");
printf("[1] Sumar\r\n");
printf("[2] Restar\r\n");
printf("[3] Multiplicar\r\n");
printf("[4] Dividir\r\n");
printf("[I] Info\r\n");
printf("[S] Salir\r\n");
do { /* Bucle do while */
printf("Selecione una opcion:\r\n");
opcion = getchar();
} while (opcion != '1'&& opcion != '2'&& opcion != 'I'&& opcion != 'S'&& opcion != 'i'&& opcion != 's'&& opcion != '3'&& opcion != '4'); /* Si el usuario no introduce
* 1, 2, I, S, i o s no continua */
if (opcion == 'I'|| opcion == 'i') { /* Si la opcion es I o i */
printf("CALC 0.3 corriendo sobre AmayaOS\r\n");
printf("CALC es free software | GNU GPL v3\r\n");
printf("CALC viene sin NINGUNA GARANTIA\r\n");
pause();
main(argc, argv); /* Volvemos a ejecutar la funcion principal */
}
if (opcion == 'S'|| opcion == 's') { /* Si la opcion es S o s */
return EXIT_SUCCESS; /* Cerramos el programa */
}
if (opcion == '1') { /* Si es 1 sumamos */
printf("\r\n", "Sumar\r\n");
printf("Introduce numero 1 : ");
gets_s(numero1, 128); /* Pedimos al usuario numero1 */
printf("Introduce numero 2 : ");
gets_s(numero2, 128); /* Pedimos al usuario numero2 */
resultado = atoi(numero1) + atoi(numero2); /* Sumamos.... */
printf("El resultado es : ");
printf("%d", resultado);
printf("\r\n");
}
if (opcion == '2') { /* Si es 2 restamos */
printf("\r\n", "Restar\r\n");
printf("Introduce numero 1 : ");
gets_s(numero1, 128); /* numero1 */
printf("Introduce numero 2 : ");
gets_s(numero2, 128); /* numero2 */
resultado = atoi(numero1) - atoi(numero2);
printf("El resultado es : ");
printf("%d", resultado);
printf("\r\n");
}
if (opcion == '3') { /* Si es 1 sumamos */
printf("\r\n", "Multiplicar\r\n");
printf("Introduce numero 1 : ");
gets_s(numero1, 128); /* Pedimos al usuario numero1 */
printf("Introduce numero 2 : ");
gets_s(numero2, 128); /* Pedimos al usuario numero2 */
resultado = atoi(numero1) * atoi(numero2); /* Sumamos.... */
printf("El resultado es : ");
printf("%d", resultado);
printf("\r\n");
}
if (opcion == '4') { /* Si es 1 sumamos */
printf("\r\n", "Dividir\r\n");
printf("Introduce numero 1 : ");
gets_s(numero1, 128); /* Pedimos al usuario numero1 */
printf("Introduce numero 2 : ");
gets_s(numero2, 128); /* Pedimos al usuario numero2 */
resultado = atoi(numero1) / atoi(numero2); /* Sumamos.... */
printf("El resultado es : ");
printf("%d", resultado);
printf("\r\n");
}
/* declaramos variables */
char option='s';
while(1) {
/* limpiamos la pantalla */
clean_calc();
/* mostramos el menú */
printf("CALC 0.4\r\n");
printf("[1] Sumar\r\n");
printf("[2] Restar\r\n");
printf("[3] Multiplicar\r\n");
printf("[4] Dividir\r\n");
printf("[S] Salir\r\n");
printf("Seleccione una opcion: \n");
option = getchar();
switch (option) {
case '1':
clean_calc();
sumar();
break;
case '2':
clean_calc();
restar();
break;
case '3':
clean_calc();
multiplicar();
break;
case '4':
clean_calc();
dividir();
break;
case 's':
case 'S':
clean_calc();
return 0;
break;
default:
clean_calc();
printf("Error: Orden no encontrada\n");
pause();
}
}
}

0 comments on commit 55ed87c

Please sign in to comment.