Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Двухмерный массив (заполнить змейкой квадратную матрицу) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с матрицей С++ Visual Studio http://www.cyberforum.ru/cpp-beginners/thread960484.html
Люди, помогите сделать задание с матрицей. Вобщем: Дана матрица натуральных чисел (Xij) порядка m*n. Упорядочить столбцы матрицы за неспаданием (это вообще непонятно, что имеется ввиду)...
C++ Работа с файлами Задача программы такова - пользователь вводит строку адреса , например C:\blablabla и программа считывает все размеры файлов хранящихся в этой и всех вложенных папках, определяет дату создания и... http://www.cyberforum.ru/cpp-beginners/thread960471.html
Найти наибольший общий делитель чисел C++
Найти наибольший общий делитель чисел M и N используя метод Эйлера: если M делится на N, то НОД (N, M) = N, иначе НОД (N, M) = НОД (M % N, N).Решить задачу двумя способами – с применением рекурсии и...
C++ задачка на объединения
с клавиатуры вводится комплексное число и натуральное число n. нужно вычислить корень n-ой степени из этого комплексного числа.
C++ Работа с файлом http://www.cyberforum.ru/cpp-beginners/thread960451.html
char *FileName ="123.txt"; int h=fileno(fopen(FileName,"r+")); FileName="\0"; Как мне теперь используя только h работать с файлом? Как записывать в файл и читать, и как закрыть, зная только h?
C++ Тех. задание дипломной работы Привет! В этом учебном году защищаю диплом, в связи с чем у меня возникли некоторые организационные вопросы. Планируется реализовать дипломку в C++. Необходимо автоматизировать работу с... подробнее

Показать сообщение отдельно
Gubila_2000
5 / 1 / 3
Регистрация: 07.11.2014
Сообщений: 190
Записей в блоге: 1
06.06.2015, 19:27
ArtFeather, четные и нечетные диагонали! Точно! Спасибо! Я эту закономерность не проследил видимо потому, что брал слишком маленькие массивы для контрольного примера.

Добавлено через 38 минут
ArtFeather, а, хотя нет, алгоритм нужно немного поменять, так как он работает немного неправильно с матрицами нечетной размерности. Это можно исправить поставив условие четности размерности, но таким образом код увеличится в 2 раза.

Добавлено через 21 минуту
вот я подправил. Программа прошла все тесты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <stdio.h>
 
#define n 101
 
unsigned a[n][n];
 
void matr_snake(int N)
{
    int i, x, y, k=1;
    
    for (i=0; i<N; i++) // первая половина
    {
        if (i%2==0) // по четным диагоналям
        {
            x=0;
            y=i;
 
            while (y>=0)
            {
                a[x][y]=k;
                x++; y--; k++;
            }
        }
        else // по нечетным
        {
            x=i; y=0;
            while (x>=0)
            {
                a[x][y]=k;
                k++; x--; y++;
            }
        }
    }
    if (N%2!=0){
    for (i=1; i<N; i++) // вторая половина
    {
        if (i%2==0)
        {
            x=i; y=N-1;
            while (x<=N-1)
            {
                a[x][y]=k;
                k++; x++; y--;
            }
        }
        else
        {
            x=N-1; y=i;
            while (y<=N-1)
            {
                a[x][y]=k;
                k++; x--; y++;
            }
        }
    }
    }
    else
    {
    for (i=1; i<N; i++) // вторая половина
    {
        if (i%2==0)
        {
            x=N-1; y=i;
            while (y<=N-1)
            {
                a[x][y]=k;
                k++; x--; y++;
            }
        }
        else
        {
            x=i; y=N-1;
            while (x<=N-1)
            {
                a[x][y]=k;
                k++; x++; y--;
            }
        }
    }
    }
}
 
 
void main()
{
    int N, i, x, y, k=1, p=0;
    // unsigned a[n][n];
    FILE *f;
 
    f = fopen ("INPUT.TXT", "r");
    fscanf(f, "%d", &N);
    fclose(f);
 
    matr_snake(N);
    
    
    f=fopen("OUTPUT.TXT", "w");
    for (x=0; x<N; x++){
        for (y=0; y<N; y++)
            fprintf(f, "%d ", a[x][y]);
            fprintf(f, "\n");
    }
    fclose(f);
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru