• Lunes 29 de Abril de 2024, 13:55

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Checho360

Páginas: 1 2 3 [4]
76
C/C++ / Re: Espacios en salida de datos
« en: Sábado 26 de Marzo de 2011, 00:53 »
Bueno no hace falta que nadie responda justo acabo de probar una cosa y funciona (por si a alguien le interesa):

Código: C++
  1. #include <fstream>
  2. #include <iostream>
  3. #include <string>
  4. using namespace std;
  5. int main(){
  6.     ofstream write ("file.txt");
  7.     write<<"El programa escribe lo que yo quiero";
  8.     write.close();
  9.     ifstream read ("file.txt");string k;
  10.     getline(read,k);
  11.     read.close();
  12.     cout<<k;
  13.     system("pause");
  14. }
  15.  
  16.  

77
C/C++ / Espacios en salida de datos
« en: Sábado 26 de Marzo de 2011, 00:52 »
Hola; estoy intentando almacenar frases y pense en strings pero no funciona. A ver si alguien me dice como almacenar frases para luego sacarlo por pantalla; es decir algo asi:
Código: C++
  1.  
  2. #include <fstream>
  3. #include <iostream>
  4. #include <string>
  5. using namespace std;
  6. int main(){
  7.     ofstream write ("file.txt");
  8.     write<<"El programa escribe lo que yo quiero";
  9.     write.close();
  10.     ifstream read ("file.txt");string k;
  11.     read>>k;
  12.     read.close();
  13.     cout<<k;
  14.     system("pause");
  15. }
  16.  

Un saludo

78
C/C++ / Re: Funciones
« en: Viernes 25 de Marzo de 2011, 00:22 »
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!

79
C/C++ / Re: Funciones
« en: Jueves 24 de Marzo de 2011, 23:57 »
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.

80
C/C++ / Funciones
« en: Jueves 24 de Marzo de 2011, 22:47 »
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!

81
C/C++ / Re: Problema inversa
« en: Miércoles 23 de Marzo de 2011, 22:44 »
En la linea 29 creo que esta mal; deberia ser:

Código: C++
  1. if(k==n-1){cout<<endl;}
  2.  

La explicacion que das de A[5] es perfecta, ahora entiendo bien eso. Hasta ahora pensaba que era como matlab .

Bueno haciendo esos ajustes ya me funciona perfectamente, ahora le queda hacer algunos ajustes de pivoteo y esas cosas a ver que tal, si eso ya comento otra vez con el error para que me ayudes jaja.

Bueno pues lo dicho muchas gracias, y por cierto epa, que estudias??

82
C/C++ / Re: Problema inversa
« en: Miércoles 23 de Marzo de 2011, 22:06 »
Bueno pues ya he probao a cambiar eso y sigue igual. Ahora ademas tengo dos cosas que pasan que no entiendo. Adjunto una imagen para explicarlo: para empezar la primera columna de la matriz A la cambia por la columna 1 de la matriz identidad y despues todo mal claro... no encuentro el error a ver si alguien me puede decir; gracias de antemano!!

img121.imageshack.us/i/sinttuloi.gif/

El nuevo codigo es:

Código: C++
  1. #include <iostream>
  2. using namespace std;
  3. int main ()
  4. /*Este programa pide al usuario una matriz de orden n la diagonaliza por el
  5. metodo de Gauss-Jordan sin pivote y calcula su inversa*/
  6. {
  7.     //Genero las variables, la matriz, la pido al usuario y la muestro por pantalla
  8.     int n;double long t;int w;
  9.     cout<<"Introduzca el orden de la matriz:"<<endl;
  10.     cin>>n;int q=n;
  11.     double A[n-1][(2*n)-1];double B[n-1][n-1];
  12.     for(int i=0;i<n;i++){
  13.             for(int k=0;k<n;k++){
  14.                     cout<<"Introduzca el elemento de la fila "<<i<<" y la columna "<<k<<endl;
  15.                     cin>>A[i][k];
  16.             }
  17.     }
  18.     cout<<endl<<endl;
  19.     for(int i=0;i<n;i++){
  20.             for(int k=0;k<n;k++){
  21.                     cout<<A[i][k]<<" ";
  22.                     if(k==n-1){cout<<endl;}
  23.             }
  24.     }
  25.     //Genero la matriz identidad
  26.     for(int i=0;i<n;i++){
  27.             for(int j=0;j<n;j++){
  28.                     if(j==i){B[i][j]=1.0;}
  29.                     else{B[i][j]=0.0;}
  30.                     }
  31.             }
  32.     //Acoplo la matriz identidad para trabajar con ella
  33.     for(int j=0;j<n;j++){
  34.             int a=0;
  35.             for(int i=n;i<2*n;i++){
  36.                     A[j][i]=B[j][a];
  37.                     a++;
  38.                     }
  39.             }
  40.     //Muestro la matriz con la que voy a trabajar
  41.     cout<<endl<<endl<<"La matriz introducida con la identidad acoplada es:"<<endl<<endl;
  42.     for(int i=0;i<n;i++){
  43.             for(int k=0;k<2*n;k++){
  44.                     cout<<A[i][k]<<" ";
  45.             }
  46.             cout<<endl;
  47.             }
  48.     cout<<endl<<endl;
  49.     //Triangulo la matriz
  50.     for(int i=0;i<n;i++){
  51.             for(int k=i+1;k<n;k++){
  52.                     t=A[k][i]/A[i][i];
  53.                     for(int j=0;j<2*n;j++){
  54.                             A[k][j]=A[k][j]-t*A[i][j];
  55.                     }
  56.             }
  57.     }
  58.         cout<<endl<<endl;
  59.         //Muestro la matriz triangulada
  60.     cout<<"La matriz triangulada es:"<<endl<<endl;
  61.     for(int i=0;i<n;i++){
  62.             for(int k=0;k<2*n;k++){
  63.                     cout<<A[i][k]<<" ";
  64.             }
  65.             cout<<endl;
  66.             }
  67.            
  68.         cout<<endl<<endl;
  69.     //Aplico Gauss-Jordan
  70.     for(int i=0;i<n;i++){
  71.             q--;w=q;
  72.             for(int k=i+1;k<n;k++){
  73.                     w--;
  74.                     t=A[w][q]/A[q][q];
  75.                     for(int j=0;j<=2*n-1;j++){
  76.                             A[w][j]=A[w][j]-t*A[q][j];
  77.                     }
  78.             }
  79.     }
  80.     for(int i=0;i<n;i++){
  81.             for(int j=1;j<2*n;j++){
  82.                         A[i][j]=A[i][j]/A[i][i];
  83.             }
  84.             A[i][i]=1;
  85.     }
  86.     //Muestro la matriz diagonalizada y la inversa:
  87.     cout<<"La matriz diagonalizada y la inversa de A es:"<<endl<<endl;
  88.     for(int i=0;i<n;i++){
  89.             for(int k=1;k<2*n;k++){
  90.                     cout<<A[i][k]<<" ";
  91.             }
  92.             cout<<endl;
  93.             }
  94.    
  95.         system("pause");return 0;
  96. }        
  97.  
  98.  

Por cierto epa tienes toda la razon en el fallo del algoritmo en la parte de dividir por la diagonal. No lo había visto asi que un error menos jejeje.

Muchisimas gracias epa da gusto que haya gente asi ;)

EDITO: epa he modificao el primer programa que puse con este ultimo fallo que has comentao y funciona perfectamente, sin embargo cambiando los bucles por 0:n-1 no funciona (no veo el error), por esos fallos de la imagen. Aver si lo ves tu. Un saludo

83
C/C++ / Re: Problema inversa
« en: Miércoles 23 de Marzo de 2011, 20:51 »
Hola Epa; en primer lugar muchisimas gracias por contestar ya pensaba que nadie lo haría jeje. Voy a probar lo que dices. Ya sabia que las matrices se generan contando desde 0 pero simplemente me parecio mas comodo hacerlo asi, y ademas pensaba que eso no generaria errores, es decir pense: que mas da recorrer la matriz de 0 a n-1 que de 1 a n. De todas formas voy a cambiarlo todo a ver si cambia la cosa. Ahh y lo del algoritmo, creo que esta bien porque lo pense yo y lo programe primero en matlab y ahí funciona de maravilla. Lo unico que a este aun no le añadi cosas como que no tome como pivote un 0 o cosas asi (primero que funcione con esto y luego ya le añado cosas).

Un saludo y muchas gracias por contestar

84
C/C++ / Problema inversa
« en: Miércoles 23 de Marzo de 2011, 00:17 »
Hola muy buenas, estoy programando algunas cosas con C++ y en este caso el calculo de la inversa a partir de una matriz que introduce el usuario. Tengo el mismo algoritmo programado en matlab y funciona perfectamente pero en c++ no lo ejecuta como yo esperaba. En primer lugar no calcula la inversa, y ademas se cuelga si metes orden 4. Espero que alguien me diga por que no funciona. Espero vuestra respuesta un saludo y gracias de antemano!!!


Código: C++
  1. #include <iostream>
  2. using namespace std;
  3. int main ()
  4. /*Este programa pide al usuario una matriz de orden n la diagonaliza por el
  5. metodo de Gauss-Jordan sin pivote*/
  6. {
  7.     //Genero las variables, la matriz, la pido al usuario y la muestro por pantalla
  8.     int n;double long t;int w;
  9.     cout<<"Introduzca el orden de la matriz:"<<endl;
  10.     cin>>n;int q=n+1;
  11.     double A[n][2*n];double B[n][n];
  12.     for(int i=1;i<=n;i++){
  13.             for(int k=1;k<=n;k++){
  14.                     cout<<"Introduzca el elemento de la fila "<<i<<" y la columna "<<k<<endl;
  15.                     cin>>A[i][k];
  16.             }
  17.     }
  18.     cout<<endl<<endl;
  19.     for(int i=1;i<=n;i++){
  20.             for(int k=1;k<=n;k++){
  21.                     cout<<A[i][k]<<" ";
  22.                     if(k==n){cout<<endl;}
  23.             }
  24.     }
  25.     //Genero la matriz identidad
  26.     for(int i=1;i<=n;i++){
  27.             for(int j=1;j<=n;j++){
  28.                     if(j==i){B[i][j]=1;}
  29.                     else{B[i][j]=0;}
  30.                     }
  31.             }
  32.     //Acoplo la matriz identidad para trabajar con ella
  33.     for(int j=1;j<=n;j++){
  34.             int a=1;
  35.             for(int i=n+1;i<=2*n;i++){
  36.                     A[j][i]=B[j][a];
  37.                     a++;
  38.                     }
  39.             }
  40.     //Muestro la matriz con la que voy a trabajar
  41.     cout<<endl<<endl<<"La matriz introducida con la identidad acoplada es:"<<endl<<endl;
  42.     for(int i=1;i<=n;i++){
  43.             for(int k=1;k<=2*n;k++){
  44.                     cout<<A[i][k]<<" ";
  45.             }
  46.             cout<<endl;
  47.             }
  48.     cout<<endl<<endl;
  49.     //Triangulo la matriz
  50.     for(int i=1;i<=n;i++){
  51.             for(int k=i+1;k<=n;k++){
  52.                     t=A[k][i]/A[i][i];
  53.                     for(int j=1;j<=2*n;j++){
  54.                             A[k][j]=A[k][j]-t*A[i][j];
  55.                     }
  56.             }
  57.     }
  58.         cout<<endl<<endl;
  59.         //Muestro la matriz triangulada
  60.     cout<<"La matriz triangulada es:"<<endl<<endl;
  61.     for(int i=1;i<=n;i++){
  62.             for(int k=1;k<=2*n;k++){
  63.                     cout<<A[i][k]<<" ";
  64.             }
  65.             cout<<endl;
  66.             }
  67.            
  68.         cout<<endl<<endl;
  69.     //Aplico Gauss-Jordan
  70.     for(int i=1;i<=n;i++){
  71.             q--;w=q;
  72.             for(int k=i+1;k<=n;k++){
  73.                     w--;
  74.                     t=A[w][q]/A[q][q];
  75.                     for(int j=1;j<=2*n;j++){
  76.                             A[w][j]=A[w][j]-t*A[q][j];
  77.                     }
  78.             }
  79.     }
  80.     for(int i=1;i<=n;i++){
  81.             for(int j=1;j<=2*n;j++){
  82.                     A[i][j]=A[i][j]/A[i][i];
  83.             }
  84.     }
  85.     //Muestro la matriz diagonalizada y la inversa:
  86.     cout<<"La matriz diagonalizada y la inversa de A es:"<<endl<<endl;
  87.     for(int i=1;i<=n;i++){
  88.             for(int k=1;k<=2*n;k++){
  89.                     cout<<A[i][k]<<" ";
  90.             }
  91.             cout<<endl;
  92.             }
  93.    
  94.         system("pause");return 0;
  95. }        
  96.  
  97.  

Páginas: 1 2 3 [4]