Дана строка, содержащая сумму натуральных чисел. Найдите результат вычислений
Дана строка, содержащая сумму натуральных чисел. Найдите результат вычислений. Например: 2.5 + 3.5 + 2.5 ответ будет 8.5. Я сделал набросок программы, но что-то дальше я не очень понимаю что нужно сделать.
Вот код:
static void Main(string[] args)
{
string s = "3.5 + 1.5 + 1.5";
string numbers = "1234567890";
string x = "";
isdigit( s,numbers,x);
}
static void isdigit (string s,string numbers,string x)
{
s.Split(" ");
for(int i = 0;i < s.Length; i++)
{
for(int j = 0; j < numbers.Length; j++)
{
if(s[i] == numbers[j] && s[i] + 1 =='.' && s[i] + 2 == numbers[j])
{
x += s[i];
}
else
{
Console.WriteLine("Данный пример не подхоит по условию.");
}
}
Console.Write(x);
}
}
Ответы (2 шт):
Автор решения: aepot
→ Ссылка
Если ваши числа сделать натуральными, то получится всё весьма просто, постараюсь без Linq, хотя с ним было бы еще проще.
static void Main(string[] args)
{
string s = "3 + 2 + 1"; // должно получиться 6
try
{
Console.WriteLine(s + " = " + ComputeSum(s));
}
catch (Exception ex)
{
Console.WriteLine("Не удалось посчитать сумму, ошибка: " + ex.Message);
}
}
private static int ComputeSum(string expression)
{
string[] tokens = expression.Split('+');
int sum = 0;
foreach (string token in tokens)
{
sum += int.Parse(token);
}
return sum;
}
Вывод в консоль
3 + 2 + 1 = 6
Без try-catch, при условии что все числа натуральные.
static void Main(string[] args)
{
string s = "3 + 2 + 1";
int sum = ComputeSum(s);
if (sum >= 0)
Console.WriteLine(s + " = " + sum);
else
Console.WriteLine("Не удалось посчитать сумму");
}
private static int ComputeSum(string expression)
{
string[] tokens = expression.Split('+');
int sum = 0;
foreach (string token in tokens)
{
if (int.TryParse(token, out int number))
sum += number;
else
return -1;
}
return sum;
}
Автор решения: VladD
→ Ссылка
Тот же вариант, но с LINQ.
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
var result = s.Split('+').Sum(double.Parse);
И да, ваши числа не натуральные.