Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: исключения  (Прочитано 7183 раз)
0 Пользователей и 1 Гость смотрят эту тему.
yurik1982
Гость
« : 11-02-2010 19:11 » new

кто-нибудь может мне помочь?
1   Создать программу, обрабатывающую исключения использованием оператора try… except. Проект – консольное приложение.
2   Создать программу, обрабатывающую исключение использованием оператора try… finally. Проект – консольное приложение.
В заданиях надо рассчитывать функции f1(x) и f2(x) при x = i*h. i -индекс цикла (целые числа интервале -10...10). Шаг изменения h.
f1(x) = 1+1/x, h1 = π/10, тип данных для f1(x) extended.
f2(x) =(300-x)*50, h2 = 20, тип данных для f2(x) word
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 11-02-2010 19:31 » 

yurik1982, показывай, что написал и что не получается. Сразу предупреждаю: халявы тут не будет. Т.е. писать будешь сам, а мы только помогать.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
yurik1982
Гость
« Ответ #2 : 15-02-2010 16:47 » 

Необходимо отслеживать два исключения
 Деление на 0 (исключение EZeroDivide).
Выход за пределы диапазона (исключение RangeError).

получилось, но чтото не так:

Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
const
 h1=pi/10;
 h2=20;
 var
 f:boolean=false;
 i,imax,imin,i_error:integer;
 y:array[-10..10] of extended;
 b:array[-10..10] of word;
 begin
writeln('Введите Imin и Imax в пределах -10...10');
write(' Imin=');
readln(imin);
write(' Imax=');
readln(imax);
try
   for i:=imin to imax do
   begin
   i_error:=i;
   y[i]:=1+1/(i*h1)
   end;
   for i:=imin to imax do
   begin
   i_error:=i;
   b[i]:=(300-i*h2)*50;
   end;
   except
   on EZeroDivide do
   begin
   writeln('Деление на 0');
   writeln(' при i=');
   i_error:=i;
   f:=true;
   end;
end;
if not f then writeln('OK');
readln;
end.

ошибку диапазона показывает ОК
« Последнее редактирование: 15-02-2010 17:05 от Алексей1153++ » Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #3 : 16-02-2010 12:52 » 

отлвавливайте все исключения (on E: Exception do begin...), и уже внутри блока except анализируйте, что вы отловили (if E is EZeroDivide then...).
Записан

yurik1982
Гость
« Ответ #4 : 16-02-2010 17:08 » 

А со списками не поможете:

Код:
Задание Создать проект работы со списками. В проекте предусмотреть:
1 Заполнение комбинированного списка из поля ввода.
2 Редактирование комбинированного списка (ввести строку, переместить строку).
3 Копирование строк из списка ComboBox список ListBox,

Форма содержит следующие компоненты:
ƒ ListBox1 -простой список.
Label1 – метка для заголовка компонента ListBox1.
ComboBox1 -комбинированный список.
Label2 – метка для заголовка компонента ComboBox1.
Edit1-однострочный редактор для ввода текста. В него вводится текст строки для списка.
Label3 – метка для заголовка редактора Edit1.
Button1– кнопка "Инициализация". Позволяет очистить поле Edit1 и установить там курсор.
Button2 – кнопка "Принять ComboBox" для заполнения компонента ComboBox1.
Button3 – кнопка "Редактировать ComboBox". Позволяет вводить, удалять, взаимозаменять и перемещать строки списке.
Button4 – кнопка "Копировать ListBox". Позволяет скопировать ListBox строки, выбираемые ComboBox.



unit Prg_12_1_;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    ComboBox1: TComboBox;
    ListBox1: TListBox;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:='';
Edit1.SetFocus;
end;

 procedure TForm1.Button2Click(Sender: TObject);   ---   выбивает ошибку
begin
ComboBox1.Items.Add(Edit1.Text);
Edit1.Text:='';
Edit1.SetFocus;
end;

 procedure TForm1.Button3Click(Sender: TObject);
begin
ComboBox1.Items.Insert(ComboBox1.ItemIndex,Edit1.Text);
Edit1.Text:='';
Edit1.SetFocus;

 procedure TForm1.Button4Click(Sender: TObject);
begin
ListBox.Items.Add(ComboBox1.Items[ComboBox1.ItemIndex];

end;

end.

« Последнее редактирование: 16-02-2010 17:27 от Алексей1153++ » Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #5 : 16-02-2010 17:15 » 

Цитата
Button3 – кнопка "Редактировать ComboBox". Позволяет вводить, удалять, взаимозаменять и перемещать строки списке.

разнесите все эти операции на отдельные кнопки и никаких проблем не будет. для перемещения и удаления смотрите методы TComboBox.Items (TStrings) - Delete, Move, и т.д.
Записан

x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #6 : 16-02-2010 17:16 » 

з.ы. Insert вам особо ни к чему, а для замены строки надо тупо присвоить соответствующий элемент списка: Items [ItemIndex] := Edit1.Text;
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines