Vous êtes sur la page 1sur 5

EJERCICIO NO 5 /********DECLARACIONES*********/ #include<iostream> #include<stdio.h> #include<string.h> #include<stdlib.h> #include<ctype.

h> #define MAX 100 int longitud;//LONGITUD DE LA CADENA ENTRADA int salgo;//BANDERA Q HACE ACABAR EL PROGRAMA SI EL USUARIO HA INSERTADO UNA MALA ENTRADA char entrada[MAX];//ENTRADA DEL USUARIO char salida[MAX];//SALIDA YA CONVERTIDA A LETRAS char actual[MAX];//VALOR DEL NUMERO ACTUAL char actualposterior[MAX];//VALOR DEL NUMERO POSTERIOR char revisada[MAX]; //LA ENTRADA UNA VEZ REVISADA PARA Q EL USUARIO NO ENTRE LETRAS char opcio[MAX]; //OPCION SELECCIONADA 1 CASTELLANO 2 CATALAN int revisaelnumero(char a_revisar[]);//MIRA Q LA LONGITUD DEL TEXTO SEA MENOR DE 9 Y Q NO HAYAN LETRAS void traduce_a_Cas(char revisada[]); //FUNCION Q "TRADUCE" AL CASTELLANO

void interface(); //FUNCION Q IMPRIME EL MENSAJE DE BIENVENIDA Y LAS OPCIONES //TAMBIEN ES LA Q SE ENCARGA DE RECOGER LA ENTRADA DEL USUARIO /******************************* **MAIN DEL PROGRAMA************************ **************/ void main(){ while (salgo != 2){ // 0. MIENTRAS NO DECIDAN SALIR... interface(); //1. MUESTRA EL TEXTO EN PANTALLA Y ESPERA ENTRADA salgo = revisaelnumero(entrada); //2. REVISA Q LA ENTRADA ESTE BIEN if (salgo == 0){

} if (salgo == 2){ printf("\nAdios!!!\n"); //3.5 EL USUARIO HA DECIDIDO SALIR } else{ //4. SI LA ENTRADA ESTA BIEN LO TRADUCE AL IDIOMA SELECCIONADO if (strcmp(opcio,"1") == 0){ traduce_a_Cas(entrada); }; } printf("\nSU NUMERO ES:------------------------------------------------------\n"); printf("%s\n",salida); //5. MUESTRA LA SALIDA printf("------------------------------------------------------------------\n"); strcpy(salida,""); //6. VACIO LA SALIDA PARA NO CONCATENAR } } /******************************* ******FUNCIONES***************** **************************/

//3. SI LA ENTRADA NO ESTA BIEN SE QUEJA printf("La entrada ha sido erronea! Vuelva a intentarlo!\n"); printf("\nRecuerde que la longitud maxima son 3 numeros y no ponga letras!!");

// FUNCION QUE "TRADUCE" EL NUMERO A EL CASTELLANO void traduce_a_Cas(char revisada[]){ char unidades[MAX][MAX]={"uno ","dos ","tres ","cuatro ","cinco ","seis ","siete ","ocho ","nueve "}; char decenas[MAX][MAX]={"diez ","veinte ","treinta ","cuarenta ","cincuenta ","sesenta ","setenta ","ochenta ","noventa "}; char centenas[MAX][MAX]={"ciento ","doscientos ","trescientos ","cuatrocientos ","quinientos ","seiscientos ","setecientos ","ochocientos ","novecientos "}; char decenasespeciales[MAX][MAX]={"di ez ","once ","doce ","trece ","catorce ","quince ","dieciseis ","diecisiete ","dieciocho ","diecinueve "}; int int int int int numerito; numeritoposterior; i; bandera; posicionactual;

for (i=longitud;i >= 1 ;i-){ bandera = longitud i; posicionactual = longitud - bandera; switch(posicionactual){ case 1:case 4:case 7: //unidades actual[0] = revisada[bandera];actual[1] = '\0'; numerito = atoi(actual); if (numerito != 1){ strcat(salida,unidades[num erito-1]); } else{ if (longitud == 4 && posicionactual == 4){ } else if(longitud == 7 && posicionactual == 7){ strcat(salida,"un "); }else{

strcat(salida,unidades[num erito-1]); } } break; case 2:case 5:case 8: //decenas actual[0] = revisada[bandera];actual[1] = '\0'; numerito = atoi(actual); actualposterior[0] = revisada[bandera+1];actualposter ior[1] = '\0'; numeritoposterior = atoi(actualposterior); if (numerito == 1){ if (numeritoposterior != 0){ strcat(salida,decenasespec iales[numeritoposterior]); i--; }else{ strcat(salida,decenas[nume rito-1]); } }

longitud = strlen(revisada);

else{ strcat(salida,decenas[nume rito-1]); if (numeritoposterior !=0 && numerito != 0) strcat(salida,"y "); } break; case 3:case 6: //centenas

=='0' && revisada[bandera-2] == '0' && revisada[bandera-3] == '0'){ }else{ strcat(salida,"mil ");} } if (numerito == 1 && revisada[bandera+1] == '0' && revisada[bandera+2] == '0'){ strcat(salida,"cien "); }else{

printf("\n1 Imprimir la cantidad en letras.\n"); scanf("\n%s",opcio); } } //FUNCION Q REVISA EL NUMERO EN BUSCA DE UNA LONGITUD INCORRECTA O CARACTERES ALFA int revisaelnumero(char a_revisar[]){ int decision = 1; int largo; int i; largo = strlen(a_revisar); if ((largo > 8) || (largo < 1)){ //MIRO Q LA LONGITUD SEA CORRECTA decision = 0; } else if(a_revisar[0] == '*'){ decision = 2; } else{ for(i=0;i<largo;i++){ if(isalpha(a_revisar[i]) != 0){ //MIRO Q NO HAYA LETRAS INTRODUCIDAS decision = 0; } } } return decision; }

actual[0] = revisada[bandera];actual[1] = '\0'; numerito = atoi(actual); if (posicionactual == 6 && longitud > 6){ if (longitud == 7 && revisada[bandera-1] == '1'){ strcat(salida,"millon "); }else{ strcat(salida,"millones "); } } else if (posicionactual == 3 && longitud > 3){ if(revisada[bandera-1]

strcat(salida,centenas[num erito - 1]); } break; }//fin del switch }//fin del for } //fin de funcion //FUNCION Q PRINTA EL MENSAJE DE BIENVENIDA Y LAS OPCIONES void interface(){ printf("\n:: Escriba un numero de 1 a 399 y presione ENTER.\n"); printf(":: Si desea salir pulse * y ENTER.\n"); scanf("%s",entrada); if (entrada[0] != '*'){ printf("\nPresione 1 para continuar:\n");

EJERCICIO NO 7
class Racional { public: Racional(int = 1, int = 1); // Constructor void setRacional(); // Simplifica las fracciones void sumaR(Racional, Racional); // Suma de numeros racionales void restaR(Racional, Racional); // Resta de 2 numeros racionales void multiR(Racional, Racional); // Multiplicacion de 2 numeros racionales void diviR(Racional, Racional); // Division de 2 numeros racionales void impR(); // Impresion de numeros racionales de la forma a/b void impF(); // Impresion de racionales en formato de punto flotante private: int numerador; int denominador; };

// Constructor Racional::Racional(int num, int den) { numerador = num; denominador = den; } // Simplifica las fracciones void Racional::setRacional() { int cont = 2; while(cont <= numerador && cont <= denominador){ if((numerador % cont == 0) && (denominador % cont == 0)){ numerador /= cont; denominador /= cont; } else cont++; } } // Suma de 2 numeros racionales de la forma a/b void Racional::sumaR(Racional a, Racional b) { numerador = (b.denominador * a.numerador) + (a.denominador * b.numerador); denominador = a.denominador * b.denominador; } // Resta de 2 numeros racionales de la forma a/b

void Racional::restaR(Racional a, Racional b) { numerador = (b.denominador * a.numerador) - (a.denominador * b.numerador); denominador = a.denominador * b.denominador; } // Multiplicacion de 2 numeros racionales de la forma a/b void Racional::multiR(Racional a, Racional b) { numerador = a.numerador * b.numerador; denominador = a.denominador * b.denominador; } // Division de 2 numeros racionales de la forma a/b void Racional::diviR(Racional a, Racional b) { numerador = a.numerador * b.denominador; denominador = a.denominador * b.numerador; } // Impresion de numeros racionales de la forma a/b void Racional::impR() { cout << '(' << numerador << '/' << denominador << ')'; }

#include "Racional.h" #include <iostream> using namespace std;

// Impresion de numeros racionales de la forma a/b void Racional::impF() { if(denominador == 0) cout << "Indeterminado"; else cout << (float(numerador) / float(denominador)); }

a.impR(); cout << '+'; b.impR(); cout << '='; r.impR(); cout << '='; r.impF(); cout << '\n'; // Resta r.restaR(a,b); r.setRacional(); a.impR(); cout << '-'; b.impR(); cout << '='; r.impR(); cout << '='; r.impF(); cout << '\n'; // Multiplicacion r.multiR(a,b); r.setRacional(); a.impR(); cout << '*'; b.impR(); cout << '='; r.impR(); cout << '='; r.impF(); cout << '\n'; // Division r.diviR(a,b); r.setRacional(); a.impR(); cout << '/'; b.impR();

cout << '='; r.impR(); cout << '='; r.impF(); cout << '\n'; i++; } system("pause"); return 0; }

#include <iostream> #include "Racional.h" using namespace std; int main() { int i = 1, x, y; while(i <= 5){ cout << "Introduzca una fraccion (a b): "; cin >> x >> y; Racional r, a(x, y); cout << "Introduzca una fraccion (a b): "; cin >> x >> y; Racional b(x, y); a.setRacional(); b.setRacional(); // Suma r.sumaR(a,b); r.setRacional();

Vous aimerez peut-être aussi