Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоComboВсе проекты

Програмисты Помогите!!!!

Роман Варлаков Знаток (460), закрыт 14 лет назад
Пусть требуется составить программу для вывода на экран чисел 0.1, 0.2, ..., 1.0.
На языке Basic такая программа имеет вид:
FOR i = 0.1 ТО 1 STEP 0.1
PRINT i
NEXT i
Однако в результате выполнения этой программы мы получим:
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8000001 0.9000001

На языке Pascal:
Var I: real;
BEGIN
i : = 0 .1 ;
while i <= 1 do begin
write (i:4:1);
i : = i + 0 .1
end
END.
Здесь результат такой:
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

Единицы также нет! Как это объяснить?
Лучший ответ
Дмитрий Неверов Мастер (2150) 14 лет назад
Правильно Все правильно не будет единицы в бейсике принт идет перед некстом поэтому когда некст доходит до 1 програма завершаеться
а в паскале условие не верное поставь while i=1
должно помочь
Остальные ответы
Эльф Тёмный Профи (584) 14 лет назад
while i <= 1.01 do begin
write (i:4:1);
i : = i + 0 .1

Вот так пойдёт.
Антон Колмаков Профи (583) 14 лет назад
Все правельно делаешь, лишь надо использовать ворматированный выводна экран в Basic __________","________вставь.и представить что ты берешь не 1 число а к примеру два 0 и 1 и "," ________> 0,1 все далее сам
Андрей Макарычев Мудрец (10412) 14 лет назад
В Паскале цикл While можно заменить на Repeat..until, будет
Var I: real;
BEGIN
i : = 0 .1 ;
repeat
write (i:4:1);
i : = i + 0 .1;
until i<1;
END.
(У вас получается, что значение становится равным 1,0 и происходит выход из цикла)
В Бэйсике для вывода результата надо использовать округление или форматированный вывод. Бэйсик работает с числами с плавающей точкой не совсем корректно: появляются хвосты N.00000...1 или (N-1).999999...999, N - значение.
Похожие вопросы