Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
k1dw1d
0 / 0 / 0
Регистрация: 18.08.2013
Сообщений: 61
1

Консоль. Найдите ошибку

18.08.2013, 17:54. Просмотров 350. Ответов 2
Метки нет (Все метки)

ВООБЩЕМ ТАКАЯ ПРОБЛЕМА ПРИ X=1.4 ВЫДАЕТ Y=7.72, А ДОЛЖНО -6.67,НИКАК НЕ МОГУ ПОНЯТЬ В ЧЕМ ПРИЧИНА(((

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
program Project3;
{$APPTYPE CONSOLE}
uses
  SysUtils;
var b:integer;
    x,y:real;
begin
b:=2;
write('x=');readln(x);
if x=0 then writeln('resh net') else
if x=1.4 then y:=b*x-8*sqrt(x) else
if x<1.4 then y:=sqr(x)+sqr(x+1) else
y:=ln(x+2*b)/ln(10);
writeln('y=',y:5:2);
readln;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2013, 17:54
Ответы с готовыми решениями:

Найдите ошибку
Задали такую задачку до воскресенья, чтобы получить зачет по информатике....

Найдите ошибку
procedure TForm1.ButtonClose4Click(Sender: TObject); begin...

Найдите ошибку
С погрешностью 0.001 уточнить по методу Ньютона с помощью рекурсии корень...

найдите ошибку
найдите ошибку пожалуйста unit Unit1; interface uses Windows,...

Найдите ошибку
Задание такое: на форме 9 Edit-ов, в каждый квадратик нужно вписать по одной...

2
Puporev
Модератор
54717 / 42123 / 29086
Регистрация: 18.05.2008
Сообщений: 99,430
18.08.2013, 18:16 2
Ты чего прыгаешь по разделам? Здесь
Найти ошибку в программе
все было нормально.
Напиши точное и полное условие задачи.

Добавлено через 15 минут
У тебя там такая формула
Delphi
1
y:=(b*x)-8*sqrt(x);
результат -6.67
здесь
Delphi
1
y:=ln(x+2*b)/ln(10);
результат 7.72
А какая в задании?
0
Одиночка
3933 / 1858 / 337
Регистрация: 16.03.2012
Сообщений: 3,869
19.08.2013, 00:55 3
При таком коде выполняется ветка:
Delphi
1
if x<1.4 then y:=sqr(x)+sqr(x+1)
А всё дело в том, что число 1.4 в компьютере представляется в виде бесконечной двоичной дроби. Но поскольку при преобразовании констант в программе используется тип Extended, а твоя переменная типа Real - то значения из x и преобразованная константа 1.4 будут иметь разные значения. Может не совсем точно выразился, но замена типа на Extended даёт правильный результат.
Delphi
1
2
var b:integer;
    x,y:extended;
И вообще при x=0 - у тебя будет выдавать 'resh net', но и значение y тоже. Какой-то мусор, который будет находиться в y. Поэтому добавь там:
Delphi
1
2
if x<>0 then
writeln('y=',y:5:2);
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2013, 00:55

Найдите ошибку
Составить, отладить и представить преподавателю для проверки программу на языке...

найдите ошибку
unit Unit1; interface uses Windows, Messages, SysUtils, Variants,...

найдите ошибку
Суть,сделал массив,типа список,содержит 3 поля,имя,фамилию,возраст,хочу в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru