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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  En una variable .....
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: En una variable .....  (Leído 4,375 veces)
Fox_Neo

Desconectado Desconectado

Mensajes: 234



Ver Perfil
En una variable .....
« en: 8 Junio 2010, 17:31 pm »

Hola gracias por leer el post. Estoy haciendo una "calculadora",  cuando quiero hallar logaritmos  indico la base del logaritmo, quiero que si se pulsa la letra e (de logaritmo neperiano) me cargue el valor:
Código:
 base= 2.718281;
El problema que tengo es que no se como declarar la variable base  porque si la declaro como número no me va a cargar la letra e y si la declaro como char no me admite números  :huh:
Gracias.

Salu2.

_____Fox_Neo____


En línea

nicolas_cof


Desconectado Desconectado

Mensajes: 348


Into the Wild


Ver Perfil WWW
Re: En una variable .....
« Respuesta #1 en: 8 Junio 2010, 17:35 pm »

Mmmmm tendrias que poner el codigo, para que sepamos como lo quieres implementar y podamos ayudarte

Salu10.


En línea

M3LiNdR1

Desconectado Desconectado

Mensajes: 131



Ver Perfil WWW
Re: En una variable .....
« Respuesta #2 en: 8 Junio 2010, 17:52 pm »

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.

Código:
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 Desconectado

Mensajes: 234



Ver Perfil
Re: En una variable .....
« Respuesta #3 en: 8 Junio 2010, 18:18 pm »

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.

Código:
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í:
 
Código
  1. float base,exponente,argumento;
  2.   char base2;
  3.   cin>>base;
  4.   cin>>base2;
  5.   if(base2=='e')
  6.   {
  7.       base=2.718281;
  8.   }
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:

Código
  1. case('l'):
  2.   cout<<"\ncalculo de logaritmos"<<endl;
  3.   cout<<"\nintroduce la base del logaritmo"<<endl;
  4.   float base,exponente,argumento;
  5.   cin>>base;
  6.   cout<<"\nintroduce el argumento"<<endl;
  7.   cin>>argumento;
  8.   exponente=(log(argumento))/(log(base));
  9.   cout<<"\nEl logaritmo de "<<argumento<<" de base "<<base<<"es "<<exponente<<endl;
  10.   cout<<"\nQuieres guardar el resultado en la memoria?"<<endl;
  11.   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 Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: En una variable .....
« Respuesta #4 en: 8 Junio 2010, 18:36 pm »

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 Desconectado

Mensajes: 348


Into the Wild


Ver Perfil WWW
Re: En una variable .....
« Respuesta #5 en: 8 Junio 2010, 18:47 pm »

Te dejo una idea de codigo, pero en C, espero que te sirva...

Código:
#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 Desconectado

Mensajes: 234



Ver Perfil
Re: En una variable .....
« Respuesta #6 en: 8 Junio 2010, 19:05 pm »

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. :D

Gracias.


Salu2.
En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: En una variable .....
« Respuesta #7 en: 8 Junio 2010, 19:28 pm »

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 Desconectado

Mensajes: 234



Ver Perfil
Re: En una variable .....
« Respuesta #8 en: 8 Junio 2010, 22:11 pm »

Ok muchas gracias por los consejos  buscaré también por el foro haber lo que encuentro.

Salu2.
En línea

M3LiNdR1

Desconectado Desconectado

Mensajes: 131



Ver Perfil WWW
Re: En una variable .....
« Respuesta #9 en: 8 Junio 2010, 23:46 pm »

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
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines