Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
7 / 4 / 3
Регистрация: 14.04.2020
Сообщений: 88

Проверка условия цикла

16.02.2022, 16:59. Показов 1189. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. В С++ есть такая проверка в цикле
C++
1
while(cin)
Как реализовать такую же проверку в c#?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.02.2022, 16:59
Ответы с готовыми решениями:

Игнорирование условия цикла for
Добрый вечер! Решил "распараллелить" выполнение операций над массивом содержащим пути. Вроде все сделано нормально, но программу...

Странное поведение проверки условия цикла
Пишу алгоритм сортировки замещением. Дали задание написать алгоритм не только для возрастающего порядка, но и для убывающего. Такое...

Выход из цикла при соблюдении условия
Добрый вечер, скажите пожалуйста будет ли произведен выход из внутреннего цикла при соблюдении в нем условия? и продолжится ли выполнение...

17
 Аватар для Voronkin
469 / 296 / 166
Регистрация: 18.03.2018
Сообщений: 960
16.02.2022, 17:07
Цитата Сообщение от Sektor Посмотреть сообщение
while(cin)
C#
1
while(cin)
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3429 / 2748 / 575
Регистрация: 04.09.2018
Сообщений: 8,625
Записей в блоге: 3
16.02.2022, 17:09
Sektor, смотря что такое cin.
0
7 / 4 / 3
Регистрация: 14.04.2020
Сообщений: 88
16.02.2022, 17:10  [ТС]
Цитата Сообщение от Voronkin Посмотреть сообщение
while(cin)
Это, как я понял, проверка на то, существует ли вообще строка. В с# ведь данной возможности нет?

Добавлено через 36 секунд
Как пример, можно показать такой варинат
C++
1
while(getline(cin, a) && getline(cin, b))
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
16.02.2022, 17:13
Sektor, Можно так проверить
C#
1
2
3
4
string a = "";
    while(string.IsNullOrEmpty(a))
    {
    }
0
7 / 4 / 3
Регистрация: 14.04.2020
Сообщений: 88
16.02.2022, 17:17  [ТС]
Цитата Сообщение от Kazbek17 Посмотреть сообщение
string a = "";
    while(string.IsNullOrEmpty(a))
    {
    }
Меня попросили сделать задачи, чтоб через еОлимп прогнать. Я взял как пример эту

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
#include <iostream>
#include <string>
using namespace std;
 
int main() {
    string a, b;
    while(getline(cin, a) && getline(cin, b)){
        for(char letter ='a'; letter <= 'z'; ){
            if((a.find(letter)!=string::npos) && 
               (b.find(letter)!=string::npos)){ /* если буква есть в 
                            обеих строках */
                cout << letter;
                a.erase(a.find(letter),1); /* стираем найденную 
                букву в первой строке */
                b.erase(b.find(letter),1); /* стираем найденную 
                букву во второй строке */
            }
            else letter++; /* если буквы нет в обеих строках,
                        переходим к следующей букве алфавита */
        }
        cout << endl;
    }
 
    return 0;
}
Когда делаю проверку в с#, еОлимп ругается

Добавлено через 36 секунд
Сделал немного не так, но суть остается такая же
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
using System;
using System.Collections.Generic;
 
 
namespace _22
{
    class Program
    {
        static void Main(string[] args)
        {
            List<char> newWord = new List<char>();
            string firstString;
            string secondString;
 
            do
            {
                firstString = Console.ReadLine();
                secondString = Console.ReadLine();
 
                for (int i = 0; i < firstString.Length; i++)
                {
                    if (FindSymbol(firstString[i], ref secondString))
                    {
                        newWord.Add(firstString[i]);
                    }
                }
 
                newWord.Sort();
                for (int i = 0; i < newWord.Count; i++)
                {
                    Console.Write(newWord[i]);
                }
                Console.WriteLine();
                newWord.Clear();
            } while(string.IsNullOrEmpty(firstString) && string.IsNullOrEmpty(secondString));
        }
 
        static bool FindSymbol(char c, ref string str)
        {
            for (int i = 0; i < str.Length; i++)
            {
                if (str[i] == c)
                {
                    str = str.Remove(i, 1);
                    return true;
                }
            }
 
            return false;
        }
    }
}
Добавлено через 45 секунд
Ему не нравится, наверное, то, что неправильно организован выход из цикла
0
 Аватар для Voronkin
469 / 296 / 166
Регистрация: 18.03.2018
Сообщений: 960
16.02.2022, 17:19
Цитата Сообщение от Sektor Посмотреть сообщение
Когда делаю проверку в с#, еОлимп ругается
while()

В скобках должно быть что угодно, что вернет true или false
0
7 / 4 / 3
Регистрация: 14.04.2020
Сообщений: 88
16.02.2022, 17:21  [ТС]
Цитата Сообщение от Voronkin Посмотреть сообщение
while()
В скобках должно быть что угодно, что вернет true или false
Я пытался и while(true) написать, ему все равно не нравится
0
 Аватар для Voronkin
469 / 296 / 166
Регистрация: 18.03.2018
Сообщений: 960
16.02.2022, 17:23
Цитата Сообщение от Sektor Посмотреть сообщение
но суть остается такая же
Нет, не та же... есть разница между
While() и do...while()

Во втором случае (как у вас) Сначала выполняется код, а потом проверка

Добавлено через 33 секунды
Я ссылку Вам дал, почитайте
0
7 / 4 / 3
Регистрация: 14.04.2020
Сообщений: 88
16.02.2022, 17:27  [ТС]
Цитата Сообщение от Voronkin Посмотреть сообщение
Нет, не та же... есть разница между
While() и do...while()
Во втором случае (как у вас) Сначала выполняется код, а потом проверка
Добавлено через 33 секунды
Я ссылку Вам дал, почитайте
Прочитал, да, все верно. Но я до этого так и писал через while
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
while (true)
            {
                firstString = Console.ReadLine();
                secondString = Console.ReadLine();
 
                for (int i = 0; i < firstString.Length; i++)
                {
                    if (FindSymbol(firstString[i], ref secondString))
                    {
                        newWord.Add(firstString[i]);
                    }
                }
 
                newWord.Sort();
                for (int i = 0; i < newWord.Count; i++)
                {
                    Console.Write(newWord[i]);
                }
                Console.WriteLine();
                newWord.Clear();
            }
eOlymp ругается на ошибку выполнения, значит, он не смог нормально закончить работу программы. Если бы был неправильный ответ, была бы другая ошибка. Но на с++, как в примере выше, такой ошибки нет.
Такая простая задача, а понять не могу. Всегда этот еОлимп не нравился
0
 Аватар для Voronkin
469 / 296 / 166
Регистрация: 18.03.2018
Сообщений: 960
16.02.2022, 17:47
блин... смотрите
while (true) - это цикл, который будет выполняться всегда. (так как true всегда true)

Если вы хотите делать проверку, то это делается так, например

C#
1
2
3
4
5
6
int x  = 10;
 
while(x>0)
{
 x-=1;
}
ошибки внутри цикла обрабатывать тоже нужно внутри цикла, если это условие не является определяющим для выполнения цикла (как в моем примере)

Очень сложно помогать, когда Вы показываете кусок кода (я не вижу методов, к которым Вы обращаетесь внутри цикла) и скрываете саму ошибку
0
7 / 4 / 3
Регистрация: 14.04.2020
Сообщений: 88
16.02.2022, 17:51  [ТС]
Цитата Сообщение от Voronkin Посмотреть сообщение
блин... смотрите
while (true) - это цикл, который будет выполняться всегда. (так как true всегда true)
Если вы хотите делать проверку, то это делается так, например
int x  = 10;
while(x>0)
{
 x-=1;
}
ошибки внутри цикла обрабатывать тоже нужно внутри цикла, если это условие не является определяющим для выполнения цикла (как в моем примере)
Очень сложно помогать, когда Вы показываете кусок кода (я не вижу методов, к которым Вы обращаетесь внутри цикла) и скрываете саму ошибку
Я все понимаю. Мне лично без разницы какое условие, я бы просто сделал проверку на то, пустая ли строка у меня. Но ту программу, что првоеряет мой код, такой результат не устраивает. Вот весь код
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
using System;
using System.Collections.Generic;
 
 
namespace _22
{
    class Program
    {
        static void Main(string[] args)
        {
            List<char> newWord = new List<char>();
            string firstString;
            string secondString;
 
            while ()
            {
                firstString = Console.ReadLine();
                secondString = Console.ReadLine();
 
                for (int i = 0; i < firstString.Length; i++)
                {
                    if (FindSymbol(firstString[i], ref secondString))
                    {
                        newWord.Add(firstString[i]);
                    }
                }
 
                newWord.Sort();
                for (int i = 0; i < newWord.Count; i++)
                {
                    Console.Write(newWord[i]);
                }
                Console.WriteLine();
                newWord.Clear();
            }
        }
 
        static bool FindSymbol(char c, ref string str)
        {
            for (int i = 0; i < str.Length; i++)
            {
                if (str[i] == c)
                {
                    str = str.Remove(i, 1);
                    return true;
                }
            }
 
            return false;
        }
    }
}
0
 Аватар для Voronkin
469 / 296 / 166
Регистрация: 18.03.2018
Сообщений: 960
16.02.2022, 18:00
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
        static void Main(string[] args)
        {
            List<char> newWord = new List<char>();
            string firstString;
            string secondString;
            while (true)
            {
                firstString = Console.ReadLine();
                secondString = Console.ReadLine();
 
                for (int i = 0; i < firstString.Length; i++)
                {
                    if (FindSymbol(firstString[i], ref secondString))
                    {
                        newWord.Add(firstString[i]);
                    }
                }
                newWord.Sort();
                if(newWord.Count==0)Console.WriteLine("Совпадений нет");
                else Console.WriteLine(String.Join("",newWord));
                Console.WriteLine();
                newWord.Clear();
            }
        }
Добавлено через 32 секунды
Нужно, наверное, что-то сделать, чтоб из этого цикла выйти?
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
16.02.2022, 18:03
изначальная задача то какая? переписать с плюсов?
0
7 / 4 / 3
Регистрация: 14.04.2020
Сообщений: 88
16.02.2022, 18:06  [ТС]
Цитата Сообщение от Voronkin Посмотреть сообщение
Нужно, наверное, что-то сделать, чтоб из этого цикла выйти?
Да, только я не знаю что требуется.

Вот условие

По заданным двум строкам a и b следует вывести такую строку x наибольшей длины, которая одновременно является подстрокой перестановки a и подстрокой перестановки b.

Входные данные
Состоит из нескольких тестов, каждый их которых содержит две строки. Каждая строка состоит из символов нижнего регистра, причём первой строкой в паре является a, а второй строкой b. Максимальная длина каждой строки 1000 символов.

Выходные данные
Для каждого теста следует в отдельной строке вывести строку x. Если таких строк несколько, то вывести наименьшую в алфавитном порядке.
0
 Аватар для Voronkin
469 / 296 / 166
Регистрация: 18.03.2018
Сообщений: 960
16.02.2022, 18:06
Цитата Сообщение от Diamante Посмотреть сообщение
изначальная задача то какая? переписать с плюсов?
Ну видать да... я тут врядли помогу)) С++ не знаю, но даже не зная вижу, что на С++ и на С# программы делают разные вещи))) Было бы неплохо услышать задание))
0
7 / 4 / 3
Регистрация: 14.04.2020
Сообщений: 88
16.02.2022, 18:08  [ТС]
Цитата Сообщение от Diamante Посмотреть сообщение
изначальная задача то какая? переписать с плюсов?
Выше написал. Я сделал по-своему, но вообще да

Добавлено через 1 минуту
Если условие обрезать, то нужно найти общие элементы в двух строках и вывести их в порядке от а до я. Вот только у меня с циклом проблема. Я пытался без него отправить, не принимает, с ним - тоже.

Добавлено через 28 секунд
Входные данные
pretty
women
walking
down
the
street
Выходные данные
e
nw
et
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
16.02.2022, 18:52
C#
1
2
3
4
            var first = string.Empty;
            var second = string.Empty;  
            while(!string.IsNullOrWhiteSpace(first = Console.ReadLine()) && !string.IsNullOrWhiteSpace(second = Console.ReadLine()))
                Console.WriteLine(string.Concat(first.Intersect(second).OrderBy(x=>x)));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.02.2022, 18:52
Помогаю со студенческими работами здесь

Как выдать сообщение из условия внутри цикла while
Есть два файла- один просто с информацией, второй- содержащий md5-хэш. Создала такой цикл: 1. Сперва высчитываю хэш файла 2. Затем ищу...

Восклицательный знак в конце условия цикла for для массива
Доброго дня! Не могу понять, что за восклицательный знак в конце условия цикла for, кто такой и для каких целей служит? @for (int i...

Проверка условия if
Всем привет. Требуется в if проверять условие на равенство числа определенной формуле: Т.е. если число равно 2,3,6,7,10,11,14,15,18,19 и...

Проверка условия в конструкторе класса
В конструкторе класса при определённых условиях надо выйти без создания нового объекта. Подскажите на простом примере public class...

Проверка условия раз в секунду
Как сделать так, чтобы раз в секунду проверялось условие. И как только оно выполняется ставить флаг true и прекращать проверку.


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru