Error en tiempo de ejecución: Determinante de una matriz usando c++
Estoy intentando escribir un programa que pueda calcular el determinante de una matriz 2×2 ingresada por el usuario.
Mi código es el siguiente –
“`c++
//Programa para calcular el determinante de matrices
#include
#include<conio.h>
using namespace std;
int main()
{
int arr[1][1];
int i,j,p,q,v,b,c,k,determinante;
for(i=1;i<=2;i++)
{
for(j=1;j<=2;j++)
{
p=i;
q=j;
cout<<"Ingrese el elemento: ";
cin>>arr[p][q];
cout<<"Estás en "<<><><endl; }="" }="" v="arr[1][1];" b="arr[1][2];" c="arr[2][1];" k="arr[2][2];" cout<<"los="" elementos="" ingresados="" son="<<v<<"></endl;><b<<"></b<<"><c<<"></c<<"><><endl;
determinante= ((v*k)-(c*b));
cout<<"el determinante de la matriz dada es = "<<determinante;
getch();
}
y este es el error que estoy enfrentando con este programa -
ingrese el elemento: 4
estás en 11
ingrese el elemento: 9
estás en 12
ingrese el elemento: 8
estás en 21
ingrese el elemento: 7
estás en 22
los elementos ingresados son = 4 8 8 7
el determinante de la matriz dada es = -36
en la posición arr[1][2] he ingresado '9' como elemento, pero en su lugar se está imprimiendo el elemento asignado a la posición arr[2][1].
entonces, si alguien puede ayudarme a resolver este error, estaré muy agradecido contigo. determinante="((v*k)-(c*b));" cout<<"el="" determinante="" de="" la="" matriz="" dada="" es=""></endl;
determinante= ((v*k)-(c*b));
cout<<"el determinante de la matriz dada es = "<<determinante;
getch();
}
y este es el error que estoy enfrentando con este programa –
ingrese el elemento: 4
estás en 11
ingrese el elemento: 9
estás en 12
ingrese el elemento: 8
estás en 21
ingrese el elemento: 7
estás en 22
los elementos ingresados son = 4 8 8 7
el determinante de la matriz dada es = -36
en la posición arr[1][2] he ingresado ‘9’ como elemento, pero en su lugar se está imprimiendo el elemento asignado a la posición arr[2][1].
entonces, si alguien puede ayudarme a resolver este error, estaré muy agradecido contigo.></conio.h>
davy.ai
Solución
El problema con el programa es que está utilizando indexación basada en 1 para el arreglo
arr
, mientras que la indexación correcta debería ser basada en 0.En C++, los índices de los arreglos comienzan desde 0, por lo que si declaramos un arreglo con
int arr[2][2]
, entonces los índices válidos seríanarr[0][0]
,arr[0][1]
,arr[1][0]
yarr[1][1]
. Sin embargo, en el programa dado, el bucle para tomar la entrada del usuario comienza desdei=1
yj=1
, lo que significa que el primer elemento ingresado por el usuario se asigna aarr[1][1]
, en lugar dearr[0][0]
.Para solucionar este problema, simplemente podemos cambiar el bucle para que comience desde
i=0
yj=0
. El programa corregido se muestra a continuación –en este programa corregido, el arreglo
arr
se declara con 2 filas y 2 columnas, y el bucle comienza desde índices basados en 0. el determinante se calcula según la fórmula para matrices de 2×2, y se imprime en la consola.¡espero que esto ayude! getch();=”” return=”” 0;=”” }=””
="" en="" este="" programa="" corregido,="" el="" arreglo="" `arr`="" se="" declara="" con="" 2="" filas="" y="" 2="" columnas,="" y="" el="" bucle="" comienza="" desde="" índices="" basados="" en="" 0.="" el="" determinante="" se="" calcula="" según="" la="" fórmula="" para="" matrices="" de="" 2x2,="" y="" se="" imprime="" en="" la="" consola.="" ¡espero="" que="" esto=""></endl;
getch();
return 0;
}
en este programa corregido, el arreglo
arr
se declara con 2 filas y 2 columnas, y el bucle comienza desde índices basados en 0. el determinante se calcula según la fórmula para matrices de 2×2, y se imprime en la consola.¡espero que esto ayude!></j<<“]></conio.h>