Problem 7. Sum of 5 Numbers - Console Input Output Homework
Здравейте,
Някой би ли постнал някакво решение на тази задача.
Здравейте,
Някой би ли постнал някакво решение на тази задача.
string[] userINput = Console.ReadLine().Split();
int a = Convert.ToInt32(userINput[0]);
int b = Convert.ToInt32(userINput[1]);
int c = Convert.ToInt32(userINput[2]);
int d = Convert.ToInt32(userINput[3]);
int e = Convert.ToInt32(userINput[4]);
int sumOfAll = a + b + c + d + e;
Console.WriteLine(sumOfAll);
И както колегата по надолу е споменал double е варианта за променлива, защото има и дробни числа, така че това можеш да си го промениш :)
Console.Write("Enter number one: ");
double numberOne = double.Parse(Console.ReadLine());
Console.Write("Enter number two: ");
double numberTwo = double.Parse(Console.ReadLine());
Console.Write("Enter number three: ");
double numberThree = double.Parse(Console.ReadLine());
Console.Write("Enter number four: ");
double numberFour = double.Parse(Console.ReadLine());
Console.Write("Enter number five: ");
double numberFive = double.Parse(Console.ReadLine());
double sum = numberOne + numberTwo + numberThree + numberFour + numberFive;
Console.WriteLine("{0} {1} {2} {3} {4} {5}", numberOne, numberTwo, numberThree, numberFour, numberFive, sum);
Дано ти помогне :) Иначе се порови във форума и ще видиш, че всяко домашно си има тема. Там можеш да видиш примерни решения и много добри разяснения.
Използвам Double, тъй като в отговорите има отрицателни и нецели числа.
Поздрави :)
Задачата ти ще тработи, но в условието се изисква отделнтие числа да са разделени единствено със space, отъдето се предполага (виж моето решение) :) Успех! Не е нужно да използваш отделни ReadLine, тъй като можеш да зададеш единствено един такъв и в последствие да разделиш отделните числа, ако ли не задата ти няма да отговаря на условието :) Малките неща в едно условие са най - важни :) (съвет)
Плами пише, че трябва на един ред да се въведат всички цифри...иначе така става
Мерси за съвета :) Явно ще трябва да почета напред в материала, тъй като съм изпозвала само знания придобити досега. Винаги има възможност на upgrade-ване на знанията :)
Ами ти в моят случай ги въвеждаш на един ред:
Казвш:
1 2 3 4 5 ( и чак след 5 натискаш enter)
Като програмата в този случай възприема всяко число за отделно и пълни масива:)
Да така работи...ама не работи за дабъл....
Ще работи, просто трябва да смениш типа на променливите на double и да парснеш към double, а не към int.
Използвайте Int.Parse (съответно double.Parse, uint.Parse или там каквото ви трябва), когато четете данни от конзолата.
В случая na Plami всяко едно число въвеждаш на отделен ред(което не е отговор на задачата)
Write a program that enters 5 numbers (given in a single line, separated by a space), calculates and prints their sum
Условието изисква числата да са "given in a single line, separated by a space", потърси във форума има една темичка за същата задача там съм обяснил отново по същия начин самата идея:)
string[] userINput = Console.ReadLine().Split();
double a = Convert.ToDouble(userINput[0]);
double b = Convert.ToDouble(userINput[1]);
double c = Convert.ToDouble(userINput[2]);
double d = Convert.ToDouble(userINput[3]);
double e = Convert.ToDouble(userINput[4]);
double sumOfAll = a + b + c + d + e;
Console.WriteLine(sumOfAll);
Това е варианта за double. Ако ти искарва някакъв error, пробвай вместо точка да използваш запетая или обратното за десетична такава :)
Пробвах го и с двата вариянта и пак дава грешка...сега ще питам някое гуро с бадж
Няма начин да ти изкарва грешка освен ако ти въвеждаш данните различно от начина, който се изисква :) Попитай и се увери сам :) Това е правилното решение на задачата смятам, че и колегите от форума биха потвърдили (разбира се не отричам другите варианти на решаване на задачата):) Успех :)
Ще ти постна абсолютно целият код. Разгледай си скобите. Увери се дали въвеждаш точка или запетая като десетична. Да не си пропуснал някъде точка и запетая на края на някой ред :)
using System;
class Program
{
static void Main(string[] args)
{
string[] userINput = Console.ReadLine().Split();
double a = Convert.ToDouble(userINput[0]);
double b = Convert.ToDouble(userINput[1]);
double c = Convert.ToDouble(userINput[2]);
double d = Convert.ToDouble(userINput[3]);
double e = Convert.ToDouble(userINput[4]);
double sumOfAll = a + b + c + d + e;
Console.WriteLine(sumOfAll);
}
}
string[] userINput = Console.ReadLine().Split(' ');
double a = double.Parse(userINput[0]);
double b = double.Parse(userINput[1]);
double c = double.Parse(userINput[2]);
double d = double.Parse(userINput[3]);
double e = double.Parse(userINput[4]);
double sumOfAll = a + b + c + d + e;
Console.WriteLine(sumOfAll);
Това е финалното....Просто тук се задължаваш масива да ти е от 5 символа и ако въвдеш не работи..затова не ми е и работело...също так смени convert с parse
Ще ти го обясня по друг начин. Масива в началото просто го създаваме със
string[] userINput = Console.ReadLine().Split();
Тук никъде не казваме колко голям да е той ( не го ограничаваме) , след което може би където идва заблудата у теб е:
double a = Convert.ToDouble(userINput[0]);
double b = Convert.ToDouble(userINput[1]);
double c = Convert.ToDouble(userINput[2]);
double d = Convert.ToDouble(userINput[3]);
double e = Convert.ToDouble(userINput[4]);
Тук казваме нека има променливи: a,b,c,d,e , който да пазят стойностите на първите 5 члена от нашия масив, а иначе казано ти ако въведеш 200 члена, програмата ще ти сметне само сумата на нашите 5 променливи(а именно числата които ни трябват), които сме задали:
double sumOfAll = a + b + c + d + e;
Тук пресмятаме общатата им сума и накрая ги принтираме на конзолата :)
Не е нужно да сменяме Convert s Parse, няма причина в случая за това действие :)
Програмата ще ти работи винаги, колкото и числа(образно казано) му въведеш но ще ти пресмята само 5 от тях(първите)
Ако искаш да му зададеш някакво ограничение направи един IF else statement , в който да казваш ако масивът ми от стригнове е по - голям от 5 числа, въведете отново 5 числа :)
Късмет:)
Ако оставиш два space-a вместо един между числата, забива!
Ето как да не хвърля изключение:Console.ReadLine().Split(new char[] { ' ', '\t' }, <strong>StringSplitOptions.<span style="text-decoration: underline;">RemoveEmptyEntries</span></strong>);
Колега тоя червен ред върви надясно и излиза чак от монитора ми! хахахах сигурно е някакъв бъг!
Ето едо малко по-различно решение:
using System;
using System.Linq;
//Write a program that enters 5 numbers (given in a single line, separated by a space), calculates and prints their sum.
class SumOfFiveNumbers
{
static void Main()
{
Console.Write("Please, write 5 numbers separated by a space: ");
var numbers = Console.ReadLine().Split().Take(5);
Double[] digits = numbers.Select(d => Convert.ToDouble(d)).ToArray();
double sum = digits.Sum();
Console.WriteLine("The sum is: " + sum);
}
}
Много силно решение. Благодаря, че го сподели. Циклих доста на тази задача преди да го видя!
Здравей,
Така както си направил програмата въвеждаш повече от 5 числа, но сумираш само първите 5.
За да е коректно решението или трябва да сумираш всички въведени числа или да ограничиш броя на въведените числа до 5.
Здравейте!
Решението, което измислих е това:
using System;
class SumOf5Numbers
{
static void Main()
{
char ch;
int i = 0;
string a = " ";
decimal sum = 0m;
do
{
i = Console.Read();
ch = (char)i;
if (i == 32 || i == 13)
{
sum = sum + decimal.Parse(a);
a = " ";
}
else
{
a = a + ch;
}
}
while (i != 13);
Console.WriteLine(sum);
}
}
Идеята ми е да отчитам кога от клавиатурата е въведен Space и кога Enter останалите знаци са цифри (би трябвало ;дд) и се обръщат в decimal и се събират.
Дано съм помогнал.
Късмет! :)
Ето и моето решение: Мисля, че ако си начинаещ би трябвало това да е най-лесното.
using System;
class SumOfFiveNumbers
{
static void Main()
{
Console.WriteLine("Enter five numbers:");
double a = double.Parse(Console.ReadLine());
double b = double.Parse(Console.ReadLine());
double c = double.Parse(Console.ReadLine());
int d = int.Parse(Console.ReadLine());
int e = int.Parse(Console.ReadLine());
double sum = a + b + c + d + e;
Console.WriteLine("The sum of {0} {1} {2} {3} {4} | {5}", a,b,c,d,e,sum);
}
}
Идеята тук е, че като за начало използваме един масив от стрингове, където казваме, че всеки отделен елемент(число), което въведеме ще е член на самия масив. Чрез Split(); функцията казваме ако има резстояние между 2 числа, те са различни сами по себе си. Смисъл такъв разделяме символния низ на подчленове(отделни числа). След което казваме, че "а" = първото число, 'b' = второто число... и така нататък.. :) И накрая ги събираме. Надявам се, че си ме разбрал, ако има нещо питай :) Успех!
Кода не работи, нито с инт стойности нито с дабъл. Дава ексепшън
Добре е да се използва
Console.ReadLine().Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);