Loading...

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

Elena123456 avatar Elena123456 235 Точки

06. Group Name- Exam 23.07.2017 JavaScript, C#

Моля за помощ за следната задача. Логиката ми е правилна и получавам правилното число: броя на генерираните имена, но срещам затруднение при самото печатане на имената.

Условие на задачата:

Танцува група сменя своя ръководител и съответно трябва да избере ново име. За целта всеки един танцьор дава предложение. Предложението винаги се дава по азбучен ред от първата буква на азбуката до въведената.

Името на групата съдържа и цифра. Винаги цифрата започва от 0 до въведената.

Имената се дават по азбучен ред.

Да се изчисли колко предложения са били дадени преди да се достигне до името на групата, като се има предвид, че дължината на името винаги е пет символа и винаги първия е главна буква, а последващите три символа са малка буква, като последния символ е число.

И аз добавям от себе си към условието на задачата :) - да се напечатат всички възможни генерирани имена.

Не успявам да печатам символите, а единствено числото безброй пъти, а "process.stdout.write' изобщо не го разпознава.

Ползвам- https://playcode.io/ и конзолата. И на двете печатането е неуспешно, като на конзолата печата първите четири символи, като '?', а на средата просто ги пропуска и печата само числото.

 

function generateName(args) {

let firstSymbol=args[0]

let secondSymbol=args[1]

let thirthSymbol=args[2]

let fourthSymbol=args[3]

let fivethSymbol=Number (args[4])

 

let counter=0

for(let index='A'.charCodeAt(0);index<=firstSymbol.charCodeAt(0);index++) {

for(let index='a'.charCodeAt(0);index<=secondSymbol.charCodeAt(0);index++) {

for(let index='a'.charCodeAt(0);index<=thirthSymbol.charCodeAt(0);index++) {

for(let index='a'.charCodeAt(0);index<=fourthSymbol.charCodeAt(0);index++) {

for(let index=0;index<=fivethSymbol;index++) {

console.log(`${String.fromCharCode(firstSymbol)}${String.fromCharCode(secondSymbol)}${String.fromCharCode(thirthSymbol)}${String.fromCharCode(fourthSymbol)}${fivethSymbol}`)

counter++

}

}

}

}

}

counter--

console.log(counter)

 

}

generateName(['K','a','b','c',5])

Изход: 395



И още един въпрос- за C# какъв е метода за да се вземa Char code, ако реша да пренапиша задачата на C#? :)



 

Тагове:
0
Programming Basics 27/05/2020 21:06:17
MartinBG avatar MartinBG 4803 Точки
Best Answer

В кода на JS е използван index като име на итератора и за 5-те вложени цикъла, което означава, че на всяко ниво е достъпен само този, който е деклариран за това ниво (т.е. в 5-ия цикъл чрез index достъпваме само 5-ия).

Имаше проблем и с принтирането на символа, който ни трябва.

Оправен код на цикъла:

  for (let first = 'A'.charCodeAt(0); first <= firstSymbol.charCodeAt(0); first++) {
    for (let second = 'a'.charCodeAt(0); second <= secondSymbol.charCodeAt(0); second++) {
      for (let third = 'a'.charCodeAt(0); third <= thirthSymbol.charCodeAt(0); third++) {
        for (let fourth = 'a'.charCodeAt(0); fourth <= fourthSymbol.charCodeAt(0); fourth++) {
          for (let fifth = 0; fifth <= fivethSymbol; fifth++) {
            console.log(`${String.fromCharCode(first)}${String.fromCharCode(second)}${String.fromCharCode(third)}${String.fromCharCode(fourth)}${fifth}`);
            counter++;
          }
        }
      }
    }
  }

Отпечатва:

Aaaa0
Aaaa1
Aaaa2
.
.
.
Kabc3
Kabc4
Kabc5

 

EDIT:

Това е оправеният код на C#.

using System;

public class Program
{
    public static void Main()
    {
        var firstSymbol = Console.ReadLine()[0];
        var secondSymbol = Console.ReadLine()[0];
        var thirthSymbol = Console.ReadLine()[0];
        var fourthSymbol = Console.ReadLine()[0];
        var fivethSymbol = int.Parse(Console.ReadLine());

        var counter = 0;

        for (var index = 'A'; index <= firstSymbol; index++)
        {
            for (var index1 = 'a'; index1 <= secondSymbol; index1++)
            {
                for (var index2 = 'a'; index2 <= thirthSymbol; index2++)
                {
                    for (var index3 = 'a'; index3 <= fourthSymbol; index3++)
                    {
                        for (var index4 = 0; index4 <= fivethSymbol; index4++)
                        {
                            Console.WriteLine("{0}{1}{2}{3}{4}", index, index1, index2, index3, index4);
                            counter++;
                        }
                    }
                }
            }
        }

        counter--;

        Console.WriteLine(counter);
    }
}

Освен вземането на charот входните данни, имаше грешки в рейнджа на вътрешните цикли ( < вместо <=) и принтраните символи.

2
28/05/2020 14:05:07
Elena123456 avatar Elena123456 235 Точки

Благодаря! 

На C# за цикъла съм използвала index1, index2, index3, index4, index5, но отново не ми печата. Предполагам, че и тук ще ми трябва метод за да взема CharCode.

Знам, че мога да направя ето такъв цикъл само със символи: for(char ch='a';ch<'z';ch++), но мисля,че тук не ми върши работа, защото не зная кой символ стой зад "firstSymbol, secondSymbol и т.н.  Правилно ли разсъждавам?

По-горе съм показала кода на задачата на C#.

1
28/05/2020 09:00:32
MartinBG avatar MartinBG 4803 Точки

@Elena123456

Ъпдейтнах си отговора и за када на C#.

1
Elena123456 avatar Elena123456 235 Точки

Огромно благодаря! :)

Има ли шанс, когато чета char да се променя числото в квадратните скоби или винаги се запазва числото " 0" и при двата езика? Това е първата ми такава задача, в която се налага прочитане на char.

Поздрави!

1
MartinBG avatar MartinBG 4803 Точки

@Elena123456

Индекса и при двата езика може да е по-голям от нула, стига да е по-малък от броя символи в стринга (индексите са от 0 до length-1 включително)

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