Сайт підготовки до олімпіади з інформатики

програмування в С++

31.10.2012 Робота з масивами PDF Печать E-mail
Добавил(а) Гісь Ігор Володимирович   
31.10.12 08:16

1. Масиви

1. Дано масив A[1..15]. Скласти програму заміни всіх його  елементів, що більші 10 на нулі.

2. Дано лінійну таблицю  із  n  дійсних  чисел.  Знайти  суму  S  всіх додатних елементів.

3. В таблиці а[1..100)]всі елементи рівні 2,3,4 або 5. Написати  програму, яка заміняє 2 на 5, 3 на 4, 4 на 3, 5 на 2.

4. Скласти програму підрахунку суми елементів з непарними номерами  масиву A[1..25].

5. Дано  масив  A[1..2N].  Скласти  програму   знаходження   різниці   сум елементів першої та другої половини масиву.

6.  Дано  лінійну  таблицю  із  n  дійсних  чисел.  Замінити  від`ємні елементи їх квадратами.

7. Задано таблиця A[1..N]. Побудувати таблицю  B[1..N],  в  якій  першими розміщені всі від`ємні елементи таблиці A, а потім всі додатні.

8. Із елементів масиву (a1,a2,...,a20) складіть масив B, елементи якого по модулю більші деякого значення С(|a|>c).

9. Дано натуральна таблиця A[1..10]. В таблицю М записати тільки ті числа, остача від ділення яких на 3 рівна 1, а на 5 рівна 2.

10. Провірити, чи є в одномірному числовому масиві  хоча  б  одна  пара сусідніх чисел, які ї протилежними.

11. Заданий одномірний числовий масив. Визначити суму добутків  всіх  пар  сусідніх чисел.

12. Визначити в одномірному числовому масиві число сусідства із двох чисел різного знаку.

13. Для заданого масиву A(N) знайти  суму  всіх  елементів,  не  більших заданого числа N.

14. Дано масив A[1..M]. Скласти програму перестановки місцями елементів з  парними та непарними номерами.

15. Визначити в одномірному числовому масиві суми додатних і  від`ємних елементів.

16. Провірити, чи ї в даному одномірному числовому масиві хоча  б  одна пара чисел, які співпадають по величині.

17. Скласти програму запису в таблицю квадратів чисел від 1 до 100.

18. Даний одномірний  числовий  масив.  Визначити  суму  добутків  всіх трійок сусідніх чисел.

19. Скласти  програму  підрахунку  кількості  мінімальних  елементів  в масиві A[1..N].

20.В одномірному числовому масиві всі від`ємні елементи замініть  нуля ми.

21. Провірити, чи є одномірний числовий масив упорядкованим по зростанню.

22.  Дано  натуральний  масив  A[1..N].Скласти  програму  підрахунку  парних елементів цього масиву.

23. Дано лінійний масив A[1..M].Скласти програму заміни елементів з  непарними номерами на їх квадрати.

24. Скласти програму заміни в прямокутному масиві A[1..k] всіх елементів, що більші від 10 на нулі.

25. Дано нат таб A[1..20]. В таблицю М записати тільки ті числа, остача від ділення яких на 3 рівна 1.

26.  Визначити  в  одномірному  числовому  масиві  число   сусідств   з взаємо-обернених чисел.

27. Заданий одномірний числовий масив. Визначити суму добутків  всіх  пар сусідніх чисел.

29. Даний одномірний  числовий  масив.  Визначити  суму  всіх чисел.

2.Масиви (Серйозні розважалки)

1. Барон Мюнхаузен, вийшовши на екологічно чисте по­лювання, зарядив свою рушницю кісточками вишень. Після того як він вдало влучив поміж роги оленям, в яких влучило відповідно k1,k2,…,kN кісточок, у них на головах виросли чудові молоді вишеньки. Скільки нових саджанців зміг подарувати барон Мюнхаузен садівникам-дослідникам?

2. Мама розвела оранжерею кактусів, деякі з яких були колючі, а інші — ні. Маленька донечка Яринка вирішила, що голки на кактусах — це надто зухвало, і тому старанно поголила їх бритвою. Добре, що у мами залишився записник, в якому всі кактуси були позначені кількістю голочок α12,…, αN (голі кактуси були позначені 0). Скількох кактусів не торкнулася рука юної перукарки?

3. Середню групу дитячого садочка вивели на прогулянку. Скільки дівчаток і скільки хлопчиків видно з-за паркану, якщо зріст хлопчиків задається у сантиметрах від'ємними числами, а дівчаток — додатними у вигляді цілих значень α12,…, αN ? Окрім того, у всіх дівчаток на голівках зав'язані бантики заввишки 10 см, а висота паркану H см.

4. Маленький онучок вирішив допомогти бабусі підстригти квіти у її дорогоцінному квітнику, зрізавши лише бутони та квіточки на них. На щастя, кмітливий хлопчик зрізав лише ті квіти, які були заввишки від h1 см до h2, см від землі. Скільком квіточкам пощастило бути підстриженими, якщо висота їх у сантиметрах становить α12,…, αN ?

5. Коли барон Мюнхаузен вирішив пообідати, він прив'язав до довгої мотузки шматок сала і закинув його у повітря. Зграя диких гусей, що пролітала тим часом над помешканням барона, заціка­вилася незвичним предметом і найстарший гусак, що очолював зграю, проковтнув його. Не встиг він насолодитися відчуттям ситості, як шматок сала проскочив через нього і зник у дзьобі другого гусака і т.д. Тепер доля обіду барона Мюнхаузена залежала лише від довжини мотузки! Скільки кілограмів підсмаженої гусятини було подано на обід барона Мюнхаузена, якщо довжина мотузки становила L см, N гусей летіли на відстані h см один від одного, довжина кожного з них дорівнює k см, а вага цих гусей у кілограмах становила m1,m2,…,mN ?

6. Маленький Дмитрик щомісяця виростає на 2 cм, а у бабусі в комірчині облаштовано полички з різними ласощами — варенням, джемом, повидлом. Акуратистка бабуся записувала висоту і наступний порядковий номер у свій записник кожної нової полички в тій послідовності, як вона з'являлася у комірчині завдяки дідусеві. Висота цих поличок була а1, а2, ... аN, см. Нові полички дідусь прибивав, де йому заманеться — вище, нижче і між тими, що вже були. З'ясувати, через скільки місяців до яких поличок, враховуючи їх порядок запису в бабусиній книжці, добереться Дмитрик (наприклад, спочатку до п'ятої, занотованої у записнику, потім до другої і т.д.), якщо він відкрив для себе бабусину комірчину, коли його зріст був Н1 см, а доросте Дмитрик до H2 см.

7. Велосипедист-початківець Павлуша виїхав на широку дорогу. Але їхати інакше, ніж за законом синусоїди, йому ніяк не вдавалося. Юний спортсмен стартував у точці Х0 на осі ОХ, а центри основ стовпів знаходяться у точках х1,х2,...,хn на цій же осі, яку перетинає синусоїда руху велосипедиста. Скільки стовпів трапляться на шляху Павлуші, якщо шириною стовпа можна знехтувати?

8. Завзятий водій Василь Іванович вирішив поставити рекорд пе­регонів між містом Мляшем та містом Пляшем. Спочатку він придбав карти розташування заправок пальним на шляху між Мляшем та Пляшем, де відстань між заправками була позначена числами а1,а2,...,аN а потім побився об заклад зі своїми друзями, що вста­новить рекорд за Т год. Одна проблема турбувала Василя Івановича: об'єм бака для пального складав К л, а запасної каністри у нього не було. Витрати пального в дорозі становили 1л на 10 км шляху. Для еко­номії часу Василь Іванович на кожній заправці визначав, чи варто вит­рачати 10 хв. на дозаправку, чи можна доїхати до наступної заправки на залишках пального у баці. Чи зможе Василь Іванович встановити рекорд, якщо перша заправка знаходиться у місті Мляші, остання — у місті Пляші, а сам Василь Іванович їде зі сталою швидкістю ν км/год? Чи може таке статися, що Василь Іванович взагалі не доїде до міста Пляша?

9. Лікар-психіатр призначив Сергійкові лікування від лайливих слів. Виконуючи поради психіатра, хворий повинен був записувати у таблицю по днях упродовж місяця кількість використаних ввічливих слів «Дякую», «Пробачте», «Прошу». У який день місяця друзям Сергійка повезло на ввічливі слова найбільше? Якого дня місяця у хлопчика був найгірший настрій? Які ввічливі слова Сергійкові найбільше до вподоби?


3. Масиви. Вправи та задачі

1. Обчисліть значення b[l,l]+b[l,2]+b[l,3]+b[l,4] у масиві оцінок b.

2. Обчисліть b[l,l]+b[2,l]+b[3,l]+b[4,l]+b[5,l] у масиві оцінок b.

3. Обчисліть s:=0; for i:=l to 4 do s:=s+b[2,i] у масиві оцінок b.

4. Обчисліть s:=0; for i:=l to 5 do s:=s+b[i,l] у масиві оцінок b.

5. Запишіть команди для виведення значень двовимірного масиву оцінок b у вигляді таблиці.

6. Запишіть команду опису типу масиву цілих чисел з чотирма рядками і трьома стовпцями і оголосіть два такі масиви.

7. Запишіть команду присвоєння, якою елементові масиву, що є на перетині третього рядка і четвертого стовпця, можна надати значення 7.

8. Запишіть команди для збільшення значень усіх елементів двовимірного масиву b на одиницю.

9. Обчисліть суму всіх елементів двовимірного масиву b.

10. Побудуйте двовимірний масив з п'ятьма рядками і п'ятьма стовпцями за формулою d.. ·= sin(/+/); i=l,2,...,5; j = 1,2, ...,5. Виведіть масив на екран у вигляді таблиці. Задайте формати виведення чисел з двома цифрами після крапки; намагайтеся, щоб таблиця виглядала якнайкраще.

11. Див. умову задачі 10. У масиві d обчисліть суму додатних елементів.

12. Див. умову задачі 10. У масиві d обчисліть добуток елементів більших, ніж 0,5.

13. Див. 10. У масиві d визначіть максимальний елемент та його індекси.

14. Див. умову задачі 10. У масиві d від'ємні елементи замініть нулями. Скільки є додатних елементів?

15. Див. 10. У масиві d поміняйте місцями перший і останній стовпці.

16. Див. 10. У масиві d обчисліть суму елементів під головною діагоналлю (i<j).

17. Див. умову задачі 10. У масиві d обчисліть середньоарифметичні значення елементів кожного рядка.

18. Див. 10. У масиві d максимальний елемент поміняйте місцями з мінімальним.

19. Проект «Моя сім'я». Дані для розв'язування цієї задачі потрібно підготувати у вигляді таблиць заздалегідь. Нехай kце кількість членів вашої сім'ї. В одновимірний сталий масив В уведіть імена чи статус членів сім'ї (я, батько, мати, брат тощо). Заповніть сталий двовимірний числовий масив А, що має k рядків і чотири стовпці, такою інформацією у стовпцях: 1 - номер за порядком члена сім'ї, 2 - рік народження, 3 - зріст у см, 4 -розмір одягу. Виведіть таблиці для огляду на екран. Складіть програму, щоб відповісти на запитання:

а) чи носите ви одяг 46-го розміру;

б) хто носить плащ 50-го розміру;

в) у кого зріст понад 170 см;

г) скільки років члену сім'ї, що є другим у списку;

д) кому можна переглядати фільми для дорослих; е) хто в сім'ї найвищий?

20. Проект «Наші оцінки». Задано текстову лінійну таблицю T, n елементів якої - це прізвища учнів вашого класу, а також числову прямокутну

таблицю В, n*m елементів якої - це оцінки учнів з певного предмета за деякий час навчання (m - максимальна кількість оцінок одного учня). Перший стовпець у таблиці В - оцінки за контрольну роботу. Щоб таблиця В була заповненою, вважатимемо, що, крім оцінок, вона містить такі числові дані: -1 (учень відсутній), 0 (учень присутній, але не опитаний). Виконайте завдання:

а) дані з таблиць занесіть у сталі масиви і виведіть три списки учнів, які отримали за контрольну роботу 10, 11, 12 балів;

б) який середній бал за контрольну роботу в класі;

в) виставте оцінки всім учням за чверть. Для цього визначте середні оцінки й заокругліть їх до найближчого цілого числа. Якщо немає оцінок, виведіть повідомлення «не атестовано»;

г) розгляньте пункт в) і випадок, коли середня оцінка має дробову час­тину 0,5. Тоді заокруглення виконайте у бік більшого значення за умови, що остання оцінка виІца від середньої;

д) проаналізуйте відвідування учнями уроків з конкретного предмета. Скільки пропусків має кожен учень? Скільки це у відсотках? Який середній відсоток відвідування учнями уроків з цього предмета?

е) об'єднайте всі завдання в одну програму (використайте підпрограми). Дайте свої пропозиції щодо вдосконалення (розширення можливостей) отриманого алгоритму.

Завдання додому

1. Встановити на комп’ютер середовище програмування

Visual C++ 2008 Express Edition,  www.microsoft.com/express/vc/ ;

2. Розв’язати по одну задачу з кожної групи задач.

3. Відправити розв’язки на поштову скриньку igis1971@gmail.com або приєднати в щоденнику.


Робота з масивами

Операція з масивом

Лінійний масив

Прямокутна таблиця

Опис

int a[100];

int i, n;//індекс, кількість елементів

int a[100][100];

int i,j, n,m;//індекс, кількість елементів

Введення

cin>>n;

for(i=1;i<=n;i++)cin>>a[i];

cin>>n>>m;

for(i=1;i<=n;i++)

for(j=1;j<=m;j++)

cin>>a[i][j];

Виведення

for(i=1;i<=n;i++)cout<<a[i]<<” “;

for(i=1;i<=n;i++)

for(j=1;j<=m;j++)

cout<<a[i][j]<<” “;

Сумування

s=0;

for(i=1;i<=n;i++)s=s+a[i];

s=0;

for(i=1;i<=n;i++)

for(j=1;j<=m;j++)

s=s+a[i][j];

Пошук

cin>>k;

for(i=1;i<=n;i++) if (a[i]==k) cin<<i;

cin>>k;

for(i=1;i<=n;i++)

for(j=1;j<=m;j++)

if (a[i][j]==k)

cin<<i<<” “<<j;

Пошук максимального

max=a[1];nmax=1;

for(i=2;i<=n;i++)if  (a[i]>max) {max=a[i];nmax=i;}

max=a[1];imax=1;jmax=1;

for(i=1;i<=n;i++)

for(j=1;j<=m;j++)

if  (a[i][j]>max) {max=a[i][j];

imax=i;jmax=j;}

Сортування

for(i=1;i<n;i++)

for(j=1;j<n;j++)

if  (a[j]>a[j+1])

{temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;}

Стирання

n=n-1;

for(i=k;i<=n;i++)

a[i]=a[i+1];

Вставка

n=n+1;

for(i=n;i>=1;i--)

a[i]=a[i-1];

 

Статистика

Пользователей : 261
Статей : 225
Просмотрено статей : 115434

Вход/Регистрация

Нет