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

Судоку. Задача довольно-таки интересная - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Класс,метод,деструктор http://www.cyberforum.ru/cpp-beginners/thread852679.html
Доброго времени суток! Только начал изучать классы. Задачка у меня, написать прогу в которой отработает:конструктор, деструктор, метод и будут публичные и частные типы данных. Вроде бы по учебной инфе, во время изучения все было понятно, но как оказалось не все =) Может ко разъяснить почему компилятор ругается на тип возвращаемого значения деструктора, и почему не вызывается метод void...
C++ Найти ошибку в цикле Программа находит слова из массива MS и заменяет их цифрами из cif, в данном случае MS это для слова ZERO И все работает правильно, кроме, того, что цикл пытается выполнится лишний раз и это вызывает ошибку, то есть мне нужно написать какое-то дополнительное условие выхода из цикла, чтобы цикл не пытался выполниться еще раз, помогите пожалуйста char *MS={"ZERO", "ONE", "TWO", "THREE",... http://www.cyberforum.ru/cpp-beginners/thread852673.html
Необходимо определить пересекаются ли прямоугольники C++
Осталась последняя программа на практике: "Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям координат. Известны координаты левого нижнего угла каждого из них и стороны их сторон. Один из прямоугольников назовем первым, а другой - вторым. Верно, что эти прямоугольники не пересекаются."
Сделал задачу, не могу понять, почему не выводит плавоющие запятые! C++
Условия задачи: Составить программу, которая будет вычислять следующую последовательность y= 1+ 1/2 + 1/3 + 1/4 + ... 1/n (Если кому то не очень понятно, то вот скрин формулы: скриншот формулы //--------------------------------------------------------------------------- #include <windows.h> #include <iostream.h> #include <math.h> #include <stdio.h> #include <clx.h>
C++ Создать класс - данные - абстрактный базовый класс. Создать производные классы http://www.cyberforum.ru/cpp-beginners/thread852602.html
Всем привет! У меня вот такая проблема.... Создать класс - данные - абстрактный базовый класс. Создать производные классы - данные типа сигнал, данные типа результат обработки и вспомогательные данные. Все данные имеют функции отображения, сохранения и обработки. В группе нашла как бы решение, но у меня выдает ошибку, а именно (9 строка) вот здесь virtual ~data() {std::cout << "data deleted"...
C++ Поменять местами в квадратной матрице строку со столбцом, содержащие максимальный элемент Массив я задал,а дальше через цикл ,но не пойму как это описать,помогите. Вот что есть пока: #include <iostream> #include <clocale> #include <conio.h> #include <iomanip> using namespace std; int main() { подробнее

Показать сообщение отдельно
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
30.04.2013, 14:29     Судоку. Задача довольно-таки интересная
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Автор решения : Матов Дмитрий.
// 6 ms на худшем тесте
#include <cstdio>
#include <cstdlib>
#include <cmath>
 
using namespace std;
 
#define forn(i, n) for(int i = 0; i < (int)(n); i++)
#define for1(i, n) for(int i = 1; i <= (int)(n); i++)
 
int a[9][9];
bool u_r[9][9], u_c[9][9], u_s[9][9];
 
void rec(char x, char y)
{
    if (y == 9)
    {
        y = 0;
        ++x;
    }
    if (x == 9)
    {
        forn(i, 9)
        {
            forn(j, 9) printf("%d", a[i][j] + 1);
            printf("\n");
        }
        exit(0);
    }
    if (a[x][y] >= 0)
    {
        rec(x, y + 1);
        return;
    }
    char s = (x / 3) * 3 + (y / 3);
    forn(i, 9)
    {
        if (u_r[x][i] || u_c[y][i] || u_s[s][i]) continue;
        u_r[x][i] = u_c[y][i] = u_s[s][i] = true;
        a[x][y] = i;
        rec(x, y + 1);
        u_r[x][i] = u_c[y][i] = u_s[s][i] = false;
        a[x][y] = -1;
    }
}
 
int main()
{
    char c;
    forn(i, 9)
    {
        forn(j, 9)
        {
            scanf("%c", &c);
            a[i][j] = c - '1';
            if (a[i][j] >= 0)
            {
                u_r[i][a[i][j]] = true;
                u_c[j][a[i][j]] = true;
                u_s[(i / 3) * 3 + (j / 3)][a[i][j]] = true;
            }
        }
        scanf("\n");
    }
    rec(0, 0);
    return 0;
}
Ввод
567823941
931764582
824951360
048315796
679248135
153607824
782136450
395472618
406589273

Вывод
567823941
931764582
824951367
248315796
679248135
153697824
782136459
395472618
416589273

Добавлено через 2 минуты
Lonter, А проверка вообще халява, проверьте условие судоку
 
Текущее время: 08:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru