Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

hristolilov avatar hristolilov 394 Точки

[Homework] C# Basics - Видео решения на домашните от C# Basics май/март 2014

Реших да поизреша домашните от C# Basics курса на видео, с цел да си припомня материала и евентуално да помогна на някой  да си доизясни нещата от лекциите :)

Очаквам отзиви :)

Линкове към видеата ще публикувам тук:

Homework 1: Introduction to programming

Homework 2: Primitive Data Types And Variables - задачи

Homework 2: Example Exam - Problems 1-4

Homework 3: Operators Expressions Statements - задачи

Homework 4: Console Input Output - задачи

223
Programming Basics
salih1f1 avatar salih1f1 188 Точки

Здравейте. Имам въпрос относно Half Sum от миналият изпит (и от второто домашно). Немога да разбера къде бъркам. С първият и вторият екзампъл нямам проблеми, но с третият имам (питам се възможно ли е да е сбъркан). А и в Judge-a ми дава само 20 точки. Ще се радвам ако някой ми помогне и ме насочи. А това е моето решение

0
hristolilov avatar hristolilov 394 Точки

Проблема колега е, че do while не е условна конструкция а цикъл :)

  1. do
  2.         {
  3.             n = int.Parse(Console.ReadLine());
  4.         } while ((>= 0)^(<= 500));

В случая ти четеш n незнайно колко пъти, докато не ти дадат стойност по-малка от 0, или по-голяма от 500.Дори това не е точно така, защото знакът ^ е XOR при побитови операции и убии ме, не знам защо изобщо ти дава да го пуснеш по този начин(не съм го пробвал) :)

Същото важи и при четенето ти на числата firstNum и secondNum.Махни тези do while и задачата ти е решена :)

0
salih1f1 avatar salih1f1 188 Точки

Колега благодаря за бързият отговор. :)

Операторът ^ XOR освен, че е побитов е и булев. 

  1.    do
  2.         {
  3.             n = int.Parse(Console.ReadLine());
  4.         } while ((>= 0)^(<= 500));

Целта ми тук е да даде False за да излезе от цикъла (True ^ True == False). Пробвано е и цикъла работи. Явно грешката е другаде, но къде ли...

 

1
hristolilov avatar hristolilov 394 Точки

Това не го знаех :D

На второ четене открих още 2 грешки.

You are given a number n and 2*n numbers. Write a program to check whether the sum of the first n numbers is equal to the sum of the second n numbers

Ти завърташ един цикъл n пъти в който последователно четеш по 1 число за firstSum и secondSum а в задачата се казва, че първите n числа принадлежат към firstSum а останалите към secondSum.Тоест ти трябват 2 цикъла до n, като първия аддва към първата сума а втория към втората.

Втората грешка е, че firstSum и secondSum са int-ове.Казано е, че n може да бъде от 0 до 500 а максималната стойност на всяко число е 500000.Не съм убеден, но мисля, че Int ще превърти при 500x500000 :) Направи го long да ти е мирна главата :)

1
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Решавайки днес задачите от Homework 2 се замислих над условията на някои от задачите. Примерно на част от тях се иска Declare an integer variable and assign it with the value. Доколкото разбрах досега от лекциите и книгата то под declare и assign се има предвид да се декларира променлива без първоначална стойност (т.е. да си остане стойността по default) и след това на тази променлива да се присвои дадена стойност. Дали ако се използва int x = 5; примерно може да се сметне като грешно изпълнено условие на задачата? 

0
salih1f1 avatar salih1f1 188 Точки

Здравей

Да декларираме променлива означава да зададем тип (примерно Int) и име, началната стойност не е задължителна. При присвояването (assign) трябва да се зададе и стойност. Мисля, че в този случай int x = 5; може да се сметне като правилно. 

Успех!

0
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Е да, но int x = 5; е Initialization.

Докато Declare и Assign е:

int x;

x = 5;

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

 

1
joseph avatar joseph 1 Точки

Супер, много доволно видео с добре обяснени решения. Благодаря! :)

 

0
Scott_Smith avatar Scott_Smith 1 Точки

Страхотна работа!+++ 1000!cool

0
Ivantsanev avatar Ivantsanev 1 Точки
Чудесна работа,точно от това имах нужда. :)
0
Kaloyan777 avatar Kaloyan777 17 Точки

Браво, man! 
Добре си направил, keep up the good work! ;P

ps:Качвай сорс кода, ако е ОК за теб, де. Зуумвай тук-там, или поне увеличи големината на шрифта, може би това ще е по-добрия вариант.
0
taewu avatar taewu 23 Точки

идеално :) тъкмо имах нужда за малко по детайлно разяснение на нещата

качи някъде и останлите нещта :) и успехи

0
Ludmil.D avatar Ludmil.D 41 Точки

Въщност кода не се вижда на първо четене.. (но това е защото Defout на youtube не на всеки е настроено на 720p HD и 1020p).
Та ако някой иска да гледа видеото да паозира и едно времнно да пише в IDE-то и няма 2 монитора има решение:

Включва HD (720p или 1020p) включва средния екран за възпроизвеждане (не fullscreen)
ctrl+mouse wheel за да zoom-не  browser-a и си наглася прозореца на необходимите размери и воала...

Та личната ми препоръка е keep it that way  hristolilov т.е. ти записвай на full screen  за да има поглед човек върху кода ти и ако иска да пише едноврменно с теб да направи горните модификациики :)
бравос успех и аз си го мислех това... защото човек разбира начина по който се изгражда една програма много по пълноценно докато се решава пред него а не като види кода и го тества (особенно когато става въпрос за absolute beginners.. дет се вика не знаеш къде ти е дебъгера още...)

п.с. супер че поддръжаш 1020p ! И за лекциите трябва такова качетво но там е сложно, че са много записите.

0
ph.kolarov avatar ph.kolarov 63 Точки

Здравейте, правя 10 задача и имам малък проблем. Някой може ли да ме насочи как мога да направя булев тип със няколко стринга. Например искам при въвеждане на пол в задачата, да приема резултатите : m, male, f, female, при всеки един друг вариант да излиза грешка. Пробвах вариант в който да направя няколко булеви израза, но нестана както искам. Конкретно, как мога да добавя повече от едно условие в самия израз ?

0
hristolilov avatar hristolilov 394 Точки

string input = Console.ReadLine();
bool isValid = input == "m" || input == "male" || input == "f" || input == "female";

 Между условията можеш да слагаш:

|| - Или

&& - И

^^ - XOR

2
ph.kolarov avatar ph.kolarov 63 Точки

Благодаря... при мен работеше единствено с &&, идея нямам защо. И все пак това е моето решение:

using System;
class Program{    static void Main()    {
        Console.WriteLine("Напиши своето първо име...");            string ime = Console.ReadLine();                Console.WriteLine("Напиши своята фамилия...");            string familiq = Console.ReadLine();
        Console.WriteLine("На колко години си ...?");            int? godini = Int32.Parse(Console.ReadLine());
        if            (godini < 100);        else
        Console.WriteLine("Грешка!!!");


        if (godini > 0);
        else
        Console.WriteLine("Грешка!!!");
                Console.WriteLine("Какъв е твоят пол...? (избери m или f)");            string input = Console.ReadLine();                        if  ( input == "m" && input == "male" && input == "f" && input == "female");                else            Console.WriteLine("Невалидни данни...");                        Console.WriteLine("Напиши своето ЕГН: ");            long iDNumber = long.Parse(Console.ReadLine());
        if            (iDNumber < 9000000000 && iDNumber > 999999999) ;
        else                       Console.WriteLine("Невалидно ЕГН...");
        Console.WriteLine("Напиши твоят уникален работен номер: ");
            long employeeNumber = long.Parse(Console.ReadLine());
        if (employeeNumber > 27559999 && employeeNumber < 27569999) ;
        else            Console.WriteLine("Невалиден работен номер " );
                Console.WriteLine(@"
Данни на служителя:
Име: {0}
Фамилия: {1}
Години: {2}
Пол: {3}
ЕГН: {4}
Работен номер: {5}
",ime, familiq,godini,input,iDNumber,employeeNumber);    }}

0
Dushkov avatar Dushkov 0 Точки

Благодаря! Обясняваш много добре и научих доста неща, които бях пропуснал.

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