Софтуерно Инженерство
Loading...
+ Нов въпрос
Pilgrimage avatar Pilgrimage 515 Точки
Best Answer

Условието на задачата е да се връщат стойностите в List<>.

Но в твоят случай, можеш да си направиш един флаг (булева променлива), която да се промени при първото открито просто число.

И преместваш печатането на запетайката преди печатането на числото. Ако е първото открито просто число - не я печаташ, после я печаташ винаги преди останалите открити прости числа.

0
davichonov365 avatar davichonov365 127 Точки

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

0
davichonov365 avatar davichonov365 127 Точки

Мерси ,. Явно трябва да решавам повече :)

0
RoYaL avatar RoYaL SoftUni Team Trainer 6883 Точки

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

Вариантът ти е да запишеш целия изход в един низ и да не отпечатваш последния му символ. Тъй като низовете са масиви от символи, можеш да си позволиш лавиране с позициите на символите в низа. Наличието на готови методи за боравене с низове също е плюс. Има дори такъв за премахване на последния символ от даден тип (потърси метода в Google).

Имаш и други варианти. Един от тях е да запишеш всички числа в масив, а след това да съединиш масива по разделител запетая (има готов метод за съединяване на масив). Функцията, която го прави ще се погрижи да не слага разделителя след последния елемент.

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

Щом си на задачки от Programming Fundamentals трябва според мен да забравиш готовите функции, за да се научиш на мислене. Да, не знаем кой е последният отпечан символ, но със сигурност знаем кой е първия такъв. Не може ли да отпечатваш всички прости числа със запетая преди тях? И само първото число без такава.

1
davichonov365 avatar davichonov365 127 Точки

"Не може ли да отпечатваш всички прости числа със запетая преди тях? И само първото число без такава." -в задачата се иска да отпечатам всички прости числа в даден рейндж ,. как да му кажа започни от първото и свърши на последното (foр цикъл ми идва на акъла) ся въпросите може да са глупави но все пак сега се учим ,. 

0
RoYaL avatar RoYaL SoftUni Team Trainer 6883 Точки

Ами отново става въпрос за логика (булева). Тя в нашия случай гласи следното:

1. Нека F е отговорът на въпроса "Намерил ли съм първото просто число от редицата"

2. Нека преди да започна да търся числа, отговорът в F да е Неистинност (Не, False...)

3. Започвам да търся в интервала за прости числа

4. Когато намеря просто число:

4.1. Проверявам дали отговорът в F е неистинност (това означава, че съм се натъкнал на първото просто). Ако е такъв, не печатам запетая отпред. В противен случай печатам запетая (защото не е първото просто).

4.2. Нека тогава отговорът в F стане истинност (от тук нататък вече пред всяко трябва да се печата запетая)

5. Повтори търсенето от точка 3 и операцията от точка 4, докато интервалът бъде обходен


 

F = False;
for (N in range):
    if N is Prime:
        if F == False:
           Print N
        else:
           Print ", " + N
        F = true

 

 

0
davichonov365 avatar davichonov365 127 Точки

Мерси ,.  това е много полезно!! булевите стойности ми бяха доста мъгливи ,.. ще си го запиша даже 

0
05/10/2016 17:21:52