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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2013, 14:59   #1
Bracho1994
Пользователь
 
Регистрация: 10.04.2013
Сообщений: 22
По умолчанию Проверьте правильность составленного алгоритма. Делфи

Здравствуйте, проверьте, пожалуйста, правильно ли я составил данный алгоритм. Надеюсь поможете, больше спросить не у кого.. Спасибо, заранее.
Вот задача
Экологическая служба города ведет ежедневный учет загрязненности окисью углерода в каждой из 20 особых точек города.
Получить ответ на запрос : в какой точке города в данный конкретный день максимальна загрязненность воздуха?
Вот алгоритм
Ayry0cwykbM (1).jpg
Вот текст программы
Код HTML:
procedure TForm1.FormActivate(Sender: TObject);
begin
   ADOQuery2.SQL.Clear;
   ADOQuery2.SQL.Text:='SELECT * FROM [Place]';
   ADOQuery2.Open;
   while not ADOQuery2.Eof do
      begin
         ComboBox1.Items.Add(ADOQuery2.Fields[1].AsString);
         ADOQuery2.Next;
      end;
   ComboBox1.ItemIndex:=0;
   ADOQuery2.Close;
end;
 
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
   ADOQuery1.Close;
   ADOQuery1.SQL.Clear;
   ADOQuery1.SQL.Add('SELECT b1.Date_metering, b2.Name_place, b1.Value_metering');
   ADOQuery1.SQL.Add('FROM (Metering AS b1');
   ADOQuery1.SQL.Add('LEFT JOIN Place AS b2 on b1.Id_place=b2.Id_place)');
   ADOQuery1.SQL.Add('WHERE b1.Id_place=:Param1');
   ADOQuery1.Parameters.Refresh;
   ADOQuery1.Parameters[0].Value:=ComboBox1.ItemIndex+1;
   ADOQuery1.Open;
 
   ADOQuery2.SQL.Clear;
   ADOQuery2.SQL.Add('SELECT * FROM Metering AS b1');
   ADOQuery2.SQL.Add('WHERE b1.Value_metering=(');
   ADOQuery2.SQL.Add('SELECT Max(Metering.Value_metering) AS Maks');
   ADOQuery2.SQL.Add('FROM Metering');
   ADOQuery2.SQL.Add('WHERE Metering.Id_place=:Param2)');
   ADOQuery2.Parameters.Refresh;
   ADOQuery2.Parameters[0].Value:=ComboBox1.ItemIndex+1;
   ADOQuery2.Open;
   Label1.Caption:='Загрязненность воздуха в "'+ComboBox1.Text+'" была максимальной '+DateToStr(ADOQuery2.Fields[2].AsDateTime)+' и составляла '+FloatToStrF(ADOQuery2.Fields[3].AsFloat,ffNumber,15,4);
   ADOQuery2.Close;
end;
 
end.
Bracho1994 вне форума Ответить с цитированием
Старый 31.05.2013, 17:01   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Нет. не правильно. (файлы почему-то не загружаются, поэтому словами, на графику переложите сами.)
В общем случае,это должно выглядеть так:
1 Начало
2 i=1; задание первой точки контроля.
3 i_max:=1 Пусть первая точка мах загрязнена
4 Вsвод данных с БД для 1-й точки
5 мах_gr:=gr[1] - мах значению загрязнения присваиваем значение загрязнения в первой точке

6 i:=i+1 - задаем следующую точку контроля.
7 Ввод данных с БД для следующей точки и сравнение с мах, т.е
мах_gr>gr[i]? , если да то переход к п.9
8 (Это если нет) i_max:=i; мах_gr:=gr[i];

9 i>20?, если нет переход к п.6

10(если да) Вывод на экран
11 конец.

( здесь если по одной точке, то мах_gr:=gr1,т. первое считанное значение и мах_
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 31.05.2013, 18:01   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Два goto вместо нормального цикла и условного оператора? Некрасиво...
1. Начало.
2. Инициализируем переменную max_gr := 0;
3. Цикл по i от 1 до 20 (по хорошему от 0 до 19).
4. max_gr := max(max_gr, gr[i]);
5. Конец цикла.
6. Вывод max_gr на экран.
7. Конец.
s-andriano вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверьте правильность. helpme1 Общие вопросы C/C++ 3 23.11.2010 17:23
язык С. проверьте правильность helpme1 Помощь студентам 1 22.11.2010 23:17
Проверьте на правильность!! Dawystrik Общие вопросы Delphi 2 21.03.2009 21:04
Проверьте правильность пожалуйста Анжелика Помощь студентам 17 11.01.2009 00:28
Проверьте правильность Аленушка Помощь студентам 6 07.01.2009 17:07