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

Complex Loops: 15. Number Pyramid- сравнение между C# и JavaScript

Здравейте, моля за помощ за следната задача. Много ми е странно, че на C# Judge ми дава 100/100, а на Java Script едва 25/100. Къде греша на Java Script, при положение, че използвам една и съща логика?

Задача: пирамида от числа

Да се отпечатат числата 1 … n в пирамида като в примерите по долу. На първия ред печатаме едно число, на втория ред печатаме две числа, на третия ред печатаме три числа и т.н. докато числата свършат. На последния ред печатаме толкова числа, колкото останат докато стигнем до n.

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

Вход Изход Вход Изход Вход Изход
7 1
2 3
4 5 6
7
5 1
2 3
4 5
10 1
2 3
4 5 6
7 8 9 10

 

Ето го решението на C#: Judge 100/100

using System;
                    
public class Program
{
    public static void Main()
    {
    
var n=int.Parse(Console.ReadLine());
var num=1;
 for( var row=1;row<=n;row++) {
      for( var col=1;col<=row;col++){
        Console.Write(num+ " ");
        num++;

if (num>n) {
    Console.WriteLine();
    return;

           }
       }


Console.WriteLine();
 }
}
}

 

 

На Java Script- Judge 25/100

function solve ([arg1]) {
let n=Number(arg1)
let num=1;
 for( let row=1;row<=n;row++) {
   for( let col=1;col<=row;col++){
   
  console.log(num+ " ");
  num++;

if (num>n) {
    return;}
   }
 }
    
  console.log(num);
 }

 

Тагове:
0
Programming Basics 19/05/2020 00:53:49
MartinBG avatar MartinBG 2766 Точки
Best Answer

console.log печата всичко и после слиза на нов ред. За печатане на повече от едно нещо на един ред може да се използва process.stdout.write:

function solve ([arg1]) {
    let n = Number(arg1)
    let num = 1;
    for(let row = 1; row <= n; row++) {
        for(let col = 1; col <= row; col++){
            process.stdout.write(num + " ")
            num++;
            if (num > n) {
                return;
            }
        }
        console.log();
    }
}

 

0
Elena123456 avatar Elena123456 30 Точки

Здравейте и благодаря отново!

Значи

process.stdout.write

е идентично на 

Console.Write в C#.

Ако го знаех това още преди два месеца щях да си спестя доста главоблъсканици, но поне за напред определено ще си ги.  :) Задължена съм Ви!

 

Сега вече и втория метод ми се получи- с двоен break , Judge 100/100 :)

function solve ([arg1]) {

    let n = Number(arg1)

    let num = 1;

    for(let row = 1; row <= n; row++) {

        for(let col = 1; col <= row; col++){

            process.stdout.write(num + " ")

            num++;

            if (num > n) {

                break;

            }

        }

        console.log();
      if (num > n) {

                break;

            }


    }

}

 

Срещам затруднение с извикването на функцията в конзолата. Това нормално ли е? Може би на Visuаl Studio няма да е така? Вече за Fundamental курса ще съм си го инсталирала. :)

solve([10])

ReferenceError: process is not defined

debugger eval code:11:13

Поздрави!

1
19/05/2020 09:26:48