|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
31.05.2013, 14:59 | #1 |
Пользователь
Регистрация: 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. |
31.05.2013, 17:01 | #2 |
Форумчанин
Регистрация: 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,т. первое считанное значение и мах_
Неприятности приходят и уходят, а жизнь продолжается!
|
31.05.2013, 18:01 | #3 |
Старожил
Регистрация: 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. Конец. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
проверьте правильность. | 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 |