Предмет: Информатика, автор: esstry

Написать метод в WINFORMS, который находит сумму чисел в переданной
строке. Числом считается непрерывная последовательность цифр, отделенная от остального текста пробелами или расположенная в начале либо конце строки. Допустимо использовать метод Split класса String.

С помощью этого метода обработать пять разных строк и отобразить результаты на экране

Ответы

Автор ответа: ЯковПервый
1

// Строку получал из TextBox, в методе для подсчета суммы убирал из нее всё лишнее, разбивал по пробелу, преобразовывал в последовательность чисел, считал их сумму.

// Посколько сказано, что отображать результаты необходимо после обработки пяти строк, завел список, хранящий полученные результаты.

// Результаты отображаются в ListBox.

// .cs файлы прикрепил как .txt файлы.

// ParseNumSequence -- метод, который находит сумму чисел в переданной строке.

using System;

using System.Collections.Generic;

using System.Data;

using System.Linq;

using System.Windows.Forms;

namespace WindowsFormsApp1

{

   public partial class Form1 : Form

   {

       private const int STORED_RESULTS = 5;

       private readonly List<Tuple<string, int>> _results = new List<Tuple<string, int>>();

       public Form1()

       {

           InitializeComponent();

       }

       private void GetSumBtn_Click(object sender, EventArgs e)

       {

           var result = ParseNumSequence(NumSequenceTextBox.Text);

           if (result == null)

           {

               MessageBox.Show("Incorrect sequence.");

               return;

           }

           _results.Add(result);

           if (_results.Count == STORED_RESULTS)

           {

               var formattedResults = _results

                   .Select(t => $"{t.Item1}: {t.Item2}")

                   .ToArray();

               ResultsListBox.Items.Clear();

               ResultsListBox.Items.AddRange(formattedResults);

           }

           else if (_results.Count == STORED_RESULTS + 1)

           {

               ResultsListBox.Items.Clear();

               _results.RemoveRange(0, _results.Count - 1);

           }

           NumSequenceTextBox.Clear();

           InfoLabel.Text = $"обработано {_results.Count} из {STORED_RESULTS} строк";

       }

       private Tuple<string, int> ParseNumSequence(string text)

       {

           var acceptedSymbols = text

               .Where(t => char.IsDigit(t) || t == ' ')

               .ToArray();

           string sequence = new string(acceptedSymbols).Trim();

           if (string.IsNullOrEmpty(sequence) || string.IsNullOrWhiteSpace(sequence))

               return null;

           int sum = sequence

               .Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)

               .Select(t => int.Parse(t))

               .Sum();

           return new Tuple<string, int>(sequence, sum);

       }

   }

}

Приложения:

esstry: https://znanija.com/task/48255172
Wormarg: Здравствуйте, А не могли бы более подробно объяснить вторую часть. Просто там не совсем по заданию считает суммы, даже если в TextBox написать ( fsghus123sygf ), то он всё равно в выводе будет 123, по заданию должно получиться 0. Заранее спасибо.
ЯковПервый: В условии, которое написано здесь, не указано, что необходимо сделать при некорректном вводе со стороны пользователя. Как и в заданиях подобного типа, подразумевалось, что строка поступает корректная, то есть строка из последовательностей цифр, ограниченных пробелом (+ последовательности из начала и конца). В том числе, не обговаривалось, что нужно выдавать 0 в исключительных случаях.
ЯковПервый: Поэтому я обработал эту ситуацию по своему усмотрению: сделал так, что из текста удаляются все символы, которые не удовлетворяют шаблону распознавания из условия. В Вашем примере из строки удалились бы все буквы и осталась бы лишь последовательность '123'. Обрабатывать подобные ситуации можно по-разному, есть большое число вариантов возникновения и способов обработки.
ЯковПервый: У автора вопроса есть контакт, можем более подробно поговорить там
Похожие вопросы
Предмет: Математика, автор: diananupriisov