Two Dimensional Arrays
#include <stdio.h>
#include "myio_c.h"
#define COL 5
void fill_1d_all(int [], int, int);
void fill_2d_all(int [][COL], int, int, int, int);
void write_2d(int [][COL], int, int, int, int);
void fill_2d_part(int [][COL], int, int, int, int, int *);
int main(void)
{
int table[4][COL];
int rows, i;
fill_2d_all(table, 0, 3, 0, COL - 1);
write_2d(table, 0, 3, 0, COL - 1);
fill_2d_part(table, 0, 3, 0, COL - 1, &rows);
write_2d(table, 0, rows, 0, COL - 1);
for (i = 0; i <= 3; i++)
fill_1d_all(table[i], 0, COL - 1);
write_2d(table, 0, 3, 0, COL - 1);
return (0);
}
void fill_1d_all(int array[], int low, int high)
{
int i;
for (i = low; i <= high; i++)
{
printf("\nEnter a value for element #%d: ", i + 1);
get_int(&array[i]);
}
}
void fill_2d_all(int array[][COL], int lrow, int hrow, int lcol, int hcol)
{
int i, j;
for (i = lrow; i <= hrow; i++)
{
printf("\nEnter values for row %d: ", i + 1);
for(j = lcol; j <= hcol; j++)
get_int(&array[i][j]);
}
}
void write_2d(int array[][COL], int lrow, int hrow, int lcol, int hcol)
{
int i, j;
for (i = lrow; i <= hrow; i++)
{
printf("\n");
for(j = lcol; j <= hcol; j++)
printf("%d\t", array[i][j]);
}
}
void fill_2d_part(int array[][COL], int lrow, int hrow,
int lcol, int hcol, int *actual_row)
{
int i, j;
int temp, stop_value = -1;
i = lrow;
do
{
printf("\nEnter values for row %d or %d to quit ", i + 1, stop_value);
get_int(&temp);
if (temp != -1)
{
array[i][lcol] = temp;
for(j = lcol + 1; j <= hcol; j++)
get_int(&array[i][j]);
i++;
}
}
while ((i <= hrow) && (temp != stop_value));
*actual_row = i - 1;
}