• Viernes 10 de Mayo de 2024, 09:09

Autor Tema:  Funciones  (Leído 1555 veces)

Checho360

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
Funciones
« en: Jueves 24 de Marzo de 2011, 22:47 »
0
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++
  1.     char metodo;
  2.     cout<<"Introduzca el metodo a utilizar    "; cin>>metodo;
  3.  

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

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Funciones
« Respuesta #1 en: Jueves 24 de Marzo de 2011, 23:41 »
0
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++
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. int main(void)
  7. {
  8.     cout << cos(5) << endl;
  9.     cout << exp(2) << endl;
  10.     return 0;
  11. }
  12.  
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++
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. int main(void)
  7. {
  8.     string metodo;
  9.  
  10.     // Así acepta espacios
  11.     cout << "Inserta una frase de varias palabras > ";
  12.     getline(cin, metodo);
  13.     cout << "La frase ha sido: " << metodo << endl;
  14.  
  15.     // Así no acepta espacios
  16.     cout << "Inserta otra frase y veras que un espacio es final de entrada > ";
  17.     cin >> metodo;
  18.     cout << "La frase ha sido: " << metodo << endl;
  19.  
  20.     return 0;
  21. }
  22.  
Como te digo todo esto viene explicado de lujo en libros (tanto electrónicos como de papel).

Saludos  :hola:

Checho360

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
Re: Funciones
« Respuesta #2 en: Jueves 24 de Marzo de 2011, 23:57 »
0
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++
  1.  
  2.     char metodo[81];int f;
  3.     cout<<"Introduzca el metodo a utilizar    "; cin>>metodo;cout<<endl;
  4.     cout<<"Introduzca la funcion a integrar    "; cin>>f;cout<<endl;
  5.  

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

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Funciones
« Respuesta #3 en: Viernes 25 de Marzo de 2011, 00:12 »
0
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.
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.
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
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use Math::Trig;
  5.  
  6. print("Ingresa una expresion: ");
  7. my $expresion = <>;
  8. print(eval $expresion);
  9. print ("n");
  10.  
Sólo válido para funciones trigonométricas.
« última modificación: Viernes 25 de Marzo de 2011, 00:22 por m0skit0 »

Checho360

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
Re: Funciones
« Respuesta #4 en: Viernes 25 de Marzo de 2011, 00:22 »
0
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:

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!