Programación General > C/C++

 Funciones

(1/1)

Checho360:
Hola, estoy intentando programar algo en C++ y se me ocurrio meterle algo de metodos numericos. El primer problema que me he encontrao es que no se como decirle al ordenador cosas como variables simbolicas,ecuaciones lineales... Es decir sin(x), o exp(x)... Ademas cuando le digo al ordenador:


--- Código: C++ ---    char metodo;    cout<<"Introduzca el metodo a utilizar    "; cin>>metodo; 
Si al ejecutar el programa le doy a la variable metodo mas de una letra se salta los siguientes "cin". Hay alguna manera de decirle al ordenador que pida una palabra en lugar de una letra?

Bueno espero a ver si alguien me puede contestar; un saludo y muchas gracias de antemano!

m0skit0:
Todas esas preguntas las resuelves leyendo un buen libro/tutorial sobre C++, que es donde debes empezar. Igualmente te explico un poco por encima tus dudas:

Para usar funciones, primero debes declararlas e implementarlas o indicar una librería que contenga funciones. Para el caso de funciones matemáticas, tienes cmath. Las usas tal que:


--- Código: C++ ---#include <iostream>#include <cmath> using namespace std; int main(void){    cout << cos(5) << endl;    cout << exp(2) << endl;    return 0;} Para una referencia sobre cmath: http://www.cplusplus.com/reference/clibrary/cmath/

En cuanto a tu segunda duda, estás definiendo metodo como char, es decir, un sólo carácter, es lógico que sólo lea un carácter. Para una palabra o lo que en programación se llama una cadena de caracteres, usa la clase string. Por ejemplo:


--- Código: C++ ---#include <iostream>#include <string> using namespace std; int main(void){    string metodo;     // Así acepta espacios    cout << "Inserta una frase de varias palabras > ";    getline(cin, metodo);    cout << "La frase ha sido: " << metodo << endl;     // Así no acepta espacios    cout << "Inserta otra frase y veras que un espacio es final de entrada > ";    cin >> metodo;    cout << "La frase ha sido: " << metodo << endl;     return 0;} Como te digo todo esto viene explicado de lujo en libros (tanto electrónicos como de papel).

Saludos  :hola:

Checho360:
Hola. En primer lugar muchas gracias por contestar.

Te comento; lo de la cadena de palabras había probao con char[81] y tambien funciona, ahora pruebo con lo que pones de cadenas. En cuanto a lo de la libreria cmath no entiendo muy bien como va el tema... Me parece que esa libreria funciona si yo en el programa le doy a cos(n) o algo asi y le pido n al usuario, pero lo que yo pregunto, que no se como hacer, es pedirle la funcion al usuario, es decir, que este meta exp(x), cos(x^2)... con una variable simbolica (para el tema de programar integrales definidas y esas cosas). Una solucion supongo que podría ser hacer un menu con una serie de funciones y que el usuario escoja una del menu, pero mi idea era que el usuario escogiera cualquiera de las que estan en la libreria. Quedria algo asi:

 
--- Código: C++ ---     char metodo[81];int f;    cout<<"Introduzca el metodo a utilizar    "; cin>>metodo;cout<<endl;    cout<<"Introduzca la funcion a integrar    "; cin>>f;cout<<endl; 
Aunque claro supongo que no se pone int f y esta todo mal....

Por cierto, si me puedes pasar alguno de esos tutoriales... me encantaria. Estoy programando tambien en matlab pero ahi es mucho mas facil; en c++ tienes que hacer todos los pasos tu.

Un saludo y muchisimas gracias por contestar.

m0skit0:

--- Cita de: "Checho360" ---Te comento; lo de la cadena de palabras había probao con char[81] y tambien funciona, ahora pruebo con lo que pones de cadenas.
--- Fin de la cita ---
Ok, pero en C++ se usa string, no char[] o char* (que son más propios de C).


--- Cita de: "Checho360" ---pero lo que yo pregunto, que no se como hacer, es pedirle la funcion al usuario, es decir, que este meta exp(x), cos(x^2)... con una variable simbolica (para el tema de programar integrales definidas y esas cosas). Una solucion supongo que podría ser hacer un menu con una serie de funciones y que el usuario escoja una del menu, pero mi idea era que el usuario escogiera cualquiera de las que estan en la libreria.
--- Fin de la cita ---
Perdona pero sigo siendo incapaz de encontrar esta pregunta en tu anterior post. Si lo hubieras explicado así desde un principio no habría estos malentendidos  :P  ^_^

Eso se llama en programación "evaluar" una expresión. En C++ no se puede hacer de forma sencilla. No es un lenguaje hecho para eso. Otros lenguajes como Perl o LISP (supongo que también Matlab) son capaces de hacer eso que dices. Te dejo un ejemplo en Perl:


--- Código: Perl ---#!/usr/bin/perl use strict;use Math::Trig; print("Ingresa una expresion: ");my $expresion = <>;print(eval $expresion);print ("n"); Sólo válido para funciones trigonométricas.

Checho360:

--- Citar ---Eso se llama en programación "evaluar" una expresión. En C++ no se puede hacer de forma sencilla. No es un lenguaje hecho para eso. Otros lenguajes como Perl o LISP (supongo que también Matlab) son capaces de hacer eso que dices. Te dejo un ejemplo en Perl:

--- Fin de la cita ---

Osea que en C++ me olvido de funciones?... pues valla... Es lo unico que se me ocurre para programar; en matlab lo unico que hago es programar funciones para hallar sus integrales, metodos de aproximacion de raices... y esas cosas xd

Me podrias recomendar algun libro para leer de C++?? para entrar un poco en la logica del programa porque estoy un poco perdido, solo tengo de experiencia con este otro que es mucho mas intuitivo... Por ejemplo aqui utilizas :: en algunas lineas y no se por que.

Un saludo y gracias por contestar!

Navegación

[0] Índice de Mensajes

Ir a la versión completa