Loading...

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

Slavena_cholakova avatar Slavena_cholakova 8 Точки

Песента на колелетата - не отпечатвам четвъртата четворка

Условието е следното:

  • Песента на колелетата

Прапраправнукът на Сали Яшар е получил наследство - сейф с парола - четири цифри. В него е заключена тайната на пеещите каруци. Той има автосервиз и се нуждае от реклама, затова е решил да направи такава каруца. Проблема е, че паролата е скрита в следната задача:

Парола ще получиш, ако знаеш  едно цяло число, контролна стойност  се нарича то,

почива в интервала от 4 до 144 включително, но да го откриеш може би ще е мъчително. ”

Паролата има формат: "abcd" и контролната стойност трябва да е равна на  a*b + c*d , но трябва да бъдат спазени следните условия:

  • при намирането на а и b: a < b
  • при намиране на  c и d: c > d .

Каруцата  има четири колела, затова паролата ще е четвърто число, което трябва да се отпечата.

В случай, че НЕ се намери такова число,  отпечатва сеNo!“.

Вход

От конзолата се чете едно цяло число (контролната стойност): Mцяло число в интервала [4 … 144];

Изход

Отпечатването на конзолата зависи от резултата:

  • Ако са намерени четворки числа (аbcd), отговарящи на условието, ги отпечатваме всичките с разделител интервал: “{а}{b}{c}{d} ”
  • Отпечатва се един от двата реда на нов ред:
  • Ако съществува четвърта четворка се отпечатва: „Password: {а}{b}{c}{d}“
  • Ако НЕ са намерени такива числа или няма  четвърта четворка отпечатваме: “No!”

Примерен вход и изход

Вход

Изход

Обяснения

11

 

1291 1342 1381 1471 1532 1561 1651 1741 1831 1921 2351 2431

Password: 1471

Започваме да проверяваме числата последователно:

{1} {1} {1} {1};   {1} {1} {1} {2};   {1} {1} {1} {3};   …;   {1} {2} {9} {1}; …

четворката 1291 спазва условието и отпечатваме и т.н.

Вход

Изход

Вход

Изход

Вход

Изход

139

No!

110

 

6987 7896

No!

55

 

1786 2595 3585 3974 4575 4793 5754 5853 5952 6871

Password: 3974

 Моето решение е:

using System;
                   
public class Program
{
    public static void Main()
    {
        
      int numberA = 0;      
      int numberB = 0; 
      int numberC = 0;
      int numberD = 0;
      int count = 0;
      
            int numberControl = int.Parse(Console.ReadLine());
            for (numberA = 1; numberA <= 9; numberA++)
            {
            for (numberB = 0; numberB <= 9; numberB++)
            {
            for (numberC = 0; numberC <= 9; numberC++)
            {
            for (numberD = 0; numberD <= 9; numberD++)
            {
            if((numberControl == numberA * numberB + numberC * numberD) && ((numberA < numberB) && (numberC > numberD)))
            {
            Console.Write("{0}{1}{2}{3} "  ,numberA ,numberB, numberC, numberD);
            count = count + 1;
            }
            }
            }
            }
            }
            if (count == 4)
            {
            Console.Write("Password: {0}{1}{2}{3} "  ,numberA ,numberB, numberC, numberD);
            }    
        else 
        {
            Console.Write("No!");
}
        
    }
}

 

Дайте насоки къде бъркам и как да отпечатам четвъртата четворка. Благодаря предварително! 

 

Тагове:
0
Programming Basics
knoteva avatar knoteva 1081 Точки
Best Answer

Здравей,

Може да си направиш допълнителна променлива за нея. Има други неща, които не са ок в кода. Ето го коригиран с коментари:

https://pastebin.com/Au5rhKdh

0
mark79 avatar mark79 639 Точки

Здравейте,

само една оптимизация по кода, ако може да вметна, с цел да се въртят по-малко циклите

        for (numberA = 1; numberA <= 9; numberA++)
        {
            for (numberB = numberA + 1; numberB <= 9; numberB++) // A < B
            {
                for (numberC = 1; numberC <= 9; numberC++)
                {
                    for (numberD = 1; numberD <= numberC; numberD++) // C > D
                    {
                        if (numberControl == numberA * numberB + numberC * numberD)
                        {

Поздрави :)

0
12/08/2019 16:54:29
Slavena_cholakova avatar Slavena_cholakova 8 Точки

Много благодаря за корекциите и поясненията. Да спомена, че не използвам този начин за отпечатване  с $ , поради факта, че не използвам VS, a онлайн  платформата https://dotnetfiddle.net/ , която не го поддържа,  a от там и не мога да дебъгвам. 

1
13/08/2019 13:59:16
Slavena_cholakova avatar Slavena_cholakova 8 Точки

Добра идея за оптимизация! Благодаря, но все пак нещо не е както трябва, защото се променя коректния резултат.

0
13/08/2019 15:08:03
arcobaleno avatar arcobaleno 14 Точки

Ето ти друго решение, резултатите излизат: https://pastebin.com/zQenKvbe

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