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

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

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

Судоку. Ввод/вывод в файл - C++

18.05.2013, 13:56. Просмотров 354. Ответов 0
Метки нет (Все метки)

Здравствуйте. Возникла такая проблема, нашёл программу решения судоку, там ввод в самой програме, нужно сделать ввод/вывод в файл. Не могу додуматься как это сделать. Помогите пожалуйста.
Вот код программы:
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <iostream>
#include <algorithm>
 
const unsigned SIZE=9;
 
typedef unsigned char sudoku[SIZE][SIZE];
 
bool check(sudoku matrix,unsigned x,unsigned y){
    unsigned char val=matrix[x][y];
    for (unsigned a=0;a<x;a++)
        if (matrix[a][y]==val)
            return 0;
    for (unsigned a=x+1;a<SIZE;a++)
        if (matrix[a][y]==val)
            return 0;
    for (unsigned a=0;a<y;a++)
        if (matrix[x][a]==val)
            return 0;
    for (unsigned a=y+1;a<SIZE;a++)
        if (matrix[x][a]==val)
            return 0;
    unsigned startx=x/(SIZE/3)*3,
        starty=y/(SIZE/3)*3,
        endx=startx+SIZE/3,
        endy=starty+SIZE/3;
    for (unsigned a=startx;a<endx;a++){
        for (unsigned b=starty;b<endy;b++){
            if (a!=x && b!=y && matrix[a][b]==val)
                return 0;
        }
    }
    return 1;
}
 
void printMatrix(sudoku matrix){
    for (unsigned b=0;b<SIZE;b++){
        for (unsigned a=0;a<SIZE;a++){
            if (matrix[a][b])
                std::cout <<(int)matrix[a][b];
            else
                std::cout <<'_';
            if (a && a%(SIZE/3)==SIZE/3-1)
                std::cout <<' ';
        }
        std::cout <<std::endl;
        if (b && b%(SIZE/3)==SIZE/3-1)
            std::cout <<std::endl;
    }
}
 
void transpose(sudoku matrix){
    for (unsigned y=0;y<SIZE-1;y++){
        for (unsigned x=y+1;x<SIZE;x++){
            std::swap(matrix[x][y],matrix[y][x]);
        }
    }
}
 
bool solve(sudoku matrix,unsigned pos=0){
    unsigned x=pos%SIZE,
        y=pos/SIZE;
    if (y>=SIZE)
        return 1;
    if (matrix[x][y])
        return solve(matrix,pos+1);
    for (unsigned a=1;a<=SIZE;a++){
        
        matrix[x][y]=a;
        if (check(matrix,x,y) && solve(matrix,pos+1))
            return 1;
    }
    matrix[x][y]=0;
    return 0;
}
 
int main(){
    sudoku matrix=
    {
        1,0,00,0,70,9,0,
        0,3,00,2,00,0,8,
        0,0,96,0,05,0,0,
        
        0,0,53,0,09,0,0,
        0,1,00,8,00,0,2,
        6,0,00,0,40,0,0,
        
        3,0,00,0,00,1,0,
        0,4,00,0,00,0,7,
        0,0,70,0,03,0,0,
    };
    transpose(matrix);
    if (!solve(matrix))
        std::cout <<"Unsolvable!"<<std::endl;
    else
        printMatrix(matrix);
 
return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2013, 13:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Судоку. Ввод/вывод в файл (C++):

Вывод суммы в файл (файловый ввод/вывод) - C++
Добрый день! Я пытался написать программу, которая должна вводить данные из файла №1, потом вычислять их сумму и полученное значение...

Ввод/вывод в файл - C++
Как переменные всех объектов вывести в файл? Создаю массив из 2 объектов, но записываются значения только последнего введенного. Значения...

Файл. Ввод/вывод. - C++
нуждаюсь в вашей помощи. создать входной файл из нескольки строк символов. создать выходной файл в который записать 3 строчку с...

Ввод вывод в файл - C++
у меня задание Написать программу на языке C++, осуществляющую чтение из файла содержащего 10 целых чисел, кратных вашему номеру в журнале...

ввод и вывод в файл - C++
помогите исправить код, мне нужно чтобы с файла считывало три слова и выводило туда общую букву,напримервывести должно букву а только...

Ввод и вывод в файл - C++
Дан текстовый файл INPUT.TXT. Проверить в тексте файла правильности расстановки открывающих и закрывающих скобок ‘(‘, ‘)’, ‘{‘, ‘}’, ‘’....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2013, 13:56
Привет! Вот еще темы с ответами:

Ввод-вывод в файл - C++
Доброго времени суток.Помогите пожалуйста разобраться. Нужно записать в файл структуру,которая создается в данной программе и считать...

Файл ввод-вывод - C++
У меня есть задача в которой нужно: 1) Скопировать в файл F2 только те строки из F1, которые начинаются с символа заданного...

Ввод\вывод в файл - C++
Здравствуйте! Подскажите пожалуйста, как ПРАВИЛЬНО организовать ввод и вывод в файл в С++.И ещё,подскажите как в файле при чтении или...

Ввод-вывод в файл на C++ - C++
Есть txt файл &quot;semiya.txt&quot;, в котором есть список: мама папа брат сестра (в столбике). Надо создать другой txt файл...


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

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

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