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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
anti-k
227 / 75 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
#1

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

22.07.2015, 21:57. Просмотров 682. Ответов 8
Метки нет (Все метки)

Простая задача. Заполнить матрицу змейкой. Я совершенный новичок. Только начали проходить функции, указатели еще не проходили. Если можно как нибудь усовершенствовать мой код, подскажите. И еще почему я, когда задаю аргументы функции до мэйна, компилятор требует ввода м и н до мэйна?
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;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2015, 21:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заполнить матрицу змейкой (C++):

Заполнить матрицу змейкой - C++
Напишите программу, которая заполняет матрицу из N строк и M столбцов натуральными числами змейкой, как показано в примере. Входные...

Заполнить матрицу змейкой - C++
Нужно заполнить квадратный двухмерный масив змейкой и вывести. 1 2 3 6 5 4 7 8 9

Заполнить матрицу змейкой - C++
25 24 23 22 21 16 17 18 19 20 15 14 13 12 11 6 7 8 9 10 5 4 3 2 1 int main(){

Заполнить квадратную матрицу змейкой - C++
заполнить квадратную матрицу NxN змейкой С++ вот так: 25 24 23 22 21 16 17 18 19 20 15 14 13 12 11 6 7 8 9 10 5 4 3 2 1

Заполнить квадратную матрицу 10 на 10 змейкой - C++
заполнить квадратную матрицу 10 на 10 змейкой С++ вот так: 91 92 93 94...98 99 100 90 89 88 87...83 82 81 . . . 11 12 13...

Заполнить квадратную матрицу змейкой - C++
Задано число N. Заполните квадратную матрицу NxN числами от 1 до N^2 “змейкой”, как показано в примере. 4 1 8 9 16 2 7 10 15...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
shmkv
578 / 292 / 39
Регистрация: 21.07.2015
Сообщений: 877
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);
 ...
}
0
anti-k
227 / 75 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
22.07.2015, 22:14  [ТС] #3
Что ві имеете в виду "отформатировать", прежде чем напичатать запустить в редактор? Я не совсем понял как им пользоваться

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

Добавлено через 1 минуту
shmkv, И еще, как правельно ввестим в функцию двухмерній массив?
0
shmkv
578 / 292 / 39
Регистрация: 21.07.2015
Сообщений: 877
22.07.2015, 22:52 #4
Цитата Сообщение от anti-k Посмотреть сообщение
Что ві имеете в виду "отформатировать", прежде чем напичатать запустить в редактор?
Судя по посту, уже понял.
Цитата Сообщение от anti-k Посмотреть сообщение
как правельно ввестим в функцию двухмерній массив?
если речь про параметры то так:
C++
1
2
3
4
void f(int a[][n])
{
 
}
где n - количество столбцов в матрице.
0
anti-k
227 / 75 / 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.
0
shmkv
578 / 292 / 39
Регистрация: 21.07.2015
Сообщений: 877
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 задавать динамически (чтобы пользователь мог ввести), то такой способ передачи матрицы не подходит. Гугли на тему "динамическое создание двумерного массива с++".
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,529
Завершенные тесты: 1
23.07.2015, 09:02 #7
Для общего развития: Очень простое заполнение матрицы змейкой по диагоналям (c) -=ЮрА=-
2
mr_mczakenberg
65 / 65 / 31
Регистрация: 10.04.2015
Сообщений: 281
23.07.2015, 09:05 #8
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Теги отказываются в блогах работать?
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,529
Завершенные тесты: 1
23.07.2015, 09:46 #9
Цитата Сообщение от mr_mczakenberg Посмотреть сообщение
Теги отказываются в блогах работать?
Ага. У забаненных. Не будьте забаненным или у вас откажут теги.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2015, 09:46
Привет! Вот еще темы с ответами:

Заполнить матрицу змейкой согласно условию - C++
Доброго времени суток,в общем,у меня такая проблема,не могу понять ,как сделать подобную задачу,пытался заполнить через rand , пытался...

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

Требуется заполнить змейкой квадратную матрицу так, как показано на рисунке - C++
Требуется заполнить змейкой квадратную матрицу так, как показано на рисунке справа: заполнение происходит с единицы из левого верхнего угла...

Заполнить матрицу размером n*m змейкой по горизонтали, начиная движение от элемента matrix[0][0] - C++
Необходимо заполнить массив int a следующим образом (пример для n=4, m=6): Пытаюсь сделать вот так, но не получается: for(i=1;...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.07.2015, 09:46
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru