RE:!!! ayudacalculadora en c con tad!!!!
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!