![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Тема: Вказівники, динамічні змінні й масивиСодержание книги
Поиск на нашем сайте
Мета:
Тип: Засвоєння нового матеріалу, розвиток навичок Обладнання:
Епіграф “Напимание хороших программ требует ума, вкуса и терпения” /Б. Страуструп/ Хід уроку
Теоретичний матеріал до уроку «Вказівники, динамічні змінні й масиви» Статичні та динамічні дані У С++ змінні можуть бути розміщені або статично – під час компіляції, або динамічно – під час виконання програм, шляхом виклику відповідних функцій зі стандартної бібліотеки. Статичне розміщення більш ефективне, тому що виділення пам'яті відбувається до виконання програми, але ми повинні заздалегідь знати тип і розмір розташовуваної змінної. Завдання, у яких потрібно зберігати й обробляти заздалегідь невідоме число елементів, зазвичай вимагають динамічного виділення пам'яті. Після того як потреба у динамічній змінній зникає, місце, яке вона займала, можна звільнити для інших динамічних об'єктів. Робота з динамічними даними Виділення динамічної пам'яті здійснюється операцією new. За допомогою new виділяється пам’ять, і адреса, з якої вона починається, заноситься у вказівник на потрібний тип:
1. int *n=new int; 2. int *m=new int (10); У зразку 1 виконується виділення достатньої для розміщення величини типу int ділянки динамічної пам'яті й записує адресу початку цієї ділянки в змінну n. Пам’ять під саму змінну n виділяється на етапі компіляції. У зразку 2, крім описаних вище дій, проводиться ініціалізація виділеної пам'яті значенням 10. Робота з динамічними даними. Виділення динамічної пам'яті 3. int n=100;//розмірність масиву У зразку 3 створюється динамічний масив, але p – не його ім'я, а вказівник, що зберігає адресу початку безперервної області динамічної пам'яті, достатньої для розміщення 100 елементів дійсного типу. Увага! Динамічні масиви при створюванні ініціювати не можна, і вони не заповнюються нулями. Доступ до елементів динамічного масиву здійснюється так само, як до статичного: p[5] або *(p+5) Робота з динамічними даними. Звільнення динамічної пам'яті Для звільнення пам'яті, виділеної за допомогою операції new, використовують операцію delete: 1. delete n; 2. delete m; 3. delete [] p; Приклади З клавіатури вводиться ціле число n, а потім ще n цілих чисел. Розмістити уведені n чисел у динамічному масиві, після чого вивести їх на екран, відокремивши пропусками. # include< iostream.h> Скласти програму, яка реалізує такі функцій для роботи з масивами: · Уведення елементів; · Виведення елементів; · Сортування масиву. # include< iostream.h> //--------функції------------------ Завдання (Слайд № 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 Тема: Багатовимірні масиви Мета:
Тип: Засвоєння нового матеріалу, розвиток навичок Обладнання:
Епіграф “Все идеи извлечены из опыта” /Ф. Энгельс/ Хід уроку
Теоретичний матеріал до уроку «Багатовимірні масиви» Багатовимірні масиви. Статичні масиви p Опис float a[5][4]; p Початкові значення int c[3][2]={{4,2},{6,7},{5,8}}; //початкові значення групуються в рядки int d[2][2]={{10},{9,14}}; // d[0][0]=10, d[0][1]=0 p Звернення до елементу a[i][j] Багатовимірні масиви. Динамічні масиви p Опис int ryad, stovp; cin>>ryad>>stovp; int **a=new int *[ryad]; //вказівник на вказівник на int, виділяється пам’ять під масив вказівників на рядки масиву for (int i=0; i<ryad; i++) //цикл для виділення пам'яті під кожен рядок масиву p Звільнення пам'яті delete [] a; Приклад Написати програму, в якій для двовимірного масиву цілих чисел визначається номер крайнього стовпця, розташованого ліворуч, що містить тільки додатні елементи. Якщо такого стовпця немає, виводиться відповідне повідомлення. # 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) Випробуйте програму прикладу. Переробіть її так, щоб визначити номер крайнього стовпця, розташованого ліворуч, що містить тільки від'ємні елементи. Якщо такого стовпця немає, виводиться відповідне повідомлення.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-06-06; просмотров: 279; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.89.2 (0.01 с.) |