Софтуерно Инженерство
Loading...
+ Нов въпрос
djc_bg2015 avatar djc_bg2015 922 Точки

[Homework] C# Basics - Loops

Здравейте, първо искам да се извиня ако някъде съществува отключена тема за това домашно, и не съм я намерил. (Заключена тема). Ако има такава, моля изтрийте поста.

 

Та ето ги моите решения на задачите от конкретното домашно. Ще се радвам да видя и други решения.
Поздрави!

Problem 1Numbers from 1 to N

Problem 2Numbers Not Divisible by 3 and 7

Problem 3Min, Max, Sum and Average of N Numbers

Problem 4Print a Deck of 52 Cards

Problem 5Calculate 1 + 1!/X + 2!/X2 + … + N!/XN

Problem 6Calculate N! / K!

Problem 7Calculate N! / (K! * (N-K)!)

Problem 8Catalan Numbers

Problem 9Matrix of Numbers

Problem 10Odd and Even Product

Problem 11Random Numbers in Given Range

Problem 12*: Randomize the Numbers 1…N

Problem 13Binary to Decimal Number

Problem 14Decimal to Binary Number

Problem 15Hexadecimal to Decimal Number

Problem 16Decimal to Hexadecimal Number

Problem 17*: Calculate GCD

Problem 18*: Trailing Zeroes in N!

Problem 19**: Spiral Matrix

 

Problem 20**: Exam Schedule

Problem 21**: Odd / Even Elements

Problem 22**: Arrow

Problem 23**: Five Special Letters

Problem 24**: Bit Roller

7
Основи на програмирането 22/06/2015 15:54:14
djc_bg2015 avatar djc_bg2015 922 Точки

Относно спиралната матрица, този клип ми помогна доста:

https://www.youtube.com/watch?v=siKFOI8PNKM

(английския определно му куца на този който обеснява, но е мн добре онагледено :) )

1
antonio_rtodorov avatar antonio_rtodorov 74 Точки

Здравейте,

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

Благодаря!

Поздрави,

 

0
djc_bg2015 avatar djc_bg2015 922 Точки

Преди около година се запалих по php, и от там понатрупах знания за цикли, масиви и други основни неща. В моя случай, много ми помогнаха уроци които гледах от lynda.com, но съм сигурен че в youtube има дори повече информация.

Моят съвете е да си пуснеш Visual Studio и да гледаш стъпка по стъпка, какво се случва в един for цикъл. Защото погледнато реално for и while правят едно и също нещо, и разбереш ли единия моментално ще си разбрал и другия (foreach е на същия принцип, просто се ползва за работа с колекции (array, list, dictionary)).

Поздрави!

1
antonio_rtodorov avatar antonio_rtodorov 74 Точки

Здравей, 

мога ли да те попитам на Problem 4Print a Deck of 52 Cards какво прави вложения цикъл? гледах, мислих го, но не можах да измисля type защо е равно на 3 и трябва да е по-малък от 7. 

Благодаря!

0
djc_bg2015 avatar djc_bg2015 922 Точки

Ето нещо набързо с фотошопа, надявам се да помага:

Картите от 11-14 ги замествам с J, Q, K, A чрез switch-case

За боите ползвам 3, 4, 5, 6 (това са номерата на 4те бои в ascii таблицата)

// ще ти принтира пика
Console.WriteLine((char)3);

 

Поздрави!

1
23/06/2015 21:27:04
batemo avatar batemo 3 Точки

И аз изпитвам някакво затруднение с тези цикли. До преди този урок всичко ми вървеше гладко и тук "цикля" над домашното вече няколко дни. Относно задачата с картите ми дойде друго решение, което е доста лесно и приятно:

Използвам 

string [] CardDeck = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
            string[] ColorsDeck = { "♣", "♦", "♥", "♠" };

и след това  

foreach ( var card in CardDeck)
               foreach ( var color in ColorsDeck)
                    Console.Write("{0,3}{1}", card, color);

Доста е просто! Успех на всички, предполагам ,че ще се видим на изпита на 12ти! 

2
djc_bg2015 avatar djc_bg2015 922 Точки

Добро хрумване. Ако някой проверява домашното обаче е възможно да не ти зачете задачата.

Условие:

... Use 2 nested for-loops and a switch-case statement ...

Поздрави и успех с усвояването на циклите.

 

ПС. И дано на 12ти не само да се видим ами и да си вземем изпита с 450-500 точки (минимум) laugh

0
24/06/2015 21:11:18
antonio_rtodorov avatar antonio_rtodorov 74 Точки

Колега искам да изразя своите благодарности към тебе, защото заради твоите решения, почти разбрах циклите. Можеш ли само да ми обясниш на задача 3 Min, Max, Average, Sum, защо min = Max.Value и max = Min.Value?

Хиляди благодарности,

Поздрави,

0
djc_bg2015 avatar djc_bg2015 922 Точки

Ами от нас се иска да кажем кое е най - голямото и най - малкото число от няколко.

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

 

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

            if (currNum &gt; max)
            {
                max = currNum;
            }

            if (currNum &lt; min)
            {
                min = currNum;
            }

Задавайки стойности на Min и Мax да бъдат съответно, най високия възможен дабъл и най ниския такъв, се подсигуряваме че каквото и число да въведе потребителя то ще замести началните стойности.
С други думи , ако бяхме за почнали с Мин = 0; Макс = 0; и потребителя ни въведе -5  се случва следното:

if (-5 &gt; max) 
{
    max = currNum;
}
// Връща false. Това обаче е грешка, защото за момента това е най - високото число което имаме. 
// Следователно max трябва да бъде равно на -5 а не на 0. 
// Затова задаваме първоначално max да бъде възможно най - ниското число което потребителя ни може да въведе.



if (-5 &lt; min) // връща true
{
    min = currNum;
}


 

Дано си ме разбрал какво искам кажа, ако ли не, питай пак :)

1
25/06/2015 15:25:41
antonio_rtodorov avatar antonio_rtodorov 74 Точки

Да, схванах защо се получава така. Ако съм разбрал правилно в случай, че задам max = Max.Value и min = Min.Value това означава, че декларираме двете макасимални граници в случая на double и така няма с какво да ги сравня. Тоест ако искам да направя сравнение, трябва да ги обърна за да мога да сравня стойностите. Нали така?

 

0
djc_bg2015 avatar djc_bg2015 922 Точки

Ами когато търсиш максимална стойност задаваш дефалтно най - ниската и обратно, когато търсиш минималната, задаваш най-високата.

min = double.MaxValue;
max = double.MinValue;

Така като правим двете проверки на първото число, то винаги Мин и Макс ще бъде то.

 

Ето как може да стане ако зададем нулеви стойности в началото на мин и макс:

http://pastebin.com/vPqnPzRg

1
djc_bg2015 avatar djc_bg2015 922 Точки

Ами не намерих такава опция при пействането на урл-а. Та затова щракам на "Source" и си го правя на ръка.

А относно решението ти, смея да кажа че otput-a е правилен (спатия, каро, купа, пика),  за разлика от моя (пика, купа, каро , спатия)  laugh

Поздрави!

1
26/06/2015 12:16:35
nikolaiweselinow avatar nikolaiweselinow 11 Точки

Оправих се, мерси.

0
26/06/2015 13:34:51
antonio_rtodorov avatar antonio_rtodorov 74 Точки

Здравей,

може ли да ми дадеш малко разяснения по тази задача: Problem 10Odd and Even Product не мига да схвана синтаксиса с масива и цикъла на if (i % 2 == 0) // показва, числата, които са четни или нечетни, но така зададено не трябва ли след всяко завъртане currNum всеки път да приема нова стойност като изтрива старата?

Поздрави,

0
26/06/2015 16:09:03
djc_bg2015 avatar djc_bg2015 922 Точки

Ами да , на всяка итерация currNуm взима нова стойност от масива и я умножава към четния или нечетния продукт, в зависимост от позицията на текущия currNum.

1
Vetomirr avatar Vetomirr 1 Точки

Може ли условията ?

0