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

Заполнить матрицу змейкой - C++

Восстановить пароль Регистрация
 
anti-k
 Аватар для anti-k
226 / 74 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
22.07.2015, 21:57     Заполнить матрицу змейкой #1
Простая задача. Заполнить матрицу змейкой. Я совершенный новичок. Только начали проходить функции, указатели еще не проходили. Если можно как нибудь усовершенствовать мой код, подскажите. И еще почему я, когда задаю аргументы функции до мэйна, компилятор требует ввода м и н до мэйна?
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
#include <iostream>
#include <iomanip>
#include<conio.h>
using namespace std ;
const int n=4, m=5; 
int zmeika(){
 int arr[n][m]={0};
 int a=0,b=0;  
    if (n == 1)
        for (int i = 0; i < m; i++)//row;
            arr[0][i] = i + 1;
    else if (m == 1)
        for (int i = 0; i < n; i++)//coloumn;
            arr[i][0] = i + 1;
    else
        while (b <= (m * n)-1)
        {
            for (int i = a; i < m - a ; i++)
                arr[a][i] = b++;             
            for (int i = a + 1; i < n - a ; i++)
                arr[i][m - a - 1] = b++;            
            for (int i = m - a - 2; i >= a; i--)
                arr[n - a - 1][i] = b++;           
            for (int i = n - a - 2; i > a; i--)
                arr[i][a] = b++;        
            a++;
        }
    for (int i = 0; i < n; i++){
        for (int j = 0; j < m; j++)
            cout <<setw(2)<<arr[i][j]<<"\t"; 
    cout << endl<<endl;
    }               
}
 
int main()
{
zmeika();         
 getch(); 
 return 0;
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
shmkv
540 / 254 / 29
Регистрация: 21.07.2015
Сообщений: 756
22.07.2015, 22:08     Заполнить матрицу змейкой #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от anti-k Посмотреть сообщение
Если можно как нибудь усовершенствовать мой код, подскажите
Для начала отформатировать, хотя бы из уважения к его проверяющим.
Цитата Сообщение от anti-k Посмотреть сообщение
еще почему я, когда задаю аргументы функции до мэйна, компилятор требует ввода м и н до мэйна?
Компилятор не может требовать ввода. Он требует объявления. Можно (и лучше) не объявлять глобальных переменных, а передавать параметрами в нужную функцию.
C++
1
2
3
4
5
6
7
int zmeika(int n, int m);
int main()
{
 ...
 zmeika(n, m);
 ...
}
anti-k
 Аватар для anti-k
226 / 74 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
22.07.2015, 22:14  [ТС]     Заполнить матрицу змейкой #3
Что ві имеете в виду "отформатировать", прежде чем напичатать запустить в редактор? Я не совсем понял как им пользоваться

Добавлено через 24 секунды
shmkv, Что ві имеете в виду "отформатировать", прежде чем напичатать запустить в редактор? Я не совсем понял как им пользоваться

Добавлено через 1 минуту
shmkv, И еще, как правельно ввестим в функцию двухмерній массив?
shmkv
540 / 254 / 29
Регистрация: 21.07.2015
Сообщений: 756
22.07.2015, 22:52     Заполнить матрицу змейкой #4
Цитата Сообщение от anti-k Посмотреть сообщение
Что ві имеете в виду "отформатировать", прежде чем напичатать запустить в редактор?
Судя по посту, уже понял.
Цитата Сообщение от anti-k Посмотреть сообщение
как правельно ввестим в функцию двухмерній массив?
если речь про параметры то так:
C++
1
2
3
4
void f(int a[][n])
{
 
}
где n - количество столбцов в матрице.
anti-k
 Аватар для anti-k
226 / 74 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
22.07.2015, 23:05  [ТС]     Заполнить матрицу змейкой #5
shmkv, В таком случае почему не указываются строчки? И вот еще, ввожу и заполняю массив за мэйном, а в мэйне компилятор требует эго повторной инициализации для дальнейшей работы с ним. (Пардоньте за неграмотный русский, я из Украины)

Добавлено через 3 минуты
shmkv, void input(int n,int arr[][m]) компилятор выдает n, m , arr was not diclared in this scope.
shmkv
540 / 254 / 29
Регистрация: 21.07.2015
Сообщений: 756
22.07.2015, 23:28     Заполнить матрицу змейкой #6
Цитата Сообщение от anti-k Посмотреть сообщение
В таком случае почему не указываются строчки?
Можно указать, а можно нет. Компилятору нужно знать только размер строки для расчета смещения. offset = i + j * w;
Цитата Сообщение от anti-k Посмотреть сообщение
И вот еще, ввожу и заполняю массив за мэйном, а в мэйне компилятор требует эго повторной инициализации для дальнейшей работы с ним.
Ошибку приведи.
Цитата Сообщение от anti-k Посмотреть сообщение
void input(int n,int arr[][m]) компилятор выдает n, m , arr was not diclared in this scope
Ну правильно. Т. к. на момент объявления компилятор ничего не знает о m. Если это константа, то можно ее вынести как в твоем первом посту. Если ты хочешь m задавать динамически (чтобы пользователь мог ввести), то такой способ передачи матрицы не подходит. Гугли на тему "динамическое создание двумерного массива с++".
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
23.07.2015, 09:02     Заполнить матрицу змейкой #7
Для общего развития: Очень простое заполнение матрицы змейкой по диагоналям (c) -=ЮрА=-
mr_mczakenberg
65 / 65 / 31
Регистрация: 10.04.2015
Сообщений: 281
23.07.2015, 09:05     Заполнить матрицу змейкой #8
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Теги отказываются в блогах работать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2015, 09:46     Заполнить матрицу змейкой
Еще ссылки по теме:

C++ Заполнить квадратную матрицу 10 на 10 змейкой
Заполнить квадратную матрицу змейкой C++
C++ Заполните матрицу натуральными числами по спирали и змейкой

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
23.07.2015, 09:46     Заполнить матрицу змейкой #9
Цитата Сообщение от mr_mczakenberg Посмотреть сообщение
Теги отказываются в блогах работать?
Ага. У забаненных. Не будьте забаненным или у вас откажут теги.
Yandex
Объявления
23.07.2015, 09:46     Заполнить матрицу змейкой
Ответ Создать тему
Опции темы

Текущее время: 15:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru