Предмет: Информатика,
автор: yavsepoymu
C#
Дана последовательность натуральных чисел (одно число в строке), завершающаяся числом 0.
Выведите все нечетные числа из этой последовательности, сохраняя их порядок
В этой задаче нельзя использовать глобальные переменные и передавать какие-либо параметры в рекурсивную функцию
Функция получает данные, считывая их с клавиатуры
Функция не возвращает значение, а сразу же выводит результат на экран Основная программа должна состоять только из вызова этой функции
Приложения:
Ответы
Автор ответа:
1
Ответ:
using System;
using System.Collections;
using System.Collections.Generic;
namespace CSLear
{
class Program
{
static void Main(string[] args)
{
var InputStream = ReadSeqWhile(x => x != 0);
foreach (int item in InputStream)
{
if (item % 2 != 0) { Console.WriteLine(item); }
}
}
public static IEnumerable<int> ReadSeqWhile(Func <int, bool> Predicate)
{
var rtemp = int.Parse(Console.ReadLine());
while (Predicate(rtemp))
{
yield return rtemp;
rtemp = int.Parse(Console.ReadLine());
}
}
}
}
Объяснение:
KnowsUser1:
Упс, заметил только сейчас - программа выводит в консоль удовлетворяющий элемент последовательности сразу, как только считывает его, не дожидаясь до конца ввода. Что бы исправить, добавьте в проект пространство имён System.Linq
и измените цикл foreach на 12 строке следующим образом:
foreach (var item in InputStream.Where(x => x % 2 != 0).ToList(){ Console.WriteLine(item)}
foreach (var item in InputStream.Where(x => x % 2 != 0).ToList(){ Console.WriteLine(item)}
_.ToList() *
Все сделала, как вы сказали
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace kp9p_pr_4_zad_10
{
class Program
{
static void Main(string[] args)
{
var InputStream = ReadSeqWhile(x => x != 0);
foreach (var item in InputStream.Where(x => x % 2 != 0).ToList()
{
Console.WriteLine(item);
}
}
public static IEnumerable ReadSeqWhile(Func Predicate)
{
var rtemp = int.Parse(Console.ReadLine());
while (Predicate(rtemp))
{
yield return rtemp;
rtemp = int.Parse(Console.ReadLine());
}
}
}
}
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace kp9p_pr_4_zad_10
{
class Program
{
static void Main(string[] args)
{
var InputStream = ReadSeqWhile(x => x != 0);
foreach (var item in InputStream.Where(x => x % 2 != 0).ToList()
{
Console.WriteLine(item);
}
}
public static IEnumerable ReadSeqWhile(Func Predicate)
{
var rtemp = int.Parse(Console.ReadLine());
while (Predicate(rtemp))
{
yield return rtemp;
rtemp = int.Parse(Console.ReadLine());
}
}
}
}
Не хватает фигурной скобки после .ToList()
Перепробовала разные комбинации
Перепробовала разные комбинации
Только больше ошибок появляется
На удивление, у меня всё прекрасно работает. Если вы работаете с C#, вероятнее всего вы работаете или в VS, или в VSCode. И та, и другая IDE весьма чётко и понятно описывают ошибки. Логика кода выстроена правильно, я никогда не добавляю решения вообще не протестировав их
То, что в этот раз я написал в комментариях, что решение содержит ошибку и как её исправить, произошло лишь потому, что в условие слегка разниться с примером ввода/вывода "Функция не возвращает значение, а сразу выводит на экран".
Задание отмечено как студенческого уровня. И отсюда возникает вопрос - если вы не в состоянии исправить мелкие синтаксические ошибки, из разряда забытой скобки, на которые ещё и чётко указывают среды разработки, может вы где то не там учитесь?
Похожие вопросы
Предмет: Русский язык,
автор: kaprizzzzzz
Предмет: Русский язык,
автор: про100nik
Предмет: Українська мова,
автор: moviackdim
Предмет: МХК,
автор: Кися12345678901