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
Plami avatar Plami 373 Точки
Може да прозвучи малко странно, но условието на 15 задача първоначално беше различно. Когато изтеглих на 05.03 беше "Write a program to read your age from the console and print how old you will be after 10 years",  а сега е 

"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". Възможно ли е?

Добре че се ровя из форума и открих разликата и сега ще пренапиша програмката :)


4
p.tseperski avatar p.tseperski 21 Точки
Ха да, наистина е така. :) Добре, че  и аз открих тази разлика. :) И аз ще си я коригирам. Ще е добре да именоват домашните с версии и ако има промяна, да променят версията на документа в името. Така ще знаем, като има промяна. :)
1
ivaylo.yanchev.5 avatar ivaylo.yanchev.5 80 Точки
Това и аз сега го забелязвам... принципно пиша домашното, стартирайки от същия документ и дописвайки решенията (въпросите ги оставям).
0
beshko avatar beshko 19 Точки

Това с грешката е много неприятно. Мен са ме насолили при проверката надомашното, че не съм принтирал текущата възраст :) Макар задачата да не е задължителна не е приятно :)

0
borispavlov avatar borispavlov 45 Точки

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

За нас, към C#Basic може  да се направи и една подкатегория - "Absolute Beginners";)

5
YankoVanov avatar YankoVanov 72 Точки

За нищо Борка :) Убеден съм, че в края на курса, абсолютно всички сериозни участници ще могат с лекота да се справят  с поставените задачи.

До подкатегорията "Absolute Beginners" - смятам че  цял живот сме "Absolute Beginners" ;)

3
iliya_boyanov avatar iliya_boyanov 28 Точки
Ето и моите решения. Надявам се, че ще намерите нещо интересно.
Моля коментирайте :) - Цък
3
borispavlov avatar borispavlov 45 Точки

Твоите решения на 9-та и 16-та задача са по-близки до това, което ми беше хрумвало ;)

Единствено на 16-та поради дългата поредица не мога да видя цялата редица на екрана на конзолата.

Първите много бързо се "изнизват".  Интересно е, че така ми се получава и при решението на Янко (по-горе).

Може и при мен да е грешката, но със сигурност мога да се разгледам ако се използва само Console.Write :

Console.Write(i+","+" "+j+","+" ");

1
XmUrF avatar XmUrF 363 Точки

iliya_boyanov според мен 15-та задача не ти е много коректна. Не става ясно какво трябва да направи потребителя. Дори и когато въведох рожденната си дата, пак нищо не стана :).

borispavlov аз имах този проблем и даже бях отворил тема тук във форума. Бях го направил като теб с Console.Write, но тук колегите ме светнаха за командата Console.BufferHeight = 1001; което решава проблема с изписването на цялата поредица на нов ред.


4
iliya_boyanov avatar iliya_boyanov 28 Точки
boris благодаря за забележката явно съм го изпуснал от условието.
XmUrF поправено е вече :)
1
VelizarValkov avatar VelizarValkov 35 Точки
В условията на задачите понякога пише "Write a program", а друг път "Create a console application". Смятате ли че има някаква разлика, например да се използва нещо различно от Console Application, когато създаваме проекта?
0
IvanStoyanov avatar IvanStoyanov 68 Точки
Има ли значение по кой от вариантите ще напишем задача 15? Защото може с няколко реда, но може и с доста повече?
0
headstrong avatar headstrong 29 Точки

Имам следния въпрос за 16 задача защо когато я напиша така:

static void Main()
{
for (int i = 2; i < 1002; i++)
{
if (i % 2 == 0)
{
Console.Write(i + " ");
}
else
{
Console.Write(i * (-1) + " ");
}
}
Console.WriteLine();
}
Като използвам Console.Write числовата редица се изписва както трябва поне последователността от 2 до -1001, но числата не са на нов ред както би трябвало. За това решавам да сменя Console.Write със Console.WriteLine, но тогава числовата редица започва от 704 до -1001 което не е първите 1000 члена на 2,-3,4,-5....Явно е, че бъркам нещо. Помощ?























1
Samuil.Petrow avatar Samuil.Petrow 1550 Точки

Това второто не го разбрах за започването от 704, може би просто конзолата не ти е разтегната достатъчно, за да видиш другите иначе грешката ти е че в случая този WriteLine е извън if-a и извън else-a, а трябва да е и в двете (или по-добре след тях, но да е в цикъла, а в случая е извън тялото на цикъла ) и ако това не става с директен WriteLine (не виждам защо, но все пак..), можеш да пробваш така

1
headstrong avatar headstrong 29 Точки
Мерси за отговора колега пробвах и твоя начин и пак не стана. Отново числовата редица, която се принтира на конзолата започва от 703 или 704. Не е до разпъването на конзолата скролвам я на макс, но просто не започва от 2 а от 703. Някакви идеи?
0
mishe avatar mishe 5 Точки

Здравейте и от мен :) имам същия проблем като колегата. На конзолата излизат числата само от 703 до 1002. Това е изразът, който използвам. Явно има някаква грашка. Помагайте моля ви :) поздрави и благодаря

using System;

class Program
{
static void Main()
{
for (int i = 2; i < 1002; i++)
{
if (i % 2 == 0)
{
Console.WriteLine(i);
}
else
{
Console.WriteLine(-i);
}
}
}
}

0
BReady avatar BReady 6 Точки

Имам един въпрос относно 16-та задача:

...
Console.WriteLine("You are {0} years old.", new DateTime(resulut).Year - 1);
Console.WriteLine("After 10 years uou will be {0} years old.", new DateTime(resulut).AddYears(10).Year - 1);
...

Защо слагаме -1 след методите?

Едит: пишело го в предната страница, за първи път влизам във форума и още не мога да се оправя. :D

1
p.tseperski avatar p.tseperski 21 Точки
Съгласен съм с "компресирането". :) Даже в Pastebin си копирах всичките задачи в една страница, че те задачите отначало и без това са кратки. Ето и моите решения.
0
velkov.ivailo avatar velkov.ivailo 16 Точки

Аз мисля, че най-лесното решение на 15-та задача е следното:

using System;

namespace Birthday_after_10_years
{
class Program
{
static void Main()
{
Console.WriteLine("Enter your birthdate (dd.mm.yyyy):");
DateTime birthday = DateTime.Parse(Console.ReadLine());
DateTime today = DateTime.Now;
int age = today.Year - birthday.Year;

if (birthday.Month <= today.Month & birthday.Day <= today.Day)
{
Console.WriteLine("You are {0} years old. After 10 years you will be {1} years old.", age, age + 10);
}
else
{
Console.WriteLine("You are {0} years old. After 10 years you will be {1} years old.", age - 1, age + 9);
}


}
}
}

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