• Viernes 4 de Julio de 2025, 09:39

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
51
Matlab / Re: Funcion reflejo en matlab (Procesamiento de Imagenes)
« en: Miércoles 30 de Marzo de 2011, 15:41 »
Hola, si lo que preguntas es una funcion que genere a partir de una matriz A, una matriz B reflejo vertical de A (la misma pero al reves), creo que seria:

Código: Matlab M
  1. function [B] = reflejo_vertical (A)
  2. %Programa que recibe una matriz A y devuelve su reflejo vertical
  3. [fil,col]=size(A);
  4. B=zeros(fil,col);
  5. t = fil;
  6.  
  7. for i=1:fil
  8.     B(t,:)=A(i,:);
  9.     t=t-1;
  10. end
  11. end
  12.  

Si te he entendido mal dimelo !!

Un saludo!!

52
Matlab / Re: Dibujar segmento
« en: Miércoles 30 de Marzo de 2011, 15:05 »
No entiendo muy bien que es lo que preguntas; si te explicas mejor quizás te pueda ayudar.

53
C/C++ / Re: Herencia de una clase
« en: Miércoles 30 de Marzo de 2011, 00:46 »
Cita de: "Amilius"
Para almacenar la suma en "vector" basta sobrecargar el constructor copia de "vector" para poder recibir const matrix&. Además tienes que agregar un constructor sin párametros "default constructor" para "matrix" y también es buena idea si las clases hijas tienen uno.

Supongo que todo esto es simple ejercicio académico, por que es un poco absurdo tener esas dos clases hijas, puesto que tienen el mismo comportamiento y miembros de la clase padre.

ostia pues tienes razón jajajja si le declaro el default constructor luego me deja sobrecargar el constructor copia de "vector" y luego claro ya puedo. Pero no entiendo por que hay que darle esa declaración de constructor default para que luego me deje sobrecargar el copia. Me puedes decir??

Ah,y por cierto, si es un ejercicio de aprendizaje.

Un saludo y muchisimas gracias!

54
C/C++ / Herencia de una clase
« en: Martes 29 de Marzo de 2011, 21:42 »
Hola; estoy creando otro programa probando con eso de la herencia y tengo una duda acerca de una cosa. El código es el siguiente:

Código: C++
  1. #include <iostream>
  2. #include <cmath>
  3. #define MAX_SIZE 10
  4. using namespace std;
  5.  
  6. class matrix {
  7.       public:
  8.              int col, fil;
  9.              double s[MAX_SIZE][MAX_SIZE];
  10.              matrix (int n, int m);
  11.              matrix(const matrix& A);
  12.              matrix operator = (matrix A);
  13.              matrix operator + (matrix A);
  14.              matrix scan_matrix (void);
  15.              void print_matrix (void);
  16.              ~matrix(){}
  17.       };
  18.      
  19. matrix :: matrix(int n, int m){
  20.        if(n>MAX_SIZE){
  21.                       cerr<<"ERROR: el numero de filas introducidas es mayor del permitido";
  22.                       fil=MAX_SIZE;
  23.                       }
  24.        else{
  25.             fil=n;
  26.             }
  27.        if(m>MAX_SIZE){
  28.                       cerr<<"ERROR: el numero de columnas introducidas es mayor del permitido";
  29.                       col=MAX_SIZE;
  30.                       }
  31.        else{
  32.              col=m;
  33.             }
  34. }
  35.  
  36. matrix :: matrix (const matrix& A){
  37.        fil=A.fil;col=A.col;
  38.        for(int i=0;i<A.fil;i++){
  39.                for(int j=0;j<A.col;j++){
  40.                        s[i][j]=A.s[i][j];
  41.                        }
  42.                }
  43. }
  44.  
  45. matrix matrix :: operator + (matrix A){
  46.        if(col!=A.col || fil != A.fil){
  47.                      cerr<<"ERROR: el numero de filas o columnas de las matrices introducidas no coinciden";
  48.                      }
  49.        matrix C(A.fil,A.col);
  50.        for(int i=0;i<A.fil;i++){
  51.                for (int j=0;j<A.col;j++){
  52.                    C.s[i][j]=s[i][j]+A.s[i][j];
  53.                }
  54.        }
  55.        return C;
  56. }
  57.  
  58. matrix matrix ::operator = (matrix A){
  59.        fil = A.fil; col = A.col;
  60.        for(int i=0;i<A.fil;i++){
  61.                 for (int j=1;j<A.col;j++){
  62.                 s[i][j]=A.s[i][j];
  63.                 }
  64.        }
  65. }
  66.  
  67. matrix matrix :: scan_matrix (void){
  68.        for (int i=0;i<fil;i++){
  69.            for(int j=0;j<col;j++){
  70.                    cout<<"Introduzca el coef "<<i<<" "<<j<<"n";
  71.                    cin>>s[i][j];
  72.                    }
  73.            }
  74. }
  75.  
  76. void matrix :: print_matrix (void){
  77.      for (int i=0;i<fil;i++){
  78.          for(int j=0;j<col;j++){
  79.                  cout<<"El coef "<<i<<" "<<j<<" = "<<s[i][j]<<"n";
  80.                  }
  81.          }
  82. }
  83.  
  84. class square_matrix : public matrix {
  85.       public:
  86.              square_matrix(int size) : matrix (size,size) {}
  87.              ~square_matrix () {}
  88. };
  89.  
  90. class vector : public matrix {
  91.       public:
  92.              vector (int size) : matrix(1,size) {}
  93.              ~vector () {}
  94. };
  95.  
  96. int main (){
  97.     matrix A(2,2);square_matrix B(2);vector C(2);vector D(2);
  98.     A.scan_matrix();B.scan_matrix();C.scan_matrix();D.scan_matrix();
  99.     matrix F=(A+B);F.print_matrix();
  100.     matrix E(C+D);
  101.     system("pause");
  102. }
  103.  
  104.  

Si os fijais en las ultimas lineas sumo dos vectores y esta suma la tengo que almacenar en un objeto de la clase matrix. Es logico porque arriba a la hora de declarar las funciones tengo escrito "matrix operator", lo cual dice que devuelve un objeto del tipo "matrix". Me preguntaba si se podría modificar el código de alguna manera para poder almacenar la suma en un objeto del tipo "vector" en lugar del tipo "matrix".

Un saludo!!

55
C/C++ / Re: Error en contructor de copia
« en: Martes 29 de Marzo de 2011, 20:15 »
Cita de: "m0skit0"
Es que el constructor copia es matrix::matrix(const matrix& A) y no matrix::matrix(matrix& A) (léete esto de principio a fin).


Bueno pues así es  entonces; esa es la forma de crear el constructor copia y lo tenía mal declarado...

Un saludo y muchas gracias a todos!

56
C/C++ / Re: Error en contructor de copia
« en: Martes 29 de Marzo de 2011, 19:08 »
Cita de: "m0skit0"
El error que te da es porque no tienes constructor por defecto. Es decir, declaras

Código: C++
  1. matrix D
  2.  
pero esto no lo puedes hacer porque tu constructor pide un argumento.

Saludos.

Si pero de todas formas si fuera por eso no debería de funcionar al poner esto ? :

Código: C++
  1.     matrix D(n);
  2.     D = A + B;
  3.  

Es que así tampoco funciona

57
C/C++ / Re: Error en contructor de copia
« en: Martes 29 de Marzo de 2011, 18:36 »
Bueno pues tienes razón Epa; modificando eso para ponerle un const compila y funciona perfectamente:

Código: C++
  1. #include <iostream>
  2. using namespace std;
  3. #define MAX_SIZE 10
  4.  
  5. class matrix{
  6.       public:
  7.              int size; double s[MAX_SIZE];
  8.              matrix (int n);
  9.              ~matrix() {}
  10.              int test_matrix (int a);
  11.              matrix scan_matrix (void);
  12.              matrix operator + (matrix A);
  13.              void print_matrix (void);
  14.              matrix (const matrix& A);//<---------------Aqui esta la declaracion
  15. };
  16.  
  17. matrix::matrix(const matrix& A){ //<-------------Aqui esta la implementación
  18.        size = A.size;
  19.        for (int i=0;i<A.size;i++) s[i]=A.s[i];
  20.        }
  21.  
  22. matrix :: matrix (int n){
  23.        size = test_matrix(n);
  24.        }
  25.  
  26. int matrix :: test_matrix (int a){
  27.     if(a>MAX_SIZE){
  28.                    cerr<<"Demasiados elementosn";
  29.                    a=MAX_SIZE;
  30.                    }
  31.     return a;
  32. }
  33.  
  34. matrix matrix :: scan_matrix (void){
  35.        for(int i=0;i<size;i++){
  36.        cout<<"Ingresa el coef "<<i<<"n";cin>>s[i];
  37.        }
  38. }
  39.  
  40. matrix matrix :: operator + (matrix A){
  41.      if(A.size!=size){
  42.                       cerr<<"Los vectores han de ser del mismo orden";
  43.                       }
  44.      matrix C (A.size);
  45.      for(int i=0;i<A.size;i++){
  46.             C.s[i]=s[i]+A.s[i];}
  47.      return C;
  48.      }
  49.  
  50. void matrix :: print_matrix (void){
  51.      for(int i= 0;i<size;i++){
  52.              cout<<"Suma no "<<i<<" = "<<s[i]<<"n";
  53.              }
  54.      }
  55.  
  56. int main(){
  57.     int n;int m;
  58.     cout<<"Introduzca el orden del vector1n";
  59.     cin>>n;
  60.     matrix A(n);
  61.     A.scan_matrix();
  62.     cout<<"Introduzca el orden del vector2n";
  63.     cin>>m;
  64.     matrix B(m);
  65.     B.scan_matrix();
  66.    
  67.     matrix D = A + B;
  68.     matrix E(A+B);
  69.    
  70.     D.print_matrix ();
  71.     E.print_matrix ();
  72.    
  73.     system("pause");return 1;
  74. }
  75.  
  76.  
  77.  

A ver si alguien puede decir por que pasa esto :S

Un saludo!!

58
C/C++ / Re: Error en contructor de copia
« en: Martes 29 de Marzo de 2011, 18:29 »
OK jajaja a ver entonces si alguien dice; de momento cambio lo que tu dices de const en el copia jaja

Un saludo y muchas gracias por contestar ;)

59
C/C++ / Re: Error en contructor de copia
« en: Martes 29 de Marzo de 2011, 18:08 »
Hola Epa. Tienes razón en ese sitio ni siquiera utilizo el constructor copia, pero de todas formas, cuando quito las lineas 14 a 21 (declaración de constructor copia e implementación) el programa funciona perfectamente; por qué es eso??

Un saludo!!

60
C/C++ / Re: Error en contructor de copia
« en: Martes 29 de Marzo de 2011, 17:44 »
Aqui estan los errores:



Uploaded with ImageShack.us

61
C/C++ / Re: Error en contructor de copia
« en: Martes 29 de Marzo de 2011, 17:04 »
Cita de: "m0skit0"
Fíjate que el constructor de copia no recibe matrix A, sino matrix& A.

Pero si no le pongo el & tampoco compila :S

62
C/C++ / Re: Consulta en clases
« en: Martes 29 de Marzo de 2011, 17:03 »
No no pero me referia a que había puesto un código equivocado; la duda es del código acutal jeje

63
C/C++ / Re: Consulta en clases
« en: Martes 29 de Marzo de 2011, 16:51 »
Bueno pues muchas gracias, ya cambio yo ahora como tu dices. Por cierto, tengo por ahí otro post  con un error a la hora de poner el constructor copia, quizas me podrias echar un cable ejejje :P

Un saludo!!

64
C/C++ / Re: Error en contructor de copia
« en: Martes 29 de Marzo de 2011, 15:20 »
Bueno me había confundido de código

65
C/C++ / Re: Consulta en clases
« en: Martes 29 de Marzo de 2011, 14:47 »
Cita de: m0skit0
No sé si no me explico bien o qué... Sigues mezclando implementaciones dentro y fuera de la clase.

Dentro de la clase:
Código: C++
  1. matrix (int n){
  2.                             size=test_matrix(n);
  3.              }
  4.  

Fuera de la clase:
Código: C++
  1. int matrix :: test_matrix (int a){
  2.     if(a>MAX_SIZE){
  3.                    cerr<<"Demasiados elementosn";
  4.                    a=MAX_SIZE;
  5.                    }
  6.     return a;
  7. }
  8.  

Pero como hago para darle el valor correspondiente a size con un programa externo ?? la unica forma que se me ocurre es esa que tengo ahí :S ; ah y por cierto esta tarde me pondré un poco con el private a ver que tal :P

Un saludo!!

66
C/C++ / Re: Consulta en clases
« en: Martes 29 de Marzo de 2011, 13:18 »
Bueno, pues haciendote caso me quedo esto:

Código: C++
  1. #include <iostream>
  2. using namespace std;
  3. #define MAX_SIZE 10
  4.  
  5. class matrix{
  6.       public:
  7.              int size; double s[MAX_SIZE];
  8.              matrix (int n){
  9.                             size=test_matrix(n);
  10.              }
  11.              ~matrix() {}
  12.              int test_matrix (int a);
  13.              matrix scan_matrix (void);
  14.              matrix operator + (matrix A);
  15.              void print_matrix (void);
  16. };
  17.  
  18. int matrix :: test_matrix (int a){
  19.     if(a>MAX_SIZE){
  20.                    cerr<<"Demasiados elementosn";
  21.                    a=MAX_SIZE;
  22.                    }
  23.     return a;
  24. }
  25.  
  26. matrix matrix :: scan_matrix (void){
  27.        for(int i=0;i<size;i++){
  28.        cout<<"Ingresa el coef "<<i<<"n";cin>>s[i];
  29.        }
  30. }
  31.  
  32. matrix matrix :: operator + (matrix A){
  33.      if(A.size!=size){
  34.                       cerr<<"Los vectores han de ser del mismo orden";
  35.                       }
  36.      matrix C (A.size);
  37.      for(int i=0;i<A.size;i++){
  38.             C.s[i]=s[i]+A.s[i];}
  39.      return C;
  40.      }
  41.  
  42. void matrix :: print_matrix (void){
  43.      for(int i= 0;i<size;i++){
  44.              cout<<"Suma no "<<i<<" = "<<s[i]<<"n";
  45.              }
  46.      }
  47.  
  48. int main(){
  49.     int n;int m;
  50.     cout<<"Introduzca el orden del vector1n";
  51.     cin>>n;
  52.     matrix A(n);
  53.     A.scan_matrix();
  54.     cout<<"Introduzca el orden del vector2n";
  55.     cin>>m;
  56.     matrix B(m);
  57.     B.scan_matrix();
  58.    
  59.     matrix D = A + B;
  60.    
  61.     D.print_matrix ();
  62.    
  63.     system("pause");return 1;
  64. }
  65.  
  66.  

Lo unico lo de public y private.. es que si pongo algo en private luego no puedo acceder a ello desde otras partes del programa y entonces tendría que crear otra función para poder acceder a ella ?? es que no entiendo muy bien

Un saludo y muchísimas gracias por contestar!!

67
C/C++ / Re: Problema inversa
« en: Lunes 28 de Marzo de 2011, 22:12 »
Por cierto, en su momento se me olvido... pero por si a alguien le interesa quedo:

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][(2*n)];double B[n][n];
  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+1<<" y la columna "<<k+1<<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.     int u=2;
  51.     for(int i=0;i<n;i++){
  52.             for(int k=i+1;k<n;k++){
  53.                     //Activo este bucle para evitar que el programa divida por 0 (el pivote sea 0)
  54.                     if(A[i][i]==0){
  55.                                        double sum =0.0;
  56.                                        for(int x=i+1;x<n;x++){
  57.                                                if(A[x][i]!=0){sum=1;break;}
  58.                                                sum=sum+A[x][i];
  59.                                                }
  60.                                        if(sum==0){u=1;break;}
  61.                                        }
  62.                     if(u==1){break;}
  63.                     int a=i+1;
  64.                     //Permutamos las filas mientras el pivote sea 0
  65.                     while(A[i][i]==0){
  66.                                      for(int s=0;s<2*n;s++){
  67.                                              int p = A[i][s];A[i][s]=A[a][s];A[a][s]=p;  
  68.                                      }
  69.                                      a++;
  70.                                      }
  71.                     t=A[k][i]/A[i][i];
  72.                     for(int j=0;j<2*n;j++){
  73.                             if(u==1){break;}
  74.                             A[k][j]=A[k][j]-t*A[i][j];
  75.                     }
  76.             }
  77.     }
  78.         cout<<endl<<endl;
  79.         //Muestro la matriz triangulada
  80.     cout<<"La matriz triangulada es:"<<endl<<endl;
  81.     for(int i=0;i<n;i++){
  82.             for(int k=0;k<2*n;k++){
  83.                     cout<<A[i][k]<<" ";
  84.             }
  85.             cout<<endl;
  86.             }
  87.            
  88.         cout<<endl<<endl;
  89.     //Aplico Gauss-Jordan
  90.     for(int i=0;i<n;i++){
  91.             q--;w=q;
  92.             for(int k=i+1;k<n;k++){
  93.                     w--;
  94.                     t=A[w][q]/A[q][q];
  95.                     for(int j=0;j<2*n;j++){
  96.                             A[w][j]=A[w][j]-t*A[q][j];
  97.                     }
  98.             }
  99.     }
  100.     for(int i=0;i<n;i++){
  101.             for(int j=n;j<2*n;j++){
  102.                     A[i][j]=A[i][j]/A[i][i];
  103.             }
  104.             A[i][i]=1;
  105.     }
  106.     //Muestro la matriz diagonalizada y la inversa:
  107.     cout<<"La matriz diagonalizada y la inversa de A es:"<<endl<<endl;
  108.     for(int i=0;i<n;i++){
  109.             for(int k=0;k<2*n;k++){
  110.                     cout<<A[i][k]<<" ";
  111.             }
  112.             cout<<endl;
  113.             }
  114.    
  115.         system("pause");return 0;
  116. }        
  117.  
  118.  

68
C/C++ / Error en contructor de copia
« en: Lunes 28 de Marzo de 2011, 21:39 »
Bueno, tengo el siguiente codigo:

Código: C++
  1. #include <iostream>
  2. using namespace std;
  3. #define MAX_SIZE 10
  4.  
  5. class matrix{
  6.       public:
  7.              int size; double s[MAX_SIZE];
  8.              matrix (int n);
  9.              ~matrix() {}
  10.              int test_matrix (int a);
  11.              matrix scan_matrix (void);
  12.              matrix operator + (matrix A);
  13.              void print_matrix (void);
  14.              matrix (matrix& A);//<---------------Aqui esta la declaracion
  15. };
  16.  
  17. matrix :: matrix (matrix& A){ //<-------------Aqui esta la implementación
  18.        size = A.size;
  19.        for (int i=0;i<A.size;i++) s[i]=A.s[i];
  20.        }
  21.  
  22. matrix :: matrix (int n){
  23.        size = test_matrix(n);
  24.        }
  25.  
  26. int matrix :: test_matrix (int a){
  27.     if(a>MAX_SIZE){
  28.                    cerr<<"Demasiados elementosn";
  29.                    a=MAX_SIZE;
  30.                    }
  31.     return a;
  32. }
  33.  
  34. matrix matrix :: scan_matrix (void){
  35.        for(int i=0;i<size;i++){
  36.        cout<<"Ingresa el coef "<<i<<"n";cin>>s[i];
  37.        }
  38. }
  39.  
  40. matrix matrix :: operator + (matrix A){
  41.      if(A.size!=size){
  42.                       cerr<<"Los vectores han de ser del mismo orden";
  43.                       }
  44.      matrix C (A.size);
  45.      for(int i=0;i<A.size;i++){
  46.             C.s[i]=s[i]+A.s[i];}
  47.      return C;
  48.      }
  49.  
  50. void matrix :: print_matrix (void){
  51.      for(int i= 0;i<size;i++){
  52.              cout<<"Suma no "<<i<<" = "<<s[i]<<"n";
  53.              }
  54.      }
  55.  
  56. int main(){
  57.     int n;int m;
  58.     cout<<"Introduzca el orden del vector1n";
  59.     cin>>n;
  60.     matrix A(n);
  61.     A.scan_matrix();
  62.     cout<<"Introduzca el orden del vector2n";
  63.     cin>>m;
  64.     matrix B(m);
  65.     B.scan_matrix();
  66.    
  67.     matrix D = A + B;
  68.    
  69.     D.print_matrix ();
  70.    
  71.     system("pause");return 1;
  72. }
  73.  
  74.  

Sé que el error está en alguna parte del constructor de copia por que el programa compila y funciona si le quito esa redefinición, sin embargo no encuentro el error. A ver si alguien me puede decir donde está el error y ya de paso por qué hay que tener escrito el operador '&' en la declaración.

Un saludo y muchas gracias de antemano!!!

69
C/C++ / Re: Consulta en clases
« en: Lunes 28 de Marzo de 2011, 18:14 »
Hola;  lo de private en lugar de public ya lo hare que de momento estoy probando un poco como va el tema este de las clases. Lo segundo que dices (establecer unas funciones dentro de la clase y otros fuera) no lo entiendo muy bien, te refieres a que no cree la función suma fuera de la definición de clase? yo pensaba que eso era muy común y además así lo tienes más organizado. En lo de los espacios tienes toda la razón, le daré más lineas a los codigos.
Muchas gracias por contestar al problema, ahora ya lo entiendo un poco mejor, pero no entiendo muy bien eso de sobrecargar el operador, me puedes explicar?

Un saludo!!

70
C/C++ / Re: vectores
« en: Lunes 28 de Marzo de 2011, 14:33 »
El ordenador toma la posición cero pero yo en la realidad siempre hablo a partir de la posición uno en adelante, por eso lo puse a partir de uno (en la vida cotidiana yo diría posición dos que es par). De todas formas eso es una tontería, cada uno que lo vea como quiera. Si quieres sumar los componentes uno a uno es SUMAR dos vectores, no unirlos; seria:

Código: C++
  1. int suma [cantidad];for(int i=0;i<cantidad;i++) suma[i]=0;
  2. (for int i=0;i<cantidad;i++){
  3. suma[i]=vector1[i]+vector2[i];}
  4.  
  5.  

71
C/C++ / Consulta en clases
« en: Lunes 28 de Marzo de 2011, 14:18 »
Hola; estoy trabajando algo con las clases en C++ y consigo que me corran lo programas. Veamos para mi lo logico al crear este programa de sumar vectores es:

Código: C++
  1. #include <iostream>
  2. using namespace std;
  3. #define MAX_SIZE 10
  4.  
  5. class matrix{
  6.       public:
  7.              int size; double s[MAX_SIZE];
  8.              matrix (int n){
  9.                     if (n>MAX_SIZE) {cerr<<"Error tamaño demasiado grande";
  10.                     return;}
  11.                     size=n;
  12.                     for(int i=0;i<n;i++){
  13.                             cout<<"Ingresa el coef "<<i<<"n";cin>>s[i];
  14.                             }
  15.              }
  16.              ~matrix() {};
  17.              void suma_de_vectores (matrix A,matrix B);
  18. };
  19.  
  20. void matrix :: suma_de_vectores (matrix A, matrix B){
  21.      if(A.size!=size){cerr<<"Los vectores han de ser del mismo orden";return;}
  22.      for(int i=0;i<A.size;i++){
  23.              cout<<"suma "<<i<<" = "<<A.s[i]+s[i];}
  24.      }
  25.  
  26. int main(){
  27.     int n;int m;
  28.     cout<<"Introduzca el orden del vector1n";cin>>n;
  29.    
  30.     cout<<"Introduzca el orden del vector2n";cin>>m;
  31.     matrix A(n);matrix B(m);
  32.     A.suma_de_vectores (A,B);
  33.     system("pause");return 1;
  34. }
  35.  
  36.  

Sin embargo el codigo tambien compila y funciona si suprimo algunas cosas en la declaración y desarrollo de la función, es decir:

Código: C++
  1. #include <iostream>
  2. using namespace std;
  3. #define MAX_SIZE 10
  4.  
  5. class matrix{
  6.       public:
  7.              int size; double s[MAX_SIZE];
  8.              matrix (int n){
  9.                     if (n>MAX_SIZE) {cerr<<"Error tamaño demasiado grande";
  10.                     return;}
  11.                     size=n;
  12.                     for(int i=0;i<n;i++){
  13.                             cout<<"Ingresa el coef "<<i<<"n";cin>>s[i];
  14.                             }
  15.              }
  16.              ~matrix() {};
  17.              void suma_de_vectores (matrix B);
  18. };
  19.  
  20. void matrix :: suma_de_vectores (matrix A){
  21.      if(A.size!=size){cerr<<"Los vectores han de ser del mismo orden";return;}
  22.      for(int i=0;i<A.size;i++){
  23.              cout<<"suma "<<i<<" = "<<A.s[i]+s[i];}
  24.      }
  25.  
  26. int main(){
  27.     int n;int m;
  28.     cout<<"Introduzca el orden del vector1n";cin>>n;
  29.    
  30.     cout<<"Introduzca el orden del vector2n";cin>>m;
  31.     matrix A(n);matrix B(m);
  32.     A.suma_de_vectores (B);
  33.     system("pause");return 1;
  34. }
  35.  

Con lo cual me doy cuenta de que no entiendo que es lo que hago excatamente. Mi consulta es esa, si alguien me podría explicar un poco que es lo que hace el programa; por que al poner size y s toma los de la matriz A (aunque supongo que será por declarar A.suma_de_vectores(B)) sin decirselo. Para mi lo mas logico seria tomar los ultimos valores de size y s que se dieron pero los ultimos que yo sepa son los de la matriz B.

Bueno un saludo y muchas gracias de antemano

72
C/C++ / Re: vectores
« en: Domingo 27 de Marzo de 2011, 23:21 »
Cita de: "haddad"
si creo que me esta compilando bien.
ahora, podrias ayudarme regalandome alguna explicacion sobre como hago para unir 2 vectores?
saludos!!

Tienes que explicarte mejor cuando haces preguntas... que es unir dos vectores?

73
C/C++ / Re: vectores
« en: Domingo 27 de Marzo de 2011, 19:17 »
Pero vamos a ver, la resta es lo mismo que la suma pero cambiando el signo... que quieres hacer? si quieres que reste todos los valores es asi como tu lo tienes

74
C/C++ / Re: vectores
« en: Domingo 27 de Marzo de 2011, 17:33 »
Cita de: "haddad"
muchisimas gracias pero bueno solo una cosa, cambiaria radicalmente teniendo en cuenta que en relacion con los pares me piden es resta o es solo cuestion de cambiar signos?
saludos!! y gracias por aceptar enseñarme jaja

No entiendo muy bien lo que preguntas pero si te refieres a que en lugar de pedirte la suma de los pares te piden la resta de los pares solo tendrias que cambiar el signo de la variable en la que acumulas la suma; es decir, en la linea 21 cambias por:

Código: C++
  1. cout<<"la resta de los pares es "<<(-suma)<<endl;
  2.  

Un saludo!!

75
C/C++ / Re: vectores
« en: Domingo 27 de Marzo de 2011, 11:29 »
Bueno ya recibi tu mail :P ; yo tampoco se mucho pero te puedo ayudar a hacer lo que quieres (utilizo tu codigo,añado lo que dices y cambio alguna cosa que creo que esta mejor):

Código: C++
  1. #include <iostream>
  2. using namespace std;
  3. main(){
  4.        #define tam 10
  5.        int cantidad;
  6.        cout<<"tamaño de datos a ingresar"<<endl;
  7.        cin>>cantidad;
  8.        while(cantidad >tam){          cerr<<"El tamaño ingresado es mayor del permitido"<<endl;
  9.                                       cout<<"tamaño de datos a ingresar"<<endl;
  10.                                       cin>>cantidad; }
  11.        int vector [cantidad]; int suma = 0;
  12.        
  13.        for(int x=0;x<cantidad;x++){
  14.                cout<<"ingrese un numero"<<endl;
  15.                cin>>vector[x];
  16.        }
  17.        for(int x=1;x<cantidad;x=x+2){
  18.                cout<<x+1<< "-> "<<vector[x]<<endl;
  19.                suma = suma + vector[x];
  20.        }
  21.        cout<<"la suma de los pares es "<<suma<<endl;
  22.        if(vector[0]!=0){
  23.        cout<<"la suma de los pares dividida por el primer componente del vector es "<<suma/vector[0]<<endl;}
  24.        suma = 0;
  25.        for(int x=0;x<cantidad;x=x+2){
  26.                cout<<x+1<< "-> "<<vector[x]<<endl;
  27.                suma = suma + vector[x];
  28.        }
  29.        cout<<"la suma de los impares es "<<suma<<endl;
  30.        if(vector[0]!=0){
  31.        cout<<"la suma de los impares dividida por el primer componente del vector es "<<suma/vector[0]<<endl;}
  32.        system ("pause");return 0;
  33. }
  34.  
  35.  

Podria estar mejor pero por lo menos me compila y funciona :P jaja

Si tienes alguna duda pregunta y te intento contestar! un saludo!!

Páginas: 1 2 [3] 4