Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 11.10.2010
Сообщений: 73

Цикл repeat

05.06.2016, 13:13. Показов 1414. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые форумчане! Помогите пожалуйста сделать цикл (Repeat), а именно:
- Если погрешность от (0-3%) оставить все как есть, а если погрешность составляет отличное число от (0-3%), то возвращаемся в ввод данных. ( Погрешность отображается в StaticText20,v19)
Учусь на кафедре (ЭсПП, электроснабжение пром.предприятий) и решили ввести курс программирования, немного донный в этом плане, заранее приношу свои извинения (за термины и за относительные знания в этом)

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
procedure TForm1.Button2Click(Sender: TObject);
 
var
  v1, v2, v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20:variant;
begin
  v1:=LabeledEdit1.Text;
  v2:=LabeledEdit2.Text;
  v3:=LabeledEdit3.Text;
  v4:=LabeledEdit4.Text;
  v5:=LabeledEdit5.Text;
  v6:=LabeledEdit6.Text;
  v10:=LabeledEdit7.Text;
  v13:=v3-v4;
  StaticText11.Caption:=v13;
  v7:=v1*v1*v2*(1+0.00403*(v3-20));
  StaticText3.Caption:=v7;
  v8:=(0.5*(v3-(-v4)))+273;
  StaticText1.Caption:=v8;
  v9:=7.24*0.6*v6*((v8/1000)*(v8/1000)*(v8/1000));
  StaticText5.Caption:=v9;
  if v10 < 1.2 then
  begin
  v11:=0.16*exp(ln(v6)*0.75);
  v12:=exp(ln(v13)*0.3);
  v16:=v11+v12;
 
  StaticText7.Caption:=v16;
  end
  else
  begin
  v11:=1.1*(sqrt(v6*v10));
  StaticText7.Caption:=v11;
  v14:=v11+v9;
  StaticText12.Caption:=v14;
  end;
  v15:=v14*v13*v6;
  StaticText14.Caption:=v15;
  v17:=abs(v7-v15);
  StaticText16.Caption:=v17;
  v18:=0.5*(v15+v7);
  StaticText18.Caption:=v18;
  v19:=(v17/v18)*100;
  StaticText20.Caption:=v19;
end;
 
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.06.2016, 13:13
Ответы с готовыми решениями:

С цикл Repeat
У меня проблемы с циклом Repeat Задача такова используя только цикл Repeat вычислить сумму всех положительных чисел кратных 5 из...

Цикл repeat
Здравствуйте мне задали по информатике такое задание, нужно через циклы repeat и until выполнить такую работу, чтоб программа запускалась...

Цикл Repeat и until
Ребят не могу понять в чём ошибка. Программа запускается а в ответ от неё получаю зависание Delphi и последний способ выйти это только...

27
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,614
07.06.2016, 01:31
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Giganxxc Посмотреть сообщение
Просто дана методика для расчета потерь
Таки значит курс программирования для вас не такой уж ненужный.
Цитата Сообщение от Giganxxc Посмотреть сообщение
Должно получится как-то так
Картинку не смотрел. Пиши код и показывай. Если что не так поможем. Но задание или методику для расчета лучше приводить словами + формулами.
0
1 / 1 / 0
Регистрация: 11.10.2010
Сообщений: 73
07.06.2016, 11:20  [ТС]
Ну лишним точно не будет)хорошо,спасибо! Приду на обед с работы напишу!)

Добавлено через 7 часов 13 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
procedure TForm1.Button2Click(Sender: TObject);
 
var
  v1, v2, v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21:variant;
begin
  v1:=LabeledEdit1.Text;
  v2:=LabeledEdit2.Text;
  v3:=LabeledEdit3.Text;
  v4:=LabeledEdit4.Text;
  v5:=LabeledEdit5.Text;
  v6:=LabeledEdit6.Text;
  v10:=LabeledEdit7.Text;
  v21:=v3/100;
  v13:=v3-v4;
  StaticText11.Caption:=v13;
  v7:=v1*v1*v2*(1+0.00403*(v3-20));
  StaticText3.Caption:=v7;
  v8:=(0.5*(v3-(-v4)))+273;
  StaticText1.Caption:=v8;
  v9:=7.24*0.6*v6*((v8/1000)*(v8/1000)*(v8/1000));
  StaticText5.Caption:=v9;
  if v10 < 1.2 then
  begin
  v11:=0.16*exp(ln(v6)*0.75);
  v12:=exp(ln(v13)*0.3);
  v16:=v11+v12;
 
  StaticText7.Caption:=v16;
  end
  else
  begin
  v11:=1.1*(sqrt(v6*v10));
  StaticText7.Caption:=v11;
  v14:=v11+v9;
  StaticText12.Caption:=v14;
  end;
  v15:=v14*v13*v6;
  StaticText14.Caption:=v15;
  v17:=abs(v7-v15);
  StaticText16.Caption:=v17;
  v18:=0.5*(v15+v7);
  StaticText18.Caption:=v18;
  v19:=(v17/v18)*100;
  StaticText20.Caption:=v19;
Вот что у меня получилось, цель методики найти значения v15 и v7, а потом сравнить их и получить результат v19. Если погрешность не входит в интервал [0;3] (значение v19), надо изменить v3 с шагом v21 и так до тех пор, пока не получится [0;3]. Как то так -_-.
Я думаю надо сделать так, если не верно поправьте.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
procedure TForm1.Button2Click(Sender: TObject);
 
var
  v1, v2, v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21:variant;
begin
  v1:=LabeledEdit1.Text;
  v2:=LabeledEdit2.Text;
  v3:=LabeledEdit3.Text;
  v4:=LabeledEdit4.Text;
  v5:=LabeledEdit5.Text;
  v6:=LabeledEdit6.Text;
  v10:=LabeledEdit7.Text;
  v21:=v3/100;
  v13:=v3-v4;
  StaticText11.Caption:=v13;
  v7:=v1*v1*v2*(1+0.00403*(v3-20));
  StaticText3.Caption:=v7;
  v8:=(0.5*(v3-(-v4)))+273;
  StaticText1.Caption:=v8;
  v9:=7.24*0.6*v6*((v8/1000)*(v8/1000)*(v8/1000));
  StaticText5.Caption:=v9;
  if v10 < 1.2 then
  begin
  v11:=0.16*exp(ln(v6)*0.75);
  v12:=exp(ln(v13)*0.3);
  v16:=v11+v12;
 
  StaticText7.Caption:=v16;
  end
  else
  begin
  v11:=1.1*(sqrt(v6*v10));
  StaticText7.Caption:=v11;
  v14:=v11+v9;
  StaticText12.Caption:=v14;
  end;
  v15:=v14*v13*v6;
  StaticText14.Caption:=v15;
  v17:=abs(v7-v15);
  StaticText16.Caption:=v17;
  v18:=0.5*(v15+v7);
  StaticText18.Caption:=v18;
  v19:=(v17/v18)*100;
  StaticText20.Caption:=v19;
Тут рассчитали необходимые значения, дальше надо применять цикл? Если не прав , поправьте.
Delphi
1
2
3
Repeat
t(дельта):=v3+v21;
Далее рассчитываем опять v15 и v7, и сравниваем v19 (это уже с погрешностью)
Или не в ту сторону пошел я?)
Нужна консультация....

Добавлено через 32 минуты
Delphi
1
2
3
4
5
6
7
8
repeat
v3:=v3+v21;
v7:=v1*v1*v2*(1+0.00403*(v3-20));
v15:=v14*v13*v6;
IF ABS(v7-v15) > v17 then
v21:=-v21
until
(v17/v18)*100<3
Я представлял этот цикл так.
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
07.06.2016, 12:38
в интерактивной программе есть смысл делать цикл только такого вида

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
f:=новая_модальная_форма.Create()
repeat
  modRes:=f.showModal();
  // тут обрабатываем все, что введено в форме f
  a:=StrToFloat(f.edit1.text);
  b:=StrToFloat(f.edit2.text);
  c:=a*b;
  if .....
.....
.....
until (modRes <> mrOK) or (результат_расчета_всех_устроил);
 
f.free;
мы выйдем из него либо когда нажмем Отмена в модальной форме, либо OK + результаты нас устроят
0
1 / 1 / 0
Регистрация: 11.10.2010
Сообщений: 73
07.06.2016, 17:43  [ТС]
Все же я начал делать , как сказал препод и получилось вот так, но что-то работает не так)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
procedure TForm1.Button2Click(Sender: TObject);
 
var
  v1, v2, v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21:variant;
begin
  v1:=LabeledEdit1.Text;
  v2:=LabeledEdit2.Text;
  v3:=LabeledEdit3.Text;
  v4:=LabeledEdit4.Text;
  v5:=LabeledEdit5.Text;
  v6:=LabeledEdit6.Text;
  v10:=LabeledEdit7.Text;
  v21:=v3/100;
  v13:=v3-v4;
  StaticText11.Caption:=v13;
  v7:=v1*v1*v2*(1+0.00403*(v3-20));
  StaticText3.Caption:=v7;
  v8:=(0.5*(v3-(-v4)))+273;
  StaticText1.Caption:=v8;
  v9:=7.24*0.6*v6*((v8/1000)*(v8/1000)*(v8/1000));
  StaticText5.Caption:=v9;
  if v10 < 1.2 then
  begin
  v11:=0.16*exp(ln(v6)*0.75);
  v12:=exp(ln(v13)*0.3);
  v16:=v11+v12;
 
  StaticText7.Caption:=v16;
  end
  else
  begin
  v11:=1.1*(sqrt(v6*v10));
  StaticText7.Caption:=v11;
  v14:=v11+v9;
  StaticText12.Caption:=v14;
  end;
  v15:=v14*v13*v6;
  StaticText14.Caption:=v15;
  v17:=(v7-v15);
  StaticText16.Caption:=v17;
  v18:=0.5*(v15+v7);
  StaticText18.Caption:=v18;
  v19:=(v17/v18)*100;
  StaticText20.Caption:=v19;
 
  repeat
 
  v3:=v3+v21;
   StaticText21.Caption:=v3;
 v21:=v3/100;
  v13:=v3-v4;
  StaticText11.Caption:=v13;
  v7:=v1*v1*v2*(1+0.00403*(v3-20));
  StaticText3.Caption:=v7;
  v8:=(0.5*(v3-(-v4)))+273;
  StaticText1.Caption:=v8;
  v9:=7.24*0.6*v6*((v8/1000)*(v8/1000)*(v8/1000));
  StaticText5.Caption:=v9;
  if v10 < 1.2 then
  begin
  v11:=0.16*exp(ln(v6)*0.75);
  v12:=exp(ln(v13)*0.3);
  v16:=v11+v12;
 
  StaticText7.Caption:=v16;
  end
  else
  begin
  v11:=1.1*(sqrt(v6*v10));
  StaticText7.Caption:=v11;
  v14:=v11+v9;
  StaticText12.Caption:=v14;
  end;
  v15:=v14*v13*v6;
  StaticText14.Caption:=v15;
  v17:=(v7-v15);
  StaticText16.Caption:=v17;
  v18:=0.5*(v15+v7);
  StaticText18.Caption:=v18;
  v19:=(v17/v18)*100;
  StaticText20.Caption:=v19;
  IF abs(v7-v15)> v17 then
  v21:=-v21
 
until
v19<3;
 
 
 
 
 
 
 
end;
 
end.
Когда v17 получается отрицательное число, ничего не считает.
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
07.06.2016, 18:01
вы точно в арифметиках шарите ведь?
если v17<0, то v19 = (v17/v18)*100;
и если v18>0 то автоматически v19<0 и уж тем более <3
поэтому из цикла мы сразу выходим, как и написано в условии...
1
1 / 1 / 0
Регистрация: 11.10.2010
Сообщений: 73
07.06.2016, 18:03  [ТС]
Всем спасибо, ошибка была найдена) Ну чуть-чуть шарим Методом проб и ошибок)
Но появились теперь новые вопросы.
Например:
Можно ли сделать так?
-1 цикл все основные величины выписываются (куда-то)
-2 цикл все основные величины выписываются
и так пока не получу нужный результат
Просто кроме статиктекстов,лейблов и баттонов ничего пока не знаю, кто подскажет?)
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
07.06.2016, 18:07
забудьте про экран, соответственно лейблы и баттоны
все данные должны храниться в переменных, массивах и других подходящих к алгоритму структурах
пока не будет конкретного алгоритма, не будет и структур данных
1
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,614
08.06.2016, 00:29
Цитата Сообщение от Giganxxc Посмотреть сообщение
Просто кроме статиктекстов,лейблов и баттонов ничего пока не знаю
TMemo.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.06.2016, 00:29

Цикл repeat / until
Задание: По формуле члена ряда с номером i, заданной в таблице 2, со- ставить две программы (или два расчета в рамках одной программы),...

Правильно построить цикл Repeat-Until
Добрый день, уважаемые форумчане!:thank_you: В моей программе из массивов Kol, Gar, Rem вычитаются массивы m1 и m2, после этого действия...

Программирование циклических процедур. (Цикл While, Repeat)
Разработать программу табулирования функции, вывести их значения на экран. Разработать два варианта вычисления с использованием двух видов...

Delphi 7 преобразование последовательности сумм в цикл Repeat-Until
Выражение в стандартном виде: arcsinx = x + ((1/2)*(x^3/3)) + (1*3/(2*4)*(x^4/5)) + (1*3*5/(2*4*6)*(x^5/7))+... Код без циклов: ...

Оформить код Delphi через цикл repeat untill или while
program Project1; {$APPTYPE CONSOLE} uses SysUtils, math; var n,i:integer; x,s1,s2,cur:Real;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru