Loading...
RifatCholakov avatar RifatCholakov 53 Точки

Помощ за задча

Може ли някой да ми обясни този ред:

if (i != (n - 1) /2 - 1) {
    System.out.print(strRepeated(" ", n));
} else {
    System.out.print(strRepeated("|", n ));

от решението на тази задача:

http://i.imgur.com/yFj5WW2.png

Решение:

import java.util.Scanner;

/**
 * Created by WinOfficially on 11/14/2016.
 */
public class p08_Sunglasses {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        int n = Integer.parseInt(console.nextLine());

        System.out.println(strRepeated("*", 2 * n) + strRepeated(" ", n) + strRepeated("*", 2 * n));

        for (int i = 0; i < n - 2; i++) {
            System.out.print("*" + strRepeated("/", (n * 2) - 2) + "*");
            if (i != (n - 1) /2 - 1) {
                System.out.print(strRepeated(" ", n));
            } else {
                System.out.print(strRepeated("|", n ));
            }
            System.out.print("*" + strRepeated("/", (n * 2) - 2) + "*");
            System.out.println("");
        }

        System.out.println(strRepeated("*", 2 * n) + strRepeated(" ", n) + strRepeated("*", 2 * n));



    }
    static String strRepeated (String strToRepeat, int count){
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < count; i++) {
            sb.append(strToRepeat);
        }
        return sb.toString();
    }
}

 

Как подявалоте се намира средата?

Защо за да намерим средата трябва от n да извадя 1 после да го разделя на 2 и пак да извадя 1 от полученото число?

Дори и в лекция не обеснява защо това го празви.

Може ли някой някой да ми обясни, че гледам кода, но немога да схвана защо се прави това.

 

Тагове:
0
Programming Basics 14/11/2016 22:43:58
e.petrova avatar e.petrova 94 Точки
Best Answer

Формулата важи, само когато първият и последният ред са извадени от цикъла. Има и други варианти за тази задача, единият е с решаване точно само с един цикъл, като средата се намира по формулата row = height / 2, където row е реда, на който се намираш, и height - цялата дължина на фигурата( входното число ). И по подобен начин, може да се реши с горната формула за нечетни числа, а за четни се добавя минус едно, тоест row = (height / 2) - 1. Варианти има много, избери си един и я реши. : )

0
14/11/2016 23:19:57
RifatCholakov avatar RifatCholakov 53 Точки

Thank you so much, how can I not love you!

Fast response and good explanation.

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