Задача -07. Primes in Given Range,. Methods and Debugging - Excercises
Как да махна досадната запетая която се появява накрая ?
Накакъв метод да се маха последния символ от изхода?
http://pastebin.com/paaA38up
Как да махна досадната запетая която се появява накрая ?
Накакъв метод да се маха последния символ от изхода?
http://pastebin.com/paaA38up
Условието на задачата е да се връщат стойностите в List<>.
Но в твоят случай, можеш да си направиш един флаг (булева променлива), която да се промени при първото открито просто число.
И преместваш печатането на запетайката преди печатането на числото. Ако е първото открито просто число - не я печаташ, после я печаташ винаги преди останалите открити прости числа.
Няма такъв метод. Дали е последен символ от изхода е недерминистично, т.е. програмата не знае кой ще е последният символ.
Вариантът ти е да запишеш целия изход в един низ и да не отпечатваш последния му символ. Тъй като низовете са масиви от символи, можеш да си позволиш лавиране с позициите на символите в низа. Наличието на готови методи за боравене с низове също е плюс. Има дори такъв за премахване на последния символ от даден тип (потърси метода в Google).
Имаш и други варианти. Един от тях е да запишеш всички числа в масив, а след това да съединиш масива по разделител запетая (има готов метод за съединяване на масив). Функцията, която го прави ще се погрижи да не слага разделителя след последния елемент.
Вторият вариант, ако трябва да сме честни е по-бавен, тъй като имаш едно обхождане на числата, докато ги вкараш в масив. После имаш друго обхождане върху вече резултатния масив, за да го отпечаташ.
Щом си на задачки от Programming Fundamentals трябва според мен да забравиш готовите функции, за да се научиш на мислене. Да, не знаем кой е последният отпечан символ, но със сигурност знаем кой е първия такъв. Не може ли да отпечатваш всички прости числа със запетая преди тях? И само първото число без такава.
"Не може ли да отпечатваш всички прости числа със запетая преди тях? И само първото число без такава." -в задачата се иска да отпечатам всички прости числа в даден рейндж ,. как да му кажа започни от първото и свърши на последното (foр цикъл ми идва на акъла) ся въпросите може да са глупави но все пак сега се учим ,.
Ами отново става въпрос за логика (булева). Тя в нашия случай гласи следното:
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
Мерси ,. това е много полезно!! булевите стойности ми бяха доста мъгливи ,.. ще си го запиша даже
Аз със лист съм го направил,. интересно ми е тук как става ,. два часа се чудя и пробвам варианти,. напиши твоето решение с тази булева ,. само двата реда код да видя за какво иде реч :)
Ето го:
http://pastebin.com/5iDB4iMm
Мерси ,. Явно трябва да решавам повече :)