Тема 3: Данни и оператори
http://vivacognita.o...?id=4§ion=4
Публикувано 09 февруари 2016 - 20:34
Публикувано 11 февруари 2016 - 10:12
В състезателната система вече са поставени две задачи - lucky и ruler, отнасящи се към разглежданата тема.
Публикувано 12 февруари 2016 - 15:18
Имам въпрос за задачата "Щастлив номер". Програмата ми работи и дава верни отговори само като задам входните данни с интервали между тях.
Как да определя, че числата на входа са едноцифрени?
Публикувано 12 февруари 2016 - 15:36
И при мен е така. Трябва да ги въведа или с интервал или на нови редове. Не ми е ясно как става.
Публикувано 12 февруари 2016 - 16:03
И при мен е така. Трябва да ги въведа или с интервал или на нови редове. Не ми е ясно как става.
Според мен така се получава, защото когато въведените стойности са цели числа, трябва да е ясно къде свършва едното число и къде започва другото.
Публикувано 12 февруари 2016 - 17:59
Според мен така се получава, защото когато въведените стойности са цели числа, трябва да е ясно къде свършва едното число и къде започва другото.
Разбрах къде е грешката: Най-напред и цифрите в номера са дефинирани от тип char и след това се преобразуват в числа с:
int i=(int)c-(int) '0'
Публикувано 13 февруари 2016 - 02:05
Имам въпрос относно задачата ruler. Не мога да разбера условието точно, а именно в частта:
"... Талантливчо поставил върху линийката три летвички, които изработил в часовете по труд и техника. Всяка летвичка поставял на произволно деление и записвал края и дължината й."
И след това примерните данни:
Вход
3 9
8 12
6 15
Изход
4
Как е възможно краят на линийката да е върху третото деление, а дължината й да е 9? Или Талантливчо ги поставя и преди нулата?
И даденият изход 4 ме озадачава. Единствено ако са в обратен ред: дължина на летвичката и край, се получава този изход.
Моля за разяснение, освен ако предвид късния час не мога да се ориентирам правилно. Благодаря ви за времето. Чудесни лекции до момента ни предоставяте.
Публикувано 13 февруари 2016 - 10:43
При задача ruler, в описанието на входа й ясно е написано в какъв ред се тълкуват числата във входа: първо е дължината, след това - координата на края на летвичката.
Често се среща в условията на състезателните задачи в началото на текста им да има "насипно" описание на нещата. Идеята е това донякъде да моделира реална житейска ситуация. Но в раздела за описание на входа винаги описанието е точно.
Тази задача в същия й вид е давана на реално състезание за петокласници преди няколко години.
Публикувано 13 февруари 2016 - 16:00
Благодаря за незабавния отговор, наистина трябва да се четат условията внимателно.
Публикувано 13 февруари 2016 - 22:53
Разбрах къде е грешката: Най-напред и цифрите в номера са дефинирани от тип char и след това се преобразуват в числа с:
int i=(int)c-(int) '0'
Направих го по този начин - работи. Но при качване в състезателната система ми дава 0 точки. Не мога да разбера защо?
Публикувано 14 февруари 2016 - 09:07
Открих си "глупавата" грешка- написала съм yes и no с малки букви
Публикувано 16 февруари 2016 - 11:43
Проверката ми за високосна година не дава очаквания резултат, въпреки че точно преписах условието от презентацията.
G%400 == 0 не изключва години като 1900. Целия фрагмент е
Публикувано 17 февруари 2016 - 08:16
Година 1900 не е високосна и даденият логически израз правилно пресмята.
Публикувано 18 февруари 2016 - 22:11
Имам въпрос за задачата "Щастлив номер". Програмата ми работи и дава верни отговори само като задам входните данни с интервали между тях.
Как да определя, че числата на входа са едноцифрени?
Тъй като няма интервали между цифрите, те се приемат като число - в случая 4-цифрено цяло. Един вариант е да се използва помощна променлива, която да получи за стойност това число, а след това да се отделят цифрите му и да се дадат като стойности на други променливи. Ако тя е n, тогава:
e=n/1000;n=n%1000;
f=n/100;n=n%100;
g=n/10;h=n%10;
След това си работите с така заредените стойности.
Публикувано 19 февруари 2016 - 10:30
Тъй като няма интервали между цифрите, те се приемат като число - в случая 4-цифрено цяло. Един вариант е да се използва помощна променлива, която да получи за стойност това число, а след това да се отделят цифрите му и да се дадат като стойности на други променливи. Ако тя е n, тогава:
e=n/1000;n=n%1000;
f=n/100;n=n%100;
g=n/10;h=n%10;След това си работите с така заредените стойности.
Благодаря за отговора, но аз още миналата седмица реших задачата.