#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
HANDLE consola;
COORD posicion;
void dlq(int hor, int ver);
void ejemplos();
double separa(char ingreso[], double *resultado);
double *opciones(double memoria, double resultado);
int main(int argc, char *argv[])
{
consola = GetStdHandle(STD_OUTPUT_HANDLE);
ejemplos();
double resultado,memoria=0;
char ingreso[50];
while (ingreso[0] != 's')
{
ejemplos();
dlq
(20,4);printf(" Ingreso....: s - para finalizar"); dlq
(18,51);printf("%5.3f",memoria
); dlq(20,18);
if(ingreso[0] !='0')
{
separa(ingreso,&resultado);
if(resultado !=0)
{
dlq(18,17);
opciones(memoria,resultado);
ingreso[0]=' ';
}
}
else
{
dlq(24,5);
printf("Ingreso incorrecto - por favor revise los ejemplos"); dlq(26,5);
dlq(26,5);
}
}
return 0;
}
void dlq(int hor, int ver)
{
posicion.X = ver;posicion.Y = hor;SetConsoleCursorPosition(consola, posicion);
}
double separa(char ingreso[], double *resultado)
{
char opUno[50], oper[50], opDos[50], priseg=65;
int i=0, poper=0, pseg=0;
for(i
= 0; i
< strlen(ingreso
); i
++) {
if((ingreso[i] == 42 || ingreso[i] == 43 || ingreso[i] == 45 || ingreso[i] == 47))
{
oper[poper]=ingreso[i];
oper[poper+1]= ' ';
poper++;
priseg=priseg+1;
}
else
{
if(priseg == 65)
{
opUno[i] = ingreso[i];
opUno[i+1] = ' ';
}
else
{
opDos[pseg] = ingreso[i];
opDos[pseg+1] = ' ';
pseg++;
}
}
}
char op_1[50], op_2[50];
int lugar = 0;
for(i=0;opUno[i]!=' ';i++)
{
if((opUno[i] > 47 && opUno[i] < 58) || (opUno[i] == 46))
{
op_1[lugar] = opUno[i];
lugar++;
op_1[lugar] = ' ';
}
}
lugar = 0;
for(i=0;opDos[i]!=' ';i++)
{
if((opDos[i] > 47 && opDos[i] < 58) || (opDos[i] == 46))
{
op_2[lugar] = opDos[i];
lugar++;
op_2[lugar] = ' ';
}
}
{
double op_uno=0,op_dos=0;
if(oper[0] == '+')
*resultado = op_uno + op_dos;
if(oper[0] == '-')
*resultado = op_uno - op_dos;
if(oper[0] == '*')
*resultado = op_uno * op_dos;
if(oper[0] == '/')
*resultado = op_uno / op_dos;
}
else
{
*resultado = 0;
}
return (*resultado);
}
void ejemplos()
{
dlq(2,4);
printf(" ---------------------- Calculadora lineal ----------------------"); dlq
(4,4);printf(" Ejemplos:"); dlq
(6,13);printf(" Suma...........: 125.4+18"); dlq
(8,13);printf(" Resta..........: 125-10.54"); dlq
(10,13);printf(" MultiplicacixA2n.: 125.48*10.50"); dlq
(12,13);printf(" DivicixA2n.......: 678.48/5.99"); dlq
(14,13);printf(" No dejar espacios - x3C Enter x3E confirma"); dlq(16,4);
printf(" ----------------------------------------------------------------"); dlq
(18,4);printf(" Resultado..: Memoria....:");}
double *opciones(double memoria,double resultado)
{
dlq(22,5);
printf("----------------------------------------------------------------"); dlq(24,5);
printf("Opciones de memoria"); dlq(26,5);
dlq(28,5);
dlq(30,5);
printf("3 - Borra memoria y memoria +"); dlq(32,5);
printf("4 - Borra memoria y memoria -"); dlq(34,5);
printf("5 - Sin ingerencia en memoria"); int opc=0;
while (opc <1 || opc > 5)
{
dlq(36,5);
dlq(38,5);
switch(opc)
{
case 1:memoria = memoria + resultado;break;
case 2:memoria = memoria - resultado;break;
case 3:memoria = resultado;break;
case 4:memoria = - resultado;break;
case 5:break;
default:printf("Solo numeros del 1 al 5, apriete una tecla para continuar...");getch(); }
}
return &memoria;
}