Написать метод в WINFORMS, который находит сумму чисел в переданной
строке. Числом считается непрерывная последовательность цифр, отделенная от остального текста пробелами или расположенная в начале либо конце строки. Допустимо использовать метод Split класса String.
С помощью этого метода обработать пять разных строк и отобразить результаты на экране
Answers & Comments
// Строку получал из 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);
}
}
}