Софтуерно Инженерство
Loading...
CTaBpu avatar CTaBpu 0 Точки

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

Да се напише програма, която въвежда от клавиатурата цели числа на един ред, разделени с интервал.
На следващия ред се въвежда още едно цяло число 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 357 Точки
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 0 Точки

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

 

Поздрави ,

Ставри :D

0