08. Sunglasses Java script
Здравейте, моля за корекция в кода ми, тъй като Judge ми дава само 42/100 и програмата ми работи правилно само с четни числа, а при нечетните не ми печата средната част- ("|||").
Задачата е следната:
Пример: слънчеви очила
Да се напише програма, която въвежда цяло число n (3 ≤ n ≤ 100) и печата слънчеви очила с размер 5*n x n като в примерите:
Вход | Изход | Вход | Изход |
---|---|---|---|
3 | ****** ****** *////*|||*////* ****** ****** |
4 | ******** ******** *//////*||||*//////* *//////* *//////* ******** ******** |
Вход | Изход |
---|---|
5 |
|
function glases([arg1]) {
let n=Number(arg1);
let frame=""
let frame1= "|"
console.log("*".repeat(2*n)+" ".repeat(n)+"*".repeat(2*n))
for(let row=1;row<=n-2;row++) {
if(n%2==1 && row==n/2) {
frame=frame1.repeat(n)}
else if(n%2==0 && row==(n/2-1)) {
frame=frame1.repeat(n) }
else
{frame=" ".repeat(n)}
console.log(`*${"/".repeat(2*n-2)}*${frame}*${"/".repeat(2*n-2)}*`)
}
console.log("*".repeat(2*n)+" ".repeat(n)+"*".repeat(2*n))
}
Благодаря за отговора! Зная, че задачата може да се реши с Math.ceil или с Math.trunc.
Бих искала да разбера и къде греша в моята логика и защо judge ми дава само 42/100.
С if конструкция и обикновено делене изолирам един единствен ред от цикъла, на който да печатам средната част, а за другите редове в цикъла си печатам space. Ако n е четно число се печата правилно фигурата.
Къде е причината тази логика да не върви с нечетно число и да ми пропуска печатането на средната част?
Благадаря!
Поздрави!
ок, в твоя случай само малко трябва да промениш 1 ред (вместо n, взимай n-1 при нечетни n):
if(n%2==1 && row==(n-1)/2) {
Благодаря! :)