Autor
|
Tema: En una variable ..... (Leído 4,375 veces)
|
|
nicolas_cof
Desconectado
Mensajes: 348
Into the Wild
|
Mmmmm tendrias que poner el codigo, para que sepamos como lo quieres implementar y podamos ayudarte
Salu10.
|
|
|
En línea
|
|
|
|
M3LiNdR1
|
Pues pon una condicion de que cuando le pidas la base, sea e o n. Declaras un char y lo lees, si es base e, le insertas el neperiano, si es n, les pides que te inserte el valor de la base. En pseudo. var c: caracter; i: entero; base: real; fvar
leer_caracter(c); si c = "e" entonces base := 2.718281; sino entonces leer_entero(i) base := (real) i;
fsi
|
|
« Última modificación: 8 Junio 2010, 18:01 pm por M3LiNdR1 »
|
En línea
|
Va baixar davant dels meus...ulls molt suaument...sense alterar la quietud de la nit,amb un somriure ple de confiança com sino se li escapes res... C/C++ - Prolog - Java - PHP - Python - SQL - ASP.NET - C# - javascript
|
|
|
Fox_Neo
Desconectado
Mensajes: 234
|
Gracias por las respuestas.Pues pon una condicion de que cuando le pidas la base, sea e o n. Declaras un char y lo lees, si es base e, le insertas el neperiano, si es n, les pides que te inserte el valor de la base. En pseudo. var c: caracter; i: entero; base: real; fvar
leer_caracter(c); si c = "e" entonces base := 2.718281; sino entonces leer_entero(i) base := (real) i;
fsi
Ya se por donde vas pero creo que no me has entendido bien según tu sería así: float base,exponente,argumento; char base2; cin>>base; cin>>base2; if(base2=='e') { base=2.718281; }
El problema de esto es que tienes que introducir dos datos y aparte de saber que primero tienes que introducir una letra y después un númeno ya había pensado en esto pero me pareció una verdadera chapuza El dódigo: case('l'): cout<<"\ncalculo de logaritmos"<<endl; cout<<"\nintroduce la base del logaritmo"<<endl; float base,exponente,argumento; cin>>base; cout<<"\nintroduce el argumento"<<endl; cin>>argumento; exponente=(log(argumento))/(log(base)); cout<<"\nEl logaritmo de "<<argumento<<" de base "<<base<<"es "<<exponente<<endl; cout<<"\nQuieres guardar el resultado en la memoria?"<<endl; cin>>preg;
A ver cuando te pida la base que puedas introducir una letra o un número pero para ello tienes que declarar antes la variable en donde se va a cargar ese valor.
Una pregunta ¿Los strings admiten numeros?? si es así ¿Se podría declarar un string y que después lo lea y dependiendo de si lee la letra 'e' o un numero se pueda cargar el valor en una variable o en otra?? Gracias por las respuestas ;
|
|
« Última modificación: 8 Junio 2010, 18:29 pm por Fox_Neo »
|
En línea
|
|
|
|
Littlehorse
All the world's a stage
Moderador
Desconectado
Mensajes: 2.714
Nie Dam Sie
|
Si, admiten. Si lo quieres hacer con caracteres basta con leer un string y luego convertís los datos que necesitas descartando los que no.
Saludos
|
|
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
nicolas_cof
Desconectado
Mensajes: 348
Into the Wild
|
Te dejo una idea de codigo, pero en C, espero que te sirva... #include <stdio.h> #include <stdlib.h> #include <string.h>
int main( void ) { char *basec; double base;
basec = malloc( 10 * sizeof( char ) );
printf( "Ingresar base: " ); basec = fgets( basec, 10, stdin );
if ( !strncmp( basec, "e", 1 ) ) base = 2.718281; else base = atof( basec );
printf( "%f\n", base );
free( basec );
return 0; } Salu10.
|
|
|
En línea
|
|
|
|
Fox_Neo
Desconectado
Mensajes: 234
|
Si, admiten. Si lo quieres hacer con caracteres basta con leer un string y luego convertís los datos que necesitas descartando los que no.
Saludos
Gracias por la respuesta Littlehorse ¿Por curiosidad se puede hacer de otra manera sin usar strings?
Nicolas_cof gracias por el código, aunque no se como funcionan los strings todavía, creo que ya es hora de aprender algo sobre strings.
Gracias.Salu2.
|
|
|
En línea
|
|
|
|
Littlehorse
All the world's a stage
Moderador
Desconectado
Mensajes: 2.714
Nie Dam Sie
|
Haber puede haber muchas formas, el tema es que la mayoría van a ser algo "chapuzas" como mencionaste. Lo bueno de utilizar cadenas (sea char* o string) es que ganas una flexibilidad que no podes obtener de otra forma, es decir, el input puede ser muy variado, incluso con operaciones u otro tipo de expresiones. Ese es el principal atributo de las cadenas en casos como estos.
Obviamente, el trabajo extra radica en validar y convertir los datos, pero es el precio que hay que pagar por hacer una entrada de datos mas segura.
Si nunca trabajaste con cadenas, te recomiendo que primeras veas las de tipo char, luego puedes ver las del tipo string. El ejemplo que te puso Nico te sirve perfectamente, solo tienes que modificar los headers por las declaraciones correspondientes en C++ y reemplazar las llamadas de malloc y free por new y delete.
Saludos!
|
|
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
Fox_Neo
Desconectado
Mensajes: 234
|
Ok muchas gracias por los consejos buscaré también por el foro haber lo que encuentro.
Salu2.
|
|
|
En línea
|
|
|
|
M3LiNdR1
|
Si lo haces con strings, tendras que pasar los caracteres a enteros.
|
|
|
En línea
|
Va baixar davant dels meus...ulls molt suaument...sense alterar la quietud de la nit,amb un somriure ple de confiança com sino se li escapes res... C/C++ - Prolog - Java - PHP - Python - SQL - ASP.NET - C# - javascript
|
|
|
|
|