Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
anti-k
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
#1

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

22.07.2015, 21:57. Просмотров 941. Ответов 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++):

Заполнить матрицу змейкой
Нужно заполнить квадратный двухмерный масив змейкой и вывести. 1 2 3 ...

Заполнить матрицу змейкой
Напишите программу, которая заполняет матрицу из N строк и M столбцов...

Заполнить матрицу змейкой
1 8 9 16 2 7 10 16 3 6 11 14 4 5 12 13

Заполнить матрицу змейкой
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 ...

Заполнить квадратную матрицу змейкой
Задано число N. Заполните квадратную матрицу NxN числами от 1 до N^2 “змейкой”,...

Заполнить квадратную матрицу 10 на 10 змейкой
заполнить квадратную матрицу 10 на 10 змейкой С++ вот так: 91 92 93 94...98...

8
shmkv
652 / 371 / 57
Регистрация: 21.07.2015
Сообщений: 1,059
22.07.2015, 22:08 #2
Лучший ответ Сообщение было отмечено anti-k как решение

Решение

Цитата Сообщение от 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 / 31
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
22.07.2015, 22:14  [ТС] #3
Что ві имеете в виду "отформатировать", прежде чем напичатать запустить в редактор? Я не совсем понял как им пользоваться

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

Добавлено через 1 минуту
shmkv, И еще, как правельно ввестим в функцию двухмерній массив?
0
shmkv
652 / 371 / 57
Регистрация: 21.07.2015
Сообщений: 1,059
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 / 31
Регистрация: 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
652 / 371 / 57
Регистрация: 21.07.2015
Сообщений: 1,059
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
Супер-модератор
Эксперт С++
5765 / 2763 / 374
Регистрация: 01.11.2011
Сообщений: 6,717
Завершенные тесты: 1
23.07.2015, 09:02 #7
Для общего развития: Очень простое заполнение матрицы змейкой по диагоналям (c) -=ЮрА=-
2
mr_mczakenberg
65 / 65 / 72
Регистрация: 10.04.2015
Сообщений: 281
23.07.2015, 09:05 #8
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Теги отказываются в блогах работать?
0
SatanaXIII
Супер-модератор
Эксперт С++
5765 / 2763 / 374
Регистрация: 01.11.2011
Сообщений: 6,717
Завершенные тесты: 1
23.07.2015, 09:46 #9
Цитата Сообщение от mr_mczakenberg Посмотреть сообщение
Теги отказываются в блогах работать?
Ага. У забаненных. Не будьте забаненным или у вас откажут теги.
0
23.07.2015, 09:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2015, 09:46
Привет! Вот еще темы с решениями:

Заполнить квадратную матрицу змейкой
заполнить квадратную матрицу NxN змейкой С++ вот так: 25 24 23 22 21 16 17...

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

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

Заполнить матрицу натуральными числами змейкой по диагонали
Помогите с задачей :( Входные данные Входная строка содержит числа N и M ,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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