elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Calculadora que acepta 100 dígitos. hecha en lenguaje C.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Calculadora que acepta 100 dígitos. hecha en lenguaje C.  (Leído 3,403 veces)
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Calculadora que acepta 100 dígitos. hecha en lenguaje C.
« en: 13 Mayo 2016, 20:23 pm »

Hola.
Estoy realmente trabado con esto, hace más de 2 días que le doy vueltas (tire unas 30 hojas oficio) al asunto y nada, como estoy a punto de abandonarlo por unos días me dije seguramente en ese foro debe haber mentes iluminadas que me puedan tirar una soga. - :huh: :huh: :huh:
Para comenzar, les dejo unos posibles ingresos que se pueden dar, la pregunta es: ¿alinearían las 2 cifras con respecto al punto o lo harían directamente? -

Se trata de la opción: Sumar

123.45  ==> 123.45
6.5                    6.5

12.34     ==>       12.34
1234.56            1234.56

1234.56  => 1234.56
123                123

Si desean no poner código no importa, solo necesitaría un poco de pseudocódigo para aclarar un poco el panorama.-

Saludos.


En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Calculadora que acepta 100 dígitos. hecha en lenguaje C.
« Respuesta #1 en: 13 Mayo 2016, 20:43 pm »

Si lo queuieres es que tengan la misma cantidad de digitos despues del punto puedes usar los formato de cadena.

Código
  1. #include<stdio.h>
  2.  
  3. int main() {
  4. double a = 123.45;
  5. double b = 6.5;
  6. printf("%f\n",a);
  7. printf("%f\n",b);
  8. printf("%.2f\n",a);
  9. printf("%.2f\n",b);
  10. printf("%.4f\n",a);
  11. printf("%.4f\n",b);
  12. }

Salida:

Código:
123.450000
6.500000
123.45
6.50
123.4500
6.5000

Si lo que quieres es alinearlos a la derecha y la misma cantidad de decimales necesitas manejar los números a cadenas de texto manualmente.

Podrías Almacenar la cadena del resultado en una variable sin alinear y despues moverla para que este alineada.

Saludos.


En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Calculadora que acepta 100 dígitos. hecha en lenguaje C.
« Respuesta #2 en: 13 Mayo 2016, 21:05 pm »

Hola, Alberto. -
Mil disculpas, me olvide lo principal, te dejo lo que tengo de la función para que veas que lo estoy haciendo todo con el tipo char. - 

Código
  1. void alinear( char operandoUno[], char operandoDos[] ){
  2. char resultado[MAX_COL], *pUno = NULL, *pDos = NULL;
  3. int puntoUno=-1, puntoDos=-1; size_t i = 0, j;
  4. memset( resultado, 0, MAX_COL-1 );
  5.  
  6.  
  7. if((pUno=strchr(operandoUno, '.'))) {puntoUno = pUno-operandoUno;}
  8. if((pDos=strchr(operandoDos, '.'))) {puntoDos = pDos-operandoDos;}
  9.  
  10. if( puntoUno != puntoDos ) {
  11. j = puntoDos - 1;
  12. if( puntoUno > puntoDos ){
  13. if( puntoDos >= 0 ){
  14. resultado[puntoUno] = '.';
  15. }
  16. while( 1 ){
  17. if( isdigit([operandoDos[i])){
  18. resultado[j] = operandoDos[i];
  19. }
  20.  
  21. }
  22. }
  23. else{
  24. printf("\n puntoDos %u > puntoUno %u", puntoDos, puntoUno);
  25. }
  26. }
  27. }
Saludos.
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Calculadora que acepta 100 dígitos. hecha en lenguaje C.
« Respuesta #3 en: 13 Mayo 2016, 21:12 pm »

Aqui dejo un ejemplo para alinear cuando ya los tienes en cadena alineados a la izquiera, te los alinea a la derecha.

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. int main() {
  6. int len; //Longitud
  7. int desplazamiento; //
  8. char *temp,*resultado;
  9. temp = calloc(20,1);
  10. resultado = calloc(30,1);
  11. double a = 123.45;
  12. double b = 6.5;
  13. snprintf(temp,20,"%.2f",a); // Guardamos 123.45 en la cadena alineado a la izquierda
  14. len = strlen(temp); // almacenanamos la longitud de temp
  15. desplazamiento = 30 - len;
  16. memset(resultado,' ',30); // Generamos la variable resultado de forma espaciada para linear la variable temp
  17. memcpy(resultado+desplazamiento,temp,len); // Copiamo temp a resultado pero desplazado; para que este alineado
  18. printf("%.2f\n",a); // Mostramos el resultado sin alinear
  19. printf("%s\n",resultado);
  20. // Repetimos ahora con b
  21. memset(temp,0,20); // Limpiamos el valor de temp
  22. memset(resultado,' ',30); // Limpiamos el valor de resultado
  23. snprintf(temp,20,"%.2f",b);
  24. len = strlen(temp);
  25. desplazamiento = 30 - len;
  26. memcpy(resultado+desplazamiento,temp,len);
  27.  
  28. printf("%.2f\n",b);
  29. printf("%s\n",resultado);
  30. }

Salida:

Código:
123.45
                        123.45
6.50
                          6.50

La primera linea es antes de estar alineado y la segunda linea es ya alineado.

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
calculadora de 30 digitos « 1 2 »
Programación C/C++
peterfly 19 15,071 Último mensaje 2 Julio 2011, 01:22 am
por Nork
Calculadora en Lenguaje Ensamblador - Linux x86 & NASM
ASM
nicoobe 5 23,419 Último mensaje 27 Febrero 2012, 02:33 am
por nicoobe
calculadora en lenguaje ensamblador ¨violacion de segmento¨
ASM
larapam 2 6,401 Último mensaje 12 Mayo 2012, 18:58 pm
por CasiqueCasimiro
Calculadora hecha en C « 1 2 »
Programación C/C++
Caster 14 9,659 Último mensaje 9 Noviembre 2012, 23:34 pm
por barnix456
Calculadora Hecha Por Mi :D Hechen un Vistazo!
Scripting
LeoJ24 2 2,688 Último mensaje 15 Enero 2013, 03:23 am
por zonahurbana
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines