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

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

Войти
Регистрация
Восстановить пароль
 
Sashuteak
0 / 0 / 0
Регистрация: 06.03.2016
Сообщений: 2
#1

Функция проверки двумерного массива C++ - C++

06.03.2016, 01:34. Просмотров 267. Ответов 3
Метки нет (Все метки)

Здравствуйте! Мне нужна помощь вот в чем - мое полное задание это написать игру пятнашки которая должна состоять из 5 функций!!
1 - функция которая заполняет массив случайными числами от 0 до 16
2 - функция которая выводит этот исходный массив с которого все начинается
3 - функция которая находит позицию нуля в массиве
4 - функция которая двигает нулем как пустой ячейкой
5 - функция которая проверяет массив на победу

я сделал все функции кроме последней пятой
5 - функция которая проверяет массив на победу - это значит что она принимает заполненный массив и если он упорядочен с 1 до 15 и последний элемент 0 тогда она возвращает значение истина!!!
примерно так!!! и я никак не могу последнюю функцию сделать правильно!!!

вот тут я остановился!!!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bool win_check(int mas[][2], int row, int col) //Проверка на победу
{
    bool win;
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
        {
            if (mas[i][j] < mas[i][j + 1] && mas[1][1] == 0)
            {
                win = true;
                break;
            }
            else
            {
                win = false;
            }
        }
    }
    return win;
}
этот код не работает!! помогите пожалуйста разобраться в чем дело, что я не так делаю!
Спасибо огромное за помощь
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2016, 01:34     Функция проверки двумерного массива C++
Посмотрите здесь:

Программа проверки двумерного динамического массива на простое число - C++
Здраствуйте,мне поставили задачу написать программу проверки двумерного динамического массива на простое число.Так вот массив я составил...

Функция ввода двумерного массива - C++
Ребят, помогите! Надо написать функцию чтобы с помощью нее мы вводили двумерный массив! Не знаю какие параметры задать и что внутри...

Функция сортировки двумерного массива - C++
необходимо написать функцию сортирующую двумерный массив. за основу взял сортировку при помощи указателей типа: for (int g=0; g&lt;n*m;...

Функция для двумерного массива - C++
Мне нужно написать функцию или скажите, пожалуйста, правильно ли она составлена в коде /* в каждой строке существуют элементы на...

Функция печати двумерного массива - C++
Компилируется успешно, но при вызове функции Print() выводя &quot; |1&quot; попадает в бесконечный цикл. void Print(float **M, int n, int m) { ...

Функция объявления двумерного массива - C++
Данный код - объявляет двумерный массив arr. Как из этого куска кода сделать функцию? Передаваемые параметры как мне кажется n и m, а...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13051 / 7314 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
06.03.2016, 01:35     Функция проверки двумерного массива C++ #2
В общем случае, для оформления кода,
выделите код и нажмите на кнопку соответствующего языка (см. изображение)
Juffin
50 / 50 / 16
Регистрация: 24.12.2011
Сообщений: 133
06.03.2016, 01:48     Функция проверки двумерного массива C++ #3
Можно начать с того, что первый элемент матрицы - это mas[0][0], а не mas[1][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
bool win_check(int mas[][], int row, int col) //Проверка на победу
{
    bool win = true;
    int previous = -1;
 
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
        {
            if (i == 0 && j == 0)
                previous = mas[0][0];
            else
                if (mas[i][j] > previous)
                {
                    win = false;
                    break;
                }
 
            previous = mas[i][j];
        }
    }
    return win;
}
Добавлено через 6 минут
Прошу прощения, вот правильный код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
bool win_check(int mas[][], int row, int col) //Проверка на победу
{
    int previous = -1;
 
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
        {
            if (i == 0 && j == 0)
                previous = mas[0][0];
            else
                if (mas[i][j] > previous)
                    return false;
 
            previous = mas[i][j];
        }
    }
    return true;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2016, 08:32     Функция проверки двумерного массива C++
Еще ссылки по теме:

Функция fill Для двумерного массива - C++
Как использовать функцию fill с двумерным массивом std::fill(array, array + size, 1.0); к примеру есть двумерный массив int...

Шаблонная функция сортировки двумерного массива - C++
Помогите пожалуйста написать шаблонную функцию сортировки двумерного массива (матрицы) любым методом. Пробовал пузырьком, компилятор не...

Функция инициализации двумерного массива нулевыми элементами - C++
написать функцию инициализации двумерного массива нулевыми элементами использовать функцию для двух массивов A(10*10) B(2*50)

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


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

Или воспользуйтесь поиском по форуму:
marat_miaki
106 / 95 / 35
Регистрация: 08.04.2013
Сообщений: 345
06.03.2016, 08:32     Функция проверки двумерного массива C++ #4
Можно наверное улучшить, пока только учусь
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
#include <iostream>
#include<cstdlib>
using namespace std;
bool win_check(int *, int row, int col);
 
int main()
{
    const int row = 4, col = 4;
    int mas[row][col];
    int *p = &mas[0][0];
    
    for (int i = 0; i < row*col; i++)
    {
        *(p + i) = i+1;
        if(!(i%row)) cout <<endl;
        if (i == 15 ) *(p + i) = 0;
        cout << *(p + i) << "\t";
    }
    cout << endl;
    
    if (win_check) cout << "Yess";
   
   return 0; 
}
 
bool win_check(int *p, int row, int col) //Проверка на победу
{
    bool win =true;
    if (*(p + 15)  != 0 ) win = false; //и можно выйти
    for (int i = 0; i < row*col-1; ++i)
    {
     if( *(p + i)  != (i+1) ) win = false;
    }
     return win;
}
Добавлено через 12 минут
C++
1
21 if (win_check(p, row, col)) cout << "Yess";
Yandex
Объявления
06.03.2016, 08:32     Функция проверки двумерного массива C++
Ответ Создать тему
Опции темы

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