Loading...
YankoVanov avatar YankoVanov 72 Точки

[Homework] C# Basics - Introduction to programming - March 2014

Здравейте !!!

Нека направим форумът по-лесен за търсене, като "компресираме" всяка тема от една задача до по-обща тема от даден раздел(където, ако не всички, то поне повечето задачи са решени).

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

1.  Коректно зададено име на solution-ът ("Introduction to programming"),

2. Коректно именуване на отделните проекти в solution-ът ("PrintMyName", "HelloCSharp") not like wrong -> ("FirstTask", "ToDoSomthingMagical") <- wrong

3. Номериране на проектите (01, 02, 03, 04 т.н.) избягвам 1,2,3,4..., защото при solution по-голям от 9 проекта, проект номер 10 ще бъде първи в  solution-ът, което не е много правилно.

4. Използването на коментари в кодът помага както на Вас, така и на тези, които четат кодът Ви.

След всичко казано до тук, да продължим по същество:

04. Create, compile and run a “Hello C#” console application. Ensure you have named the application well (e.g. “”HelloCSharp”). Click /стандартна задача, няма какво много да се каже тук/

05. Modify the previous application to print your name. Ensure you have named the application well (e.g. “PrintMyName”). Click /като предната/

06. Write a program to print the numbers 1, 101 and 1001, each at a separate line. Name the program correctly. Click /нищо ново/

07. Create console application that prints your first and last name, each at a separate line. Click /като 06./

08. Create a console application that calculates and prints the square root of the number 12345. Find in Internet “how to calculate square root in C#”.  Click /тук използвам методът Math.Sqrt и му подавам числото, на което искам да изчисля корен квдратен/

09. Write a program that prints the first 10 members of the sequence: 2, -3, 4, -5, 6, -7, ... Click /използвам for цикъл, проверявайки дали целочисленото деление е 0 или различно от нея, принтирам съответно положително или отрицателно число/

10. Reformat the following C# code to make it readable according to the C# best practices for code formatting. Change the casing of the identifiers in the code (e.g. use PascalCase for the class name): Click /нищо интересно тук/

14. Create a console application that prints the current date and time. Find in Internet how. Click /използвам DateTime.Now може и DateTime.Today/

15.Write a program to read your birthday from the console and print how old you are now and how old you will be after 10 years. Click /продължение на по-горната задача. Тук използвам метода DateTime.Parse() и му подавам входа от потребителят, след което изваждам от днешният ден входът (DateTime.Subtract()) и получавам годините. За да получа възрастта след 10 години използвам метода AddYears() na DateTime /

16. Write a program that prints the first 1000 members of the sequence: 2, -3, 4, -5, 6, -7, … Click

/същата логика като при зад 09., за по-добра производителност може да се ползва StringBuilder/

Чакам вашите коментари и въпроси.

 

Edited: Променено е името на темата според правилата на форума.

Тагове:
66
Programming Basics 14/09/2014 10:44:11
milkokochev avatar milkokochev 10 Точки

Здравейте,

реших за задача 15 да използвам "Subtract" метода, но като се разрових за повече информация намерих този запис:

"DateTime.Today.Subtract(userBirthday).Ticks" - може ли малко разяснение за последната дума "Ticks" - защо и кога се използва?

0
milkokochev avatar milkokochev 10 Точки

Явно не съм търсил достатъчно :)  :

"In .NET, if you subtract one DateTime object from another, you will get a TimeSpan object. You can then use the Ticks property on that TimeSpan object to get the number of ticks between the two DateTime objects. However, the ticks will be represented by a Long, not a Double."

 

0
Filkolev avatar Filkolev 4482 Точки

Ticks не е предназначено много за хора, т.е. компютъра си следи времето с тях, но за човек те нямат значение и не може да се борави с тях смислено (поне на нашето ниво) - 1 тик се явява 100 наносекунди (1/10,000,000 от секундата).

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

Ето ти и статията от MSDN

0
zori.ivanova avatar zori.ivanova 0 Точки

Здравейте! Сега видях, че съм допуснала грешка при изпращането на домашното. В архивираната папка не съм добавила .txt документите. Това са три задачи - 11, 12 и 13. Има ли възможност да ги добавя???

0
a.angelov avatar a.angelov 1316 Точки

Просто качи отново цялото домашно с трите тхт файла :)

0
KristianVasilev avatar KristianVasilev 6 Точки

Искам да попитам защото гледах във темата доста отговори, но така и не намерих това, което искам. А именно то е - Защо ни е да взимаме дата и месец на раждане, когато изчисляваме само годината? И ако си предам домашното с този код. Ще има ли проблем ?

-1
a.angelov avatar a.angelov 1316 Точки

Защото спрямо днешната дата ако си роден преди нея си на едни години, ако си роден след нея си на други години - 1 година разлика :)

1
KristianVasilev avatar KristianVasilev 6 Точки

Не се бях замислил, но и ти си прав :). Благодаря !

0
Filkolev avatar Filkolev 4482 Точки

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

1
o.ivanov avatar o.ivanov 2 Точки

Много изчерпателно и добре структорирано, което много ми помогна. благодаря.

0
KatyaMarincheva avatar KatyaMarincheva 572 Точки

@YankoVanov ,

Страхотна идея да се сложи началото на такъв екипен формат за домашните!

След като Intoduction To Programming Homework е вече отворено и за C# Basic - март 2015,

ето едно домашно и от мен :)

0
uncommoN avatar uncommoN 4 Точки

Темата наистина е страхотна. Тъй като интересът към задача 15 е най-голям, нека да споделя и аз моето решение.

Моето решение на задача 15.

1
mockingbird avatar mockingbird 10 Точки

Ето и моя вариант за AgeAfter10Years. :) Не съм сигурна колко е правилен, но май работи. :)

Console.WriteLine("Today is " + (DateTime.Now));
Console.WriteLine("Please enter your Birth Day in your current system date format: ");
DateTime BirthDay = DateTime.Parse(Console.ReadLine());
int years = DateTime.Now.Year - BirthDay.Year;

if ((BirthDay.Month >= DateTime.Now.Month) & (BirthDay.Day > DateTime.Now.Day))
{
years -= 1;
}

Console.WriteLine("Yo are:" + years + "years old. ");
Console.WriteLine("In Ten years you'll be " + (years + 10) + "years old!");

1
crazy7 avatar crazy7 177 Точки

Решението ти не е съвсем коректно пробвай например с - 01 Oct 2010. Ще ти върне че си на 5 години а всъщност още си на 4.

1
KatyaMarincheva avatar KatyaMarincheva 572 Точки

"Please enter your Birth Day in your current system date format"

Много добра идея!

1
mockingbird avatar mockingbird 10 Точки

Да, прав си! :) Някаква идея, защо се получава така?

1
supersane avatar supersane 234 Точки

Ето едно решение на 15та задача и от мен.


namespace AgeAfterTenYears
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Enter your birthday in this format (YYYY,MM,DD) Example: 1995,12,21 ");
            DateTime birthday = DateTime.Parse(Console.ReadLine());
            DateTime today = DateTime.Now;
            int age = today.Year - birthday.Year;
            if (birthday.Month > today.Month)
            Console.WriteLine(age - 1);
            else if(birthday.Month == today.Month)
            {
                if(birthday.Day > today.Day)
                {
                    Console.WriteLine(age - 1);
                }
                else
                {
                    Console.WriteLine(age);
                }
            }
            else
            {
                Console.WriteLine(age);
            }
        }
    }
}

1
VanqM avatar VanqM 2 Точки

Задача 08. може да се реши само в един ред:

Console.WriteLine(Math.Sqrt)12345)); 

1
svetlyoek avatar svetlyoek 20 Точки

Здравейте.Гледам,чета и се чудя за въпросните задачи...Аз съм напълно начинаещ и честно казано в главата ми е пълен хаос-нищо не мога да си обесня логически и разбера!Вярно,че и в математиката ме няма,но чета всеки ден книгата,ровя из нета,форумите тука и т.н.,но не става засега.Имам предвид,че освен най-лесните задачи с изписване на името и т.н. нищо друго не бих могъл да реша сам на тоя етап...Бих се радвал да споделите опит в обучението,от къде четете и т.н.?

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

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