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

Здравей,

Ще се опитам да ти обясня какво може да се промени в задачата. Нека първо да видим какво се иска по условие: "Да се въведе число в диапазона [1 ... 100]".

 

Съответно решението може да се структурира по следния начин:

1. Прочитаме число от конзолата

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

3. Когато числото отговаря на условието, го отпечатваме на конзолата

 

Идеята на задачата е изискването [ числото < 1 или числото > 100 ], което означава, че не е в искания от нас диапазон, да се постави като условие на while-цикъла. Тоест, докато числото е по-малко от 1 или по-голямо от 100, ние ще извеждаме съобщение за грешка и ще прочитаме числото отново. Така програмата няма да приключи изпълнението си, докато не се въведе подходящо число.

В твоя случай, трябва да преместиш проверката ( num<1 || num>100 ) като условие на цикъла, съдържанието на въпросния if да се премести в тялото на цикъла и отпечатването на крайния резултат да се изведе извън while-цикъла. Оставям и мое решение на задачата, за да можеш да се ориентираш по-лесно: http://pastebin.com/UyHq1NAA

Успех!

0
YavorSpassov+deleted! avatar YavorSpassov+deleted! 133 Точки

Този път си гледал от мен. :)

0
rado84 avatar rado84 1 Точки

Нещо подобно беше един от първите ми опити. Най-първият беше този: http://pastebin.com/FqQUg35c , после опитвах и други, вкл. и много подобно на твоето решение. И независимо дали въведеното число беше в или извън диапазона, програмата все си искаше число от 1 до 100.

Опитвах даже и с do while, но запълних паметта и Джъдж не ми даде точки, а червени буркани. :)

А защо след while цикъла не си задал условие?

 

Направих я така както каза с размяна на проверките - не стана. Направих я по твоето решение и пак не става, виж какъв изход изкарва, когато започна да въвеждам различни числа. И по-специално виж за последните 3 числа какво изписва.

Enter a number in the range [1...100]:
-1
Invalid number!
Enter a number in the range [1...100]:
-2
Invalid number!
Enter a number in the range [1...100]:
-3
Invalid number!
Enter a number in the range [1...100]:
-4
Invalid number!
Enter a number in the range [1...100]:
-5
Invalid number!
Enter a number in the range [1...100]:
-6
Invalid number!
Enter a number in the range [1...100]:
14
Invalid number!
Enter a number in the range [1...100]:
15
Invalid number!
Enter a number in the range [1...100]:
16
Invalid number!
Enter a number in the range [1...100]:

 

-1
KrasimirPetkov avatar KrasimirPetkov 331 Точки

Това точно с моето решение ли го дава или с твое, което си писал на базата на моето?

Защото в Judge решението ми си изкарва 100/100 - иначе не бих го качил.

Ако си писал нещо подобно виж дали проверката в while цикъла е същата и дали не си изпуснал някой Parse.

0
YavorSpassov+deleted! avatar YavorSpassov+deleted! 133 Точки

Моето решение с while loop:
 

Console.Write("Еnter a number in the range [1...100]: ");
        int n = int.Parse(Console.ReadLine());


        while (n<1 || n > 100)
        {
            Console.WriteLine("Invalid number!");
            Console.Write("Еnter a number in the range [1...100]: ");
            n = int.Parse(Console.ReadLine());
        }
        if (n>=1 && n<=100)
        {
            Console.WriteLine("The number is: "+n);
        }

 

0
svetlyoek avatar svetlyoek 19 Точки

Не че нещо,ама нито едно от посочените тук решения не тръгва-0/100!!! И аз не знам защо,като и в обясненията е дадено така...

0
15/12/2018 13:17:02