Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

c++ da matris çarpımı


Öne çıkan mesajlar

Mesaj tarihi:
Merhaba. Pointer kullanarak iki boyutlu matris çarpımı yaptım. Ancak çarpım matrisinde bir hata var sanırım. Program çalışıyor fakat çarpım matrisini görüntülemeden kapanıyor. Nerde hata yapıyorum anlayamadım. Yardımcı olursanız sevinirim.

#include<iostream>
#include<ctime>
#include<cstdlib>

using namespace std;

void multip_matrix(int **aptr, int **bptr, int **cptr, int k, int m, int n){
int i,j,l;
for(i=0; i<k; i++){
for(l=0;l<n; l++){
*(*(cptr+i)+l)=0;
for(j=0;j<m; j++){
*(*(cptr+i)+l)= *(*(cptr+i)+l)+(*(*(aptr+i)+j))*(*(*(bptr+j)+l));}
cout<<*(*(cptr+i)+l)<<"t";}
cout<< endl; }

}
int main()
{
srand(time(NULL));
int k,m,n,i,j;
cout<<"k icin bir deger giriniz=";
cin>>k;
cout<<"m icin bir deger giriniz="; cin>>m;
cout<<"n icin bir deger giriniz="; cin>>n;
int A[k][m],B[m][n],C[k][n];
int *aptr=&A[k][m], *bptr=&B[m][n], *cptr=&C[k][n];
for(i=0;i<k;i++){
aptr=new int [m];
}

for(i=0;i<m;i++){
bptr=new int [n];
}
for(i=0;i<k;i++){
cptr=new int [n];
}


for(i=0; i<k; i++){
for(j=0;j<m; j++){
A[i][j]=(rand()%6);
cout<<A[i][j]<<"t";
}
cout<<endl; }
cout<<endl;

for(i=0; i<m; i++){
for(j=0;j<n; j++){
B[i][j]=(rand()%6);
cout<<B[i][j]<<"t";
}
cout<<endl;}
multip_matrix(&aptr,&bptr, &cptr, k, m,n);
for(i=0;i<k;i++){
delete []aptr;}
for(i=0;i<m;i++){
delete []bptr; }
for(i=0;i<k;i++){
delete []cptr; }
system("PAUSE");
return 0;
}
Mesaj tarihi:


#include<iostream>
#include<ctime>
#include<cstdlib>

using namespace std;

void multip_matrix(int **aptr, int **bptr, int **cptr, int k, int m, int n){
int i,j,l;

for(i=0; i<k; i++){
for(l=0;l<n; l++){
**cptr=0;
for(j=0;j<m; j++){
*(*(cptr+i)+l)=*(*(cptr+i)+l)+(*(*(aptr+i)+j))*(*(*(bptr+j)+l));}
cout<<*(*(cptr+i)+l)<<"t";}
cout<< endl; } }

int main()
{
srand(time(NULL));
int k,m,n,i,j;
cout<<"k icin bir deger giriniz=";
cin>>k;
cout<<"m icin bir deger giriniz="; cin>>m;
cout<<"n icin bir deger giriniz="; cin>>n;
int A[k][m],B[m][n],C[k][n];
int **aptr=0;int **bptr=0;int **cptr=0;
aptr=new int *[k];bptr=new int *[m];cptr=new int *[k];
for(i=0;i<k;i++){
aptr[i]=new int [m];}

for(i=0;i<m;i++){
bptr[i]=new int [n];
}
for(i=0;i<k;i++){
cptr[i]=new int [n];
}
for(i=0; i<k; i++){
for(j=0;j<m; j++){
A[i][j]=(rand()%6);
cout<<A[i][j]<<"t";
}
cout<<endl; }


for(i=0; i<m; i++){
for(j=0;j<n; j++){
B[i][j]=(rand()%6);
cout<<B[i][j]<<"t";
}
cout<<endl;}
multip_matrix(aptr,bptr, cptr, k, m,n);
for(i=0;i<k;i++){
delete [] aptr[i];
delete [] aptr;}
for(i=0;i<m;i++){
delete [] bptr[i];
delete [] bptr; }
for(i=0;i<k;i++){
delete [] cptr[i];
delete [] cptr; }
system("PAUSE");
return 0;
}


Mesaj tarihi:
Kodu tekrar kopyaladım.Dizi tanımlamalarındaki[i]kısımları falan görünmüyor ama kod random olarak A ve B dizilerini yaratıyor.multip_matrix fonksiyonunda bir sorun var, ne olduğunu anlayamadım.
×
×
  • Yeni Oluştur...