Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2008, 19:32   #1
neomaximus
Пользователь
 
Регистрация: 11.06.2008
Сообщений: 47
Восклицание Исправте ошибку(оператор case и if)

Исправте ошибку.
Цитата:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
RadioGroup1: TRadioGroup;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
Button1: TButton;
Button2: TButton;
memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.text:='';
Edit2.text:='';

Memo1.Clear;
Memo1.Lines.Add('Лабораторная работа № 2 Выполнил ст. гр. вмк 06-1 Мелихов максим ')
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button1Click(Sender: TObject);
var x,j,c,b,f,g:extended;
begin
x:=StrToFloat(Edit1.Text);
Memo1.Lines.Add(' x='+Edit1.Text);
b:=StrToFloat(Edit2.Text);
Memo1.Lines.Add(' b='+Edit2.Text);
case RadioGroup1.ItemIndex of
0: j:=sin(x);
1: j:=sqr(x);
2: j:=Exp(x)
end;
if (x*b>0.5)and(x*b<10) then g:=exp(j-abs(b))
else if (x*b>0.1)and(x*b<0.5) then g:=sqrt(abs(j+b))
else g:=2*sqr(j);
Memo1.Lines.Add('Otvet='+FloatToStr F(g,ffGeneral,8,2));
end;

end.
вот форма :
neomaximus вне форума Ответить с цитированием
Старый 27.11.2008, 19:51   #2
Гриха
Вернулся
Форумчанин
 
Аватар для Гриха
 
Регистрация: 29.10.2006
Сообщений: 174
По умолчанию

Где конкретно ошибка и ее код пжалста....
...учись так - будто будешь жить вечно...
...живи так - будто умирать завтра...
Гриха вне форума Ответить с цитированием
Старый 27.11.2008, 19:57   #3
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

И что за ошибка?
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 27.11.2008, 20:06   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

neomaximus, в вашем коде нет орфографических ошибок.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 28.11.2008, 04:22   #5
neomaximus
Пользователь
 
Регистрация: 11.06.2008
Сообщений: 47
По умолчанию

у меня она не считает
neomaximus вне форума Ответить с цитированием
Старый 28.11.2008, 05:03   #6
neomaximus
Пользователь
 
Регистрация: 11.06.2008
Сообщений: 47
По умолчанию

Тупо выдает ноль, при любых значениях
neomaximus вне форума Ответить с цитированием
Старый 28.11.2008, 10:08   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Нужно инициировать переменную j, и точно определить интервалы, без разрывов в граничных точках, напиши так, заработает.
Код:
j:=0;
case RadioGroup1.ItemIndex of
0: j:=sin(x);
1: j:=sqr(x);
2: j:=Exp(x)
end;
if (x*b>=0.5)and(x*b<=10) then g:=exp(j-abs(b))
else if (x*b>=0.1)and(x*b<0.5) then g:=sqrt(abs(j+b))
else g:=2*sqr(j);
Memo1.Lines.Add('Otvet='+FloatToStrF(g,ffGeneral,8 ,2));
end;
puporev вне форума Ответить с цитированием
Старый 29.11.2008, 09:15   #8
neomaximus
Пользователь
 
Регистрация: 11.06.2008
Сообщений: 47
По умолчанию

Она теперь считает, но при переключении выдает одно и то же значение. Мне сказали что переменные не правилтные g и j должны быть real
neomaximus вне форума Ответить с цитированием
Старый 29.11.2008, 09:29   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Интересно, чем это extended хуже real? Ну замени и попробуй, что это так сложно?
puporev вне форума Ответить с цитированием
Старый 29.11.2008, 11:36   #10
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Мне кажется твоя проблема в том, что ты используешь RadioGroup как GroupBox, т.е. кинул туда три RadioButton и сменил им имя, поэтому ItemIndex у тебя не работает.
Нужно поместив RadioGroup на форму вызвать в ObjectInspector свойство Items, нажать (TStrings) и в открывшемся окне ввести три строки sinx, sqrx, expx, нажать ОК. У тебя создастся объект, который будет реагировать на изменение индекса.
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блок-схема и оператор case (swich) SunKnight Свободное общение 13 20.03.2011 14:42
Оператор case Yermek Помощь студентам 3 12.10.2008 18:06
Оператор цикла с предусловием While. Оператор цикла с пост условием Repeat McMilin Помощь студентам 7 11.11.2007 14:10
при поиске по базе выдает ошибку - Пропущен оператор в выражении frai БД в Delphi 1 09.11.2007 23:01