Autor
|
Tema: ayuda con mi source (Leído 2,634 veces)
|
0x3c
Desconectado
Mensajes: 108
learning, making mistakes, having fun
|
Hola un usuario de este foro($Edu$) me sugirio que hiciera una calculadora, asi que me puse a practicar y el codigo resultante fue este: #include <stdio.h>
int main() { float val1,val2; /* declaro las variables que almacenaran los numeros/valores con que se va a trabajar */ char c; /* declaro la variable que almacenara el signo/operador '+','*','/' o '-' */ char op; /* declaro la variable que usare para las opciones */ puts("Elige una opcion:"); /* le digo al usuario cuales son las opciones disponibles */ puts("1 = Sumar"); puts("2 = Restar"); puts("3 = Multiplicar"); puts("4 = Dividir"); op=getchar(); /* le paso los parametros de la variable o a la funcion getchar() */ if(op == '1'); /* si o igual a '1' */ puts("As elegido sumar"); /* informo al usuario la opcion que ha elegido */ scanf("%f%c%f",&val1,&c,&val2); /* almaceno los numeros/valores y el signo operador */ if(c == '+'); /* lee el signo/operador y si es igual a + que haga lo de abajo */ printf("%f",val1 + val2); /* y finalmente realizo la operacion elegida he imprimo el resultado */ op=getchar(); if(op == '2'); /* lo mismo que arriba xD */ puts("As elegido restar!"); scanf("%f%c%f",&val1,&c,&val2); printf("%f",val1 - val2); op=getchar(); if(op == '3'); puts("As elegido multiplicar!"); scanf("%f%c%f",&val1,&c,&val2); if(c == '*'); printf("%f",val1 * val2); op=getchar(); if(op == '4'); puts("As elegido dividir!"); scanf("%f%c%f",&val1,&c,&val2); if(c == '/'); printf("%f",val1 / val2); return(0); }
pero ahora tengo un problema...cuando se muestran las opciones todo anda bien pero luego se vuerve un desastre... 1 = Sumar 2 = Restar 3 = Multiplicar 4 = Dividir 1 As elegido sumar 22 + 30 21.999986As elegido restar!
ayuda y gracias de ante mano
|
|
« Última modificación: 2 Enero 2013, 17:46 pm por n3t_3rr0r »
|
En línea
|
Si Vis Pacem, Para Bellum.Another Legend Has Fallen
|
|
|
avesudra
Desconectado
Mensajes: 724
Intentando ser mejor cada día :)
|
Tiene toda la pinta de ser por que se ha llenado el buffer y se ha vuelto loco . O limpias el buffer de esta manera: while(c =getchar() != '\n'&& c != EOF );
Poniendo el código anterior antes de cada scanf. O usando fgets + sscanf(para evitar que se llene el buffer)(Este código lo puso Eternal Idol en su momento): #include <stdio.h> int main(int argc, char **argv) { int opcion; do { char linea[80]; fgets(linea , sizeof(linea ), stdin ); } while(opcion!=0); return 0; }
Revisa este post que está en las chinchetas: |Lo que no hay que hacer en C/C++. Nivel basico|
|
|
« Última modificación: 2 Enero 2013, 19:05 pm por avesudra »
|
En línea
|
Regístrate en
|
|
|
0x3c
Desconectado
Mensajes: 108
learning, making mistakes, having fun
|
bueno gracias por hecharle un ojo a mi code reduje el codigo tanto como pude y todavia sigo teniendo problemas :/ quite las lineas donde aparecia getchar() y nada le quite los ; a las sentencias que contiene condicionales(eso tambien era un error) y nada....seguire tratando hasta que el codigo me funcione tomare tu consejo...
saludos
|
|
|
En línea
|
Si Vis Pacem, Para Bellum.Another Legend Has Fallen
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
bueno gracias por hecharle un ojo a mi code reduje el codigo tanto como pude y todavia sigo teniendo problemas :/ quite las lineas donde aparecia getchar() y nada le quite los ; a las sentencias que contiene condicionales(eso tambien era un error) y nada....seguire tratando hasta que el codigo me funcione tomare tu consejo...
Pues quitando los getchar, los punto y coma y "poniendo las llaves a los if" funciona ..... eso sí, le añadí un else por si se equivocan de signo y poco más:#include <stdio.h> int main() { float val1,val2; /* declaro las variables que almacenaran los numeros/valores con que se va a trabajar */ char c; /* declaro la variable que almacenara el signo/operador '+','*','/' o '-' */ char op; /* declaro la variable que usare para las opciones */ puts("Elige una opcion:"); /* le digo al usuario cuales son las opciones disponibles */ puts("1 = Sumar"); puts("2 = Restar"); puts("3 = Multiplicar"); puts("4 = Dividir"); op=getchar(); /* le paso los parametros de la variable o a la funcion getchar() */ if(op == '1'){/* si o igual a '1' */ puts("As elegido sumar"); /* informo al usuario la opcion que ha elegido */ scanf("%g%c%g",&val1,&c,&val2); /* almaceno los numeros/valores y el signo operador */ if(c == '+') /* lee el signo/operador y si es igual a + que haga lo de abajo */ printf("%g",val1 + val2); /* y finalmente realizo la operacion elegida he imprimo el resultado */ else puts("Error en el signo"); } if(op == '2'){/* lo mismo que arriba xD */ puts("As elegido restar!"); scanf("%g%c%g",&val1,&c,&val2); if(c == '-') printf("%g",val1 - val2); else puts("Error en el signo"); } if(op == '3'){ puts("As elegido multiplicar!"); scanf("%g%c%g",&val1,&c,&val2); if(c == '*') printf("%g",val1 * val2); else puts("Error en el signo"); } if(op == '4'){ puts("As elegido dividir!"); scanf("%g%c%g",&val1,&c,&val2); if(c == '/') printf("%g",val1 / val2); else puts("Error en el signo"); } return(0); }
Saluditos!. ......
|
|
|
En línea
|
|
|
|
0x3c
Desconectado
Mensajes: 108
learning, making mistakes, having fun
|
muchisimas gracias! de verdad funciono ahora tengo unas dudas sobre las modificaciones que hiciste.. 1- ese { que usaste lo usaste por que es necesario para el condicional? 2- cambiaste el indentificador de la variable es decir cambiaste pusiste %g en vez de %f, por que? y como esto no afecta el funcionamiento del code? scanf("%g%c%g",&val1,&c,&val2);
saludos y gracias
|
|
|
En línea
|
Si Vis Pacem, Para Bellum.Another Legend Has Fallen
|
|
|
durasno
Desconectado
Mensajes: 373
|
1- ese { que usaste lo usaste por que es necesario para el condicional?
Código:
if(op == '1'){ No es de mala onda pero en cualquier libro, nota, etc. acerca de C explica el uso del condicional if, cuando se abre las llaves y cuando se puede omitir 2- cambiaste el indentificador de la variable es decir cambiaste pusiste %g en vez de %f, por que? y como esto no afecta el funcionamiento del code? Con solo googlear: %g: Scan a floating-point number in either normal or exponential notation. Saludos
|
|
« Última modificación: 3 Enero 2013, 07:16 am por durasno »
|
En línea
|
Ahorrate una pregunta, lee el man
|
|
|
0x3c
Desconectado
Mensajes: 108
learning, making mistakes, having fun
|
bueno el problema del condicional es que estoy siguiendo un libro y no he legado a esa parte todavia(ha sido mas por pereza que por falta de tiempo) pero seguire practicando...y seguire publicando los codigos, dudas y preguntas que tenga en este foro que por cierto me alegra que sea tan activo saludos
|
|
|
En línea
|
Si Vis Pacem, Para Bellum.Another Legend Has Fallen
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
|
|
« Última modificación: 3 Enero 2013, 17:33 pm por leosansan »
|
En línea
|
|
|
|
0x3c
Desconectado
Mensajes: 108
learning, making mistakes, having fun
|
bueno gracias por aclararme las dudas que tenia...las tendre pendiente para la proxima...
saludos
|
|
|
En línea
|
Si Vis Pacem, Para Bellum.Another Legend Has Fallen
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda tmpgenc (source range)
Multimedia
|
petar221
|
3
|
1,911
|
10 Septiembre 2004, 23:39 pm
por Songoku
|
|
|
AYUDA CON EL COUNTER STRIKE _ SOURCE
Juegos y Consolas
|
wilder
|
2
|
1,984
|
3 Diciembre 2004, 16:02 pm
por jath_83
|
|
|
AYUDA CON EL COUNTER STRIKE SOURCE
Juegos y Consolas
|
juanjorome
|
0
|
1,330
|
28 Diciembre 2004, 02:55 am
por juanjorome
|
|
|
ayuda con el counter-strike source
Juegos y Consolas
|
top_kart_14
|
5
|
1,997
|
1 Abril 2005, 03:57 am
por DJ46
|
|
|
[Source] AuTomsn 2.0 Ayuda con dependencias
Programación Visual Basic
|
[Zero]
|
5
|
2,096
|
29 Diciembre 2007, 16:55 pm
por [Zero]
|
|