elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Matriz a partir de un sistema de ecuaciones. en: 19 Mayo 2015, 22:12 pm
Hola :).
Necesito sus ayudas para poder armar una matriz a partir de un sistema de ecuaciones, cuyos parámetros son ingresados por el usuario. Sólo preciso la matriz.
El sistema de ecuaciones es el siguiente: https://imageshack.com/i/p5jShAlcj



Los parámetros ingresados por el usuario son k y W .
Lo que me interesa es obtener ésta matriz:

k1+k2        -k2                 0
-ki             ki+ki+1        -ki+1
                 -kn                     kn


(Para enésimas k ingresadas)
Eme aquí el código construido (desastroso) hasta ahora:
Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4. const int nb=100;
  5.  
  6. int main()
  7. {
  8.    float D[nb][nb];
  9.    int i,j;
  10.    float m[i][j];
  11.    int nbloques;
  12.    int nresortes;
  13. float w[100];
  14. float k[100];
  15.  
  16.    cout<<"-------------------------------------------\n";
  17.    cout<<"Bienvenido al sistema vertical masa resorte.\n";
  18.    cout<<"Ingrese cantidad de bloques y resortes al sistema:\n"<<endl;
  19.    do{
  20.        cout<<"Cantidad de bloques: ";
  21.        cin>>nbloques;
  22.  
  23.        cout<<"Cantidad de resortes: ";
  24.        cin>>nresortes;
  25.        cout<<endl;
  26.        if((nbloques<nresortes)||(nbloques>nresortes))
  27.         {
  28.  
  29.        cout<<"RECUERDE: el sist. admite igual cantidad de resortes y bloques.\n";
  30.        cout<<endl;
  31.        cout<<"Vuelva a ingresar los par\xa0metros, por favor: \n"<<endl;
  32.            }else
  33.            break;
  34.        }while(1);
  35.       cout<<"Pesos (kg) de cada uno de los bloques:"<<endl;
  36.  
  37.        for(int i=0; i<nbloques; i++)
  38.        { cout<<"Bloque "<<i+1<<": ";
  39.                cin>>w[i];
  40.                cout<<endl;
  41.                }
  42.        for(int i=0; i<nresortes;i++)
  43.                {
  44.                cout<<"Ki del resorte "<<i+1<<": ";
  45.                cin>>k[i];
  46.                cout<<endl;
  47.                }
  48. cout<<"El sistema matricial a resolver:\n"<<endl;
  49.  
  50. //------AQUI COMIENZA EL HORROR
  51.             for (int i=0; i<(nbloques+1); i++)
  52.             for (int j=0; j<(nbloques+1); j++)
  53.              {
  54.             if(i==0 && j==1)
  55.             {
  56.                    m[i][j]=-k[0];
  57.             }
  58.             else if((i==0) && (j==nbloques+1))
  59.             {
  60.                  m[i][j]=0;
  61.              }
  62.              else if((j==0) && (i==nbloques+1))
  63.              {
  64.                   m[i][j]=0;
  65.                   }
  66.              else if(i==j)
  67.              {
  68.                   m[i][j]=k[j+1]+k[i];
  69.                   }
  70.              else
  71.              {
  72.                  m[i][j]=-k[(j+1)-i];
  73.                  }
  74.             }
  75.  
  76.          for (int i=0; i<(nbloques+1); i++)
  77.             for (int j=0; j<(nbloques+1); j++)
  78.             {
  79.                 cout<<m[i][j]<<endl;
  80.                 }    
  81.        system("pause");        
  82. }
  83.  
  84.  
2  Programación / Programación C/C++ / Obtener los valores nulos sobre la diagonal principal.(Array 2D) en: 19 Octubre 2014, 14:30 pm
Excelente, muchas gracias. Un error tonto, a ponerse los anteojos...

Otro detalle, para obtener la DIAGONAL PRINCIPAL, la sección del código debe quedar así:
Código
  1. void Diag (int a[TAM][TAM], int n, int d[TAM])
  2. {
  3. cout<<"Te voy a dar la diagonal principal: \n\n";
  4. for (int i=0; i<n; i++)
  5. for (int j=0; j<n; j++)
  6. d[i]=a[i][i]; //<---CORRECCIÓN
  7. }
  8.  



Hola. Quiero saber cómo hacer para que se imprima la CANTIDAD de ELEMENTOS NULOS de la matriz pero SÓLO LOS QUE ESTÁN ARRIBA (por encima, sobre) de LA DIAGONAL PRINCIPAL.
Código
  1. #include <iostream>
  2. using namespace std;
  3. const int TAM=4;
  4. int main()
  5.  
  6. {
  7. int nonul=0;
  8. int c=0;
  9. int M[TAM][TAM]={1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  10.  
  11. int i,j;
  12. //---------------------------------EL ERROR ESTÁ AQUÍ:
  13.  for (int i=0; i<=TAM-2; i++)
  14.  for (int j=1; j<=TAM-1; j++)
  15.  if(M[i][j]==0)
  16.  {
  17. c++;
  18. }
  19. cout<<"nulos:"<<c<<endl;
  20.  
  21. }
3  Programación / Programación C/C++ / Array bidimensional y uni. ¿Por qué el arreglo d[i] no se imprime en pantalla??? en: 18 Octubre 2014, 20:17 pm
Código:
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <stdio.h>
using namespace std;
const int TAM=10;

//Prototipos de funciones:

void Leer(int a [TAM][TAM],int n);
void Imprimir (int a[TAM][TAM], int n);

void Diag (int a [TAM][TAM], int n, int d[TAM]);
void Printdiag (int d[TAM], int n);

int main ()
{
int n;
int i,j;
int a[TAM][TAM];
int d[TAM];

do
{

cout<<"Ingrese tam. de la matriz, por favor: \n";
cin >>n;

}
while (n<1 || n>TAM);
if (n<1 || n>TAM)
{
cout<<"Invalido. \n";
}
//Llamada de funciones:
Leer (a,n);
Imprimir (a,n);
system ("PAUSE");
system ("cls");
Diag (a,n,d);
Printdiag (d,n);
}
void Leer (int a [TAM][TAM], int n)
{
cout<<"Ingrese datos a la matriz: \n \n";
int i,j;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
{
cin >>a[i][j];
}
}
void Imprimir (int a [TAM][TAM], int n)
{
cout<<"La matriz ingresada es: \n";
for(int i=0; i<n; i++)
for (int j=0; j<n; j++)
cout <<setw(3)<<a[i][j]<<"\n\n";
}
void Diag (int a[TAM][TAM], int n, int d[TAM])
{
cout<<"Te voy a dar la diagonal principal: \n\n";
for (int i=0; i<n; i++)
for (int j=0; j<n; j++)
d[i]==a[i][j];
}

void Printdiag (int d[TAM], int n)
{
//AQUÍ ESTÁ EL PROBLEMA:
//¿por qué no imprime el vector d como corresponde?
//Sale en pantalla todos números raros...
for (int i=0; i<n; i++)
cout<<d[i];
}
¿Qué cosa debería modificar?
Saludos :D
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines