2012-10-23 8 views
6

प्रिंट करें मैं मैट्रिक्स (2 डी सरणी) पढ़ने के लिए 2 फ़ंक्शन लिखने की कोशिश कर रहा हूं, और इसे प्रिंट करने के लिए अन्य। अब तक मेरे पास है:पॉइंटर/मॉलोक का उपयोग करके 2 डी सरणी बनाना, और फिर इसे

/* Read a matrix: allocate space, read elements, return pointer. The 
    number of rows and columns are given by the two arguments. */ 
double **read_matrix(int rows, int cols){ 

    double **mat = (double **) malloc(sizeof(double *)*rows); 
    int i=0; 
    for(i=0; i<rows; i++){ 
    /* Allocate array, store pointer */ 
    mat[i] = (double *) malloc(sizeof(double)*cols); 
    //what to do after?? 

    return mat; 
} 

तो प्रिंट मैट्रिक्स समारोह, यकीन नहीं अगर यह सही

void print_matrix(int rows, int cols, double **mat){ 
    for(i=0; i<rows; i++){ /* Iterate of each row */ 
    for(j=0; j<cols; j++){ /* In each row, go over each col element */ 
    printf("%f ",mat[i][j]); /* Print each row element */ 
} 
}} 

है और यहाँ मुख्य कार्य मैं चलाने के लिए उपयोग कर रहा हूँ है:

#include <stdio.h> 
#include <stdlib.h> 


double **read_matrix(int rows, int cols); 
void print_matrix(int rows, int cols, double **mat); 
void free_matrix(int rows, double **mat); 

int main(){ 

    double **matrix; 
    int rows, cols; 
    /* First matrix */ 
    printf("Matrix 1\n"); 
    printf("Enter # of rows and cols: "); 
    scanf("%d %d",&rows,&cols); 
    printf("Matrix, enter %d reals: ",rows*cols); 
    matrix = read_matrix(rows,cols); 
    printf("Your Matrix\n"); /* Print the entered data */ 
    print_matrix(rows,cols,matrix); 
    free_matrix(rows, matrix); /* Free the matrix */ 

    return 0;} 
+2

वोटिंग बंद करने के लिए है क्योंकि यह stackoverflow के बजाय कोड की समीक्षा stackexchange के लिए एक सवाल की तरह लग रहा है। कोड मूल रूप से ठीक दिखता है, यद्यपि। –

+0

आपकी सटीक समस्या क्या है? मुझे यहां कोई प्रश्न नहीं दिखाई दे रहा है ... – Christoph

+0

@ बेन जैकसन: यह [offackic.com पर offtopic] के रूप में बंद है (http://codereview.stackexchange.com/q/17833/6143)। यह एक अच्छा अनुभव नहीं है। – jfs

उत्तर

7

इसको आजमाओ। आपके लिए सहायक हो सकता है।

#include <stdio.h> 
#include <stdlib.h> 

double **read_matrix(int rows, int cols); 
void print_matrix(int rows, int cols, double **mat); 
void free_matrix(int rows, double **mat); 

double **read_matrix(int rows, int cols){ 

    double **mat = (double **) malloc(sizeof(double *)*rows); 
    int i=0,j=0; 
    for(i=0; i<rows; i++) 
    /* Allocate array, store pointer */ 
     mat[i] = (double *) malloc(sizeof(double)*cols); 

     for(i=0; i<rows; i++){ 
      for(j=0; j<cols; j++){ 
       scanf("%lf",&mat[i][j]); 
      } 
     } 
    return mat; 
} 

void print_matrix(int rows, int cols, double **mat){ 
    int i=0,j=0; 
    for(i=0; i<rows; i++){ /* Iterate of each row */ 
     for(j=0; j<cols; j++){ /* In each row, go over each col element */ 
      printf("%lf ",mat[i][j]); /* Print each row element */ 
     } 
     printf("\n"); 
    } 
} 

void free_matrix(int rows, double **mat){ 
    int i=0; 
    for(i=0;i<rows;i++)  
     free(mat[i]); 
    free(mat); 
} 

int main(){ 

    double **matrix; 
    int rows, cols; 
    /* First matrix */ 
    printf("Matrix 1\n"); 
    printf("Enter # of rows and cols: "); 
    scanf("%d%d",&rows,&cols); 
    printf("Matrix, enter %d reals: \n",rows*cols); 
    matrix = read_matrix(rows,cols); 
    printf("Your Matrix\n"); /* Print the entered data */ 
    print_matrix(rows,cols,matrix); 
    free_matrix(rows, matrix); /* Free the matrix */ 

    return 0; 
} 

निष्पादन:

:~$ gcc exam.c 
:~$ ./a.out 
Matrix 1 
Enter # of rows and cols: 3 
4 
Matrix, enter 12 reals: 
1 
2 
3 
4 
5 
6 
7 
8 
9 
9 
0 
1 
Your Matrix 
1.000000 2.000000 3.000000 4.000000 
5.000000 6.000000 7.000000 8.000000 
9.000000 9.000000 0.000000 1.000000 
+0

@ जेनी नहीं इस कोड के साथ कोई सीजी-गलती नहीं है .. मैंने चरणों को संपादित किया –

संबंधित मुद्दे