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

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


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

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

Выпуск № 383
от 29.05.2007, 02:05

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


Вопрос № 88247: доброго времени суток. нужна помощь ни как не могу сделать практическую: Текстовый файл содержит список фамилий. Создать другой текстовый файл, содержащий отсортированный список фамилий. работу нужно сделать только через текстовые файлы использов...
Вопрос № 88269: Ув. Эксперты помогите пожалуйста с кодом который изложен ниже а именно проблема в этих строках: Mx:=(cxk-cx-10)/(b-a); my:=(cxk-cx-10)/(maxf-minf); наверняка происходит переполнение при операциях с плавающей запятой но как исправить эту...
Вопрос № 88302: Уважаемые эксперты скажи пожалуйста каким образом можно прервать выполнение программой каких-либо операций на время Т и что для этого нужно написать в самой программе.заранее благодарен...

Вопрос № 88.247
доброго времени суток. нужна помощь ни как не могу сделать практическую: Текстовый файл содержит список фамилий. Создать другой текстовый файл, содержащий отсортированный список фамилий.
работу нужно сделать только через текстовые файлы использовать массивы нельзя. поискав в интернете как я понял лучше всего сделать прогу через естественное слияние, но примеров с алгоритмами я не нашол.
прошу помогите!
Отправлен: 23.05.2007, 14:23
Вопрос задал: Vedmak7 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 10)

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

Программу, предложенную Вами, я изменила под текстовые файлы. Теперь признаком, что файл считан, будет являться не -1, а пустая строка (исходный файл переписывается в новый без пустых строк, если они там содержались; если же их также необходимо перенести в новый файл, можно просто учесть их количество и добавить в начало или конец файла с результатом). Комментарии я изменила в соответствии с изменениями в программе.

Приложение:

---------
Эта история - не для истории, понимаешь?

Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 23.05.2007, 21:14
Оценка за ответ: 5

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

Предложу еще свой вариант - код в приложении. Смысл таков: из файла считывается 2 строки (если это можно) и во временный файл записываются в отсортированном виде. И так далее до конца файла.
После того, как достигли конца файла - исходный файл удаляется и временный файл переименовывается в имя исходного.
После этого из файла считывается 1 строка и записывается во временный и повторяется предыдущий цикл по считыванию и обработке 2-х строк.
Все эти действия происходят до тех пор, пока не случится такого, что при проходе цикла не будет ни одной перестановки строк.

Будут вопросы - спрашивайте.
Удачи!

Приложение:

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

Ответ отправил: Устинов С.Е. (статус: Специалист)
Ответ отправлен: 24.05.2007, 00:20
Оценка за ответ: 5


Вопрос № 88.269
Ув. Эксперты помогите пожалуйста с кодом который изложен ниже а именно проблема в этих строках:
Mx:=(cxk-cx-10)/(b-a);
my:=(cxk-cx-10)/(maxf-minf);
наверняка происходит переполнение при операциях с плавающей запятой но как исправить эту ошибку?Обьясните пожалуйста как или же исправте сразу и отпишите результат.Заранее спасибо.

Приложение:

Отправлен: 23.05.2007, 15:57
Вопрос задал: Андрей Аноним:) (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Gh0stik
Здравствуйте, Андрей Аноним:)!

Ну что я Вам должен сказать, у меня при исполнении программы тоже возникла ошибка с кодом 207 (Invalid float point operation) в функции Function f(x1:real):real; .
После анализа ошибки я нашел в чем причина, вот кусок кода:
........
Cleardevice;
A:=0;
b:=0.5;
n:=16;
h:=(b-a)/n;
N:=n+1;
x:=a;
For I:=1 to n do
Begin
Fun[i]:=f(x);
X:=x+h;
End;
........


Как видно переменная а - принимает значение ноль, и далее переменной x - присваивается значение переменной а (x:=a;) - т.е. опять тотже ноль. Далее переменную x Вы используете при вызове функции Fun[i]:=f(x); .
Как видно при первом вызове функции у нас в нее поступает значение равное нолю, при подстановке в функцию, легко увидеть что у нас получается такая формула: F:=sqrt(6*0-5); - как видим мы пытаемся найти корень из отрицательного числа, что и вызывает ошибку.

Более того я пошел дальше, я просто взял и изменил значения переменных а и b - на произвольные, но такие которые не будут вызывать ошибки в функции Function f(x1:real):real;, т.е. при решении несложного неравенства значение переменной x1 - должно соответсвовать условию: x1>=5/6.
Так вот после изменения выше указанных переменных ошибка в данной функции не возникает, но возникла ошибка в тех строках, которые Вы указали в вопросе:
Mx:=(cxk-cx-10)/(b-a);
my:=(cxk-cx-10)/(maxf-minf);


Но тип ее уже был совершенно другой (Division by zero), следовательно Вам нужно будет еще провести дальнейший анализ вычислений....

Вобщем, Вам стоит при каждом сомнительном вычислении вывести на экран значение переменных, которые используются в той или иной формуле, и соответственно привести их к такому виду который будет соответствовать условию, а также и правилам использования их в языке программирования.

Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 23.05.2007, 23:27


Вопрос № 88.302
Уважаемые эксперты скажи пожалуйста каким образом можно прервать выполнение программой каких-либо операций на время Т и что для этого нужно написать в самой программе.заранее благодарен
Отправлен: 23.05.2007, 20:02
Вопрос задал: ClassiK (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 5)

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

Видимо, Вам нужна процедура delay (время_в_миллисекундах: word). Эта процедура, как правило, используется для анимации, чтобы выводить изображение на экран с задержкой. Вставить в программу её просто, например:
...
writeln ('Сейчас будет пауза'); {это сообщение появится сразу}
delay (1000);
writeln ('Пауза кончилась'); {а это - через 1000 миллисекунд}
...
---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 23.05.2007, 20:16


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное