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

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


Информационный Канал Subscribe.Ru

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

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

Выпуск № 114
от 12.12.2005, 21:48

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


Вопрос № 30940: Привет!помогите решить задачу: дано нат число. Установить, является ли последовательность его цифр при просмотре их справа налево упорядоченной по возрастанию.Напримкр, для числа 5321 ответ положительный для 9663-отрицательный.Решить используя ци...
Вопрос № 31008: Здраствуйте. Помогите решить задачку: Пусть дан текстовый файл. Создайте два выходных файла: в один перепишите из каждой строки первые p слов(p задается вводом), в другой - оставшиеся. Если в строке меньше чем p слов, то во втором файле соотв...
Вопрос № 31015: Здраствуйте. По поводу прошлого вопроса. Задачу я решил так сказать наполовину. В общем во втором цикле while, выполняю пока не конец переменной s(#13 возврат каретки по-моему), затем ищу пробел - нашел значит первое слово закончилось, дальше...

Вопрос № 30.940
Привет!помогите решить задачу:
дано нат число. Установить, является ли последовательность его цифр при просмотре их справа налево упорядоченной по возрастанию.Напримкр, для числа 5321 ответ положительный для 9663-отрицательный.Решить используя цикл с постусловием
Отправлен: 06.12.2005, 22:28
Вопрос задал: Slim (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Romodos
Здравствуйте, Slim!
Пример в приложении
Просто идём циклом по цифрам числа

Приложение:

---------
FAQ me off!

Ответ отправил: Romodos (статус: Студент)
Отправлен: 07.12.2005, 06:05

Отвечает: sir henry
Здравствуйте, Slim!
Вы сначала сами попробуйте, а потом уже спрашивайте о том, что неполучилось. А на халяву никто Вам делать не будет. Лоботрясов не любят нигде.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 07.12.2005, 09:52

Отвечает: Boriss
Здравствуйте, Slim!
Все гораздо проще можно решить: перевести в строку с помощью Str, а потом циклом сравнить символы. Коды символов следуют в том же порядке, что и цифры.
Str(i, s);
upor:=True;
i:=2;
repeat
if s[i] >= s[i-1] then
begin
upor:=False;
Break;
end;
inc(i)
until i>length(s);
---------
Вывод - то место в тексте, где вы устали думать
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 07.12.2005, 10:34

Отвечает: Stamm
Здравствуйте, Slim!
i -Исходное число
n - считывает последнюю цифру числа
mod - Остаток от деления, 456 mod 10=6
div - Целочисленное деление, 456 mod 10=45
Например, дано число 654
1 шаг
n=4
i=65
4< 65 mod 10(5)
2 шаг
n=5
i=6
5< 6 mod 10(6)
3 шаг
n=6
i=0
Сдесь прекращается цикл
Если i=0(т е цикл прошёл все цифры), то выводим True
Если i<>0, то выводим False

Приложение:

Ответ отправил: Stamm (статус: 5-ый класс)
Отправлен: 07.12.2005, 22:54


Вопрос № 31.008
Здраствуйте.
Помогите решить задачку:
Пусть дан текстовый файл. Создайте два выходных файла: в один перепишите из каждой строки первые p слов(p задается вводом), в другой - оставшиеся. Если в строке меньше чем p слов, то во втором файле соответствующая строка должна быть пустой.
Отправлен: 07.12.2005, 19:55
Вопрос задал: korsar (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, korsar!
Вам, лодырю, не стыдно? Сначала попробуйте сами что-то сделать, а потом спрашивайте о том, что не получилось. А Ваш вопрос звучит так:
"Сделайте за меня задачу...".
Ответ отправил: sir henry (статус: Академик)
Отправлен: 07.12.2005, 20:28

Отвечает: Маренич Владимир
Здравствуйте, korsar!
Абсолютно согласен с Сэром Генри :)
Подсказка:
1. Откройте исходный файл InputFile и файлы результата OutputFile1 и OutputFile2
2. Организуйте цикл while not Eof(InputFile) do begin ... end;
3. Читаете строку (допустим в переменную s)
4. Далее нужно разбивать строку на слова и считать сколко их... Здесь надо попотеть, но я помогу. Организуйте цикл:
i:=0; //кол-во слов
s1:=''; //строка для первого файла
while (i<p) and (s<>'') do begin
k:=Pos(' ', s); //ищем пробел
if k>0 then
begin
s1:=s1+Copy(s,1,k); //добавляем слово к сроке (вместе с пробелом)
Delete(s,1,k); //Удаляем это слово из исходной строки
inc(i); //тоже что i:=i+1;//кол-во слов для первого файла
end;
end;

5. Записываем результат:
Writeln(OutputFile1, s1); //полученные слова не более p
Writeln(OutputFile2, s); //всё что осталось

6. Не забудьте закрыть файлы. При закрытии программы они автоматически закрываются, но есть правила "хорошего тона" в программировании - в будущем пригодится. :) Удачи в сдаче лабы :)
Ответ отправил: Маренич Владимир (статус: 9-ый класс)
Отправлен: 08.12.2005, 00:49
Оценка за ответ: 5


Вопрос № 31.015
Здраствуйте.
По поводу прошлого вопроса. Задачу я решил так сказать наполовину.
В общем во втором цикле while, выполняю пока не конец переменной s(#13 возврат каретки по-моему), затем ищу пробел - нашел значит первое слово закончилось, дальше увеличиваю i, пока s[i]=' ',это если между словами несколько пробелов, затем пока s[i]<>пробелу сравниваю, пока не найду пробел - значит еще одно слово закончилось. Затем, если число p>=текущему числу слов(в данном случае пока нашли 2) то записываем эти два слова в первый файл, затем проверяем, если найденное число слов больше p, то записываем все остальные в файл f2. Вроде все правильно, но в файле получается не то.

Задача:
Пусть дан текстовый файл. Создайте два выходных файла: в один перепишите из каждой строки первые p слов(p задается вводом), в другой - оставшиеся. Если в строке меньше чем p слов, то во втором файле соответствующая строка должна быть пустой.

Приложение:

Отправлен: 07.12.2005, 21:09
Вопрос задал: korsar (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Маренич Владимир
Здравствуйте, korsar!
Возьмите мой пример за основу (ответ на вопрос 31008). У Вас почти все получилось, только намудрили с пробелами :)
Ответ отправил: Маренич Владимир (статус: 9-ый класс)
Отправлен: 08.12.2005, 00:52

Отвечает: sir henry
Здравствуйте, korsar!
В принципе верно, только с концом строки Вы перемудрили.
Когда Вы считываете строку из файла с помощью ReadLn, Вам не надо искать в ней или проверять возврат каретки (#13#10). Цикл лучше сделать определенным, т.к. длина строки заранее известна. У Вас просто получится перебор строки по буквам пока не достигнут конец строки или не достигнуто нужное кол-во слов

Приложение:

Ответ отправил: sir henry (статус: Академик)
Отправлен: 08.12.2005, 05:08


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

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

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

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

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


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


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.pasplus
Архив рассылки
Отписаться
Вспомнить пароль

В избранное