Loading...
Anichka avatar Anichka 93 Точки

[Homework] C# Basics - Primitive data types and variables

Здравейте :)

Моите имплементации за второто ни домашно можете да видите тук

Всичко, което ми се стори, че е необходимо да обясня, е под формата на коментар в сорс кода.

В Проблем 3 съм използвала отделен метод, въпреки че в курса все още не сме стигнали до методи. Наистина ме домързя да пиша if statement 4 пъти, още повече че щеше да бъде един и същ.

Надявам се не съм допуснала фрапантни грешки :)

Update: Последно нанесени промени в сорс кода на 19.03.2014

Тагове:
40
Programming Basics
HPetrov avatar HPetrov 822 Точки
И аз след малко ще споделя моите решения на задачите, но първо искам да попитам как ги ъплоадна на git домашните?
4
MilushK avatar MilushK 44 Точки
Тук е много добре описано как точно става :) 
7
Anichka avatar Anichka 93 Точки

Аз използвам GitHub for Windows - много удобно десктоп приложение.

GitHub

Можеш да го съчетаеш с Visual Studio. Така без да отваряш сайта GitHub можеш да си качваш домашните там. Само не трябва да забравяш да синхронизираш, след като правиш промени във файловете си.

6
HPetrov avatar HPetrov 822 Точки

Успях в последствие са да намеря къде греша :D Оказа се, че трябва непременно да въведа Summary и да се commit-не. А аз се опитвах директно да го публикувам и се чудех защо ми дава грешка...

Та ето и моите решения на домашните -> click me.

На голяма част от решенията си съм сложил по някой друг коментар за насоки и малки разяснения. За Проблем 11 съм използвал while цикли за да бъде малко по реалистична програмата като например ако въведеш грешно някой данни ви кара да въведете правилния тип данни.


6
maria.stoycheva avatar maria.stoycheva 7 Точки

Супер, благодаря ти!

Един глупав въпрос от мен: по някаква причина когато пусна кода през дебъгъра, не ми показва минусите пред отрицателните числа. Т.е. вместо минуси ми показва един допълнителен спейс. Ако напиша например

    sbyte second = -115;
    Console.WriteLine(second);

изписва просто

 115

(да, пред числото има един спейс)

ако пък напиша:

    sbyte second = -115;
    Console.WriteLine(-second);

ми вади

115

(без спейса отпред).

Идеи на какво се дължи това?

2
Dzhuliya avatar Dzhuliya 5 Точки
А ако пробваш така: Console.WriteLine("-{0}",second);?
0
Masovski avatar Masovski 211 Точки
При втория вариант, се получава плюс (минус * минус) и затова ти изкарва без разстояние, докато при първия (тествах) се получава минус. Както го правиш би трябвало да изкара минуса отпред, но вместо това ти дава разстояние. Тоест, проблема не е в кода ти, а нещо конзолата явно прави шмекерии. : )
1
maria.stoycheva avatar maria.stoycheva 7 Точки

Да, господа, мерси :)

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

2
Yulia avatar Yulia 1346 Точки

Ах, повече време ми отне да се преборя с GitHub, отколкото да напиша самото домашно :D
Но ето го и него: Homework. Единствено смятам да си поиграя още да принтирам 9-те CopyRight символа точно както в в примера - т.е да е празен триъгълника в средата. Ако използвам "рецептата" за задачите от изпита за рисуване в конзолата, ще стане (но не с цикли, а със string-ове) :)

Има някои дреболии, за които съм много доволна в решенията си. Като например, използването на условен оператор за 6-та задача (isFemale? "female" : "male") . Има коментари в решенията и линкове към ресурси.

Ще се радвам на забележки и други идеи как да реша задачките.

Edit: Както обещах, добавено е ново решение за задачата с триъгълника, който се чертае по зададена височина. Едитнах и леко задачата с ASCII таблицата, защото видях, че в условието е казано, че някои специални символи може да се пропуснат или да се отпечатат по друг начин. Ее... тази задачка не ми е чак толкова интересна, затова я направих по мързеливия начин като принтирах таблицата само от 32-ри до 127-ми символ.

Edit: Смених номерата на задачките според новото домашно, където 3-та е 13 и т.н...

9
MilushK avatar MilushK 44 Точки
Поздравления! Доста добре си се справила с домашното според мен! Даде ми и идеи как по друг начин да направя и аз някои от задачите! :) Относно 9- та задача, може да се пробваш да разделиш фигурата на няколко части и да ги отпечаташ отделно всяка от тях. Аз, лично, така направих (решение). Първо отпечатах най- първия ред, след това междинните два и накрая най- долния. Но може би нещо подобно си имала предвид с думите "Ако използвам "рецептата" за задачите от изпита за рисуване в конзолата, ще стане (но не с цикли, а със string-ове). Всичко добро! :) 
4
Yulia avatar Yulia 1346 Точки
Да, благодаря MilushK! Точно такава ми беше идеята за 9-та задача. Дори ще посъветвам всеки да се опита да я реши по този начин, а може дори и с четене на височината на триъгълника от конзолата, защото на изпита една от задачите е именно такава :) Успех!
5
ViValDam avatar ViValDam 15 Точки
аз го зарязах гид хъб - отвратително , а Наков препоръча едно друго дето работи направо от конзолата , още по объркващо !
-13
kiko144 avatar kiko144 795 Точки
Колега, не знам аз ли не съм разбрал условието на 13-та задача или ти? Видях, че по същия начин е написал и друг колега. Мисля, че в задачата пише след като присвоим null към int  и double, че трябва да ги съберем с някакво число или друг null! Тоест не просто да презапишем друга стойност, а към null-а да прибавим число. Поправете ме ако греша!?
3
MilushK avatar MilushK 44 Точки
И аз мисля, че това е точното условие на задачата.. един вид да си поиграем малко.
1
Anichka avatar Anichka 93 Точки
Изобщо не бях обърнала внимание. Много благодаря, момчета! Оправих го.
1
HPetrov avatar HPetrov 822 Точки

Try to add some number or the nullliteral to these variables and print the result.

Това лично го разбирам като към вече един nullable тип да му придадем някъква стойност или просто null и да видим какво става на конзолата. Водя се по това, защото literal-а е нещото след "=", което придаване на една променлива.  А дали найстина това се изисква или не... не знам, просто аз така разбирам задачата :)

0
stratega avatar stratega 16 Точки
ЗА тази лекция има ли видео ? Защото аз нещо не откривам :)
1
MilushK avatar MilushK 44 Точки
Все още няма качено видео.
1
MilushK avatar MilushK 44 Точки

Добри решения! Поздравления! :)

Браво за 3-та задача(Comparing Floats)! Аз съм я решил по подобен начин, но не се бях сeтил да използвам Math.abs(), а написах още един метод, който да смята разликата между числата. 

Като коментар мога да кажа единствено, че може да погледнеш и някои други решения на задачата с триъгълника и да се пробваш да я решиш по друг начин, защото подобна задача ще има и на изпита. Може би на задача 13 (Null Values Arithmetic) не е точно спазено условието, а именно след като присвоим null към int  и double, че трябва да ги съберем с някакво число или друг null и да отпечатаме резултата

Ето това са моите решения. Ще се радвам, ако някой предостави някаква критика или препоръка! :)

1
hristolilov avatar hristolilov 394 Точки

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

Програмката работи с input и проверява дали въведените стойности са float.Реших, че е добър повод да науча конвертирането на стрингове към други типове данни и употребата на if else

Много ще се радвам ако някой предложи начин за оптимизация/съкратяване на кода :)

1
ViValDam avatar ViValDam 15 Точки

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

Ето ти мойто решение изглежда дълго, но това е така , защото проверява за грешен инпут :


Console.WriteLine("Please, use a decimal point not comma!");
Console.WriteLine();
Console.WriteLine("Enter number one:");
Console.WriteLine();
  string line = Console.ReadLine();

  if (decimal.TryParse(line, out numberOne)) 
{
Console.WriteLine();
Console.WriteLine("Enter number two:");
Console.WriteLine(
);
line = Console.ReadLine();

if (decimal.TryParse(line, out numberTwo)) 
{
difference = Math.Abs(Math.Abs(numberOne) - Math.Abs(numberTwo));
Console.WriteLine("This numbers difference is " + difference);
Console.WriteLine();

if (difference >= eps)
{
equal = !equal;
}

if (equal)
{
Console.WriteLine("Thus, " + numberOne + " and " + numberTwo + " are equal numbers.");
}
else
{
Console.WriteLine("Thus, " + numberOne + " and " + numberTwo + " are not an equal numbers.");
}
}
else
{
Console.WriteLine("Wrong input for number two!");
}
}
else
{
Console.WriteLine("Wrong input for number one!");
}










































-6
filipm avatar filipm 8 Точки

Ето моето решение, малко по-мързеливо :)

http://pastebin.com/mwWwuu2b

И сега се усетих, че съм ги направил с тип double, поправено :)

1
Fleshian avatar Fleshian 379 Точки
Колега, опитай да ползваш бутончето за вкарване на линк , при писане на коментарите , това което изглежда като кламер. :)
1
ViValDam avatar ViValDam 15 Точки

ФИЛИП, числата трябва да се четат от конзолата,задачата не е само за примерните числа !

Освен това и това ,което си направил е грешно - виж си резултата за последното число и същият за същите числа от таблицата в условието - еднакви ли са ?

Грешката ти идва от това ,че като изваждаш отрицателно число ,не взимаш в предвид знака и то става + и вместо да ги изваждаш ,ги събираш числата

Ти правиш така  -0.0000007 - 000000007 и това е събиране , не изважда числата едно от друго, а ги събира .

Затова трябва да работиш с абсолютните им стойности.

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

difference = Math.Abs(Math.Abs(numberOne) - Math.Abs(numberTwo));

-9
gogodam93 avatar gogodam93 25 Точки
Според вас, ако на 3-та задача, числата се задават от конзолата грешка ли е ?
1
pavel1 avatar pavel1 9 Точки
Не, даже е доста по-лесно за тестване, отколкото всеки път да задаваш различни числа като литерали в кода ;)
4
ViValDam avatar ViValDam 15 Точки
задачата 3  е за произволни числа , не е само за тези от примера и това означава ,че трябва да се задават задължително от конзолата 
0
daniel_tsonkov avatar daniel_tsonkov 32 Точки

Чакай сега... Нещо неразбирам

Ако ти правиш неща които не са преподавани като вход и изход от конзолата. Ами закакво тогава ми застава един човек пред мен наречен лектор и ми разказва някакви неща кото вече знаем. Това си е чиста загуба на време, и симулиране на дейност.

0
zontak avatar zontak 457 Точки

Заповядайте решение за 3-тата задачка! С един колега го сътворихме ( повечко той ) и е доста кратичко от това на " ViValDim " ( която повече DAMAGE вкарва от това да отговори коректно на някого ) :) Надявам се да съм бил полезен :))

namespace ComparingFloats
{
    class ComparingFloats
    {
        static void Main()
        {

            Console.WriteLine(" Вкарай число за A: ");

            double a = double.Parse(Console.ReadLine());

            Console.WriteLine(" Вкарай и за B: ");

            double b = double.Parse(Console.ReadLine());
            bool equal = Math.Abs ( a - b) < 0.000001;
            Console.WriteLine(" Are number {0} and {1} equal {2}", a, b, equal);
        }
    }
}

14
ViValDam avatar ViValDam 15 Точки

от далече се вижда zontag -Недялко,че формулата е грешна ,вече писах по-горе - тествай с дадените в условието числа и сам ще се убедиш !

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

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

въведи число 1 и после - въведи число 2 , а ти го нямаш това 

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

-15
zontak avatar zontak 457 Точки
От далеч се вижда,че даже не си пробвала сърс кода.. На мен примерите в условието ми ги изкарва 1:1.. затова пейстнах и кода , ако ми даваше грешни резултати не бих го предлагал на другите ;)  .. Не се опитвай пак да hate-ваш с детайли като " вкарай едно число " или " вкарай ... ". Не съм сигурен дали аз не разбирам толкова английския или просто там не е упоменато да правим тия излишни маневри като теб?  :)) Ии.. не ми променяи името.. Това го правят децата в детската градина за да се подиграват на другите.. на теб не ти Тупа на годинките ;))) Това zontaG дето си написала не го знам на какъв език е (вероятно някой твой ) , но ако си се опитала да кажеш Неделя на немски .. --> sonntag ( Не те карам да знаеш немския , просто стига си се правила на умно и всезнаещо мамче ;) )
15
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.