C/Visual C - !!! ayudacalculadora en c con tad!!!!

 
Vista:

!!! ayudacalculadora en c con tad!!!!

Publicado por xcyenze (1 intervención) el 14/09/2000 00:00:00
necesito una orientacion o el codigo fuente para estudiarlo de como se hace una calculadora con las operaciones basicas sumar, restar, multiplicar y dividir ...... con cifras hasta de mas de 100 digitos aceptando decimales!!!

si me pueden mandar el fuente implementado el tad les agradezco o cualquier informacion !!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:!!! ayudacalculadora en c con tad!!!!

Publicado por Pedro Pablo (37 intervenciones) el 21/09/2000 00:00:00
Buff. Tu lo que necesitas es un TAD para numeros muy grandes...
Lo que te aconsejo es que te definas un tipo "TNumeroGrande" o algo asi, que sea por ejemplo una cadena de caracteres, donde cada caracter es un digito, y que ademas se guarde la posicion del ´punto´ decimal en otro entero aparte, o se guarde como un caracter ´.´.
Pero vamos, la representacion interna del TAD la puedes hacer como tu quieras..
Despues haces funciones a las que le entran dos TNumeroGrande, y devuelven otro, que sea el resultado de la suma, resta, o cualquier operacion que necesites.
Y despues, lo usas en la calculadora. Lo mas probable es que necesites tambien operaciones para escribir el numero en la pantalla, o que se pida un numero por teclado, etc.

Por ejemplo: (compruebalo, que no lo he probado!)

#define NUMERO_DIGITOS 100
typedef struct TNumeroGrande {
char digito[NUMERO_DIGITOS];
int posicionPunto;
int numeroDigitos;
}


bool leerNumeroGrande(TNumeroGrande *nG) {

char c;

nG->numeroDigitos = 0;
nG->posicionPunto = -1; // No hay punto en el numero

while ((c = getch()) !+ ´\n´) {
if ((c >= 0) && (c <= 9)) {
nG->digito[nG->numeroDigitos] = c;
nG->numeroDigitos++;
continue;
}
if (c == ´.´) {
if (nG->posicionPunto != -1)
// Ya se ha indicado el ´.´ -> Error
return false;
nG->posicionPunto = nG->numeroDigitos;
continue;
}
// Si se ha llegado aqui, el caracter leido
// no es ni un numero ni el punto decimal ni
// el intro indicando final de numero -> error
return false;

}

}

Y te faltaria comprobar que no se introducen mas de MAX_DIGITOS, por ejemplo.

Espero haberte ayudado!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar