Hey everyone could someone tell me why the first code is working(without functions) and the second one is not?
Code:
#include<stdio.h>
#include <stdlib.h>
int main (void)
{
int row_size1,col_size1,row_size2,col_size2,flag =1;
int **A;
int i = 0, j = 0;
char a,c;
do
{
A = malloc(2 * sizeof (int *));
printf("\ncmd> ");
c = getchar();
if(c == 'A')
{
scanf("%d %d",&row_size1,&col_size1);
A[0]= malloc(row_size1*sizeof(int*));
for(i=0;i<row_size1;i++)
{
A[i]=malloc(col_size1*sizeof(int));
}
for(i=0;i<row_size1;i++)
{
for(j=0;j<col_size1;j++)
{
scanf("%d",&A[i][j]);
// if (A[i][j] == 99) // 'x' is character variable i declared
// break;
}
}
printf("The required matrix is\n");
for(i=0;i<row_size1;i++)
{
for(j=0;j<col_size1;j++)
printf("%d ",A[i][j]);
printf("\n");
}
for(i=0;i<row_size1;i++)
{
free(A[i]);
}
free(A);
}
if(c == 'B')
{
scanf("%d %d",&row_size1,&col_size1);
A[1]= malloc(row_size1*sizeof(int*));
for(i=0;i<row_size1;i++)
{
A[i]=malloc(col_size1*sizeof(int));
}
for(i=0;i<row_size1;i++)
{
for(j=0;j<col_size1;j++)
{
scanf("%d",&A[i][j]);
if (A[i][j] == 99) // 'x' is character variable i declared
break;
}
}
printf("The required matrix is\n");
for(i=0;i<row_size1;i++)
{
for(j=0;j<col_size1;j++)
printf("%d ",A[i][j]);
printf("\n");
}
for(i=0;i<row_size1;i++)
{
free(A[i]);
}
free(A);
}
}
while(flag == 1);
return 0;
}
same code using functions
Code:
#include<stdio.h>
#include <stdlib.h>
int main (void)
{
int row_size1,col_size1,row_size2,col_size2,flag =1;
int **A=NULL;
int i = 0, j = 0;
char a,c;
do
{
A = malloc(2 * sizeof (int *));
printf("\ncmd> ");
c = getchar();
if(c == 'A')
{
scanf("%d %d",&row_size1,&col_size1);
A[0]= malloc(row_size1*sizeof(int*));
for(i=0;i<row_size1;i++)
{
A[i]=malloc(col_size1*sizeof(int));
}
for(i=0;i<row_size1;i++)
{
for(j=0;j<col_size1;j++)
{
scanf("%d",&A[i][j]);
}
}
matrix_display(A[0], row_size1, col_size1);
}
if(c == 'B')
{
scanf("%d %d",&row_size1,&col_size1);
A[1]= malloc(row_size1*sizeof(int*));
for(i=0;i<row_size1;i++)
{
A[i]=malloc(col_size1*sizeof(int));
}
for(i=0;i<row_size1;i++)
{
for(j=0;j<col_size1;j++)
{
scanf("%d",&A[i][j]);
// if (A[i][j] == 99) // 'x' is character variable i declared
// break;
}
}
matrix_display(A[1], row_size1, col_size1);
}
}
while(flag == 1);
//return 0;
}
void matrix_display(int *A, int row_size1, int col_size1)
{
int i,j;
printf("The required matrix is\n");
for(i=0;i<row_size1;i++)
{
for(j=0;j<col_size1;j++)
printf("%d ",A[i][j]);
printf("\n");
}
for(i=0;i<row_size1;i++)
{
free(A[i]);
}
free(A);
}