Вывод массива функцией
Задача такова: Задать двумерный массив 10*6 и заполнить его целыми числами из диапазона [-1, 1]. Вывести на экран массив в прямоугольном виде. Вывести на экран массив в прямоугольном виде, так чтобы отображались только элементы, равные нулю. Использовать функцию заполнения массива и две функции вывода массива на экран.
Я написал код, но почему-то массив ломается и выводится неправильно.
#include <stdlib.h>
#define A -1
#define B 1
#define N 10
#define M 6
//
void random_z();
void print_mas1();
void random_z() {
int i, j, mas[N][M];
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
mas[i][j] = A + rand() % (B - A + 1);
}
}
}
//
void print_mas1() {
int i, j, mas[N][M];
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
printf("%5d", mas[i][j]);
}
printf("\n");
}
}
//
void print_mas2() {
int i, j, mas[N][M];
char c = '+';
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
if (mas[i][j] == 0) {
printf("%5d", mas[i][j]);
} else if ((mas[i][j] == 1) || (mas[i][j] == -1)) {
printf("%5c", c);
}
}
printf("\n");
}
}
//
int main(void) {
int i, j, mas[N][M];
random_z();
print_mas1();
printf("\n");
print_mas2();
return 0;
}
``` <br>
Если в условии 2ой функции писать else if (mas[i][j] !=0), то вроде на взгляд выводит правильно, но съезжает на 1 значение, т.е все элементы съедут на 1 вправо, а первый(нулевой) появится из неоткуда. Подскажите, что не так, пожалуйста
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Вы отдаете себе отчем, что массивы все разные? Что mas, объявленный в функции, только в ней и существует? Понимаете, Виктория в семье Ивановых, Виктория в семье Петровых и Виктория в семье Благодер — это три разные Виктории...
void random_z(int mas[N][M])
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
mas[i][j] = A + rand() % (B - A + 1);
}
}
}
void print_mas1(int mas[N][M])
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
printf("%5d", mas[i][j]);
}
printf("\n");
}
}
void print_mas2(int mas[N][M])
{
char c = '+';
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
if (mas[i][j] == 0)
{
printf("%5d", mas[i][j]);
} else
{
printf("%5c", c);
}
}
printf("\n");
}
}
//
int main(void) {
int mas[N][M];
random_z(mas);
print_mas1(mas);
printf("\n");
print_mas2(mas);
}