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

Ответы на вопрос

// Строку получал из 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);
}
}
}







Для решения данной задачи, можно написать следующий метод в WinForms:
```csharp private int FindSumOfNumbers(string input) { // Разделяем строку на массив подстрок, используя пробел как разделитель string[] words = input


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili