Loading...
Pavel00 avatar Pavel00 2 Точки

C# Conditional Statements and Loops - Lab

Относно задача 11 odd number ето го решението ми ,  което е изпълнило всички условия :

            for (int i = 1; i <= 10; i++)
            {
                int n = int.Parse(Console.ReadLine());
                if (n % 2 != 0)
                {
                    Console.WriteLine($"The number is: {Math.Abs(n)}");
                }
                else
                {
                    Console.WriteLine("Please write an odd number.");
                }   

А judge не го приема и ми дава 0 точки. Може ли да ми кажете защо ?

Тагове:
-1
Programming Fundamentals
svetoslav_0 avatar svetoslav_0 1009 Точки

Така написана програмата ще върти цикъла 10 пъти независимо дали е въведено правилно число или не. За да го поправиш, можеш да сложиш един break в if-a. Обаче това си има един друг недостатък: ако не се въведе нечетно число преди повече от 10 пъти, ще се излезе от цикъла и няма да се случи това, което искам. Мисля, че Judge няма да изпищи за това, обаче смятам че по-добре ще бъде с while цикъл. Ако се направи както трябва той ще се върти докато се въведе нечетно число, ако ще да отнеме 1000 опита

0
26/01/2018 19:35:44
dvdty avatar dvdty 497 Точки

Ако judge ти дава 0 точки, значи решението ти, не е изпълнило всички условия, да не кажа никое.

Логиката е доста грешна. Нямам представа защо използваш for от 1 до 10, като за начало.

int num = int.Parse(Console.ReadLine()); 
while (num % 2 == 0) {
  num = int.Parse(Console.ReadLine());
  Console.WriteLine("Please write an odd number.");
} 
Console.WriteLine($"The number is: {Math.Abs(num)}");

 

1
26/01/2018 19:38:26
AlucardDracula avatar AlucardDracula 416 Точки

по условие : 

    • You will receive maximum 10 numbers

 

-1
dvdty avatar dvdty 497 Точки

Maximum дава доста различно значение на условието, ако го прочетеш, срещу, ако не го прочетеш.

0
AlucardDracula avatar AlucardDracula 416 Точки

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

-1
26/01/2018 20:40:41
Edwardcho avatar Edwardcho 5 Точки

Пробвах кода ти и да - излиза Unhandled Exception. Пробвай с break point да спреш програмата, когато ти излезе нечетното число, защото иначе и да ти излезе без break- a oчаква още числа, докато цикълът не се завърти 10 пъти. Аз лично го направих с while и сложих break след като влезе в if(n % 2 != 0)

0
26/01/2018 19:40:11
AlucardDracula avatar AlucardDracula 416 Точки

след като ти подадат нечетно число трябва да го принтираш и да спреш цикъла /програмата.

ето редактирах решението: 

using System;

class A
{
	static void Main()
    {
        int n;
        for (int i = 1; i <= 10; i++)
        {
            n = int.Parse(Console.ReadLine());
            if (n % 2 != 0)
            {
                Console.WriteLine($"The number is: {Math.Abs(n)}");                            
                break;
            }
            else
            {
                Console.WriteLine("Please write an odd number.");
            }
        }  
    }
}

 

0
26/01/2018 21:01:18
Pavel00 avatar Pavel00 2 Точки

Разбрах си грешката .Благодаря ви за отговорите !

1
GerganaTsirkova avatar GerganaTsirkova 17 Точки

Грешката идва от там, че трябва да излезеш от цикъла с break, след като е въведеното нечетното число, защото програмата чака още числа докато се извърти брояча до 10.Ето ти го твоето решение, само че преправено:

https://pastebin.com/i33EN1d3

0
26/01/2018 19:50:32
GerganaTsirkova avatar GerganaTsirkova 17 Точки

P.S.        Math.Abs(n), може да си го оставиш където беше си го написал.

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