2016-04-14 19 views
-4
#include<stdio.h> 
#include<stdlib.h> 

void generate_matrices(int a[5][5], int b[5][5]); 
void print_matrix(int a[5][5]); 
void multiply_matrices(int a[5][5], int b[5][5], int c[5][5]); 
void calc_trace(int a[5][5]); 

int main() 
{ 
    int a[5][5],b[5][5]; 
    generate_matrices(a,b); 
    print_matrix(a); 

    return 0; 
} 

void generate_matrices(int a[5][5], int b[5][5]) 
{ 
    int seed,i,j; 
    printf("Enter seed integer value: "); 
    scanf("%d",&seed); 
    printf("\n\nSeed Value is %d\n\n",seed); 
    srand(seed); 
    for(i=0;i<5;i++) { 
     for(j=0;j<5;j++) { 
      a[i][j]=rand() %51 + (-25); 
      b[i][j]=rand() %51 + (-25); } 
    } 
} 

void print_matrix(int a[5][5]) { 

    int i,j; 
    printf("Matrix A:\n"); 
    for(i=0;i<5;i++){ 
     for(j=0;j<5;j++){ 
      printf("%d ",a[i][j]); } 
    printf("\n"); 
    } 
    printf("\nMatrix B:\n"); 
    for(i=0;i<5;i++){ 
     for(j=0;j<5;j++){ 
      printf("%d ",a[i][j]); } 
    printf("\n"); 
    } 

} 

Bu, sahip olduğum bir kod parçasıdır. generate_matrices işlevi iyi çalışıyor, ancak yardıma ihtiyacım olan işlev print_matrix işlevidir. Bu fonksiyonu iki kez çağırmam ve 2 farklı dizi üretmem gerekiyor. Halihazırda fonksiyonda iki kere denen [i] [j] 'ye sahibim, ancak ikincisinde [i] [j]' nin b [i] [j] olması gerekiyor.2 farklı 2B dizisi üretmek için 1 işlev çağırma

Sorun şu ki, 2 farklı diziyi üretmek için 1 işlevi nasıl çalıştırabileceğinizi anlamıyorum? Yeterince açık yapmadıysanız, örneğin:

(...) 

    print_matrix(a) 
    print_matrix(b) 

(...) 


void print_matrix(int a[5][5]) 
{ 
(...) 
} 

Yani ben iki kez 2 farklı diziler yazdırmak için aynı işlevi arıyorum, ancak ben Fonksiyonu ilk kez çağırabilir anlamıyorum Sadece 1 dizi üretmek, daha sonra ikinci diziyi üretmek için aynı işlevi farklı bir değişkenle tekrar çağırmak? Kesinlikle fonksiyonu ilk kez çağırmak, fonksiyonun kendisinde yaratılan her şeyi üretebilir mi ???

Bilginize: Ben işlev adlarını değiştirmek veya işlev adları vb ben, nispeten açık şerefe yaptık umut

yılında işaretçileri oluşturamazsınız.

+0

Üzgünüz, ama: facepalm: Bu işlevde yalnızca bir matris yazdırın (printf ("matrix B") ile başlayan bölümü kaldırın;) ve iki farklı matrisle iki kez arayın. Görüntülenecek matrisin adını istiyorsanız, print_matrix ' – ForceBru

+1

' a başka bir seçenek olarak aktarın. Göreceli olarak temizleyin :) Hiç net değil ... –

+0

prototipinizi değiştir 'void print_matrix (int a [5] [5], int b [5] [5]) ' – xvan

cevap

1

çevirin bu kod bölümü: bu işe

void print_matrix(int a[5][5]) { 

    int i,j; 
    printf("Matrix A:\n"); 
    for(i=0;i<5;i++){ 
     for(j=0;j<5;j++){ 
      printf("%d ",a[i][j]); } 
     printf("\n"); 
     } 
    printf("\nMatrix B:\n"); 
    for(i=0;i<5;i++){ 
     for(j=0;j<5;j++){ 
      printf("%d ",a[i][j]); } 
    printf("\n"); 
    } 

} 

:

bunu gibi diyoruz ana ardından
void print_matrix(int a[5][5]) { 

    int i,j; 
    for(i=0;i<5;i++){ //removed matrix dependent line 
     for(j=0;j<5;j++){ 
      printf("%d ",a[i][j]); } 
     printf("\n"); 
     }     //removed the bottom section of code. 

} 

: Bu, bağımsız olarak her matris yazdırır

int main() 
{ 
    int a[5][5],b[5][5]; 
    generate_matrices(a,b); 
    printf("Matrix A:\n"); // tells you which matrix 
    print_matrix(a); // Pass in matrix a 
    printf("Matrix B:\n"); // tells you which matrix 
    print_matrix(b); // Pass in matrix b 
    return 0; 
} 

herbiri. Bu, print_matrix() 'fonksiyonuna hangi matrisi geçtiğinizi değiştirerek N matrislerine kadar uzatılabilir.

+0

Teşekkürler, bu kadar basit bir şey olacağını biliyordum, şerefe. !! –

İlgili konular