Как ввести, обработать и вывести двумерный массив с использованием функций и прототипа?
Есть работающая программа, но у меня никак не получается добавить в неё функции. Помогите, пожалуйста.
#include<stdio.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "Rus");
int n, m, i, j, k, c, a[10][10];
printf("Введите количество строк\n"); // начало ввода
scanf_s("%d", &n);
printf("Введите количество столбцов\n");
scanf_s("%d", &m);
printf("Введите массив\n");
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
scanf_s("%d", &a[i][j]); // конец ввода
for (k = 1; k <= n; k++) // начало обработки
for (i = 1; i <= m - 1; i++)
for (j = 1; j <= m - i; j++)
{
if (a[k][j] < a[k][j + 1])
{
c = a[k][j];
a[k][j] = a[k][j + 1];
a[k][j + 1] = c;
}
}
for (k = 1; k <= n; k++)
for (i = 1; i <= m - 1; i++)
for (j = 1; j <= m - i; j++)
if ((a[k][j] <= 0) && (a[k][j] > a[k][j + 1]))
{
c = a[k][j];
a[k][j] = a[k][j + 1];
a[k][j + 1] = c;
} // конец обработки
printf("\nОтсортированный массив\n\n"); // начало вывода
for (i = 1; i <= n; i++)
{
for (j = 1; j <= m; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
} // конец вывода
return 0;
}
Ответы (1 шт):
Автор решения: Sergey
→ Ссылка
Вы это имели в виду?
#include<stdio.h>
#include <locale.h>
// Прототипы функций
void input_data(int a[10][10], int *n, int *m);
void process_data(int a[10][10], int n, int m);
void print_result(int a[10][10], int n, int m);
// Главная функция программы
int main()
{
int n, m, a[10][10];
setlocale(LC_ALL, "Rus");
input_data(a, &n, &m);
process_data(a, n, m);
print_result(a, n, m);
return 0;
}
// Реализации прототипов
void input_data(int a[10][10], int *n, int *m) {
int i,j,w;
printf("Введите количество строк\n"); // начало ввода
scanf("%d", &w);
*n = w;
printf("Введите количество столбцов\n");
scanf("%d", &w);
*m = w;
printf("Введите массив\n");
for (i = 1; i <= *n; i++)
for (j = 1; j <= *m; j++)
scanf("%d", &a[i][j]); // конец ввода
}
void process_data(int a[10][10], int n, int m) {
int c, k, i, j;
for (k = 1; k <= n; k++) // начало обработки
for (i = 1; i <= m - 1; i++)
for (j = 1; j <= m - i; j++)
{
if (a[k][j] < a[k][j + 1])
{
c = a[k][j];
a[k][j] = a[k][j + 1];
a[k][j + 1] = c;
}
}
for (k = 1; k <= n; k++)
for (i = 1; i <= m - 1; i++)
for (j = 1; j <= m - i; j++)
if ((a[k][j] <= 0) && (a[k][j] > a[k][j + 1]))
{
c = a[k][j];
a[k][j] = a[k][j + 1];
a[k][j + 1] = c;
} // конец обработки
}
void print_result(int a[10][10], int n, int m) {
int i,j;
printf("\nОтсортированный массив\n\n"); // начало вывода
for (i = 1; i <= n; i++)
{
for (j = 1; j <= m; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
} // конец вывода
}
Только заменил виндовозные scanf_s на стандартные сишные scanf.