UTNianos

Versión completa: [DUDA] Sobre programacion en C
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas mañanas, tardes, noches, depende cuando lo mires..
Estoy empezando en programacion y leyendo un poquito me mande a realizar mi primer programa.
La verdad que el programa es demasiado basico, solo calcula la Ley de Ohm dependiendo los datos que ingreses.
Tengo un par de dudas respecto al programa:
1. Como haria para que el usuario ingrese, por ejemplo, un dato con notacion cientifica.
2. Como haria para que el compilador me muestre el resultado en notacion cientifica.
3. Por ultimo, como haria para que el programa vuelva a preguntarte "Que desea calcular?" Osea, mediante un goto o algo similar.

Desde ya gracias por tomarse el tiempo de leer y darme una mano.

Spoiler: Mostrar

#include <iostream>
using namespace std;

int main(){

double resistencia;
double tension;
double corriente;
int x;
cout<<"Que desea calcular? TENSION=1 CORRIENTE=2 RESISTENCIA=3\n"<<endl;
cin>> x;

if(x==1){
cout<<"Ingrese el valor de la CORRIENTE y la RESISTENCIA (separadas por un espacio)\n"<<endl;
cin>> corriente >> resistencia;
cout<< "El valor de la TENSION es de:" << corriente*resistencia <<"\n";}

if(x==2){
cout<<"Ingrese el valor de la TENSION y la RESISTENCIA (separadas por un espacio)\n"<<endl;
cin>> tension >> resistencia;
cout<<"El valor de la CORRIENTE es de:" << tension/resistencia<<"\n";}

if(x==3){
cout<<"Ingrese el valor de la TENSION y la CORRIENTE (separadas por un espacio)\n"<<endl;
cin>> tension >> corriente;
cout<<"El valor de la RESISTENCIA es de:" << tension/corriente<<"\n";}

return 0;}

Hasta lo que yo se, C no funciona con notacion cientifica, tendrias que hacerlo de forma manual (hacer vos el calculo e imprimirlo como string y no como numero).
El goto creo que no esta en C, lo que tendrias que hacer es hacer un menu que tire opciones de lo q puede hacer y q al seleccionar lo haga, y que eso este dentro de un while y que se repita hasta que seleccione la opcion salir.

No se me ocurre otra cosa para lo que sugeris, espero que te sirva.

PD: si vas a usar ifs, te conviene anidarlos (if - else) y en el else poner "else if" y ahi abrir otro. Segun lo que vos estas haciendo, si el usuario selecciona 1 hace lo del primer if, dsps mira el segundo y dsps el tercero, para que revisar todos si ya entro en el primero?
Igual para menues de este estilo te conviene usar el switch, que evalua esto de forma mas simple.

Saludos.
Para ingresar en notacion cientifica, hay que ingresar el numero en notacion cientifica =P

Ej: 1000e+99 en la entrada del usuario significa 1000*10^99 si mal no recuerdo

Para la salida ni idea... tendría que googlearlo
el format de printf / sprintf lo solucionaba si no le pifio....

Convertis el double o float en un "char*" y lo imprimis en pantalla...

pd: no uses goto....

Si estas en aplicaciones de consola, hace un while (char_salida != CHAR_SALIDA)... y por un define ponele a CHAR_SALIDA el caracter de escape que le quieras poner a tu bucle principal...

No se si se entiende...

te queda dando vueltas en un while hasta que vos no apretes la tecla de salida, que podria ser por ejemplo la "Q"

ah si, si usas el cout te lo imprime en notacion cientifica directamente (si no le pifio)
Pero tengo entendido que el while se usa para verificar si una condicion es falsa o no, osea 2 variables, yo en este caso necesitaria 3 Resistencia, Tension y Corriente, si me equivoco agradeceria que me muestren una parte del codigo de como seria con 3 variables.
A ver si ahi funca


#include <iostream>
using namespace std;

int main(){

double resistencia;
double tension;
double corriente;
int x;
char salir = 'a';
while (salir != 'q')
{
cout<<"Que desea calcular? TENSION=1 CORRIENTE=2 RESISTENCIA=3\n"<<endl;
cin>> x;

if(x==1){
cout<<"Ingrese el valor de la CORRIENTE y la RESISTENCIA (separadas por un espacio)\n"<<endl;
cin>> corriente >> resistencia;
cout<< "El valor de la TENSION es de:" << corriente*resistencia <<"\n";}

if(x==2){
cout<<"Ingrese el valor de la TENSION y la RESISTENCIA (separadas por un espacio)\n"<<endl;
cin>> tension >> resistencia;
cout<<"El valor de la CORRIENTE es de:" << tension/resistencia<<"\n";}

if(x==3){
cout<<"Ingrese el valor de la TENSION y la CORRIENTE (separadas por un espacio)\n"<<endl;
cin>> tension >> corriente;
cout<<"El valor de la RESISTENCIA es de:" << tension/corriente<<"\n";}
cout<<endl<<"Desea Salir (Si presiona la < q > es que si quiere salir, sino presione otra tecla)"<<endl;
cin>>salir;
}
return 0;}



pensalo un poco, que rompiendote la cabeza contra el monitor es la unica forma en la que se aprende a programar.

pd: no tabule porque lo escribi sobre la marcha...
(21-10-2013 16:05)sebasthian777 escribió: [ -> ]A ver si ahi funca
Spoiler: Mostrar


#include <iostream>
using namespace std;

int main(){

double resistencia;
double tension;
double corriente;
int x;
char salir = 'a';
while (salir != 'q')
{
cout<<"Que desea calcular? TENSION=1 CORRIENTE=2 RESISTENCIA=3\n"<<endl;
cin>> x;

if(x==1){
cout<<"Ingrese el valor de la CORRIENTE y la RESISTENCIA (separadas por un espacio)\n"<<endl;
cin>> corriente >> resistencia;
cout<< "El valor de la TENSION es de:" << corriente*resistencia <<"\n";}

if(x==2){
cout<<"Ingrese el valor de la TENSION y la RESISTENCIA (separadas por un espacio)\n"<<endl;
cin>> tension >> resistencia;
cout<<"El valor de la CORRIENTE es de:" << tension/resistencia<<"\n";}

if(x==3){
cout<<"Ingrese el valor de la TENSION y la CORRIENTE (separadas por un espacio)\n"<<endl;
cin>> tension >> corriente;
cout<<"El valor de la RESISTENCIA es de:" << tension/corriente<<"\n";}
cout<<endl<<"Desea Salir (Si presiona la < q > es que si quiere salir, sino presione otra tecla)"<<endl;
cin>>salir;
}
return 0;}



pensalo un poco, que rompiendote la cabeza contra el monitor es la unica forma en la que se aprende a programar.

pd: no tabule porque lo escribi sobre la marcha...

Ojo, yo no pretendia que me digan como mejorar el codigo, esto no es un trabajo ni nada parecido, solamente me mande conociendo pooc y queria que me recalquen los errores.
Y si, como todo en la vida la unica manera de aprender es mandarse :F
Ahora entendi mas o menos como se usa el while, gracias seba!

Ahora si, queda como queria y ahi encontre la manera de agregarle las notaciones cientificas y las potencias.
Dentro de la sentencia cin y delante del resultado se escribe SCIENTIFIC

Spoiler: Mostrar

#include <iostream>
#include <iomanip>
using namespace std;

int main(){
double resistencia;
double tension;
double corriente;
int x;
char salir = 'q';
while (salir != 'n')
{
cout<<"Que desea calcular? TENSION=1 CORRIENTE=2 RESISTENCIA=3
"<<endl;
cin>> x;
if(x==1){
cout<<"Ingrese el valor de la CORRIENTE y la RESISTENCIA (separadas por un espacio)
"<<endl;
cin>> corriente >> resistencia;
cout<< "El valor de la TENSION es de:" << scientific <<corriente*resistencia <<"
";}
if(x==2){
cout<<"Ingrese el valor de la TENSION y la RESISTENCIA (separadas por un espacio)
"<<endl;
cin>> tension >> resistencia;
cout<<"El valor de la CORRIENTE es de:" << scientific <<tension/resistencia<<"
";}
if(x==3){
cout<<"Ingrese el valor de la TENSION y la CORRIENTE (separadas por un espacio)
"<<endl;
cin>> tension >> corriente;
cout<<"El valor de la RESISTENCIA es de:" << scientific <<tension/corriente<<"
";}
cout<<endl<<"Desea calcular otro valor? SI=s NO=n
)"<<endl;
cin>>salir;
}
return 0;}



El programa es una estupidez, pero me siento realizado =)

Ah, y hay que agregar la libreria <iomanip> para manipular el cin.
Sigo aceptando sugerencias y consejos para futuro =P
Gracias chicos!
ah mira... te juro que no sabia lo de cientific... muchas gracias por el dato... despues lo probare.

En cuanto a lo anterior, no te lo dije para cagarte a pedo =P fue solo decirte que te vas a tener que dar contra el monitor xD...

Sigo insistiendo, podes usar por ejemplo el sprintf tambien... despues chusmealo... esta bueno formatear strings....

un ejemplo muy boludo seria...


#include <iostream>
#include <iomanip>
#include <stdio.h>
using namespace std;

int main()
{
char * buffer = new char[1024];
sprintf(buffer, "el string: %s - el entero: %d - el flotante: %f", "Soy String", 12, 12.4f);

cout<< buffer<<endl;
return 0;
}


Ejecta ese codigo directo desde el foro...
URLs de referencia