/* Programa en C para entrar operaciones de suma (mas) y resta (menos) con números en texto, la salida debe ser en texto
Autor: Alexander Arias
Fecha: 2022-05-18
- Tokenizar strings con scanf
- Convertir numeros texto a digitos
- Convertir resulados numericos a texto
- Trabajar con una matriz de Strings
tokenizar_string
La entrada se tokeniza directamente desde el scanf
scanf("%s %s %s",op1,op2,op3);
donde el separador es el espacio
cero ce c
uno un u
dos do d
tres tr t
cuatro cu c
cinco ci c
seis se s
siete si s
ocho o o
nueve nu n
diez di d
-----------------------------------------
Ejemplo de Ejecución 1:
tokenizar_string
tres mas cuatro
tres
mas
cuatro
Operando 1 convertido a número
3
Operando 3 convertido a número
4
Resultado 7
siete
-----------------------------------------
Ejemplo de Ejecución 2:
tokenizar_string
uno menos diez
uno
menos
diez
Operando 1 convertido a número
1
Operando 3 convertido a número
10
Resultado -9
menos nueve
-----------------------------------------
tokenizar_string
tres mas nueve
tres
mas
nueve
Operando 1 convertido a número
3
Operando 3 convertido a número
9
Resultado 12
doce
-----------------------------------------
*/
#include <stdio.h>
int convertir(char *s);
void resultado(int r);
char res[30][13]={"menos diez","menos nueve","menos ocho","menos siete","menos seis","menos cinco","menos cuatro","menos tres","menos dos","menos uno","cero","uno","dos","tres","cuatro","cinco","seis","siete","ocho","nueve","diez","once","doce","trece","catorce","quince","dieciseis","dieciciete","dieciocho","diecinuve"};
int main(void) {
char s[18];
char op1[7],op2[6],op3[7];
int n1,n3,r;
printf("tokenizar_string\n");
scanf("%s %s %s",op1,op2,op3);
printf("%s\n",op1);
printf("%s\n",op2);
printf("%s\n",op3);
n1=convertir(op1);
printf("Operando 1 convertido a número\n");
printf("%d\n",n1);
n3=convertir(op3);
printf("Operando 3 convertido a número\n");
printf("%d\n",n3);
//operacion
if(op2[1]=='a') r=n1+n3; //mas
else r=n1-n3;//menos
printf("Resultado %d\n",r);
resultado(r);
return 0;
}
/*
cero ce c
uno un u
dos do d
tres tr t
cuatro cu c
cinco ci c
seis se s
siete si s
ocho o o
nueve nu n
diez di d
*/
int convertir(char *s){
if (s[0]=='c'){
if (s[1]=='e') return 0;
if (s[1]=='u') return 4;
if (s[1]=='i') return 5;
}
else if (s[0]=='u') return 1;
else if (s[0]=='d'){
if (s[1]=='o') return 2;
if (s[1]=='i') return 10;
}
else if (s[0]=='t') return 3;
else if (s[0]=='s'){
if (s[1]=='e') return 6;
if (s[1]=='i') return 7;
}
else if (s[0]=='o') return 8;
else if (s[0]=='n') return 9;
}
void resultado(int r){
r=r+10;
printf("%s\n",res[r]);
}
No hay comentarios:
Publicar un comentario