7 / 4 / 3
Регистрация: 14.04.2020
Сообщений: 88

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

16.02.2022, 16:59. Показов 1228. Ответов 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
3439 / 2759 / 575
Регистрация: 04.09.2018
Сообщений: 8,686
Записей в блоге: 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,869
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru