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) {
Благодаря! :)