|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.01.2023, 07:08 | #1 |
Новичок
Джуниор
Регистрация: 26.01.2023
Сообщений: 1
|
Как создать список по нескольким условиям if в цикле for
Коллеги,
Я начинающий программист и у многих мой вопрос вызовет улыбку. В ниже приведенном фрагменте кода я считываю и обрабатываю в цикле for значения ранее полученных списков. Верхняя часть кода работает без проблем, но когда понадобилось в зависимости от значений одного из параметров производить расчеты и по их результатам формировать выходные списки значений CRT и l_du сразу возникла проблема - как создать список по нескольким условиям if в цикле for? Как только выносишь формирование списка выходных значений из конструкции if, сразу пропадает возможность его формирования , т.к. C# перестает видеть этот параметр. А если оставить формирования списка в конструкции if то списки формируются только по первым значениям. Как решить эту задачу? [CODE] for (int i = 0; i <= (qif - 1); ++i) { var o_vlt = l_vlt[i].Trim(new char[] { 'V', 'v' }); int d_vlt = Int32.Parse(o_vlt); string t_vlt = Convert.ToString(d_vlt); VLT.Add(t_vlt); double d_pf = Math.Round(Double.Parse(l_pf[i]), 2); string t_pf = Convert.ToString(d_pf); PF.Add(t_pf); double d_acos = Math.Acos(d_pf); double d_sin = Math.Sin(d_acos); var Rc = Double.Parse(l_Rc[i]); var Xc = Double.Parse(l_Xc[i]); var o_pwr = l_pwr[i].Trim(new char[] { 'W', 'w' }); double d_pwr = Math.Round((Double.Parse(o_pwr) / 1000), 2); string t_pwr = Convert.ToString(d_pwr); PWR.Add(t_pwr); var o_lnth = l_lnth[i].Trim(new char[] { 'M', 'm' }); double d_lnth = Math.Round((Double.Parse(o_lnth) / 1000), 2); string t_lnth = Convert.ToString(d_lnth); LNTH.Add(t_lnth); if (d_vlt == 230) { double d_curt = Math.Round(((d_pwr * 1000) / (d_vlt * d_pf)), 1); string t_curt = Convert.ToString(d_curt); double d_du = Math.Round((2 * d_curt * d_lnth * (Rc * d_pf + d_sin * Xc) / (10 * d_vlt)), 2); string t_du = Convert.ToString(d_du); CRT.Add(t_curt); l_dU.Add(t_du); } if (d_vlt == 400) { double d_curt = Math.Round(((d_pwr * 1000) / (Math.Sqrt(3) * d_vlt * d_pf)), 1); string t_curt = Convert.ToString(d_curt); double d_du = Math.Round((Math.Sqrt(3) * d_curt * d_lnth * (Rc * d_pf + d_sin * Xc) / (10 * d_vlt)), 2); string t_du = Convert.ToString(d_du); CRT.Add(t_curt); l_dU.Add(t_du); } } С уважением, Андрей. |
26.01.2023, 08:49 | #2 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Так вы объявляете переменную в блоке if. Естественно, что она будет существовать только в этом блоке. Если хотите сделать так, чтобы переменная существовала вне блока if, тогда объявите ее заранее. А еще лучше объявляйте переменные заранее (в начале функции) и инициализируйте их по возможности.
Код:
Последний раз редактировалось macomics; 26.01.2023 в 09:04. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
С++. Создать линейный однонаправленный список из символов по следующим условиям | Енот-Ктулху | Помощь студентам | 2 | 27.11.2022 22:57 |
Подсчет по нескольким условиям | amki6 | Microsoft Office Excel | 4 | 20.02.2015 11:01 |
Счетесли по нескольким условиям | Neo007 | Microsoft Office Excel | 4 | 23.09.2008 16:23 |
СУММЕСЛИ по нескольким условиям 2 | Levchik | Microsoft Office Excel | 8 | 27.05.2008 09:15 |
СУММЕСЛИ по нескольким условиям | Gadar | Microsoft Office Excel | 6 | 26.05.2008 10:07 |