Софтуерно Инженерство
Loading...
+ Нов въпрос
joto_to avatar joto_to 39 Точки

Грешка в задача 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 582 Точки

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

   int counter = 0;

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

                    counter++;
                }

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

0
joto_to avatar joto_to 39 Точки

с този код не минава 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 582 Точки

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 582 Точки

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 и принтваш колко инта са били въведени :) Грешка в задача 09. Count the Integers от C# Conditional Statements and Loops - Exercises (Programming Fundamentals)
https://gyazo.com/7b864ecbd96e590390d4418d09237aeb

 

0
danslavov avatar danslavov 22 Точки

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

1