Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2009, 12:23   #1
forsaken66
Куды бечь?
Форумчанин
 
Аватар для forsaken66
 
Регистрация: 05.10.2009
Сообщений: 104
Стрелка Олимпиадная задачка. И проблемка.

Итак, условие задачи:

Играли ли вы когда нибудь в сапера? Цель игры состоит в том чтобы найти расположение всех мин на поле размером М*N. Суть такова: пользователь вводит произвольное число полей (произвольного, опять же, размера) и заполняет эти поля минами и пустыми ячейками. Нужно обработать это поле, и выдать второе поле, содержащее подсказки (циферки) рядом с минами (сами мины тоже) согласно правилам "Сапёра".

входные данные:

4 4
*...
....
.*..
....

3 5
**...
.....
.*...

0 0
Пользователь продолжает вводить поля пока не введет 0 0.

выходные данные:
Field#1:
*100
2210
1*10
1110

Field#2
**100
33200
1*100

Что сделал я:
В принципе задачу решил НО только для одного поля, т.е. юзер вводит одно поле (размер произволен) и дальше программа выдает второе поле(с подсказками). Так вот вопрос: если пользователь вводит произвольное число полей... то где их хранить пока он закончит ввод? Самое умное что пришло в голову-хранить их (поля) в файле, а потом считывать их оттуда и обрабатывать согласно условил Но как это грамотно организовать не пойму...

Вот что наделал пока:
Вложения
Тип файла: txt Zadach2.txt (4.2 Кб, 150 просмотров)
Не хватало всего одного байта. Да-да, того самого, что из восьми бит состоит.

Последний раз редактировалось forsaken66; 07.10.2009 в 12:26.
forsaken66 вне форума Ответить с цитированием
Старый 07.10.2009, 12:34   #2
Consol
Пользователь
 
Регистрация: 19.08.2009
Сообщений: 89
По умолчанию

организовать не сложно в файл первой строкой забиваешь размерность поля(например)
3 4(то есть поле 3 на 4)
затем забиваешь элементы этого поля
* _ _ _
_ _ _ _
* _ _ _
а для следующего поля опять сначала размерность а потом поле, и у тебя получится что ты открываешь файл считываешь размерность поля , затем по размерности поля считываешь поля(файл не закрываешь), как только обработал это поле переходишь к другому, и так далее пока не закончится файл
Consol вне форума Ответить с цитированием
Старый 07.10.2009, 12:50   #3
forsaken66
Куды бечь?
Форумчанин
 
Аватар для forsaken66
 
Регистрация: 05.10.2009
Сообщений: 104
По умолчанию

Ага, ясно. Ну вот я допустим открыл файл:
1) размеры поля считал.
2) по ним делаю цикл, с фикс. количеством повторений,заполняю матрицу.
3) Потом скармливаю ее функции, которая обрабатывает матрицу, расставляя подсказки.
4) затем п 1. (пока не конец файла)

А указатель в файле после первого прохода останется в конце первого поля, правильно? Не нужно ли будет сдвигать его на еденичку? Т.е. не будет ли он указывать на последний элемент 1-го поля?
Не хватало всего одного байта. Да-да, того самого, что из восьми бит состоит.
forsaken66 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
олимпиадная задачка... Dansergyr Помощь студентам 12 30.11.2009 08:55
Олимпиадная задачка... Dr.MagoR Помощь студентам 6 25.04.2009 14:20
C++ олимпиадная задачка LastDragon Помощь студентам 1 19.06.2008 23:04