Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Тема: Поняття масиву. Опис та ініціалізація↑ Стр 1 из 5Следующая ⇒ Содержание книги
Поиск на нашем сайте
Урок № 24 Тема: Поняття масиву. Опис та ініціалізація Мета:
Тип: Засвоєння нового матеріалу, розвиток навичок Обладнання:
Епіграф “Прагнення до нового є перша потреба людської уяви ” /Стендаль/ Хід уроку
Теоретичний матеріал до уроку «Поняття масиву. Опис та ініціалізація» Поняття масиву Масив – це сукупність елементів одного типу, звернення до яких здійснюється за допомогою імені масиву та індексу. Масив – це впорядкований скінчений набір даних одного типу, які зберігаються в послідовно розташованих комірках оперативної пам'яті і мають спільну назву (яку надає користувач). (Глинський Я.М.) Масив – це структура даних, що являє собою однорідну (за типом), фіксовану (за розміром і конфігурацією) сукупність елементів, упорядкованих за номерами. (Скляр І.В.) Масивом називається скінчена послідовність змінних одного типу, які мають однакове ім'я та розрізняються індексом. (Караванова Т.П.) Масив – це змінна, утворена послідовністю значень, які називають елементами, є однотипними й ідентифікуються номерами (індексами)/ (Ставровський А. Б.) Опис масиву Загальний вигляд: тип ім'я [розмір]; Тип ім’я [p1] [p2]; Розмір – це кількість елементів масиву. Розміром може бути лише стала величина (не змінна). Розрізняють одно- та багатовимірні масиви. Наприклад: int a[5]; char st[30]; float x[5], y[5]; Звернення до елементу масиву За допомогою імені масиву: a[0]=3; cout<<a[4]; Увага! Нумерація елементів масиву починається з нуля. Контроль за виходом за межі масиву С++ не здійснює. Індекс повинен бути цілим додатним числом або математичним виразом, результатом обчислення якого є ціле додатне число. За допомогою вказівників: *a=3; cout<<*(a+4); Назва масиву є вказівником на його перший елемент. Змінна *a містить значення першого елемента масиву a[0]. Оскільки всі елементи масиву розміщені у послідовних комірках оперативної пам'яті, то вказівник *(a+4) вказуватиме на 5-й елемент масиву (a[4]) Ініціалізація масиву Проініціалізувати масив (надати значення елементам масиву) можна одним із способів: Використовуючи принцип замовчування Безпосередньо під час його оголошення Застосовуючи команду присвоєння Під час ведення із клавіатури Під час введення із файлу Приклади: 1. Присвоєння нульових значень int B[8]; for(int i=0; i<8; i++) B[i]=0; 2. Під час оголошення: 3. Якщо початкових значень менше, ніж елементів у масиві, елементи, що залишилися автоматично одержують нульові початкові значення int n[10]={0}; 4. Масиви-сталі оголошуються так: 5. Використання константи для завдання розміру: 6. Уведення із клавіатури: int x[5]; for(i=0; i<5; i++) cin>>x[i]; Завдання (Слайд № 8) Створити програму, що присвоює початкові нульові значення масиву В, що містить 8 цілих чисел і друкує його Створити програму, що присвоює початкові значення масиву В, що містить 8 цілих чисел при оголошенні і друкує його Створити програму, що присвоює початкові значення 1, 2,..10 масиву М з 10 елементів і виводить на екран елементи масиву з парними номерами Передача масивів у функції Оскільки в С++ не контролюється розмір масиву, то у функцію слід передавати також параметр, що містить кількість елементів у масиві: Такий прийом дозволяє однією функцією обробляти масиві різних розмірів Приклади (Слайд № 10) Вивести значення масивів: #include<iostream.h> #include<conio.h> void show_array(int A[], int n) Завдання: змініть програми (слайд № 8) так, що використати наведені функції (опрацюйте декілька масивів) Увести з клавіатури значення масивів та надрукувати їх: #include<iostream.h> #include<conio.h> void get_array(int A[], int n) Завдання: змініть програми (слайд № 8) так, щоб використати наведені функції (опрацюйте декілька масивів) Опис та ініціалізація масиву
Розв’язки завдань Слайд № 8 Задача № 1 #include <iostream.h> #include <conio.h> int main() { int b[8]; for (int I=0; I<8; I++) b[I]=0; for (I=0; I<8; I++) cout<<I<<”\t”<<b[I]<<”\n”; getch (); return 0;} Задача № 2 #include <iostream.h> #include <conio.h> int main() { int b[8]={1, 2, 3, 4, 5, 6, 7, 8}; for (int I=0; I<8; I++) cout<<I<<”\t”<<b[I]<<”\n”; getch (); return 0;} Задача № 3 #include <iostream.h> #include <conio.h> int main() { int b[10]; for (int I=0; I<10; I++) b[I]=I; for (I=0; I<10; I++) cout<<I<<”\t”<<b[I]<<”\n”; getch (); return 0; } Слайд № 10 Задача № 1 #include <iostream.h> #include <conio.h> void show_array (int a[], int n) {for (int i=0; i<n; i++) cout<<a[i]<<” “; cout<<endl;} int main() { int b[8], c[5]; for (int I=0; I<8; I++) b[I]=0; for (I=0; I<8; I++) c[I]=0; show_array (b, 8); show_array (c, 5); getch (); return 0;} Задача № 2 #include <iostream.h> #include <conio.h> void show_array (int a[], int n) {for (int i=0; i<n; i++) cout<<a[i]<<” “;cout<<endl;} int main() { int b[8]={1, 2, 3, 4, 5, 6, 7, 8}; int c[5]={9, 10, 11, 12, 13}; show_array (b, 8); show_array (c, 5); getch (); return 0;} Задача № 3 #include <iostream.h> #include <conio.h> void show_array (int a[], int n) {for (int i=0; i<n; i++) cout<<a[i]<<” “; cout<<endl;} int main() { int b[10], c[4]; for (int I=0; I<10; I++) b[I]=I; for (int I=0; I<4; I++) c[I]=I+10; show_array (b, 10); show_array (c, 4); getch (); return 0;} Урок № 25 Тема: Складання програм із масивами Мета:
Тип: Р озвиток навичок Обладнання:
Епіграф “Коли людина хоче дізнатися – вона досліджує ” /М. Горький/ Хід уроку
Розв’язки завдань Задача № 1 #include <iostream.h> #include <conio.h> #include <stdlib.h> int main() { int a[30]; randomize(); for (int I=0; I<30; I++) a[I]=random(100); int k=0; for (I=0; I<29; I++) if (a[I]!=a[29]) k++; cout<<”k=”<<k<<”\n”; getch (); return 0; } Задача № 2 #include <iostream.h> #include <conio.h> #include <stdlib.h> int main() { int a[20]; int x; cin>>x; randomize(); for (int I=0; I<20; I++) a[I]=random(50); for(I=0; I<20; I++) if (a[I]==x) break; if (I==20) cout<<”yes”<<”\n”; else cout<<”no”<<endl; getch (); return 0; } Задача № 2 варіант 2 #include <iostream.h> #include <conio.h> #include <stdlib.h> int main() { int a[20]; int x; cin>>x; randomize(); for (int I=0; I<20; I++) a[I]=random(50); I=0; While (I<20 && a[I]!=x) {I++;} if (I==20) cout<<”yes”<<”\n”; else cout<<”no”<<endl; getch (); return 0;} Задача № 3 #include <iostream.h> #include <conio.h> #include <stdlib.h> int main() { int a[25]; randomize (); for (int I=0; I<25; I++) a[I]=random(100)-50; cout<<”-“<<endl; for (I=0; I<25; I++) {if (a[I]<0) cout<<a[I]<<” “; cout<<endl;} cout<<”+“<<endl; for (I=0; I<25; I++) {if (a[I]>0) cout<<a[I]<<” “; cout<<endl;} getch (); return 0; } Урок № 26 Тема: Практична робота “Програми з масивами” Мета:
Тип: Р озвиток навичок Обладнання:
Епіграф “Роботи швидко – це робити повільні кроки без зупинок між ними” /народна мудрість/ Хід уроку
Розв’язки завдань
Урок № 27 Тема: Алгоритми сортування Мета:
Тип: Засвоєння нового матеріалу, розвиток навичок Обладнання:
Епіграф “Наше знание похоже не шар: чем больше он становится, тем больше у него точек соприкосновения с неизвестным” /Спенсер/ Хід уроку
Зміст Функція sizeof Сортування простим пошуком 3. Метод “бульбашки” Задачі Література
Слайд № 3
Слайд № 5
Сортування одновимірних масивів. Метод “бульбашки” Алгоритм: Вивести отриманий масив void bubl(int *mas[], int n) int i.j; . Слайд № 7
Задачі (Слайд № 8) Література 1. Лєхан С.Ф. Інформатика С++. Спецкурс. 10-12 класи. – Шепетівка; Аспект, 2007. 2. Глинський Я.М., Анохін В.Є., Ряжська В.А. С++ і С++ Builder. Навчальний посібник. – Львів: СПД Глинський, 2006. 3. Глушаков С.В., Смирнов С.В., Коваль А.В. Практикум по С++. – Харьков: Фолио, 2006. 4. Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб.: Питер, 2003 Ров’язки завдань Слайд № 8 Задача 3a #include <iostream.h> #include <conio.h> void show_array(inta[], int n) {for (int I=0; I<n; I++) cout<<a[I]<<” “; cout<<endl;} //---------------------------------------------------- void get_array(int a[], int n) {for (int I=0; I<n; I++) cin>>a[I];} //---------------------------------------------------- int MaxEl(int a[], int m, int n) {int max=a[m]; int L=m; for (int I=m+1; I<n; I++) if (a[I]>=max) {max=a[I]; L=І;} return (L);} //--------------------------------------------------- void swap(int*a, int*b) {int temp=*a; * a= b; *b=temp;} //--------------------------------------------------- int main() {int n; cin>>n; int a[100]; get_array(a,n); int mc=0; int L; int nc=sizeof(a)/sizeof(a[0]); while (mc<nc) { L=MaxEl(a, mc, nc); swap(&a[mc], &a[L]); mc++;} show_array(a, n); getch(); return 0; } Задача 3b #include <iostream.h> #include <conio.h> void show_array(inta[], int n) {for (int I=0; I<n; I++) cout<<a[I]<<” “; cout<<endl;} //---------------------------------------------------- void get_array(int a[], int n) {for (int I=0; I<n; I++) cin>>a[I];} //---------------------------------------------------- void swap(int*a, int*b) {int temp=*a; * a= b; *b=temp;} //--------------------------------------------------- void bubl(int *mas[], int n) {bool fl=false; int j=1; do {fl=false; for (int I=0; I<n-j; I++) if (*max[I]>*mas[I+1]) {swap(&mas[I], &mas[I+1]; fl=true;} j++} while (fl) } //-------------------------------------------------- int main() {int n; cin>>n; int a[100]; get_array(a,n); int nc=sizeof(a)/sizeof(a[0]); bubl(&a, nc) show_array(a, n); getch(); return 0; }
Задача 4 (після сортування, замість виведення елементів масиву) for (int k=1; int I=0; I<n-1; I++) if (a[I]!=a[I+1]) k++; cout<<k<<endl;
Задача 5 (після сортування, замість виведення елементів масиву) int k=1, km=1, b=a[0]; for (int I=0; I<n-1; I++) if (a[I]==a[I+1]) k++; else if (k>km) {km=k; b=a[I], k=1;} cout<<b<<endl; Задача 6 (зміни внести в головну функцію) int main() {int n; cin>>n; int a[100]; get_array(a,n); int m; cin>>m; int b[100]; get_array(b, m); bubl(&a, n); bubl(&b, m); int I=0, L=0; do {if (a[I]!=b[L]) I++; else {cout<<a[I]<<” “; I++; L++;} while (I<n && L<m); getch(); return 0; } Задача 7 #include <iostream.h> #include <conio.h> void show_array(inta[], int n) {for (int I=0; I<n; I++) cout<<a[I]<<” “; cout<<endl;} //---------------------------------------------------- void get_array(int a[], int n) {for (int I=0; I<n; I++) cin>>a[I];} //---------------------------------------------------- int main() {int n; cin>>n; int a[100]; get_array(a,n); int m; cin>>m; int b[100]; get_array(b, m); int c[200]; int I=L=k=0; do {if (a[I]<b[L]) {c[k]=a[I]; k++;} else if (a[I]=b[L]) {c[k]=a[I]; I++; k++; c[k]=b[L]; L++; k++;} else {c[k]=b[L]; L++; k++;} } while (I<n && L<m); if (I==n && L!=m) {for (I=l; I<m; I++) {c[k]=b[L]; k++;}} else if (L==m && I!=n) {for I=L; I<n; I++) {c[k]=a[I]; k++;}} show_array(c, m+n); getch (); return 0;} Урок № 28 Тема: Практична робота “Впорядкування масивів” Мета:
Тип: Р озвиток навичок Обладнання:
Епіграф “Глаза бояться – руки делают” /народна мудрість/ Хід уроку
Урок № 29 Хід уроку
Статичні та динамічні дані У С++ змінні можуть бути розміщені або статично – під час компіляції, або динамічно – під час виконання програм, шляхом виклику відповідних функцій зі стандартної бібліотеки. Завдання, у яких потрібно зберігати й обробляти заздалегідь невідоме число елементів, зазвичай вимагають динамічного виділення пам'яті. Після того як потреба у динамічній змінній зникає, місце, яке вона займала, можна звільнити для інших динамічних об'єктів. Робота з динамічними даними Виділення динамічної пам'яті здійснюється операцією new. За допомогою new виділяється пам’ять, і адреса, з якої вона починається, заноситься у вказівник на потрібний тип: 1. int *n=new int; 2. int *m=new int (10); У зразку 1 виконується виділення достатньої для розміщення величини типу int ділянки динамічної пам'яті й записує адресу початку цієї ділянки в змінну n. Пам’ять під саму змінну n виділяється на етапі компіляції. Приклади Завдання (Слайд № 9) 1. Скласти програму, яка реалізує такі функцій для роботи з масивами: · Уведення елементів; · Виведення елементів; · Пошук максимального елементу масиву. 2. Скласти програму, яка реалізує такі функцій для роботи з масивами: · Уведення елементів; · Виведення елементів; · Обчислення суми додатних елементів масиву. Розв’язки завдань Задача 1 #include <iostrem.h> #include <conio.h> //---------------------------------------------- void _Input(int *, int); void _Print(int *, int); 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);} //---------------------------------------------- int main () {int n, *a; cin>>n; a=new int [n]; _Input(a,n); int L=MaxEl(a,n); _Print(a,n); cout<<a[L]<<endl; delete []a; getch (); return 0; } //----------------------------------------------- void _Inpur (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 #include <iostrem.h> #include <conio.h> //---------------------------------------------- void _Input(int *, int); void _Print(int *, int); int Sum(int a[], int n) {int s=0; for (int I=1; I<n; I++) s+=a[I]; return (s);} //---------------------------------------------- int main () {int n, *a; cin>>n; a=new int [n]; _Input(a,n); int L=Sum(a,n); _Print(a,n); cout<<L<<endl; delete []a; getch (); return 0; } //----------------------------------------------- void _Inpur (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; } Урок № 30 Тема: Багатовимірні масиви Мета:
Тип: Засвоєння нового матеріалу, розвиток навичок Обладнання:
Епіграф “Все идеи извлечены из опыта” /Ф. Энгельс/ Хід уроку
Приклад Написати програму, в якій для двовимірного масиву цілих чисел визначається номер крайнього стовпця, розташованого ліворуч, що містить тільки додатні елементи. Якщо такого стовпця немає, виводиться відповідне повідомлення. # include< iostream.h> int **a=new int *[ryad]; //виведення масиву // аналіз масиву 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; //вивільнення пам'яті Завдання (Слайд № 13) Випробуйте програму прикладу. Переробіть її так, щоб визначити номер крайнього стовпця, розташованого ліворуч, що містить тільки від'ємні елементи. Якщо такого стовпця немає, виводиться відповідне повідомлення. A. У зворотному порядку B. З парними індексами C. З непарними індексами D. Які є парними числами E. Які є непарними числами Література 1. Лєхан С.Ф. Інформатика С++. Спецкурс. 10-12 класи. – Шепетівка; Аспект, 2007. 2. Глинський Я.М., Анохін В.Є., Ряжська В.А. С++ і С++ Builder. Навчальний посібник. – Львів: СПД Глинський, 2006. 3. Глушаков С.В., Смирнов С.В., Коваль А.В. Практикум по С++. – Харьков: Фолио, 2006. 4. Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб.: Питер, 2003 Розв’язки завдань Слайд № 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 Хід уроку
Тематична атестація з теми «Масиви у С++»
|