Цикли - да си помогнем взаимно, как да ги разбереме от различни гледни точки.
Здравейте,
начинаещ съм в тази сфера и не съм срещал грандиозни трудности както при циклите. Много са ми трудни гледах най - различни материали, играх си с конзолата, дебъгъра и какво ли не. Мога да ги назубря, но не ми е това идеята. Искам да схвана логиката, процеса и като си задам въпроса "защо" трябва да имам максимално коректен отговор. За това се обърщам към по опитните за обяснение от тяхната гледна точка и начинаещите, които имат подобно затруднение да споделят от къде черпят информация и какво не им е ясно .
P.S. понеже търсих във форума подобна тема, ако трябва нещо да се коригира ще го направя.
Грешката ти е в това, че задаваш като начална стойност за maxValue = double.MaxValue, и всяко въведено от потребителя число ще бъде по малко от максималната стойност за double.Или с други думи няма да се промени.
Правилният начин е да зададеш :
double maxOfNum = double.MinValue;- тогава всяко въведено число ще бъде по голямо от първоначално зададеното, и всеки път когато имаш по-голямо от предишното ще го запазваш в променивата maxOfNum.
double minOfNum = double.MаxValue; - респективно всяко въведено ще бъде по - малко.
double sumAll = 0;
Знам че не e добре да ползваш LINQ още от сега, защото с него ще ти бъде по - лесно и няма да научиш основни неща, но все пак ако ползваш System.LINQ, задачата ти се свежда до:
numberUs.Min();
numberUs.Max();
numberUs.Average()
П.С Виждам че в няколко поста се интересуваш от циклите и срещаш трудности с това да разбереш как работят.Отвори ми профила цъкни на Skype и ми прати request ще се опитам да ти обясня
Значи maxValue по подразбиране на името му, не трябва ли да показва най-голямото число, въведено от потребитела? За съжаление информацията за skype е достъпна само за SoftUni. Ако искаш намериме във FB Antonio Todorov
Достъпна е можеш да ме добавиш по всяко време над снимката има икона на Skype и можеш да цъкнеш на нея.
А относно въпроса, когато кажеш, че една променлива е равна на double.MaxValue ти казваш че е равна на
все едно казваш double maxOfNum =1.79769313486232E+308, няма как да подадеш по голямо число от това на double и следователно няма как да го промениш след като условието ти е да се промени ако има по - голямо от него число.
За това му задаваш MinValue и всяко подадено число ще бъде по голямо от него, запазваш го при следващата проверка проверяваш новото число дали не е по- голямо и така.
Успех!!
Няма такива магии като максималното число въведено от потребителя. Това е някакъв много специфичен кейс, който никой не би имплементирал в езика си. Да намериш максималното число от Х на брой въведени числа от потребител трябва да стане логически - да проверяваш дали всяко число не е по-голямо от предходното в общия случай.
Представи си го като да имаш на лист хартия написани много числа, как да намериш най-голямото число от числа, запълнили А4 лист. Brute force :) Ако второто е по-голямо от първото, то за момента считаш че второто е най-голямо. Ако третото е по-голямо от второто, то считаш, че за момента третото е най-голямо. Ако четвъртото НЕ Е по-голямо от третото, то третото остава най-голямо и така, докато свършиш с числата и не се окаже, че някое в редицата не се е оказало най-голямо.