miércoles, 18 de mayo de 2022

Programa en C para entrar operaciones de suma (mas) y resta (menos) con números en texto, la salida debe ser en texto

 


/* 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