Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.06.2010, 16:41
_kondratenko_ _kondratenko_ вне форума
Прохожий
 
Регистрация: 09.06.2010
Сообщения: 2
Репутация: 10
По умолчанию В чем ошибка?

Написал две программы, обе не работают Подскажите пожалуйста в чем ошибка
Первая:
Код:
var a1,a2,a3,b1,b2,b3,x,y;
Begin
a1:=StrToFloat(Edit1.Text);
a2:=StrToFloat(Edit2.Text);
a3:=StrToFloat(Edit3.Text);
b1:=StrToFloat(Edit4.Text);
b2:=StrToFloat(Edit5.Text);
b3:=StrToFloat(Edit6.Text);
if (sqrt(sqr(b1-a1)=sqr(b2-a2))=sqr(b3-a3)then
Edit9.Text:= 'коллениарны' else
Edit9.Text:= 'не коллениарны'
if sqrt(sqr(a1)+sqr(a2)+sqr(a3)>sqrt(sqr(b1)+sqr(b2)+sqr(b3) then
Bebin
Edit7.Text:= 'A>B';
x:=sqrt(sqr(a1)+sqr(a2)+sqr(a3)/sqrt(sqr(b1)+sqr(b2)+sqr(b3);
end;
else
if sqrt(sqr(a1)+sqr(a2)+sqr(a3)<sqrt(sqr(b1)+sqr(b2)+sqr(b3)
then
Edit9.Text:= 'A<B'
y:=sqrt(sqr(b1)+sqrt(sqr(b2)+sqrt(sqr(b3)
/sqrt(sqr(a1+sqr(a2)+sqrt(sqr(a3);
else
Edit9.Text:= 'A=B'
if(a1=b1)and(a2=b2)and(a3=b3)
then
Edit9.Text:='одинак.напр.'
else
Edit9.Text:='против.напр.'
End.

и вторая:
Var
K,L,j,i: integer
Y:array[1..10,1..10] of real;
X:array[10..10] of real;
Begin
L:=StrToint(Edit1.Text);
K:=StrToint(Edit2.Text);
StringGrid1.ColCount:=k+1
StringGrid1.RoWCount:=1
StringGrid2.ColCount:=k+1
StringGrid2.RowVount:=1
For j:=1 to K do
StringGrid1.Cells[o,j]:=intToStr(j);
For i=1 to L do
StringGrid1.Cells[i,o]:=intToStr(i);
For j:=1 to K do
For i=1 to L do
y[j;i]:=strtoFloat(StringGrid1.Cells[j;i];
For i:=1 to L do
Begin
X[i]=0;
For j:=1 to K do
X[j]:=X[i]+y[j;i];
end.
StringGrid2.Visible:=True;
For i=1 to L do
StringGrid2.Cells[j,o]:=FloattoStr(x[i]);
End.
Admin: Пользуемся тегами!

Последний раз редактировалось Admin, 09.06.2010 в 16:47.
Ответить с цитированием
  #2  
Старый 09.06.2010, 16:57
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Первая здесь:
Код:
if (sqrt(sqr(b1-a1)=sqr(b2-a2))=sqr(b3-a3)then
Видимо должно быть:
Код:
if (sqrt(sqr(b1-a1)-sqr(b2-a2))=sqr(b3-a3)then

Во второй - индексы в гриде начинаются с 0.
Ответить с цитированием
  #3  
Старый 09.06.2010, 17:20
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Код:
var a1,a2,a3,b1,b2,b3,x,y;
(Описать тип не забыли?)

Код:
if sqrt(sqr(a1)+sqr(a2)+sqr(a3)>sqrt(sqr(b1)+sqr(b2)+sqr(b3) then
Закрывающие скобки у sqrt
и тут:
Код:
x:=sqrt(sqr(a1)+sqr(a2)+sqr(a3)/sqrt(sqr(b1)+sqr(b2)+sqr(b3);
и вот тут:
Код:
y:=sqrt(sqr(b1)+sqrt(sqr(b2)+sqrt(sqr(b3)
/sqrt(sqr(a1+sqr(a2)+sqrt(sqr(a3);

Код:
For j:=1 to K do
StringGrid1.Cells[o,j]:=intToStr(j);
For i=1 to L do
StringGrid1.Cells[i,o]:=intToStr(i);

Переменную о опишите и присвойте
Ответить с цитированием
  #4  
Старый 09.06.2010, 17:58
_kondratenko_ _kondratenko_ вне форума
Прохожий
 
Регистрация: 09.06.2010
Сообщения: 2
Репутация: 10
По умолчанию

Спасибо сейчас исправим
Ответить с цитированием
  #5  
Старый 05.01.2011, 14:48
ASSYS ASSYS вне форума
Прохожий
 
Регистрация: 05.01.2011
Сообщения: 6
Репутация: 10
Печаль

Код:
procedure TForm1.N2Click(Sender: TObject);
  Var x,y,h,a,b:real;
    Cod      :integer;
    str1,str2:string;
  begin
    Memo1.Lines.Add('   X      F(X)');
    Val(Edit1.Text, a, cod);
    Val(Edit2.Text, b, cod);
    Val(Edit3.Text, h, cod);
    x:=a;
  while x<=b+h/2 do
    begin
      {Str2:=Edit4.Text;  }
      y:=(x/(x+6))+(sqrt(x-4));
      Str(x:8:2,str1);
      Str(x:8:3,str2);
    if CheckBox1.Checked then
      Memo1.Lines.Add(Str1+str2);
      x:=x+h;
    end
  end;


Project Project1.EXE raised exception class EInvalidOp with message 'Invalid floating point operation'.

Process stopped. Use Step or Run to continue.

Выделяет эту формулу:
y:=(x/(x+6))+(sqrt(x-4));
Ответить с цитированием
  #6  
Старый 05.01.2011, 14:56
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Цитата:
Сообщение от ASSYS
Выделяет эту формулу:
y:=(x/(x+6))+(sqrt(x-4));

Посмотреть в отладчике, что в переменной X.
Ответить с цитированием
  #7  
Старый 05.01.2011, 15:11
ASSYS ASSYS вне форума
Прохожий
 
Регистрация: 05.01.2011
Сообщения: 6
Репутация: 10
По умолчанию

Цитата:
Сообщение от TOJluK
Посмотреть в отладчике, что в переменной X.

Данные от 1 до 3
А как его запустить? И удаляешь (-4) все работает нормально!
А при данных от 10 до 30 табулюе
Ответить с цитированием
  #8  
Старый 05.01.2011, 15:23
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

SQRT не работает с отрицательными значениями
Ответить с цитированием
  #9  
Старый 05.01.2011, 15:55
ASSYS ASSYS вне форума
Прохожий
 
Регистрация: 05.01.2011
Сообщения: 6
Репутация: 10
Печаль

Цитата:
Сообщение от TOJluK
SQRT не работает с отрицательными значениями
Как написать эту формулу?
Ответить с цитированием
  #10  
Старый 05.01.2011, 17:07
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Цитата:
Сообщение от ASSYS
Как написать эту формулу?
Беспонятия. )))
Можно, например, проверять значение X:
Код:
if x >= 4 then
  y := (x/(x+6)) + (sqrt(x-4))
else
  // тут что- то сделать, если Х - 4 < 0
Ответить с цитированием
  #11  
Старый 17.01.2011, 17:16
ASSYS ASSYS вне форума
Прохожий
 
Регистрация: 05.01.2011
Сообщения: 6
Репутация: 10
По умолчанию

Нашел решение!
Код:
procedure TForm1.N2Click(Sender: TObject);
Var x,y,h,a,b,z,t:real;
Cod :integer;
str1,str2:string;
begin
Memo1.Lines.Add(' X F(X)');
Val(Edit1.Text, a, cod);
Val(Edit2.Text, b, cod);
Val(Edit3.Text, h, cod);
t := StrToFloat(Edit3.Text);//це дописав
x:=a;
while x<=b+t/2 do
begin
  y := (x/(x+6)) + (sqrt(x-4));//Формула
Str(x:8:2,str1);
Str(x:8:3,str2);
if CheckBox1.Checked then
Memo1.Lines.Add(Str1+str2);
x:=x+h;
if CheckBox2.Checked then
begin
  FileName:='C:\test.txt';
  Memo1.Lines.SaveToFile(FileName);
end;
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:42.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025