Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 273; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.220.43.27 (0.007 с.) |