Професионална програма
Loading...
+ Нов въпрос
inaivanova1990 avatar inaivanova1990 14 Точки

6. Сватбени места Nested loops - More exercises

Здравейте, стигнах до някъде в тази задача, но не мога да продължа... Някой ако може да ми допълни задачата. 

https://pastebin.com/1qNsZ9xC

1.Сватбени места

Младоженците искат да направят списък кой на кое място ще седи на сватбената церемония. Местата са разделени на различни сектори. Секторите са главните латински букви като започват от A. Във всеки сектор има определен брой редове. От конзолата се чете броят на редовете в първия сектор (A), като във всеки следващ сектор редовете се увеличават с 1. На всеки ред има определен брой места - тяхната номерация е представена с малките латински букви. Броя на местата на нечетните редове се прочита от конзолата, а на четните редове местата са с 2 повече.

Вход      

От конзолата се четaт 3 реда:

  • Последния сектор от секторите - символ (B-Z)
  • Броят на редовете в първия сектор - цяло число (1-100)
  • Броят на местата на нечетен ред - цяло число (1-24)

Изход

Да се отпечата на конзолата всяко място на отделен ред по следния формат:
{сектор}{ред}{място}

Накрая трябва да отпечата броя на всички места.

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

Вход

Изход

Обяснения

B

3

2
 

A1a

A1b

A2a

A2b

A2c

A2d

A3a

A3b

B1a

B1b

B2a

B2b

B2c

B2d

B3a

B3b

B4a

B4b

B4c

B4d

20

Първият въведен символ е ‘В’, който представлява означението на последният сектор, който ще има в залата.

На вторият ред получаваме броя на редовете в първия сектор (A) - 3.

Накрая получаваме броя на местата в нечетните редове - 2.

Първият принтиран символ е сектора, в случая A или B;

Вторият символ представлява реда. В сектор ‘А’ има общо 3 реда.
Местата на нечетен ред са 2 и ще бъдат представени с буквите a и b, а на четен са с 2 повече = 4 - a, b, c, d. Генерираните места за сектор А са:

A1a - нечетен ред - имаме две места  първо място - а

A1b -  второ място - b

A2a -  четен ред - имаме общо 4 места, първо място - а

A2b -  второ място - b

A2c -  трето място - c

A2d -  четвърто място - d

A3a  - нечетен ред - имаме две места, първо място - а

A3b -  второ място - b

Местата за сектор B се генерират по същия начин. По условие във всеки следващ сектор имаме с 1 ред повече. Тоест в сектор ‘B’ ще имаме 4 реда, вместо 3.

Печатаме всички места за сектор B.

Накрая печатаме броя на местата - в случая 20.

C

4

2

A1a

A1b

A2a

A2b

A2c

A2d

A3a

A3b

A4a

A4b

A4c

A4d

B1a

B1b

B2a

B2b

B2c

B2d

B3a

B3b

B4a

B4b

B4c

B4d

B5a

B5b

C1a

C1b

C2a

C2b

C2c

C2d

C3a

C3b

C4a

C4b

C4c

C4d

C5a

C5b

C6a

C6b

C6c

C6d

44

 

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

Yeah, this exercise is a bit tricky but good training for nested for-loops.  

Best,

function solve(input) {
    let lastSector = input.shift();
    let initialRowCounter = Number(input.shift());
    let seatCounter = Number(input.shift());
    // let firstSectorNum = Number(input.shift());
    //let numOddSeats = Number(input.shift());
    let firstCharNum = 'a'.charCodeAt(0);
    let totalSeats = 0;

    let firstChar = 'A';
    let str = input;
    for (let i = firstChar.charCodeAt(0); i <= lastSector.charCodeAt(0); i++) {
        for (let row = 1; row <= initialRowCounter; row++) {
            if (row % 2 !== 0) {
                for (let j = firstCharNum; j < firstCharNum + seatCounter; j++) {
                    let currentLetter = String.fromCharCode(i);
                    let currentSmallLetter = String.fromCharCode(j);
                    console.log(`${currentLetter}${row}${currentSmallLetter}`);
                    totalSeats++;
                }
            } else {
                for (let j = firstCharNum; j < firstCharNum + seatCounter + 2; j++) {
                    let currentLetter = String.fromCharCode(i);
                    let currentSmallLetter = String.fromCharCode(j);
                    console.log(`${currentLetter}${row}${currentSmallLetter}`);
                    totalSeats++;
                }
            }
        }

        initialRowCounter++;

        // for (let j = 1; j <= firstSectorNum; j++) {

        //     str = (String.fromCharCode(i) + " " + j);
        //     if (j % 2 !== 0) {
        //         console.log(str);
        //         console.log(str);
        //     } else if (j % 2 === 0) {
        //         console.log(str);
        //         console.log(str);
        //         console.log(str);
        //         console.log(str);

        //     }
        // }
    }
    console.log(totalSeats);

}


solve(['B', '3', '2']);
solve(['C', 4, 2]);

 

0
inaivanova1990 avatar inaivanova1990 14 Точки

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

1