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

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

Сторінка 1 з 212»
Модератор форуму: Ktara, НІКОЛЯ, Bandalak, volevikt 
Форум інформатиків » АРХІВ » Архів форуму » ДПА 2010 Варіант 9 (Обговорюємо 9 варіант)
ДПА 2010 Варіант 9
Bandalak Дата: Пт, 16.04.2010, 03:36 | Повідомлення № 1
Лідер форуму
Повідомлень: 5392
Нагороди: 37
Рейтинг: 247
Для тих, у кого немає збірника завдань з диском та відповідями, тут можна скачати:
Перша та друга частина, усі варіанти (12,95 Mb);
Третя частина, усі варіанти (6,59 Mb);
Додаткові фали до третьої частини, усі варіанти (16,38 Mb);
Відповіді авторів до 1-ї та 2-ї частин, усі варіанти. Бланк відповідей та протокол ДПА (272 kb).
Дякуємо за сканування - yanasklyar, за відповіді - Ktara, за упорядкування матеріалів - volodschool2 та bandalak.

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

Відразу кидається в очі, що завдання 12 набагато складніше від попередніх варіантів, особливо від 8-го!



Відредаговано: Ktara - Ср, 21.04.2010, 16:11
yanasklyar Дата: Пт, 16.04.2010, 12:02 | Повідомлення № 2
Тут живе...
Повідомлень: 100
Нагороди: 5
Рейтинг: 24
Питання 1
Відповідь D

Питання 2
відповідь D

Питання 3
відповідь C

Питання 4
відповідь B

Питання 5
відповідь С

Питання 6
відповідь A

Питання 7
відповідь А

Питання 8
відповідь A

Питання 9
відповідь C

Питання 10
відповідь B

Питання 11
C

Питання 12
відповідь B

Питання 13
C:\BOOK\PR1

Питання 14
відповідь приблизно 7,8

Питання 15
відповідь BDCAE

Питання 16
відповідь 7

Питання 17
CBDA

Питання 18
ABD

KulAlex Дата: Пт, 16.04.2010, 12:34 | Повідомлення № 3
Знаток програмування
Повідомлень: 326
Нагороди: 6
Рейтинг: 19
Птання 21.

var s:string;
k,i:integer;
begin
readln(s);
s:=s+' ';
// забираємо лишні пробіли, залишивши тільки по одно після кожного слова
while pos(' ',s)<>0 do
delete(s,pos(' ',s),1);

k:=0;
for i:=1 to length(s) do
if s[i]=' ' then inc(k);
writeln(k)
end.

mefel Дата: Пт, 16.04.2010, 12:43 | Повідомлення № 4
Новий користувач
Нагороди: 0
Рейтинг: 0
Quote (yanasklyar)
Питання 14
відповідь приблизно 7,8

512000бит/с * 16с / 8бит / 1024байт=1000 килобайт

Bandalak Дата: Пт, 16.04.2010, 12:44 | Повідомлення № 5
Лідер форуму
Повідомлень: 5392
Нагороди: 37
Рейтинг: 247
Quote (mefel)
512000бит/с * 16с / 8бит / 1024байт=1000 килобайт

Абсолютно правильно, тільки одиниці вимірювання у Вас вийшли 1/байт ;)
512000 бит/с * 16 с / 8 бит/байт / 1024 кбайт/байт=1000 кбайт

Quote (KulAlex)
Птання 21.

Цю задачу треба практично протестити.
У Вашій версії -
1) видаляються абсолютно всі пробіли у тексті, а потрібно по одному лишити;
2) треба друкувати к+1, бо коли є один пробіл - то два слова.

Наприклад циклом while(pos(' ',s) = 1) and(length(st) > 0) do delete (s,1,1);
можна видалити всі прогалини що йдуть спереду, а потім будемо рахувати тільки останній пробіл перед кожним словом.
k:=1; так як у реченні одне слово є завжди, крім випадку коли воно складалося із самих пробіів, тоді к=0
for i:=1 to length(s)-1 do
if (s[i]=' ') and (s[i+1]<>' ') then inc(k);

Bandalak Дата: Пт, 16.04.2010, 13:37 | Повідомлення № 6
Лідер форуму
Повідомлень: 5392
Нагороди: 37
Рейтинг: 247
Моя версія розв'язку:

var s:string;
k,i:integer;
begin
writeln('Введіть речення');
readln(s);
s:=s+' ';
while(pos(' ',s) = 1) and(length(s) > 0) do delete (s,1,1);
if s='' then k:=0 else k:=1;
for i:=1 to length(s)-1 do
if (s[i]=' ') and (s[i+1]<>' ') then inc(k);
writeln('Кiлькiсть слiв у даному реченнi - ',k);
readln
end.

pasichov Дата: Пт, 16.04.2010, 13:44 | Повідомлення № 7
Наполегливий учасник
Повідомлень: 946
Нагороди: 3
Рейтинг: 70
Задача 9_21

Program V9_21;
var s:string;
k,i:integer;
begin
readln(s); {читаємо стрічку з клавіаткури}
s:=' '+s; {додаємо пропуск в початок для коректної обробки першого (чи єдиного) слова }
k:=0; {спочатку результат - 0 }
for i:=2 to length(s) do
if (s[i]<>' ')and (s[i-1]=' ')then inc(k); {якщо попередній символ пропуск, а поточний ні - це нове слово}
writeln(k)
end.
Попередньо наведений розв"язок KulAlex не вірний, Bandalaк - не ефективний, багато лишніх дій

Відредаговано: pasichov - Пт, 16.04.2010, 13:48
Bandalak Дата: Пт, 16.04.2010, 13:48 | Повідомлення № 8
Лідер форуму
Повідомлень: 5392
Нагороди: 37
Рейтинг: 247
Quote (pasichov)
Попередньо наведений розв"язок не вірний.

Котрий із попередніх? ;)
pasichov Дата: Пт, 16.04.2010, 13:51 | Повідомлення № 9
Наполегливий учасник
Повідомлень: 946
Нагороди: 3
Рейтинг: 70
Quote (Bandalak)
Котрий із попередніх?

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


Відредаговано: pasichov - Пт, 16.04.2010, 13:56
Bandalak Дата: Пт, 16.04.2010, 13:53 | Повідомлення № 10
Лідер форуму
Повідомлень: 5392
Нагороди: 37
Рейтинг: 247
Quote (pasichov)
, Bandalaк - не ефективний, багато лишніх дій

Згоден, у Вас вишло лаконічніше!!! <_<

Quote (pasichov)
Та й інтерфейс (повідомлення) в задачах з інформатики не вважається потрібним

Коли через файл - то зрозуміло, а коли клава-монітор - то можна трошки і прикрасити повідомленнями. :)
KulAlex Дата: Пт, 16.04.2010, 14:11 | Повідомлення № 11
Знаток програмування
Повідомлень: 326
Нагороди: 6
Рейтинг: 19
Прошу вибачення, но при копіювані пропали пропуски, але вони там були

var s:string;
k,i:integer;
begin
readln(s);
s:=s+' ';
// забираємо лишні пробіли, залишивши тільки по одно після кожного слова
while pos(' ',s)<>0 do // тут два
delete(s,pos(' ',s),1); // тут два
if s[1]=' ' then delete(s,1,1);
k:=0;
for i:=1 to length(s) do
if s[i]=' ' then inc(k);
writeln(k)
end.

а на рахунок лишнів пропусків, має бути культура набору тексту, тільки один пропуск між словами

Відредаговано: KulAlex - Пт, 16.04.2010, 15:15
Bandalak Дата: Пт, 16.04.2010, 14:43 | Повідомлення № 12
Лідер форуму
Повідомлень: 5392
Нагороди: 37
Рейтинг: 247
KulAlex,

Працює не завжди правильно
Прикріплення: 4080597.jpg(18Kb)
Bandalak Дата: Пт, 16.04.2010, 15:29 | Повідомлення № 13
Лідер форуму
Повідомлень: 5392
Нагороди: 37
Рейтинг: 247
Мій варіант після уроку pasichov. Якщо чесно, мої думки KulAlex трохи запутав.

var s:string;
k,i:integer;
begin
writeln('Введiть речення');
readln(s);
s:=s+' ';
k:=0;
for i:=1 to length(s)-1 do
if (s[i]=' ') and (s[i+1]<>' ') then inc(k);
writeln('Кiлькiсть слiв у даному реченнi - ',k);
readln
end.

Практично те ж саме що і у pasichov, тільки з іншого боку! ;)

svbor Дата: Сб, 17.04.2010, 19:08 | Повідомлення № 14
Прописаний назавжди
Повідомлень: 265
Нагороди: 5
Рейтинг: 21
Quote (yanasklyar)
Питання 18
ABD

В мене на це. як завжди свій погляд. Я вважаю алфавітним порядком не літери, номерів завдань, а літери з яких починаються змінні. Тому моя відповідь DAB
Bandalak Дата: Сб, 17.04.2010, 19:20 | Повідомлення № 15
Лідер форуму
Повідомлень: 5392
Нагороди: 37
Рейтинг: 247
svbor, тут знову несвідоме формулювання. В умові пише, в алфавітному порядку літери що відповідають можливим іменам змінних. Хоча логічніше би було сформулювати так: Запишіть літери, яким відповідають можливі імена змінних, розміщених в алфавітному порядку.
Форум інформатиків » АРХІВ » Архів форуму » ДПА 2010 Варіант 9 (Обговорюємо 9 варіант)
Сторінка 1 з 212»
Пошук:


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