- •Урок № 24
- •Опис та ініціалізація масиву
- •Розв’язки завдань
- •Розв’язки завдань
- •Тема: Практична робота “Програми з масивами”
- •Р озв’язки завдань
- •Тема: Алгоритми сортування
- •Ров’язки завдань
- •Тема: Практична робота “Впорядкування масивів”
- •Тема: Вказівники, динамічні змінні й масиви
- •Задача 2
- •Тема: Багатовимірні масиви
- •Звільнення пам'яті
- •Знаходимо індекс останнього від’ємного елементу
- •Якщо від’ємного елементу немає, змінна l вкаже на перший елемент масиву
Звільнення пам'яті
delete [] a;
Приклад
Написати програму, в якій для двовимірного масиву цілих чисел визначається номер крайнього стовпця, розташованого ліворуч, що містить тільки додатні елементи. Якщо такого стовпця немає, виводиться відповідне повідомлення.
# include< iostream.h> # include<conio.h> # include<iomanip.h> int main () {int ryad, stovp; cin>>ryad>>stovp; int i, j;
int **a=new int *[ryad]; for (i=0; i<ryad; i++) a[i]= new int [stovp]; //уведення масиву for(i=0; i<ryad; i++) for (j=0; j<stovp; j++) cin>>a[i][j]
//виведення масиву for(i=0; i<ryad; i++) {for (j=0; j<stovp; j++) cout<<setw(4)<<a[i][j]<<“ “; cout<<endl;}
// аналіз масиву
int n=-1; bool dodat;
for (j=0; j<stovp; j++)
{ // перегляд по стовпцях
dodat=true;
for (i=0; i<ryad; i++)
if (a[i][j]<0)
{dodat=false; break;}
if (dodat)
{n=j; break;}
}
if (n==-1) cout<<“no”<<endl;
else cout<<“n=“<<n<<endl;
delete []a; //вивільнення пам'яті getch(); return 0; }
Завдання (Слайд № 13)
Випробуйте програму прикладу. Переробіть її так, щоб визначити номер крайнього стовпця, розташованого ліворуч, що містить тільки від'ємні елементи. Якщо такого стовпця немає, виводиться відповідне повідомлення.
Цілочисельний масив з 8 рядків та 15 стовпців заповнити випадковими одноцифровими числами. Скільки разів у масиві зустрічається число 5?
Доповнити програму-розв'язок попередньої задачі виведенням таблиці кількості входжень у масив кожного з чисел (наприклад: 0->5 raz, 1->8 raz, …)
Заданий одновимірний масив цілих чисел. Вивести значення елементів масиву:
У зворотному порядку
З парними індексами
З непарними індексами
Які є парними числами
Які є непарними числами
Література
Лєхан С.Ф. Інформатика С++. Спецкурс. 10-12 класи. – Шепетівка; Аспект, 2007.
Глинський Я.М., Анохін В.Є., Ряжська В.А. С++ і С++ Builder. Навчальний посібник. – Львів: СПД Глинський, 2006.
Глушаков С.В., Смирнов С.В., Коваль А.В. Практикум по С++. – Харьков: Фолио, 2006.
Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб.: Питер, 2003
Лисенко Т.І. Поглиблене вивчення програмування в школі. – К.:ТОВ Редакція “Комп'ютер”, 2007.
Розв’язки завдань
Слайд № 13
Задача 2
#include <iostrem.h>
#include <conio.h>
#include <stdlib.h>
int main ()
{int a[8][15], int k=0;
randomize();
for (int I=0; I<8; I++)
for (int j=0; j<15; j++)
{a[I][j]=random(9);
if (a[I][j]==5) k++;}
cout<<k<<endl;
getch ();
return 0;
}
Задача 3
#include <iostrem.h>
#include <conio.h>
#include <stdlib.h>
int main ()
{int a[8][15], int k[10]={0};
randomize();
for (int I=0; I<8; I++)
for (int j=0; j<15; j++)
{a[I][j]=random(9);
k[a[i][j]]++;}
for (int i=0; i<10; i++) cout<<”k[“<<i<<”]=”<<k[i]<<” “;
cout<<endl;
getch ();
return 0;
}
Задача 4
#include <iostrem.h>
#include <conio.h>
#include <stdlib.h>
int main ()
{int a[100], int n; cin>>n;
randomize();
for (int I=0; I<n; I++)
a[I]=random(90);
//-----у зворотному порядку-------
for (I=n-1; I>=0; I--) cout<a[I]<<” “;
cout<<endl;
//-----у парними індексами-------
for (I=0; I<n; I+=2) cout<a[I]<<” “;
cout<<endl;
//-----у непарними індексами-------
for (I=1; I<n; I+=2) cout<a[I]<<” “;
cout<<endl;
//-----які є парними-------
for (I=0; I<n; I++)
if (a[I]%2==0) cout<a[I]<<” “;
cout<<endl;
//-----які є непарними-------
for (I=0; I<n; I++)
if (a[I]%2!=0) cout<a[I]<<” “;
cout<<endl;
getch ();
return 0;
}
Урок № 31
Тема: Підсумковий урок з теми “Масиви”.
Мета:
Контроль отриманих знаннь та навичок
Розвиток навичок раціонального використання часу
Формування самостійності
Тип: Контроль отриманих знань та навичок
Обладнання:
Тест “Масиви у С++”
Картки “Масиви у С++”
Епіграф “Мы столько можем, сколько знаем” /Ф. Бекон/
Хід уроку
№ |
Етап уроку |
Діяльність учителя |
Діяльність учнів |
1 |
Організаційний момент |
Оголосити тему. мотивація Критерії оцінювання:
|
Оформити аркуші |
2 |
Самостійна робота + тестування |
Спостереження, забезпечення самостійності виконання завдань |
По-черзі, тестування та самостійна робота (по варіантах) |
3 |
Домашнє завдання |
Розв’язати інший варіант |
Записати в зошит |
Тематична атестація з теми «Масиви у С++»
Варіант 1 |
Варіант 2 |
№ 1. Увести масив цілих чисел. Перший елемент поміняти місцями з максимальним #include<iostream.h> #include<conio.h> Int MaxEl(int a[], int n) { int max=a[0]; int L=0; for (int i=1; i<n; i++) if (a[i]>=max) {max=a[i]; L=i;} return L; } //----------------------------------------- void _Input(int*, int); void _Print(int*, int); //-------------------------------------------- int main() { int n, *a; //розмір та масив cout<<“n=”; cin>>n; a=new int [n]; _Input(a, n); cout<<“mas:\n”; _Print(a, n); int L=MaxEl(a, n) int tenp=a[1]; a[1]=a[L]; a[L]=temp; _Print(a, n); delete []a; getch (); retutn 0; } //--------функції------------------------ void _Input(int*a, int n); { for(int i=0; i<n; i++) cin>>a[i]; } //--------------------------------------- void _Print(int*a, int n); { for(int i=0; i<n; i++) cout<<a[i]<<“ “; cout<<endl; } //--------------------------------------
|
№ 1 Увести масив цілих чисел. Останній елемент поміняти місцями з мінімальним #include<iostream.h> #include<conio.h> Int MinEl(int a[], int n) { int min=a[0]; int L=0; for (int i=1; i<n; i++) if (a[i]<=min) {min=a[i]; L=i;} return L; } //----------------------------------------- void _Input(int*, int); void _Print(int*, int); //-------------------------------------------- int main() { int n, *a; //розмір та масив cout<<“n=”; cin>>n; a=new int [n]; _Input(a, n); cout<<“mas:\n”; _Print(a, n); int L=MinEl(a, n) int tenp=a[n]; a[n]=a[L]; a[L]=temp; _Print(a, n); delete []a; getch (); retutn 0; } //--------функції------------------------ void _Input(int*a, int n); { for(int i=0; i<n; i++) cin>>a[i]; } //--------------------------------------- void _Print(int*a, int n); { for(int i=0; i<n; i++) cout<<a[i]<<“ “; cout<<endl; } //--------------------------------------
|
№ 2. У підрозділі Y є 15 співробітників, а в G – 20. протягом місяця вони відпрацювали певну кількість днів, яка задана як випадкове число зі значенням від 0 до 31. Скільки осіб у кожному підрозділі працювали більше 15 днів? #include<iostream.h> #include<conio.h> #include<stdlib.h> Int F(int a[], int n) { int K=0; for (int i=0; i<n; i++) if (a[i]>=15) K++ return K; } //----------------------------------------- void _Input(int*, int); void _Print(int*, int); //-------------------------------------------- int main() {randomize(); int *y; //розмір та масив y=new int [15]; _Input(y, 15); cout<<“mas:\n”; _Print(y, 15); int L=F(y, 15) cout<<”y=”<<L<<endl; delete []y; int *g; //розмір та масив g=new int [20]; _Input(g, 20); cout<<“mas:\n”; _Print(g, 20); int L=F(g, 20) cout<<”g=”<<L<<endl; delete []g; getch (); retutn 0; } //--------функції------------------------ void _Input(int*a, int n); { for(int i=0; i<n; i++) a[i]=random(31); } //--------------------------------------- void _Print(int*a, int n); { for(int i=0; i<n; i++) cout<<a[i]<<“ “; cout<<endl; } //-------------------------------------- |
№ 2. У підрозділі Y є 15 співробітників, а в G – 20. протягом місяця вони відпрацювали певну кількість днів, яка задана як випадкове число зі значенням від 0 до 31. Скільки осіб у кожному підрозділі працювали менше, ніж 10 днів? #include<iostream.h> #include<conio.h> #include<stdlib.h> Int F(int a[], int n) { int K=0; for (int i=0; i<n; i++) if (a[i]<=10) K++ return K; } //----------------------------------------- void _Input(int*, int); void _Print(int*, int); //-------------------------------------------- int main() {randomize(); int *y; //розмір та масив y=new int [15]; _Input(y, 15); cout<<“mas:\n”; _Print(y, 15); int L=F(y, 15) cout<<”y=”<<L<<endl; delete []y; int *g; //розмір та масив g=new int [20]; _Input(g, 20); cout<<“mas:\n”; _Print(g, 20); int L=F(g, 20) cout<<”g=”<<L<<endl; delete []g; getch (); retutn 0; } //--------функції------------------------ void _Input(int*a, int n); { for(int i=0; i<n; i++) a[i]=random(31); } //--------------------------------------- void _Print(int*a, int n); { for(int i=0; i<n; i++) cout<<a[i]<<“ “; cout<<endl;} //-------------------------- |
№ 3. Утворити двовимірний масив y[2][3]. Вивести його на екран у вигляді таблиці. Обчислити добуток його від’ємних елементів #include<iostream.h> #include<conio.h> #include<stdlib.h> int main() {randomize(); int y[2][3]; //розмір та масив for (int i=0; i<2; i++) { for (int j=0; j<3; j++) {y[i][j]=random(100)-50; cout<<y[i][j]<<” “;} cout<<endl; } int p=1; for (int i=0; i<2; i++) for (int j=0; j<3; j++) if (y[i][j]<0) p*=y[i][j]; cout<<”p=”<<p<<endl; getch (); retutn 0; }
|
№ 3. Утворити двовимірний масив y[3][2]. Вивести його на екран у вигляді таблиці. Обчислити суму його додатних елементів #include<iostream.h> #include<conio.h> #include<stdlib.h> int main() {randomize(); int y[3][2]; //розмір та масив for (int i=0; i<3; i++) { for (int j=0; j<2; j++) {y[i][j]=random(100)-50; cout<<y[i][j]<<” “;} cout<<endl; } int s=0; for (int i=0; i<3; i++) for (int j=0; j<2; j++) if (y[i][j]<0) s+=y[i][j]; cout<<”s=”<<s<<endl; getch (); retutn 0;
|
ТЕСТ «МАСИВИ У С++»
ОБЕРІТЬ СКЛАДОВІ ЧАСТИНИ ВИЗНАЧЕННЯ МАСИВУ:
сукупність змінних одного типу
змінні зберігаються в послідовно розташованих комірках оперативної пам'яті
послідовність змінних, які мають однакове ім'я
завдяки нумерації змінні розташовуються лише у рядок
ВКАЖІТЬ, ЩО МОЖЕ БУТИ ІНДЕКСОМ ЕЛЕМЕНТУ МАСИВА
Символ
Ціле число
Ціле додатне число
Математичний вираз, результат обчислення якого є ціле додатне число
ОБЕРІТЬ ВІРНІ ТВЕРДЖЕННЯ, ЩО МАЮТЬ ВІДНОШЕННЯ ДО ІМЕНІ МАСИВУ:
Назва масиву – ключове слово array та будь-яка латинська літера
Назва масиву є вказівником на його перший елемент
Назва масиву є вказівником на його елемент з індексом [1]
Ім’я масиву створюється за правилами створення ідентифікатора
ОБЕРІТЬ ВІРНІ ТВЕРДЖЕННЯ, ЩО МАЮТЬ ВІДНОШЕННЯ ДО РОЗМІРУ МАСИВУ:
Розміром може бути змінні цілого типу
Розміром може бути змінні дійсного типу
Розмір – це кількість елементів масиву
Розмір – це індекс останнього елементу масиву
ВКАЖІТЬ ОПИСИ МАСИВІВ, ЯКІ НЕ МОЖНА ВИКОРИСТОВУВАТИ НІ В ЯКОЇ ЧАСТИНІ ПРОГРАМИ
int a[3];
int a[‘f’];
int a[]
int a[3]={1}
НЕХАЙ int а[5]={10, 11, 12, 13, 14} ЧОМУ ДОРІВНЮЄ ЗНАЧЕННЯ ЕЛЕМЕНТУ a[3]
3
12
13
14
НЕХАЙ int а[5]={10, 11, 12, 13} ЧОМУ ДОРІВНЮЄ ЗНАЧЕННЯ ЕЛЕМЕНТУ a[4]
0
12
13
Визначити неможливо
НЕХАЙ float r[]={1.5, 3, 4.2}; ВКАЖІТЬ РОЗМІР МАСИВУ
3
4
4.2
5
НЕХАЙ int а[5]; int і,j; float c; ВИБЕРІТЬ ПОМИЛКОВІ ЗВЕРНЕННЯ ДО ЕЛЕМЕНТІВ МАСИВУ
a[i+j]
a[i/j]
a[c]
a[‘I’]
ОБЕРІТЬ ВІРНЕ ОФОРМЛЕННЕ ПЕРЕДАВАННЯ МАСИВУ В ФУНКЦІЮ
void fun(int A[], int n);
void fun(int A[void], int n);
void fun(int A[n], int n);
void fun(int A[100], int n);
ВКАЖІТЬ, ЩО ПЕРЕДАЄТЬСЯ В ФУНКЦІЮ fun(a[2], 5);
Масив, розмір якого 2 та значення його нового розміру
Елементи масиву від 2 до 5 номерів
2-й елемент масиву та числове значення для змінної 5
Масив, розмір якого 2 та числове значення для змінної 5
ВКАЖІТЬ ПРАВИЛЬНО ОРГАНІЗОВАНИЙ ЦИКЛ ДЛЯ ОПРАЦЮВАННЯ ВСІХ ЕЛЕМЕНТІВ МАСИВУ, РОЗМІРНІСТЬ ЯКОГО n
for (int i=1; i<=n; i++)
for (int i=0; i<=n; i++)
for (int i=1; i<n; i++)
for (int i=0; i<n; i++)