Am urmatoarele probleme cu solutia ta:
- nu ai pus partea in care initializezi dinamic un array multidimensional cu n coloane si n linii, care banuiesc eu ca este scopul real al exercitiului astuia, adica:
Cod:
int **x;
cin>>n;
x = new int*[n];
for (int i = 0; i < n; i++)
{
x[i] = new int[n];
}
- nu initializezi niciunde restul valorilor x[i][j] cu 0 asa ca iti vor aparea ca -842150451 (0xCDCDCDCD);
- linia asta:
se va executa pentru fiecare membru al matricei aka foarte redundant. Pentru orice n asignarea x[k][k] se va executa de n la patrat ori lungindu-ti inutil executia. Corect ar fi asignarea x[k][k] astea sa o scoti in afara for-ului ca sa se execute o singura data. Plus de asta, eu interpretez ca ar trebui sa fie 0 la intersectia coloanei k cu linia k (linia k > a, coloana k > b, in rest 0).
- linia asta:
Cod:
cout<<(x[i][j]+"\t");
nu este corecta, iti va aduna niste valori acolo si nu iti face concatenare - ai putea sa folosesti str_cpy dar mai simplu este:
Cod:
cout<<(x[i][j]);
cout<<'\t'; //ghilimea (single quote) in loc de double quote printeaza un char
P.S. Foloseste code blocks ca sa arate codul bine.
Cod:
// Codul arata mai bine daca il scrii intre tag-uri [ CODE][ /CODE] - fara spatiu dupa paranteza - sau folosesti butonul "#" din advanced message editor
#include<iostream>
using namespace std;
int main()
{
int n,k,a,b;
int **x;//initializezi x ca fiind pointer catre un pointer
cout<<"dati n";
cin>>n;
cout<<"dati k";
cin>>k;
cout<<"dati a";
cin>>a;
cout<<"dati b";
cin>>b;
k = k - 1; //pentru a avea logica matematica linia k a matricei este k-1 programatic
x = new int*[n];//initializezi prima dimensiune a lui x
for (int i = 0; i < n; i++)
{
x[i] = new int[n];//iterezi si initializezi a doua dimensiune a lui x
}
// de aici poti sa apelezi x ca un array multidimensional normal; Partea de initializare poti sa o incluzi si mai jos,
// dar este mai clar asa cum se initializeaza dinamic un array multidimensional
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++) {
x[i][j] = 0;
if (i==k) x[k][j] = a;
if (j==k) x[i][k] = b;
}
}
x[k][k]=0;
for (int i=0; i<n; i++) {
cout<<(" ");
for (int j=0; j<n; j++) {
cout<<(x[i][j]);
cout<<'\t';
}
cout<<'\n';
}
system("pause");
return 0;
}