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

[Homework] C# Basics - Loops - Problem {3} - Min, Max, Sum and Average of N Numbers

Здрасти с:

Имам проблем с 3тата задача от домашното. Това измислих - http://pastebin.com/E9nQYkFZ - и всичко си работи, обаче не мога да се сетя как по подобен начин да изведа min и max value.

Може ли малко помощ?

Тагове:
Filkolev avatar Filkolev 4428 Точки

Има два варианта.

1. Да ползваш масив и System.Linq, където има методи за извеждане на минимум, максимум, средно и сума на числата в масива. Всичко става директно, без сметки.

2. Което е по-близко до твоето решение - на всяка стъпка от цикъла трябва да провериш дали текущото число е най-малко/най-голямо към момента. За целта предварително трябва да декларираш променливи за min и max (и да им присвоиш подходящи първоначaлни стойности). 

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

6
atanasovam avatar atanasovam 38 Точки

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

Благодаря!

0
nikola.m.nikolov avatar nikola.m.nikolov 832 Точки

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

03. MinMaxSumAverage

1
Filkolev avatar Filkolev 4428 Точки

При решението на колегата @nikola.m.nikolov също може да се ползват вместо условни конструкции Math.Min и Max. Просто го споменавам, защото е добре човек да знае наличните варианти и да упражни различни неща, за да има по-богат набор от подходи за решаване на даден проблем.

0
14/08/2014 14:43:27
atanasovam avatar atanasovam 38 Точки

Оправих се
Благодаря!

0
RujenaDimitrova avatar RujenaDimitrova 18 Точки

Здравейте на по-опитните от Вас!

Имам затруднение и направо зациклих на задачата от домашното за "Най-голямо число".

Това е кодът, който успях да "сътворя": https://pastebin.com/7HB0L5Tw.

Благодаря предварително за упътването.

0
Jeliozver avatar Jeliozver 356 Точки

При задаването на условията на цикъла това, което си дала "num" реално е цифрата на въртене на самия цикъл. Първо от коя цифра да започне, после прави проверка дали да продължи спрямо тази цифра и поставено условие и накрая при всяко завъртане цифрата се увеличава с 1.
И така както е написано при всяко ново число въведено става настоящ максимум и после максималното число го приравняваш да е равно на поредния път в който се върти цикъла и така няма как да работи. Освен това при принтиране плейсхолдърите започват от 0 и самото принтиране трябва да е извън цикъла, защото ще принтира при всяко въртене.

Извади входа на първото число извън цикъла и го приеми за настоящ максимум. После вътре в цикъла изисквай число за вход, което да срявнява с настоящия максимум и ако е по-голямо да го прави него настоящ максимум, а самия цикъл да се върти 1 път по-малко от n (защото това число е въведено в самото начало преди цикъла).

Ето едно решение с малко пояснения. Надявам се да стане ясно, че не ме бива да обяснявам.

https://pastebin.com/58KkdxRU

0
22/06/2017 08:55:32
TeodorStefanovPld avatar TeodorStefanovPld 814 Точки

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

Int n=x; x-числата който трябва да прочетеш от конзолата. 

След това си правиш цикъла.

For(int i=0;i<n;i++)

{ Сга вече знаеш колко числа трябва да прочетеш и започваш.

Int number=int.Parse(console.readline());

Вече имаш входа направен сега оставо да си направиш проверките.ще използваш 3 проминливоa

Int check=int.Min.Value;

If(n>check){ check=n} else{continue;}

Тук си дала наи малката възможна стоъност на int и при всяка подадено число сравняваш,ако п е по-гжлямо или не.ако е по-голямо запазвaш n. Ако е по малко продължаваш стойността не те интересува. И накрая просто изписваш check стойността.

Int check1 за най-малкото се прави по същия начин но ще почнеш от check1=int.MaxValue ..

и с int check3 просто ще събереш всички n :

int check3+=n;

И под цикъла ще разделиш check3/n== average.

Moже да се наложи да закръгляш някъде стойности но мисля че ще се сетиш за това.иначе както колегите са посочили има и много по лесни начини с масиви. Но в основи на програмирането на вас малко вш е рано.доколкото виждам задачата е от loops лекцията.Иначе има решение с масив  и с 4 реда.

0
RujenaDimitrova avatar RujenaDimitrova 18 Точки

Много ви благодаря за помощта.

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

0
ivko33 avatar ivko33 0 Точки

Ще може ли да качиш решение 2, тъй като зациклих яко на него? Сигурно е много просто, аз се въртя в кръг...

0