Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: MellaSystems en 4 Mayo 2015, 23:29 pm



Título: Ayuda en este codigo por favor
Publicado por: MellaSystems en 4 Mayo 2015, 23:29 pm
Tengo este codigo en C++:

Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. main(){
  7.  
  8. int i, j, filas, columnas, suma_dp=0;
  9. cout << "Ingrese el n\243mero de filas de la matriz: ";
  10. cin >> filas;
  11. cout << "Ingrese el n\243mero de columnas de la matriz: ";
  12. cin >> columnas;
  13.  
  14. if((filas < 1 || columnas < 1) || (filas > 20 || columnas > 20)){
  15. cout << "La matriz no puede ser menor que 1 ni mayor que 20\n\n";
  16. }
  17. else{
  18. cin.get();
  19. float **a = new float*[filas];
  20. cout << endl;
  21. for(i=0; i < filas; i++){
  22. a[i] = new float[columnas];
  23. for(j=0; j < columnas; j++){
  24. cout << "Ingrese el elemento A[" << i + 1 << "][" << j + 1 << "]: ";
  25. cin >> a[i][j];
  26. }
  27. }
  28. cout << endl;
  29. cout << "La matriz digitada es: " << endl;
  30. for(i=0; i < filas; i++){
  31. cout<<"|";
  32. for(j=0; j < columnas; j++){
  33. cout << "\t" << a[i][j] <<"\t";
  34. }
  35. cout << "|" << endl;
  36. }
  37.  
  38. cout << "La diagonal principal es: " << endl;
  39. for(i=0; i < filas; i++){
  40. cout<<"|";
  41. for(j=0; j < columnas; j++){
  42. if(a[i]==a[j])
  43. cout << "\t" << a[i][j];
  44. if(i-j == 0)
  45. suma_dp += a[i][j];
  46. }
  47. cout << "|" << endl;
  48. }
  49. cout << "La suma es: " << suma_dp;
  50.  
  51. }
  52. cout << endl;
  53. system("pause");
  54. return EXIT_SUCCESS;
  55.  
  56. }

Quiero hacerlo usando la STL.

Alguien me orienta?

PTDA: Se trabajar con Vectores de una dimensión usando la STL


Título: Re: Ayuda en este codigo por favor
Publicado por: ivancea96 en 5 Mayo 2015, 11:43 am
¿Qué es lo que quieres hacer? ¿Convertir el float** a vector< vector<float> >?


Título: Re: Ayuda en este codigo por favor
Publicado por: MellaSystems en 6 Mayo 2015, 02:59 am
Siii ivan, tienes alguna idea?


Título: Re: Ayuda en este codigo por favor
Publicado por: crack81 en 6 Mayo 2015, 07:20 am
Te dejo mi version espero sea lo que buscas, el codigo le falta pulirlo pero espero te sirva saludos...

Código
  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4.  
  5.  
  6. int main(){
  7.  
  8.    int filas,columnas;
  9.  
  10.    cout<<"Ingresa el numero de  filas "<<endl;
  11.    cin>>filas;
  12.    cout<<"Ingrese el numero de columnas"<<endl;
  13.    cin>>columnas;
  14.  
  15.    if((filas<1 || filas>20) || (columnas<1 || columnas>20)){
  16.        cout<<"La matriz no puede ser menor que 1 ni mayor que 20"<<endl;
  17.        cin.get();
  18.        cin.get();
  19.        return 0;
  20.    }
  21.  
  22.    vector< vector<float> >lista;
  23.    float valor;
  24.    int suma_dp=0;
  25.  
  26.    for(int i=0;i<filas;i++){
  27.  
  28.        lista.push_back(vector<float>());//añadimos las columnas interiores
  29.        for(int j=0;j<columnas;j++){
  30.  
  31.            cout << "Ingrese el elemento A[" << i + 1 << "][" << j + 1 << "]: ";
  32.            cin>>valor;
  33.            lista[i].push_back(valor);
  34.        }
  35.    }
  36.    cout<<endl;
  37.    cout<<"La matriz digitada es "<<endl;
  38.  
  39.    for(int i=0;i<filas;i++){
  40.        cout<<"|";
  41.        for(int j=0;j<columnas;j++){
  42.  
  43.            cout<< "\t"<<lista[i][j]<<"\t";
  44.        }
  45.        cout << "|" << endl;
  46.    }
  47.  
  48.    cout << "La diagonal principal es: " << endl;
  49.    for(int i=0; i < filas; i++){
  50.        cout<<"|";
  51.        for(int j=0; j < columnas; j++){
  52.            if(i==j)
  53.            cout<< lista[i][j];
  54.            if(i-j == 0)
  55.            suma_dp += lista[i][j];
  56.            lista[i].pop_back();//eliminamos los valores
  57.        }
  58.        cout << "|" << endl;
  59.    }
  60.    cout << "La suma es: " << suma_dp;
  61.  
  62.  
  63.  
  64.  
  65. cin.get();
  66. cin.get();
  67. return 0;
  68. }
  69.