Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 322
от 21.03.2007, 19:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 232, Экспертов: 57
В номере:Вопросов: 3, Ответов: 4


Вопрос № 78466: Уважаемые эксперты! Помогите пожалуйста решить задачу(задача на псевдопаскале, ибо в Паскале такой функции нет). Дано прямоугольное поле M на N клеток для игры в Морской бой. На поле расположены прямоугольные корабли произвольного размера. f(i,j) опр...
Вопрос № 78547: Здравствуйте, помогите, пожалуйста, если не трудно, учусь заочно, преподы по телефону посылают просто(( 1. Написать программу создания файла прочитать и напечатать созданный файл: Создать файл, содержащий сведения о личной коллекции книг...
Вопрос № 78551: Доброе время суток эксперты!!! Кто знает на эти вопросы ответы помогите ответить правильно, хоть на пару вопросов из всех, я просто не успеваю сам ответить на эти все вопросы времени не хватает. Заранее благодарен. 1. Алгоритм линейной с...

Вопрос № 78.466
Уважаемые эксперты! Помогите пожалуйста решить задачу(задача на псевдопаскале, ибо в Паскале такой функции нет). Дано прямоугольное поле M на N клеток для игры в Морской бой. На поле расположены прямоугольные корабли произвольного размера. f(i,j) определяет есть ли корабль на поле (i,j). Посчитать кол-во кораблей. Задачу необходимо решить к 19 марта.
Заранее Вам благодарна
Отправлен: 15.03.2007, 19:48
Вопрос задала: Miry (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: Яна
Здравствуйте, Miry!
Заводим массив размера M*N, в котором 0 - означает, что нет корабля, 1 - что есть корабль.
Затем делаем обход массива.
Если в клеточке 0 - пропускаем, если 1 - увеличиваем количество кораблей на 1 и заменяем эту клеточку и все соседние содержащие 1 (весь корабль на числа 2), а потом все 2 на нули. (это можно сделать рекурсией, двигаться от этой 1 в четыре разных направления, если 1 - то замещать на 2, если 0 - то останавливать рекурсию). Потом 2 заменяем на нули.
И все повторяется заново. Ищем второй корабль, увеличиваем количество кораблей, заменяем его на двойки, и потом двойки на единицы.
Возможно, будет работать даже в том случае, если вы будете сразу заменять на нули (без двоек), то тут нужно очень аккуратно отнестись к выходу из рекурсии.
Ответ отправила: Яна (статус: Студент)
Ответ отправлен: 15.03.2007, 21:16

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Miry!

В приложении один из вариантов решения Вашей задачи.

P.S. Я все еще желаю узнать, какой именно функции нет в паскале, и что такое "псевдопаскаль", в котором эта функция есть.

Удачи!

Приложение:

---------
Ждешь квалифицированного ответа? Задай правильно вопрос!

Ответ отправил: Устинов Сергей Евгеньевич (статус: Практикант)
Ответ отправлен: 17.03.2007, 01:04
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо за задачу! Даже не зная как оперировать с массивами на Паскале я поняла решение.


Вопрос № 78.547
Здравствуйте, помогите, пожалуйста, если не трудно, учусь заочно, преподы по телефону посылают просто((

1. Написать программу создания файла прочитать и напечатать созданный файл:
Создать файл, содержащий сведения о личной коллекции книголюба. Структура записи: шифр книги, автор, название, год издания, местоположение (номер стеллажа, шкафа и т.п.).
Количество записей – произвольное.

2. Написать программу обработки файла, созданного в п.1:

Написать программу, выдающую следующую информацию:
- местонахождение книги автора Х названия Y. Значения X, Y;
- список книг автора Z, находящихся в коллекции;
- число книг издания ХХХХ года, имеющееся в библиотеке.
спасибо!
Отправлен: 16.03.2007, 10:49
Вопрос задал: Mayra (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Verena
Здравствуйте, Mayra!

Вообще почитать про работу с файлами можно в любом учебнике, например, здесь http://declic.narod.ru/ossio/files/welcome.html

Чтобы создать необходимый Вам типизированный файл сначала надо объявить запись, которые он будет содержать:
type rec = record
sh: string [7]; {шифр книги}
aut: string [15]; {автор}
nazv: string [15]; {название}
year: word; {год}
mp: word; {местоположение}
end;
Например, пусть шифр, автор и название будут символьными полями (не более 7 и 15 знаков соответственно), а год и местоположение - числовыми. Файл с такими записями объявляется так:
Var f: file of rec;
Перед использованием в программе переменную надо связать с реальным файлом при помощи процедуры assign (f {имя переменной}, 'real_file_name' {имя (адрес) файла}). Для создания файла пишут rewrite (f), для открытия для чтения/записи - reset (f). В конце файл следует закрыть - close (f). Создают файл, например, так:
assign (f, 'real_file_name');
rewrite (f);
write (f, c); {здесь с имеет тип rec и всем его полям заблаговременно присваиваютя значения}
close (f);
Это будет файл из одной записи. Выборка каких-либо данных делается так (на примере пункта 2.1 Вашей задачи):
reset (f);
while not eof (f) do {пока не конец файла}
begin
read (f, c); {читаем очередную запись, после этого указатель файла перейдёт на следующую запись}
if (c.aut=X) and (c.nazv=Y) then writeln (X, ' ', Y, ' ', mp); {проверяем поля на совпадение, если автор и название нужные, то выводим местоположение на экран}
end;
close (f);

Другие действия выполняются аналогично. Вернуться к началу файла можно при помощи функции seek (f, 0), где 0 - номер требуемой компоненты, в данном случае, нулевой (так можно переместиться на любую запись файла).
Удачи!
---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 6-ой класс)
Ответ отправлен: 17.03.2007, 00:36
Оценка за ответ: 5
Комментарий оценки:
надеюсь поможет


Вопрос № 78.551
Доброе время суток эксперты!!!
Кто знает на эти вопросы ответы помогите ответить правильно, хоть на пару вопросов из всех, я просто не успеваю сам ответить на эти все вопросы времени не хватает.
Заранее благодарен.
1. Алгоритм линейной сортировки ?
2. Алгоритм нахождения наибольшего?
3. Алгоритм пузырьковой сортировки ?
4. Алгоритм суммирования ?
5. Бинарный метод поиска ?
6. Ветвление ?
7. Два способа передачи параметров в подпрограммы ?
8. Динамические переменные ?
9. Естественный, машинный и язык программирования ?
10. Инкапсуляция ?
11. Линейный алгоритм ?
12. Линейный метод поиска ?
13. Логические операции ?
14. Массивы ?
15. Модули в Turbo Pascal ?
16. Наследование ?
17. Операции над строками ?
18. Отладка программы ?
19. Подпрограммы-процедуры ?
20. Подпрограммы-функции ?
21. Полиморфизм ?
22. Понятие цикла. Циклы FOR, WHILE и REPEAT_UNTIL ?
23. Работа с внешними файлами ?
24. Связанные списки ?
25. Среда разработки Turbo Pascal ?
26. Схемы алгоритмов ?
27. Тип данных – запись ?
28. Тип данных – объект ?
29. Тип данных – перечисление ?
30. Типы данных в Turbo Pascal ?
31. Трансляторы и интерпретаторы ?
32. Обработка исключений в Object Pascal ?
33. Разработка приложения в среде Delphi ?
34. События. Процедура обработки события ?
Отправлен: 16.03.2007, 11:11
Вопрос задал: Анатолий И.О (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Яна
Здравствуйте, Анатолий И.О!
Тут совершенно не нужно самому на это все отвечать. Достаточно иметь конспект или учебник по Паскалю. Вы предлагаете набрать из учебника соответствующие главы и напечатать в окне ответа?
Купите книжку по Паскалю или найдите в интернете. Ксерокс или распечатка куда быстрее и дешевле.
Ответ отправила: Яна (статус: Студент)
Ответ отправлен: 16.03.2007, 15:19
Оценка за ответ: 5
Комментарий оценки:
Ага понятно, да нодо так сделать.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.46 от 18.03.2007
Яндекс Rambler's Top100

В избранное