[Homework] C# Basics - Console Input / Output - Problem{7} - Sum of 5 Numbers, моето решение
Ето това е моето решение на задачата със събирането на 5 числа, въведени на един ред.
Ето това е моето решение на задачата със събирането на 5 числа, въведени на един ред.
Здрасти!
Така няма ли да е по-лесно:
Console.Write("Enter five numbers separated by space: ");
string[] numbers = Console.ReadLine().Split();
double sum = 0;
for (int i = 0; i < numbers.Length; i++)
{
sum += Convert.ToDouble(numbers[i]);
}
Console.WriteLine(sum);
Тествах го с няколко различни числа и мисля, че работи коректно. Просто ми се струва, че много го усложняваш :)
И двата варианта са добри, да! Благодаря за отговорите!
Май това е което е най-добро, като краен вариант:
Console.WriteLine(Console.ReadLine().Split().Select(double.Parse).Sum());
Предимството на моя дълъг вариант е, че може да се замести сепаратора с някакъв стринг и кода търпи повече модификации и усложняване. Тук може ли да се замести сепаратора, да не е шпация?
Това, че едно решение е на един ред, не значи, че е добро. Не е хубаво да се извършват твърде много операции на един ред; в случая по-добре да се разбие на два реда, като принтирането да е отделно. Кодът е по-труден за четене, не за друго.
Тук може ли да се замести сепаратора, да не е шпация?
Сам си отговарям на въпроса :) Да, може. Ето така, в случая разделителят е 'u':
Console.WriteLine(Console.ReadLine().Split('u').Select(double.Parse).Sum());
Здравей,
Може да изредиш и няколко различни разделителя, както и да се подсигуриш ако имаш няколко празни места между числата. Подаваш на Split() масив от символи (в случая: , - & и space), които примерно биха могли да ти бъдат разделители, а StringSplitOptions е описателно и се досещаш какво прави:
double[] numbers = Console.ReadLine().Split(new char[] { ',', '-', '&', ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(double.Parse).ToArray();
static void Main()
{
string[] numbers = Console.ReadLine().Split(' ');
double a = double.Parse(numbers[0]);
double b = double.Parse(numbers[1]);
double c = double.Parse(numbers[2]);
double d = double.Parse(numbers[3]);
double e = double.Parse(numbers[4]);
Console.WriteLine(a + b + c + d + e);
}
Това е моето решение.
static void Main()
{
string[] numbers = Console.ReadLine().Split(' ');
double a = double.Parse(numbers[0]);
double b = double.Parse(numbers[1]);
double c = double.Parse(numbers[2]);
double d = double.Parse(numbers[3]);
double e = double.Parse(numbers[4]);
Console.WriteLine(a + b + c + d + e);
}
Това е моето решение.
static void Main()
{
string[] numbers = Console.ReadLine().Split(' ');
double a = double.Parse(numbers[0]);
double b = double.Parse(numbers[1]);
double c = double.Parse(numbers[2]);
double d = double.Parse(numbers[3]);
double e = double.Parse(numbers[4]);
Console.WriteLine(a + b + c + d + e);
}
Това е моето решение.
А някой пробвал ли е с класа Nakov.IO.Cin? Докато търсех варианти за изписване на числа на един ред, попаднах на него, но нещо не успявам да го подкарам.
using System;
using Nakov.IO;
class SumOf5Numbers
{
static void Main()
{
double firstNumber = Cin.NextDouble();
double secondNumber = Cin.NextDouble();
double thirdNumber = Cin.NextDouble();
double fourthNumber = Cin.NextDouble();
double fifthNumber = Cin.NextDouble();
double sum = (firstNumber + secondNumber + thirdNumber + fourthNumber + fifthNumber);
Console.WriteLine(sum);
}
}
Като се опитам да компилирам, дава грешка:
Error 1 The type or namespace name 'Nakov' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Marin\Documents\Visual Studio 2013\Projects\Homework-Console-Input-Output\07SumOf5Numbers\SumOf5Numbers.cs 2 7 07SumOf5Numbers
Свалих си този файл (http://www.nakov.com/wp-content/uploads/2011/11/Cin.cs), но не знам къде да го поставя, за да сработи.
Начини много :) Console.ReadLine().Split().Select(double.Parse).Sum()
Е, да това определено е по-добро решение от моето...даже май е най-доброто понеже решаваш задачата с един ред :D
Благодаря, RoYaL!