Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/130: Рейтинг темы: голосов - 130, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 05.03.2011
Сообщений: 36

do While с несколькими условиями

05.03.2011, 23:55. Показов 27664. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В пособии дан пример использования цикла:
C#
1
2
3
4
5
6
7
8
int a =
 4; 
 do  {
System.Console.WriteLine(a);
a++;
    }
    while
(a <   3)
Можно ли записать в while несколько условий? Например, чтобы a<>b, b<>c, a<>c

Добавлено через 7 минут
Можно сделать так, но если будет хотя бы условий 5 - **нешься циклы выписывать
C#
1
2
3
4
5
6
7
8
9
10
do
{
 do  {
System.Console.WriteLine(a);
a++;
    }
    while
(a <>   b);
 }
while (b <> c):
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.03.2011, 23:55
Ответы с готовыми решениями:

Дженерики с несколькими условиями
Добрый вечер! Если я использую дженерик класс я могу сделать некоторые уточнения для компилятора Например ...

Цикл do while с несколькими условиями
Какой синтаксис цикла do while с несколькими условиями? Я хочу остановить цикл если do_int &lt;= B_table_records_count ИЛИ...

While c несколькими условиями
Добрый день! Подскажите, пожалуйста, мне нужно найти строку в которой ячейки в 2 определенных столбцах единовременно принимают...

11
 Аватар для m0nax
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
06.03.2011, 00:01
Можно ли записать в while несколько условий?
Можно
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
06.03.2011, 00:04
Читай про логические операторы
1
0 / 0 / 0
Регистрация: 05.03.2011
Сообщений: 36
06.03.2011, 00:16  [ТС]
Цитата Сообщение от m0nax Посмотреть сообщение
Можно
Будьте так добры - подскажите как. У мелкософта на сайте ответа не нашёл, гугль тож ничего толкового подсказать не может.

Спасибо всем, разобрался

Добавлено через 11 минут
А возможно ли как то ещё сократить запись
C#
1
while (i == a | i == b | a == b);
Если, например, переменных будет 15 и все они должны быть между собой не равны.
0
Vault dweller
 Аватар для G.E.C.K
90 / 90 / 5
Регистрация: 05.03.2011
Сообщений: 327
06.03.2011, 01:55
Твой пример можно переписать так:
C#
1
while (i == a & i == b)
Потому что если i == a и i == b, то и a == b
1
0 / 0 / 0
Регистрация: 05.03.2011
Сообщений: 36
06.03.2011, 02:22  [ТС]
Цитата Сообщение от SoldovskijBB Посмотреть сообщение
Твой пример можно переписать так:
C#
1
while (i == a & i == b)
Потому что если i == a и i == b, то и a == b
Точно, что-то я жёстко туплю) Спасибо ещё раз.

Добавлено через 6 минут
Всё бы хорошо, НО:

C#
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
 private void button16_Click(object sender, EventArgs e)
        {
            //задаём случайное значение для 1ой кнопки
            Random ch = new Random();
            int i = ch.Next(1, 15);
            this.button1.Text = i.ToString();
            //2ая
            int a;
            do
            {
                Random ch1 = new Random();
                a = ch1.Next(1, 15);
                this.button2.Text = a.ToString();
            }
            while (i == a);
            //3я
            int b;
           do
                    {
                        Random ch1 = new Random();
                        b = ch1.Next(1, 15);
                        this.button3.Text = b.ToString();
                    }
                    while (i==a | i==b | a==b );
             //4я
            int c;
            do
            {
                Random ch1 = new Random();
                c = ch1.Next(1, 15);
                this.button4.Text = c.ToString();
            }
            while (i == a | i == b | i==c | a==b| a==c| b==c);
           
        }
С таким кодом кнопки рандомятся. А вот с таким:
C#
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
 private void button16_Click(object sender, EventArgs e)
        {
            //задаём случайное значение для 1ой кнопки
            Random ch = new Random();
            int i = ch.Next(1, 15);
            this.button1.Text = i.ToString();
            //2ая
            int a;
            do
            {
                Random ch1 = new Random();
                a = ch1.Next(1, 15);
                this.button2.Text = a.ToString();
            }
            while (i == a);
            //3я
            int b;
           do
                    {
                        Random ch1 = new Random();
                        b = ch1.Next(1, 15);
                        this.button3.Text = b.ToString();
                    }
                    while (i==a | i==b );
             //4я
            int c;
            do
            {
                Random ch1 = new Random();
                c = ch1.Next(1, 15);
                this.button4.Text = c.ToString();
            }
            while (i == a | i == b | i==c );
           
        }
Кнопки 2, 3, 4 - одинаковые О_о

Добавлено через 9 минут
У меня в примерах "|". Пробовал уже методом подбора и с "^" и с "&". Работает только такой вариант:

C#
1
while (i==a | i==b | a==b )
0
Vault dweller
 Аватар для G.E.C.K
90 / 90 / 5
Регистрация: 05.03.2011
Сообщений: 327
06.03.2011, 02:49
Твой энтузиазм это хорошо, но без знаний принципов работы тех же логический операторов далеко не уедешь.
Советую почитать книу "Полное руководство C# 4" Шилдта, там дсотупным язком описано все.
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
06.03.2011, 04:44
Лучше использовать один рандомизатор.
C#
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
        private void btnStart_Click(object sender, EventArgs e)
        {
            //int one = 0, two = 0, three = 0, four = 0; //для проверки, сколько раз происходит совпадение числа
            //задаём случайное значение для 1ой кнопки
            Random ch = new Random();
            int i = ch.Next(1, 15);
            this.button1.Text = i.ToString();
            //this.label1.Text = (++one).ToString();
 
            //2ая
            int a;
            do
            {
                a = ch.Next(1, 15);
                this.button2.Text = a.ToString();
                //this.label2.Text = (++two).ToString(); //напротив каждой кнопки расположен label
 
            }
            while (i == a);
            //3я
            int b;
            do
            {
                b = ch.Next(1, 15);
                this.button3.Text = b.ToString();
                //this.label3.Text = (++three).ToString();
            }
            while (i == a | i == b);
            //4я
            int c;
            do
            {
                c = ch.Next(1, 15);
                this.button4.Text = c.ToString();
                //this.label4.Text = (++four).ToString();
            }
            while (i == a | i == b | i == c);
 
        }
1
0 / 0 / 0
Регистрация: 05.03.2011
Сообщений: 36
06.03.2011, 11:44  [ТС]
Цитата Сообщение от Casper-SC Посмотреть сообщение
Лучше использовать один рандомизатор.
C#
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
        private void btnStart_Click(object sender, EventArgs e)
        {
            //int one = 0, two = 0, three = 0, four = 0; //для проверки, сколько раз происходит совпадение числа
            //задаём случайное значение для 1ой кнопки
            Random ch = new Random();
            int i = ch.Next(1, 15);
            this.button1.Text = i.ToString();
            //this.label1.Text = (++one).ToString();
 
            //2ая
            int a;
            do
            {
                a = ch.Next(1, 15);
                this.button2.Text = a.ToString();
                //this.label2.Text = (++two).ToString(); //напротив каждой кнопки расположен label
 
            }
            while (i == a);
            //3я
            int b;
            do
            {
                b = ch.Next(1, 15);
                this.button3.Text = b.ToString();
                //this.label3.Text = (++three).ToString();
            }
            while (i == a | i == b);
            //4я
            int c;
            do
            {
                c = ch.Next(1, 15);
                this.button4.Text = c.ToString();
                //this.label4.Text = (++four).ToString();
            }
            while (i == a | i == b | i == c);
 
        }
Спасибо, так удобнее. Но тем не менее - периодически кнопки совпадают
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
06.03.2011, 16:03
Цитата Сообщение от Patrool Посмотреть сообщение
Спасибо, так удобнее. Но тем не менее - периодически кнопки совпадают
То есть в итоге в 2-ух кнопках и более одинаковые цифры отображаются?

Добавлено через 3 минуты
А всё сам затестил и вправду. Просто у меня ни разу не выпало пока я тестил в прошлый раз, а на условие особо внимание не обратил. Ща выложу рабочий код.

Добавлено через 17 минут
Вот теперь не совпадают:
C#
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
        private void btnStart_Click(object sender, EventArgs e)
        {
            List<int> iList = new List<int>(4);
            //int one = 0, two = 0, three = 0, four = 0; //для проверки, сколько раз происходит совпадение числа
            const int minRand = 1, maxRand = 15;
 
            //задаём случайное значение для 1ой кнопки
            Random ch = new Random();
            int i = ch.Next(minRand, maxRand);
            this.button1.Text = i.ToString();
            iList.Add(i);
            //this.label1.Text = (++one).ToString();
            
            //2ая
            int a;
            do
            {
                a = ch.Next(minRand, maxRand);
                this.button2.Text = a.ToString();
                //this.label2.Text = (++two).ToString(); //напротив каждой кнопки расположен label
            }
            while (FindMatch(iList, a));
            iList.Add(a);
 
            //3я
            int b;
            do
            {
                b = ch.Next(minRand, maxRand);
                this.button3.Text = b.ToString();
                //this.label3.Text = (++three).ToString();
            }
            while (FindMatch(iList, b));
            iList.Add(b);
 
            //4я
            int c;
            do
            {
                c = ch.Next(minRand, maxRand);
                this.button4.Text = c.ToString();
                //this.label4.Text = (++four).ToString();
            }
            while (FindMatch(iList, c));
            iList.Add(c);
        }
 
        /// <summary>
        /// Вернёт true, если число совпадает с одним из чисел в коллекции
        /// </summary>
        /// <param name="coll">Коллекция чисел</param>
        /// <param name="i">Число для сравнения</param>
        /// <returns></returns>
        private Boolean FindMatch(ICollection coll, int i)
        {
            foreach (int digit in coll) 
                if (digit == i)
                    return true;
 
            return false; //Естественно выполнится, только, если совпадение не найдено
        }
0
0 / 0 / 0
Регистрация: 05.03.2011
Сообщений: 36
07.03.2011, 01:39  [ТС]
Вот теперь вообще не запускается. Куча ошибок)


Ошибка 2 Аргумент "1": преобразование типа из "System.Collections.Generic.List<int >" в "ICollection" невозможно - таких 3 штуки

Ошибка 7 Использование универсального тип "System.Collections.Generic.ICollection< T>" требует аргументы типа "1"

Ошибка 1 Наиболее подходящий перегруженный метод для "WindowsFormsApplication1.Form1.FindMatc h(ICollection, int)" имеет несколько недопустимых аргументов
- таких 3 штуки
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
07.03.2011, 10:23
Цитата Сообщение от Patrool Посмотреть сообщение
Вот теперь вообще не запускается. Куча ошибок)


Ошибка 2 Аргумент "1": преобразование типа из "System.Collections.Generic.List<int >" в "ICollection" невозможно - таких 3 штуки

Ошибка 7 Использование универсального тип "System.Collections.Generic.ICollection< T>" требует аргументы типа "1"

Ошибка 1 Наиболее подходящий перегруженный метод для "WindowsFormsApplication1.Form1.FindMatc h(ICollection, int)" имеет несколько недопустимых аргументов
- таких 3 штуки
Добавь
C#
1
using System.Collections;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.03.2011, 10:23
Помогаю со студенческими работами здесь

Работа while с несколькими условиями
Доброго времени суток, У меня проблема, надо написать программу где в массив вписывается строка символов и необходимо найти есть ли в...

Запрос к БД с несколькими условиями
Здравствуйте как реализовать правильно следующий запрос? Мне необходимо чтобы если в Таблице Автомобили Марка_автомобиля=x и...

Функция с несколькими условиями
=ЕСЛИ(A1&lt;(-1);(-2*x*sin(A1));.... Как мне правильно записать данную зависимость ?

СЧЕТЕСЛИ с несколькими условиями
В прилагаемом примере табеля у слесаря и мастера учет рабочих дней ведется по-разному: у слесаря посменно - смены обозначаются...

Запрос с несколькими условиями
Подскажите, пожалуйста Как в одном запросе вывести такую информацию, как на картинке в таблице, то есть: Вертикальный столбец шапки...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru