Сб, 21.10.2017, 09:55
Форум інформатиків України
Головна Реєстрація Вхід
Вітаю Вас, Гість · RSS
Вітання на форумі
Незнайомець
Вітаємо на форумі,
Незнайомцю!

   
зареєструйтесь
Перед реєстрацією обов’язково прочитайте:
Оновлення Учасники Пошук
Особисті повідомлення
Видавництво ’’Аспект’’ Видавництво

Сторінка 2 з 3«123»
Модератор форуму: Ktara, Bandalak, НІКОЛЯ, volevikt 
Форум інформатиків » РОЗДІЛ ІІІ: МЕТОДИКА, ЗАСОБИ ВИКЛАДАННЯ ІНФОРМАТИКИ » 3.6 Методика викладання інформатики згідно програми » Розв’язування задач з розділу "Рядкові величини" (Тільки конкретика.)
Розв’язування задач з розділу "Рядкові величини"
Ковальчук_Олександр Дата: Нд, 29.11.2009, 22:09 | Повідомлення № 1
Ветеран спілкування
Повідомлень: 3620
Нагороди: 17
Рейтинг: 192
В даній темі пропоную розв’язувати задачі з розділу "Рядкові величини".
Будемо писати цікаві умови задач і хто знає, пише розв’язок.
Обов’язкове правило теми: розв’язок повинен містити текст програми на мові програмування Паскаль або іншій. Допускаються коментарі щодо розв’язку, блок-схеми, НАМ. Важливо писати програми максимум оптимально. Не можна публікувати умови наступної задачі до тих пір, поки не буде розв’язана задана автором повідомлення задача.
Прохання виконувати дане правило, інакше це прирівнюватиметься до порушень правил форуму.
Не скупіться ділитись досвідом, роблячи тим самим внесок в розвиток форуму!

Шановні форумчани! Повідомлення, які не відповідають темі або несуть некорисний зміст будуть видалятися без попередження!!!

vitert Дата: Пн, 30.11.2009, 18:47 | Повідомлення № 16
Тут живе...
Повідомлень: 174
Нагороди: 1
Рейтинг: 22
Quote (alex)
Слідуючи вашій логіці то і початкова задача п. Ковальчуком розв'язана невірно так, як не передбачено , що текст може закінчуватись пропуском.

Так. Якщо ми розв'язуємо задачу так як вона написана, не додумуючи самі, що мав на увазі автор, і не намагаючись його виправити. Використовуючи поняття тексту як набору символів, а слова як набору символів відмінних віб пробіла - з одного краю, або з обох у якого стоїть пробіл, і все ні про правила набору тексту ні про щось інше тут нічого не сказано.
Quote (alex)
Задача не спрочується, тим що добавляється одна команда розгалуження, але вона відповідатиме (повторюю) принципу повноти.

Якщо сказано, що починається і закінчується пробілом, і між словами стоїть один пробіл, то як на мене цю задачу простіше розв'язувати, не говорю про те наскільки. А щодо принципу повноти, то я компетентний, щоб стверджувати щось категорично, але все ж не погоджусь із вами я думаю що задача повна. Що до того, що той хто її розв'язує може не врахувати всі випадки, то це його проблеми.
Quote (alex)
Було декілька випадків коли учасники Всеукраїнської олімпіади розвязували дві різні задачі при одній умові. І кожен з них був правий (повірте жюрі було достатньо компетентне).

Тут, як на мене, в умові було порушено принцип однозначності, а не повноти про який ви говорили, а задача, про яку ми говоримо однозначна. Просто давайте дивитись на неї з точки зору учня а не жюрі, є задача її потрібно розв'язати, автор сказав все, що хотів сказати, я б розв'язував розглядаючи всі випадки, і ніяких питань додаткових в такому випадку не виникає (З чого починається, скільки пропусків...).
І ще, мова йде 1 конкретну задачу а не про фомулювання олімпіаних задач, це окрема тема.


Відредаговано: vitert - Пн, 30.11.2009, 18:55
volodschool2 Дата: Пн, 30.11.2009, 20:09 | Повідомлення № 17
Досвідчений учасник
Повідомлень: 1361
Нагороди: 12
Рейтинг: 267
Quote (vitert)
мова йде 1 конкретну задачу а не про фомулювання олімпіаних задач, це окрема тема

Може тема і окрема, але в будь-якому випадку, коли зайшла мова про розв’язування задач, то й умови давайте будемо старатись формулювати так, як це робиться на олімпіадах, щоб не було порушено
Quote (vitert)
принцип однозначності
. Тоді не буде виникати запитань по уточненню умови і можна буде
Quote (Ковальчук_Олександр)
публікувати умови наступної задачі
vitert Дата: Вт, 01.12.2009, 23:14 | Повідомлення № 18
Тут живе...
Повідомлень: 174
Нагороди: 1
Рейтинг: 22
Quote (vitert)
А щодо принципу повноти, то я компетентний, щоб стверджувати щось категорично, але все ж не погоджусь із вами я думаю що задача повна.

Мав на увазі - не компетентний.
KulAlex Дата: Пт, 04.12.2009, 11:13 | Повідомлення № 19
Знаток програмування
Повідомлень: 326
Нагороди: 6
Рейтинг: 19
Quote (Ковальчук_Олександр)
Ввести довільний текст. У даному тексті підрахувати кількість букв А і Б. Якщо букв А більше, ніж букв Б, то в тексті знищити всі букви Б, інакше - А

Мій розв'язок

var s:string;
c:char;
i,k1,k2:integer;
l:byte absolute s;
begin
readln(s);
for i:=1 to l do
begin
if s[i]='А' then inc(k1);
if s[i]='Б' then inc(k2)
end;
if k1>k2 then c:='Б' else c:='А';
while pos(c,s)<>0 do
delete(s,pos(c,s),1);
writeln(s)
end.

Quote (Ковальчук_Олександр)
for i:=1 to length(s) do
if s[i]='Б' then
delete(s,i,1);

На мою думку це не зовсім вірно. Ви змінюєте межі циклу в самому циклі. Це то саме, що рубати гіляку на які сидите.

alex Дата: Пт, 04.12.2009, 15:03 | Повідомлення № 20
Активний учасник
Повідомлень: 586
Нагороди: 1
Рейтинг: 17
Quote (KulAlex)
На мою думку це не зовсім вірно.

Це не допустиме використання циклу з параметром так, як можливий вихід за рамки масиву.
Хоча Паскаль і не покаже помилку, з точки зору логіки це груба помилка.
Nevirkovets Дата: Пт, 04.12.2009, 16:32 | Повідомлення № 21
Написав MifTests
Повідомлень: 266
Нагороди: 0
Рейтинг: 12
Quote (alex)
так, як можливий вихід за рамки масиву

не бачу можливості виходу за рамки масиву. як би перед циклом
a:=length(s);
for i:=1 to a do
.....

тоді бачу...

Quote (KulAlex)
Ви змінюєте межі циклу в самому циклі.

оце є неправильно ... бо якщо дві підряд букви то одна не видалиться. Змінна і то збільшиться на 1, а букви посунуться ...
alex Дата: Пт, 04.12.2009, 16:49 | Повідомлення № 22
Активний учасник
Повідомлень: 586
Нагороди: 1
Рейтинг: 17
Quote (Nevirkovets)
не бачу можливості виходу за рамки масиву. як би перед циклом
a:=length(s);
for i:=1 to a do

Не згоден. При знищенні хоча б одного символа довжина стрічки зменшується на один.
Наприклад було 10 символів, стало 9. А цикл всеодно передбачає 10 прокруток і на останній прокрутці
буде звернення до 10 символа, якого в стрічці уже нема. Той що був 10 став після знищення одного 9.

Nevirkovets Дата: Пт, 04.12.2009, 16:58 | Повідомлення № 23
Написав MifTests
Повідомлень: 266
Нагороди: 0
Рейтинг: 12
Quote (alex)
Не згоден. При знищенні хоча б одного символа довжина стрічки зменшується на один.
Наприклад було 10 символів, стало 9. А цикл всеодно передбачає 10 прокруток і на останній прокрутці
буде звернення до 10 символа, якого в стрічці уже нема. Той що був 10 став після знищення одного 9.

Вже погоджуюсь ... я думав що іде переобчислення length(s); а виходить шо ні ....
Ковальчук_Олександр Дата: Пт, 04.12.2009, 23:49 | Повідомлення № 24
Ветеран спілкування
Повідомлень: 3620
Нагороди: 17
Рейтинг: 192
KulAlex, alex, дякую за зауваження! Суть помилки зрозумів.
volevikt Дата: Нд, 09.11.2014, 19:12 | Повідомлення № 25
Перспективна вчителька
Повідомлень: 1800
Нагороди: 24
Рейтинг: 199
Маю 4 задачі, які потрібно написати на мові С. Склала 3 програми на Паскаль та С.

1. Скласти функцію, що видаляє загальні слова із двох речень.

Не розв'язала.(((

2. Дані слово і буква. Скільки разів ця буква зустрічається в даному слові.


На мові С (працює):

3. Дано речення. Даний рядок символів. Знайти найбільшу кількість цифр, що йдуть в ньому підряд.


На мові С (працює):


4. Дано слово. Надрукувати його з розрядкою через пропуск.


На мові С (працює):


Прохання до тих, хто працює з мовою С: допоможіть, будь ласка, скласти програму для 1 задачі на мові С. Повірте, дуже треба...
Бажаючих покепкувати - прошу утриматися.
swetikccc Дата: Нд, 09.11.2014, 21:34 | Повідомлення № 26
Ветеран спілкування
Повідомлень: 3906
Нагороди: 25
Рейтинг: 355
На Си пас, а от поправлена третя
program ryadok_tsifr;
var k,i,max:word;
st:string;
begin
writeln ('vvedity rechenya');
readln (st);
k:=0; max:=0;
for i:=1 to length(st) do begin
if (st[i]='1') or (st[i]='2') or (st[i]='3') or (st[i]='4') or (st[i]='5') or (st[i]='6') or (st[i]='7') or (st[i]='8') or (st[i]='9') or (st[i]='0')
then k:=k+1 else begin if max<k then max:=k;k:=0;end;
end;
writeln ('naybilsha kilkist tsifr',max);
readln
end.

В четвертій добавити ініціалізацію st
Bandalak Дата: Нд, 09.11.2014, 22:31 | Повідомлення № 27
Лідер форуму
Повідомлень: 5437
Нагороди: 37
Рейтинг: 247
Цитата volevikt ()
2. Дані слово і буква.

program simvol;
var i,k:word;
a:char; st:string;
begin
writeln ('vvedite text');
readln (st);
writeln ('vvedite shukaniy simvol');
readln (a);
k:=0;
for i:=1 to length (st) do
if st=a[i]then k:=k+1;
writeln ('shukanih buqv v teksty',k);
end.
Пилипчук_О_П Дата: Пн, 10.11.2014, 11:54 | Повідомлення № 28
Ветеран спілкування
Повідомлень: 3822
Нагороди: 28
Рейтинг: 329
Цитата Bandalak ()
if st=a[i]then k:=k+1;

if st[i]=a then k:=k+1;

Це ж стосується і розв'язку на С (задача 2). Крім того, масив оголошено на 10 символів, а перевіряється 15. Я б заголовок циклу написав так:
for (i=0; str[i]!=0; i++)


Відредаговано: Пилипчук_О_П - Пн, 10.11.2014, 12:17
Пилипчук_О_П Дата: Пн, 10.11.2014, 12:22 | Повідомлення № 29
Ветеран спілкування
Повідомлень: 3822
Нагороди: 28
Рейтинг: 329
Зрозумів! Це движок Юкоза так реагує на квадратні дужки. Він їх намагається інтерпретувати як bb-коди, тому при редагуванні повідомлення з'являються помилки.
volevikt Дата: Пн, 10.11.2014, 12:32 | Повідомлення № 30
Перспективна вчителька
Повідомлень: 1800
Нагороди: 24
Рейтинг: 199
Дякую, колеги, за зауваження.   
Актуальним залишається прохання щодо 1 задачі.
Форум інформатиків » РОЗДІЛ ІІІ: МЕТОДИКА, ЗАСОБИ ВИКЛАДАННЯ ІНФОРМАТИКИ » 3.6 Методика викладання інформатики згідно програми » Розв’язування задач з розділу "Рядкові величини" (Тільки конкретика.)
Сторінка 2 з 3«123»
Пошук:


© Форум інформатиків України, 2007-2017.