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

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

22.07.2015, 21:57. Просмотров 1615. Ответов 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)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2015, 21:57
Ответы с готовыми решениями:

Заполнить матрицу змейкой
Напишите программу, заполняющую матрицу nxn (значение значение n вводить с клавиатуры) по правилу,...

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

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

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

8
shmkv
3310 / 473 / 67
Регистрация: 21.07.2015
Сообщений: 1,240
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
3310 / 473 / 67
Регистрация: 21.07.2015
Сообщений: 1,240
22.07.2015, 22:52 4
Цитата Сообщение от anti-k Посмотреть сообщение
Что ві имеете в виду "отформатировать", прежде чем напичатать запустить в редактор?
Судя по посту, уже понял.
Цитата Сообщение от anti-k Посмотреть сообщение
как правельно ввестим в функцию двухмерній массив?
если речь про параметры то так:
C++
1
2
3
4
void f(int a[][n])
{
 
}
где n - количество столбцов в матрице.
0
22.07.2015, 22:52
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
3310 / 473 / 67
Регистрация: 21.07.2015
Сообщений: 1,240
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
Почетный модератор
Эксперт С++
5809 / 2810 / 386
Регистрация: 01.11.2011
Сообщений: 6,819
Завершенные тесты: 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
Почетный модератор
Эксперт С++
5809 / 2810 / 386
Регистрация: 01.11.2011
Сообщений: 6,819
Завершенные тесты: 1
23.07.2015, 09:46 9
Цитата Сообщение от mr_mczakenberg Посмотреть сообщение
Теги отказываются в блогах работать?
Ага. У забаненных. Не будьте забаненным или у вас откажут теги.
0
23.07.2015, 09:46
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2015, 09:46

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

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

Заполнить матрицу змейкой по спирали
Необходимо создать змейку типа 1 2 3 4 5 6 36 35 34 33 32 7 19 20 21 22 31 8 18 25 24...


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

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

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