Упътване Както обикновено, първо трябва да добавим нов C# конзолен проект в съществуващия solution. За кода на програмата ни е необходима единична if-else конструкция. Може да си помогнете частично с кода от картинката, който е умишлено замъглен, за да помислите как да го допишете сами:
След като сме готови с имплементацията на решението, стартираме програмата с [Ctrl+F5] и я тестваме:
Задача: Изписване на число до 9 с думи.
Да се напише програма, която въвежда цяло число в диапазона [0 … 9] и го изписва с думи на английски език. Ако числото е извън диапазона, изписва “number too big”.
Примерен вход и изход:
Вход
Изход
5
five
1
one
9
nine
10
number too big
Упътване Може да използваме поредица if-else конструкции, с които да разгледаме възможните 11 случая.
Задача: Познай паролата.
Да се напише програма, която въвежда парола (един ред с произволен текст) и проверява дали въведеното съвпада с фразата “s3cr3t!P@ssw0rd”. При съответствие да се изведе “Welcome”, а при несъответствие да се изведе “Wrong password!”.
Примерен вход и изход
Вход
Изход
qwerty
Wrong password!
s3cr3t!P@ssw0rd
Welcome
s3cr3t!p@ss
Wrong password!
Упътване: Използвайте if-else конструкцията.
Задача: Число от 100 до 200.
Да се напише програма, която въвежда цяло число и проверява дали е под 100, между 100 и 200 или над 200. Да се отпечатат съответно съобщения, като в примерите по-долу.
Примерен вход и изход:
Вход
Изход
95
Less than 100
120
Between 100 and 200
210
Greater than 200
Задача: Еднакви думи.
Да се напише програма, която въвежда две думи и проверява дали са еднакви. Да не се прави разлика между главни и малки букви. Да се изведе “yes” или “no”.
Примерен вход и изход:
Вход
Изход
Hello
Hello
yes
SoftUni
softuni
yes
Soft
Uni
no
beer
vodka
no
HeLlO
hELLo
yes
Упътване: Преди сравняване на думите, ги обърнете в долен регистър, за да не оказва влияние размера на буквите (главни/малки): word = word.ToLower().
Задача: Информация за скоростта.
Да се напише програма, която въвежда скорост (десетично число) и отпечатва информация за скоростта. При скорост до 10 (включително), отпечатайте “slow”. При скорост над 10 и до 50, отпечатайте “average”. При скорост над 50 и до 150, отпечатайте “fast”. При скорост над 150 и до 1000, отпечатайте “ultra fast”. При по-висока скорост, отпечатайте “extremely fast”.
Примерен вход и изход:
Вход
Изход
8
slow
49.5
average
126
fast
160
ultra fast
3500
extremely fast
Задача: Лица на фигури.
Да се напише програма, която въвежда размерите на геометрична фигура и пресмята лицето й. Фигурите са четири вида: квадрат (square), правоъгълник (rectangle), кръг (circle) и триъгълник (triangle).
На първия ред на входа се чете вида на фигурата (square, rectangle, circle, triangle).
Ако фигурата е квадрат, на следващия ред се чете едно число – дължина на страната му.
Ако фигурата е правоъгълник, на следващите два реда се четат две числа – дължините на страните му.
Ако фигурата е кръг, на следващия ред се чете едно число – радиусa на кръга.
Ако фигурата е триъгълник, на следващите два реда се четат две числа – дължината на страната му и дължината на височината към нея.
Задача: Време + 15 минути.
Да се напише програма, която въвежда час и минути от 24-часово денонощие и изчислява колко ще е часът след 15 минути. Резултатът да се отпечата във формат hh:mm. Часовете винаги са между 0 и 23, а минутите винаги са между 0 и 59. Часовете се изписват с една или две цифри. Минутите се изписват винаги с по две цифри и с водеща нула, когато е необходимо.
Примерен вход и изход:
Вход
Изход
1
46
2:01
0
01
0:16
23
59
0:14
11
08
11:23
12
49
13:04
Упътване: Добавете 15 минути и направете няколко проверки. Ако минутите надвишат 59, увеличете часовете с 1 и намалете минутите с 60. По аналогичен начин разгледайте случая, когато часовете надвишат 23. При печатането на минутите, проверете за водеща нула.
Задача: Еднакви 3 числа.
Да се напише програма, в която се въвеждат 3 числа и се отпечатва дали те са
еднакви (yes / no).
Примерен вход и изход:
Вход
Изход
5
5
5
yes
5
4
5
no
1
2
3
no
Задача: * Изписване на число от 0 до 100 с думи.
Да се напише програма, която превръща число в диапазона [0 … 100] в текст.
Примерен вход и изход:
Вход
Изход
25
twenty five
42
forty two
6
six
Упътване: Проверете първо за едноцифрени числа и ако числото е едноцифрено, отпечатайте съответната дума за него. След това проверете за двуцифрени числа. Тях отпечатвайте на две части: лява част (десетици = числото / 10) и дясна част (единици = числото % 10). Ако числото има 3 цифри, трябва да е 100 и може да се разгледа като специален случай.
Графично (desktop) приложение След като направихме няколко упражнения върху условни конструкции (проверки), сега нека направим нещо по-интересно: приложение с графичен потребителски интерфейс за конвертиране на валути. Ще използваме знанията от тази глава, за да избираме измежду няколко налични валути и съответно да извършваме пресмятания по различен курс спрямо избраната валута.
Задача: конвертор за валути Нека разгледаме как да създадем графично (GUI) приложение за конвертиране на валути. Приложението ще изглежда приблизително като на картинката по-долу:
Този път създаваме нов Windows Forms Application с име “Currency-Converter”:
Нареждаме следните контроли във формата:
Една кутийка за въвеждане на число (NumericUpDown);
Един падащ списък с валути (ComboBox);
Текстов блок за резултата (Label);
Няколко надписа (Label);
Нагласяме размерите и свойствата им, за да изглеждат долу-горе като на картинката:
Задаваме следните настройки на контролите:
За главната форма (Form), която съдържа всички контроли:
(name) = FormConverter
Text = "Currency Converter"
Font.Size = 12
MaximizeBox = False
MinimizeBox = False
FormBorderStyle = FixedSingle
За полето за въвеждане на число (NumericUpDown):
(name) = numericUpDownAmount
Value = 1
Minimum = 0
Maximum = 1000000
TextAlign = Right
DecimalPlaces = 2
За падащия списък с валутите (ComboBox):
(name) = comboBoxCurrency
DropDownStyle = DropDownList
Items =
EUR
USD
GBP
За текстовия блок за резултата (Label):
(name) = labelResult
AutoSize = False
BackColor = PaleGreen
TextAlign = MiddleCenter
Font.Size = 14
Font.Bold = True
Трябва да хванем следните събития, за да напишем C# кода, който ще се изпълни при настъпването им:
Събитието ValueChanged на контролата за въвеждане на число numericUpDownAmount:
Събитието Load на формата FormConverter
Събитието SelectedIndexChanged на падащия списък за избор на валута comboBoxCurrency
Ще използваме следния C# код за обработка на събитията:
{
ConvertCurrency();
}
Задачата на горния код е да избере при стартиране на програмата валута “EUR” и при промяна на стойностите в полето за сума или при смяна на валутата, да изчисли резултата, извиквайки ConvertCurrency() метода.
Следва да напишем действието ConvertCurrency() за конвертиране на въведената сума от лева в избраната валута:
private void ConvertCurrency()
{
var originalAmount = this.numericUpDownAmount.Value;
var convertedAmount = originalAmount;
if (this.comboBoxCurrency.SelectedItem.ToString() == "EUR")
{
convertedAmount = originalAmount / 1.95583m;
}
else if (this.comboBoxCurrency.SelectedItem.ToString() == "USD")
{
convertedAmount = originalAmount / 1.80810m;
}
else if (this.comboBoxCurrency.SelectedItem.ToString() == "GBP")
{
convertedAmount = originalAmount / 2.54990m;
}
this.labelResult.Text = originalAmount + " лв. = " +
Math.Round(convertedAmount, 2) + " " + this.comboBoxCurrency.SelectedItem;
}
Горният код взима сумата за конвертиране от полето:
numericUpDownAmount и избраната валута за резултата от полето comboBoxCurrency.
След това с условна конструкция, според избраната валута, сумата се дели на валутния курс (който е фиксиран твърдо в сорс кода).
Накрая се генерира текстово съобщение с резултата (закръглен до 2 цифри след десетичния знак) и се записва в зелената кутийка labelResult