Loading...
thelad43 avatar thelad43 14 Точки

[Programming Basics] Изпит 7 май 2017, Задача 5. Корона

Не успявам да реша тази задача. Благодарен съм ако някой качи код с коментари . 

Благодаря предварително !

Задача 5. Корона  - Изпит по "Програмиране за начинаещи" – 7 май 2017 :

Judje + Условие : https://judge.softuni.bg/Contests/Practice/Index/540#4

Тагове:
0
Programming Basics 12/05/2017 14:30:58
fbinnzhivko avatar fbinnzhivko 1586 Точки

https://pastebin.com/7fQ6T2eP
Да бъда честен на тази задача най -малко може да се обяснява според мен.
Просто трябва на намериш зависимотта като ползваш лист и химикал и пробваш докато разбереш логиката която ти трябва.

0
aggeorgiev avatar aggeorgiev 326 Точки

Примерно:

първия ред - уникален : пример -->@  (ширина - 3) / 2 @ (ширина - 3) / 2 @

втория ред - уникален

следващите няколко реда в цикъл : ' * '  '  '  * i  ' * ' 2 * i -1 ' * '  '  '  * i  ' * '

 пред пред пред последен - уникален

пред пред последен - уникален

 пред последен и последен  - " * " (по ширината)

това е по спомен

0
aggeorgiev avatar aggeorgiev 326 Точки
Това е моето решение от изпита (не е много красиво но работи)


import java.util.Scanner;

/*** Created by AiKiHack on 07-05-2017 13:14 in project exam_07_05_2017 ***/

public class e_05_crown {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int input = Integer.parseInt(cin.nextLine());
        int line = 2*input - 1;
        String firstRow = "@" + newString(" ", (line-3)/2) + "@" + newString(" ", (line-3)/2) + "@";
        System.out.println(firstRow);
        String crownTop = "**" +  newString(" ", (line-5)/2) + "*" + newString(" ", (line-5)/2)  + "**";
        System.out.println(crownTop);
        int midRows = (input/2) - 2;
        for (int i = 1; i <= midRows; i++) {
            int midDotts = 2 * i - 1;
            int spaces = ((line - 6) - midDotts - (2*i)) / 2;
            String middle = "*" + newString(".", i) + "*" + newString(" ", spaces) + "*" + newString(".", midDotts) + "*" + newString(" ", spaces) + "*" + newString(".", i) + "*";
            System.out.println(middle);
        }
        System.out.println("*" + newString(".", input/2-1) + "*"  + newString(".", line-4-(input/2)*2+2) + "*" + newString(".", input/2-1) + "*");
        int dots = input / 2;
        int stars = ((line - 3) / 2) - dots;
        String beforeLast = "*" + newString(".", dots) + newString("*", stars) + "." + newString("*", stars) + newString(".", dots) + "*";
        System.out.println(beforeLast);
        System.out.println(newString("*", line));
        System.out.println(newString("*", line));
    }

    public static String newString(String symbol, int n) {
        StringBuilder a = new StringBuilder("");
        for (int i = 0; i < n; i++) {
            a.append(symbol);
        }
        return a.toString();
    }
}
0
athristov avatar athristov 32 Точки

Здрасти колега, ето и моето решение. Опитах се да реша задачата без да я разбивам на много части, но се оплетох яко и не се получи нищо. Затова я разбих възможно на най-много части и с малко повечи сметки ми се получиха нещата, работи супер при четни числа.

https://pastebin.com/UkKEWCdT

 

0
11/05/2017 09:56:06
ivan.tod.ivanov avatar ivan.tod.ivanov 9 Точки

Здравей,

 

Това е моето решение на Java (това предполагам не те притеснява); https://pastebin.com/Jje7feGH .

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

Първите два реда са уникални с зависимост на празните места.

Следва FOR цикъл който обхваща ((n / 2) - 2) реда. И накрая му съм показал кои променливи се увеличават и кои намаляват.

След това съм принтирал третия ред от долу на горе.

И най- накрая съм описал еднаквите два последни реда.

 

P.S. Много е трудно да се даде обяснение при положение, че незнаеш кое е неясно

0
thelad43 avatar thelad43 14 Точки

Благодаря Ви, на всички .

0
thelad43 avatar thelad43 14 Точки

Единственото, което ме затрудни на тази задача е това, че не успях да намеря тази зависимост : (weight - 3) / 2 .

Това са броят интервали на първия ред. 

 

0
staho avatar staho 8 Точки

Ето и едно решение със Стринг. Короната е разделена на 3 части, като всичко се набутва в стринг-а и накрая се печата.

https://pastebin.com/XxL9DaKg

0
11/05/2017 18:13:03
lenkin avatar lenkin 1 Точки

https://pastebin.com/cmzba80k ето моето решение.

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