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
Ir a la versión completa