Loading...
DimitarMandarliev avatar DimitarMandarliev 2 Точки

Input/Output Console Problem 7

Write a program that enters 5 numbers (given in a single line, separated by a space), calculates and prints their sum.

Какво трябва да напиша като код за да мога всеки път след като въведа дадено число и натисна Enter да продължа да въвеждам по същия начин на същия ред?
0
Programming Basics
Filkolev avatar Filkolev 4482 Точки

5 numbers (given in a single line, separated by a space)

Това ще рече, че числата се подават на един ред, така: 1 2 3 44 55

В момента, в който натиснеш ентър, минаваш на нов ред. Това, което трябва да направиш, е да вземеш целия ред като стринг и след това да го разделиш по спейс. Задачата ако не се лъжа беше направена със звезда, защото изисква работа с масиви. 

Разгледай метода string.Split().

1
DimiturJeliazkov avatar DimiturJeliazkov 25 Точки

Ако числата са разделени със спейс - Разгледай това:

int[] intArray = Console.ReadLine().Split(new char[] { ' ' },
                StringSplitOptions.RemoveEmptyEntries).Select(x => Convert.ToInt32(x)).ToArray();

 

0
t.316 avatar t.316 137 Точки

За тази задача бих ти препоръчал да използаваш това:

int[] n = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();

Където:

int[] - означава, че създаваш масив от интове. След това четеш данните от конзалата с Console.ReadLine(). 

.Split(' ') - разделя прочетените данни, с каквото му кажем. В нашият случай с ' '.

Тъй като Console.ReadLine() връща стринг ни е нужно да превърнем всеки елемент в инт за да влезе в масива и за това използваме - .Select(int.Parse).

И накрая добавяме всеки от получениете елементи към масива чрез .ToArray().

За да можем да го направим трябва след using System; да поставим using System.Linq;.

Ако не си работил с масиви може да изглежда малко плашещо, но се свиква много бързо и е много удобно в подобни случай.

0
DimiturJeliazkov avatar DimiturJeliazkov 25 Точки

1  2  3  4

Unhandled Exception: System.FormatException: Input string was not in a correct f
ormat.
   at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffe
r& number, NumberFormatInfo info, Boolean parseDecimal)
   at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo in
fo)
   at System.Int32.Parse(String s)
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at Pairs.Pairs.Main(String[] args) in c:\Users\b\Documents\Visual Studi
o 2013\Projects\ForumTestPrograms\Pairs\Pairs.cs:line 14
Press any key to continue . . .

LINE 14.

int[] intArray = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();

0
18/06/2015 13:20:03
t.316 avatar t.316 137 Точки

Не съм сигурен, че разбирам коментара правилно, но предполагм, че имаш предвид, че при входни данни 1 2 3 4 ти дава грешка след като си използвал int[] intArray = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();.

Не знам, каква може да е причината.

Ето един тест на int[] intArray = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();, в който съм принтирал всички елементи от масива, всеки на нов ред:

http://pastebin.com/UuULMqsA

 

0
DimiturJeliazkov avatar DimiturJeliazkov 25 Точки

Така работи ако има точно по 1 спейс между числата :)

Сложи 2 спейса примерно или почни със спейс ...

Иначе входа в judge системата е строго регламентиран ... но ако някога имаш този проблем прочети за StringSplitOptions

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.