Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
3 / 2 / 2
Регистрация: 19.06.2016
Сообщений: 299
1

Чтение чисел из файла пока не встретится ноль

13.07.2016, 16:32. Показов 3096. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как сделать так, чтобы из файла вводились (В консоль, каждое число с новой строки) числа, пока не будет введен 0. Если введен ноль, то чтение файла останавливается, и пишется сумма всех введенных из файла нечетных чисел. Я пытался это сделать, но вышло только это -
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
static void Number_2()
        {
            Console.Clear();
            try
            {
                StreamReader sr = new StreamReader("Text.txt");
                int n, count = 0;
 
            Metka:
 
                n = int.Parse(sr.ReadLine());
                Console.WriteLine(n);
 
                if (n % 2 == 1)
                {
                    count++;
                    goto Metka;
                }
                if (n % 2 == 0)
                {
                    goto Metka;
                }
                if (n == 0)
                {
                    sr.Close();
                    Console.WriteLine(count);
                }
            }
            catch
            {
                Console.WriteLine("\nОшибка чтения информации...");
            }
            
 
            Console.WriteLine("\nНажмите Enter, чтобы войти в меню...");
            Console.ReadKey();
            Menu();
 
        }
Распишите мои ошибки пожалуйста...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.07.2016, 16:32
Ответы с готовыми решениями:

Рассчитать сумму введенных чисел, пока не встретится ноль
Рассчитать сумму чисел, которые последовательно вводятся с клавиатуры до тех пор пока не будет...

Складывать числа, пока не встретится ноль
Имеется массив А из N произвольных чисел А(N), среди которых есть положительные, отрицательные и...

Складывать числа до тех пор, пока не встретится ноль
Складывать числа до встречи 0. Напечатать сумму. Снова суммировать до 0, напечатать новую сумму и...

Ввести в memo целые числа. Создать из них массив пока не встретится 0(ноль).Вычислить сумму всех положительных элементов
Ввести в memo целые числа. Создать из них массив пока не встретится 0(ноль).Вычислить сумму всех...

8
Эксперт .NET
10571 / 6495 / 1506
Регистрация: 25.05.2015
Сообщений: 19,669
Записей в блоге: 14
13.07.2016, 16:57 2
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
try
{
    using (StreamReader sr = new StreamReader("Text.txt"))
    {
        int n, summ = 0;
        string line;
 
        while (!sr.EndOfStream)
        {
            line = sr.ReadLine();
 
            if (Int32.TryParse(line, out n))
            {
                Console.WriteLine(n);
 
                if (n % 2 == 1)
                {
                    summ++;
                }
 
                if (n == 0)
                {
                    Console.WriteLine(summ);
                    break;
                }
            }
        }
    }
}
catch
{
    Console.WriteLine("\nОшибка чтения информации...");
}
Добавлено через 3 минуты
Для классов с интерфейсом IDisposable в том виде, как здесь StreamReader, старайтесь использовать using () {}.
goto не нужен, goto -зло.
0
1494 / 1209 / 821
Регистрация: 29.02.2016
Сообщений: 3,614
13.07.2016, 17:08 3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 static void Main()
    {
       int x=0, sum = 0 ;
       var infile = new StreamReader("your file name here");
       do
       {
          Console.WriteLine("Введите целое число: ");
          var num = Convert.ToInt32(infile.ReadLine());
           if (num%2!=0)
               sum +=  num; 
       }
       while ((int.TryParse(Console.ReadLine(), out x)  ) && x != 0);
       Console.WriteLine(sum);
       Console.ReadLine();
    }
0
Администратор
Эксперт .NET
17023 / 13375 / 5218
Регистрация: 17.03.2014
Сообщений: 27,353
Записей в блоге: 1
13.07.2016, 17:10 4
Jesterru,
C#
1
2
3
4
5
6
7
int sum = 0;
foreach (int num in File.ReadLines("input.txt").Select(int.Parse).TakeWhile(n => n != 0))
{
    if (num%2==1) sum += num;
    Console.WriteLine(num);
}
Console.WriteLine(sum);
0
Заблокирован
13.07.2016, 20:11 5
OwenGlendower, почему без Where + Sum?
0
Администратор
Эксперт .NET
17023 / 13375 / 5218
Регистрация: 17.03.2014
Сообщений: 27,353
Записей в блоге: 1
13.07.2016, 22:19 6
Ev_Hyper, потому что выводить нужно все, а сумма нужна только для нечетных и потому что в файле после 0 могут быть и другие числа.
0
Заблокирован
13.07.2016, 23:07 7
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Ev_Hyper, потому что выводить нужно все, а сумма нужна только для нечетных и потому что в файле после 0 могут быть и другие числа.
мм...в исходном условии о выводе чисел речь не идет, только сумму:
Цитата Сообщение от Jesterru Посмотреть сообщение
Как сделать так, чтобы из файла вводились (В консоль, каждое число с новой строки) числа, пока не будет введен 0. Если введен ноль, то чтение файла останавливается, и пишется сумма всех введенных из файла нечетных чисел.
и, конечно, имел ввиду прицепить Where и Sum после TakeWhile.
0
16 / 16 / 5
Регистрация: 09.06.2015
Сообщений: 96
13.07.2016, 23:30 8
C#
1
2
3
4
5
6
7
8
9
10
11
12
  int sum=0;
   foreach(var s in File.ReadAllLines(filename))
     {
        try{
                 int curr=Convert.ToInt32();
                 if(curr==0) break;
                 if(curr%2==0)sum+=curr;
                 Console.WriteLine(curr);
              }
              catch {}
     }
     Console.WriteLine("sum="+sum);
0
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
14.07.2016, 07:02 9
Переделал 4й пост как-то так:
C#
1
2
3
4
5
6
Console.WriteLine(File.ReadLines(@"E:\num.txt").Select(int.Parse)
     .TakeWhile(n => n != 0).Sum(n =>
     {
         Console.WriteLine(n);
         return n % 2 != 0 ? n : 0;
     }));
Удовлетворяет запросу:
Цитата Сообщение от Jesterru Посмотреть сообщение
чтобы из файла вводились (В консоль, каждое число с новой строки) числа
Цитата Сообщение от Jesterru Посмотреть сообщение
пишется сумма всех введенных из файла нечетных чисел.
Единственное не понятно, что имелось ввиду, каждый нечетный элемент списка, или числа нечетные...
0
14.07.2016, 07:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2016, 07:02
Помогаю со студенческими работами здесь

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

Найти сумму всех чисел до тех пор, пока не встретится 11
3.В переменную a последовательно вводятся числа -9, 18, 2, 6, 7, 20, 11, -6. Найти сумму всех чисел...

Ввод чисел по одному в строке, пока не встретится пустая строка
Добрый день! Начали в универе проходить Си. И на дом. задание дали несколько заданий. Условиями...

Вводить числа, пока не встретится 7. Найти квадраты тех чисел, которые больше 10
Вводить числа, пока не встретится 7. Найти квадраты тех чисел, которые больше 10. задача на цикл...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru