Loading...
+ Нов въпрос
joto_to avatar joto_to 40 Точки

Грешка в задача 09. Count the Integers от C# Conditional Statements and Loops - Exercises (Programming Fundamentals)

По условие дължината на входните данни е не повече от 7 символа (http://prntscr.com/fcnff3). На 4-ти тест явно са повече защото хвърля Test #4 (Runtime error) ако няма catch (OverflowException) при използване на try-catch. Иначе с int.TryParse() си минава нормално задачата.

spzvtbg avatar spzvtbg 581 Точки

ползвай  просто ексепшън (входа може да е всичко дори нов ред), при мен минава всичко. ако си покажеш кода може да сме по конкретни ето ти моя за сръвнение:

   int counter = 0;

            try
            {
                while (true)
                {
                    int input = int.Parse(Console.ReadLine());

                    counter++;
                }

            }
            catch (Exception)
            {
                Console.WriteLine(counter);
            }

0
joto_to avatar joto_to 40 Точки

с този код не минава 4-ти тест:


            int numCount = 0;
            while (true)
            {
                try
                {
                    int.Parse(Console.ReadLine());
                    numCount++;

                }
                catch (FormatException)
                {
                    break;
                }
            }

            Console.WriteLine(numCount);

а с този минава:

            int numCount = 0;
            while (true)
            {
                try
                {
                    int.Parse(Console.ReadLine());
                    numCount++;

                }
                catch (OverflowException)
                {
                    break;
                }
                catch (FormatException)
                {
                    break;
                }
            }

            Console.WriteLine(numCount);

което означава че има овърфлоу когато се парсва към int, а това няма как да се случи с 7 цифри/знака(което пък е по условие).

0
ratsovphilip avatar ratsovphilip 2 Точки

Незнам дали това има значение, но в твоето решение try-catch е в while цикъла. А когато while-а е в try блока, задачата минава на 100 процента.

 

 

0
AlexTasev avatar AlexTasev 65 Точки

Аз първо увеличавам брояча и след това чета входа: в while цикъл:

counter++;
input = int.Parse(Console.ReadLine());

Ползвал съм try-catch.

0
magix avatar magix 10 Точки

При мен си минава 100/100  https://pastebin.com/SYtum90i, а мисля , че  задачата е написана по абсолютно същия начин като теб..

0
spzvtbg avatar spzvtbg 581 Точки

int numCount = 0;
            while (true)
            {
                try
                {
                    int.Parse(Console.ReadLine());
                    numCount++;

                }
                catch (Exception) // - така минава - Exseption - хваща всичко (то е стандартния ексепшън в трай кеч блока)
                {                           // - и понеже не ги знам поне аз и не сме ги учили досега невиждам смисъл да ги мъчим
                    break;
                }
            }

            Console.WriteLine(numCount);

 

0
magix avatar magix 10 Точки

В задачата се изисква само да пълниш интове в try block-a и при въвеждане на стринг try да гръмне и в catch да принтнеш колко инта са въведени.И според мен условието си е изпълнено, защотото никъде в примерите не виждам да е въведен инт с големина повече от 7 знака на един ред. 

0
spzvtbg avatar spzvtbg 581 Точки

a и винаги може да се направи една проверка за дължината на входа и да се излиза от там :)

0
Terziyski avatar Terziyski 54 Точки

Здравейте, аз също мислех да използвам try&catch , но в последствие реших да проверявам дали въведеният string  може да се parse-не към  int

Може да погледнете и това решение  : https://pastebin.com/wfDjpjGJ 

Успех :) 

1
danslavov avatar danslavov 22 Точки

Да, и аз вчера го видях това, но не ми пречи на кода, така че само го причислих към другите немалко грешчици по условията :D  Ми хора сме все пак и грешим.

За колегата magix – пише "line of input", това по никакъв начин не означава само интове.

0
magix avatar magix 10 Точки

Пише че може да се въвежда всякакъв вид инпут , но при различен от инт програмата гърми :) И когато гръмне отиваш в catch block-a и принтваш колко инта са били въведени :) 
https://gyazo.com/7b864ecbd96e590390d4418d09237aeb

 

0
danslavov avatar danslavov 22 Точки

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

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