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

Задача с масиви

Да се напише програма, която въвежда от клавиатурата цели числа на един ред, разделени с интервал.
На следващия ред се въвежда още едно цяло число k.
Програмата да намери и изведе сумата на числата от редицата, които са по-големи от числото k.

 

По-простичко решение ако може.

 

Аз съм писал някакви такива работи.

static void Main(string[] args)
        {
            int[] numbers = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
            int k = int.Parse(Console.ReadLine());
            int sum = 0;
            for (int i = 0; i < numbers.Length; i++)
            {
                if (numbers.Length >= k)
                {
                    sum = sum + numbers[i];
                }
            }
            
        }

Тагове:
0
Programming Basics with C# 01/07/2019 21:46:46
Iv_Konov avatar Iv_Konov 383 Точки
Best Answer

Здравей,

 

Общо взето това е решението, което си представил - по-кратно има, но по-лесно разбираемо...хм, не съм сигурен... На практика не е трудно, вероятно, просто не си свикнал със синтаксиса. Веротно си любознателен, записал си се да учиш Programming Basics, а са ти интересни масивите. В случай че е така, нищо не ти пречи да слушаш лекциите за Fundamentals Module -  през 2-3 трета седмица започват масивите. А относно синтаксиса - щом решиш 30 и повече задачи, то първият ред ще ти се струва като int.Parse(Console.ReadLine())...

 

За по-долната информация можеш да навлезнеш в сложнотиите, ако искаш да четеш... :) Във Visual Studio стъпи с мишката примерно на ".Split(' ')" и натисни F12. Ще ти се отвори меню, което ти дава обяснения...

 

.Split(' ') - служебен метод, който връща стрингов масив, като разделя входните елементи по указан char сепаратор 
(в нашия случай интервал)
.Select(int.Parse) - отново служебен метод, който трансформира елементите от колекцията по указан начин 
(в нашия случай парсваме елементите)

 

Очевидно търсиш обяснения, направени с по-елементарни и лесно разбираеми варианти - тук не съм сигурен дали има такъв начин...!  Според мен, всичко, което пишеш трябва да го разбираш защо го пишеш, т.е. какво върши командата, но не винаги е толкова важно да знаеш как точно го извършва дадената команда/метод.  А когато му дойде времето, ще разбереш и останалите детайли. Лекторите не случайно спестяват сложна информация, която би те объркала или отказала.

 

Ето един подобен пример: вероятно смяташ, че - int.Parse(Console.ReadLine()) - ти е напълно ясно какво представлява... :) 
Чете от конзолата стрингова поредица, която в последствие се парсва, за да получиш целочислено число. Ако по същия метод натиснеш F12 отново влизаш в сложнотиите с класове и какви ли не още неща... С други думи искам да кажа, че вероятно не си знаел как точно се извършва четенето и парсването, но това не ти е пречило да си решаваш задачите...


Относно задачата. Според мен, за да бъде вярна има нужда от следната корекция:

===
         if (numbers[i] > k) // numbers.Length >= k
                {
                    sum += numbers[i];
                }
===

- numbers.Length - ти дава броя на елементите в масива
- numbers[i] - достъпваш даден елемент по указан индекс = i (броенето на елементите в масив започва от "0")
- равното "=" го премахнах - по условие - "които са по-големи от числото k"

 

Примерен вход:
1 2 3 4 5
2
резултат: 12 - 3 + 4 + 5

 

Поздрави,

Иван :)
 

0
02/07/2019 11:54:31
CTaBpu avatar CTaBpu 2 Точки

Иван, благодаря ти за ясното и пълно обяснение на тази задача. 

 

Поздрави ,

Ставри :D

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