У вас вопросы?
У нас ответы:) SamZan.net

Лабораторна робота 25 Лабораторна робота 2

Работа добавлена на сайт samzan.net: 2016-06-20

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 7.3.2025

рограмування  Лабораторна робота № 2_5

Лабораторна робота № 2.5
"Робота з одновимірними масивами. Функції і масиви "

Мета: Отримання навиків обробки одновимірних масивів. Організувати обробку масивів з використанням функцій, навчитися передавати масиви як параметри функцій.

  1.  Короткі теоретичні відомості

1.1. Визначення масиву

Визначення масиву містить тип елементів, ім'я масиву і кількість елементів в масиві.

int mas[10];

0

1

2

3

4

5

6

7

8

9

Т. ч. індекси елементів в масиві mas можуть мінятися від 0 до 9, всього в масиві 10 елементів.

1.2. Ініціалізація масиву

Ініціалізація масивів можлива при їх визначенні:

double d[] = {1, 2, 3, 4, 5};

Довжина масиву обчислюється компілятором по кількості значень перерахованих у фігурних дужках.

1.3. Покажчики

Кожна змінна в програмі це об'єкт, що має ім'я і значення на ім'я можна звернутися до змінної і отримати її значення. Оператор привласнення ( =  ) виконує зворотну дію: імені змінної ставиться у відповідність значення.

a=10;     

               

Вираз &a дозволяє отримати адресу ділянки пам'яті, виділеної змінній а. Операція & застосовна тільки до об'єктів які мають ім'я і розміщені в пам'яті.

Маючи нагоду визначити адресу змінної з допомогою &, треба мати нагоду працювати з цією адресою: зберігати його, передавати, перетворювати. Для цього вводиться поняття покажчика. Покажчик - це змінна, значенням якої служить адреса об'єкту конкретного типу. Нульова адреса позначається константою NULL, яка визначена в заголовному файлі stdio.h. Щоб визначити покажчик треба повідомити на об'єкт якого типу посилається цей покажчик.

char *z;

int *k,*i;

float *f;

* - це операція розіменування. Операндом цієї операції завжди є покажчик. Результат операції - це той об'єкт, який адресує покажчик_операнд.

*z=’$ ‘;

*k=*i=0;

Приклад:

int e, з, b *m;

. . . . . . . . .

m = &e ;

*m = з + b ;

Операції над покажчиками.

привласнення (=);

отримання значення  об'єкту, на який посилається покажчик (*);

отримання адреси самого покажчика (&).

Приклад:

int date = 10;

int *i *k;;

i = &date;

до = i;

z = NULL;

Подібно будь-яким змінним змінна типу покажчик має ім'я, адрес в пам'яті і значення.

   

 

За допомогою унарних операцій ++ і –- числові значення змінних типу покажчик міняються по різному, залежно від типа даних, з яким пов'язані ці змінні.

Приклад:

char *z;

int *k,*i;

float *f;

. . . . . . .

z++; // значення змінюється на 1

i++; // значення змінюється на 2

f++; // значення змінюється на 4

Т. ч. при зміні покажчика на 1, покажчик переходить до початку наступного (попереднього) поля тієї довжини, яка визначається типом об'єкту, що адресується покажчиком.

1.4. Покажчики і масиви

Ім'я масиву без індексу є покажчиком-константою, тобто адресою першого елемента масиву (а[0]).

а

*a = = а[0];

*(a+1) = = а[1];

. . . . . . . . .

*(a+i) = =a[i];

Відповідно до синтаксису в Сі існують тільки одновимірні масиви, але їх елементами, у свою чергу, теж можуть бути масиви.

int а[5][5];

1.5. Функції

Функцію в Сі можна розглядати:

як один з похідних типів даних (разом з масивами і покажчиками);

як мінімальний виконуваний модуль програми (підпрограму).

Всі функції мають єдиний формат визначення:

<тип><ім’я_функції>(<список_формальних_параметрів>), де

<тіло_функції>, де

<тип> - або void, якщо функція не повертає значення, або тип що повертається функцією значення;

<ім’я_функции> - або main для основної функції, або довільний ідентифікатор, не співпадаючий із службовими словами і іменами інших об'єктів програми;

<список_формальних_параметрів> - або порожній ( ), або список, кожний елемент якого має вигляд:

<позначння_типу><ім’я_параметра>

Наприклад:

(int до )

(char i, char j, int z)

<тіло_функції>  - це частина визначення функції, укладена у фігурні дужки { }.Тело функції може бути або складовим оператором, або блоком. Визначення функцій не можуть бути вкладеними.

Для передачі результату з функції в ту, що викликає функцію використовується оператор return. Він може використовуватися в двох формах:

  1.  return; - завершує функцію не повертаючи ніякого значення (тобто  перед ім'ям функції вказаний тип void)
  2.  return <вираз>; - повертає значення виразу, вираз повинен мати тип, вказаний перед ім'ям функції.

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

Приклад:

int op (char з, int x, int  у)

{

switch з

{

case ‘+’ : return x+y;

case ‘ -’ : return x-y;

case ‘*’ : return x*y;

case ‘/’ : return x/y;

default: cout<<“\nОперация не визначена”;

return 0;

}

}

Виклик  функції здійснюється таким чином:

<позначння функції>(<список фактичних параметрів>); де

<позначння функції> - або ім'я функції, або покажчик на функцію;

<список фактичних параметрів> - список виразів, кількість яких рівно числу формальних параметрів функції. Між формальними і фактичними параметрами повинна бути відповідність по типах.

Наприклад:

з = op ( ‘+’, 5,4 );

Синтаксис Сі передбачає тільки один спосіб передачі параметрів - передача по значенню (тобто змінити значення параметрів усередині функції не можна).  Але існує можливість побічно змінити значення змінних які передаються у вигляді параметрів: за допомогою покажчика у функцію, що викликається, можна передати адресу будь-якого об'єкту із зухвалої програми. Якщо покажчик розіменування, то вийде значення, записане за цією адресою.

Приклад:

1)

//опис функції для обміну змінних а і b

void change (int а,int b)

{

int r;

r = а; а = b; b = r;

}

// виклик функції

change(а, b);

Обміну не відбудеться, оскільки результат не буде переданий в  програму, що викликає.    

2)

void change (int *a,int *b)

{

int r;

r = *a; *a = *b; *b = r;

}

// виклик функції

change(&a &b);

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

1.6. Масиви і рядки як параметри функцій

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

Приклад:

//обчислення суми елементів масиву

//варіант 1

int sum (int n, int a[] )

{

int i,int s=0;

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

s+=a[i]

return s;

}

void main()

{

int a[]={ 3, 5, 7, 9, 11, 13, 15 };

int s = sum( 7, а );

cout<<s;

}

//варіант 2

int sum (int n, int *a)

{

for(int i=0, s=0; i<n; s+=*(a+i),i++ );

return s;

}

void main()

{

int a[]={ 3, 5, 7, 9, 11, 13, 15 };

int s = sum( 7, а );

cout<<s;

}

Рядки як фактичні параметри можуть бути визначені або як одновимірні масиви типу char[], або як покажчики типу char*.  На відміну від звичайних масивів в цьому випадку немає необхідності явно указувати довжину рядка.

2. Постановка задачі

Використовуючи одновимірний масив, виконати його обробку відповідно до варіанту завдання.

2.1. Методические вказівки до задачі

1) При виконанні роботи використовуються статичні масиви. Для організації статичних масивів з псевдозмінними межами необхідно оголосити масив достатньо великої довжини, наприклад, 100 елементів:

int N=100;

int а[N];

Потім користувач вводить реальну довжину масиву (не більше N) і працює з масивом тієї довжини, яку він сам вказав. Решта елементів (хоча пам'ять під них і буде виділена) не розглядається.

2) При зменшенні або збільшенні довжини масиву необхідно змінювати його реальну довжину.

2.2. Варіанти задачі

1.

  1.  Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
  2.  Роздрукувати отриманий масив.
  3.  Видалити елемент з номером К.
  4.  Додати після кожного парного елемента масиву елемент із значенням 0.
  5.  Роздрукувати отриманий масив.

2.

  1.  Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
  2.  Роздрукувати отриманий масив.
  3.  Видалити перший елемент рівний 0.
  4.  Додати після кожного парного елемента масиву елемент із значенням M[ I-1 ]+2.
  5.  Роздрукувати отриманий масив.

3.

  1.  Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
  2.  Роздрукувати отриманий масив.
  3.  Видалити всі елементи рівні 0.
  4.  Додати після першого парного елемента масиву елемент із значенням M[ I-1 ]+2.
  5.  Роздрукувати отриманий масив.

 

4.

  1.  Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
  2.  Роздрукувати отриманий масив.
  3.  Видалити елементи, індекси яких кратні 3.
  4.  Додати після кожного негативного елемента масиву елемент із значенням M[ I-1 ]+1|.
  5.  Роздрукувати отриманий масив.

5.

  1.  Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
  2.  Роздрукувати отриманий масив.
  3.  Видалити елементи кратні 7.
  4.  Додати після кожного непарного елемента масиву елемент із значенням 0.
  5.  Роздрукувати отриманий масив.

6.

  1.  Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
  2.  Роздрукувати отриманий масив.
  3.  Видалити елемент із заданим номером.
  4.  Додати після першого парного елемента масиву елемент із значенням M[ I-1 ]+2.
  5.  Роздрукувати отриманий масив.

7.

  1.  Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
  2.  Роздрукувати отриманий масив.
  3.  Видалити останній елемент рівний 0.
  4.  Додати після елемента масиву із заданим індексом елемент із значенням 100.
  5.  Роздрукувати отриманий масив.

8.

  1.  Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
  2.  Роздрукувати отриманий масив.
  3.  Видалити всі елементи із заданим значенням.
  4.  Додати перед кожним парним елементом масиву елемент із значенням 0.
  5.  Роздрукувати отриманий масив.

9.

  1.  Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
  2.  Роздрукувати отриманий масив.
  3.  Видалити перший елемент із заданим значенням.
  4.  Зсунути масив циклічно на К елементів управо.
  5.  Роздрукувати отриманий масив.

10.

  1.  Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
  2.  Роздрукувати отриманий масив.
  3.  Видалити 5 перших елементи масиву.
  4.  Додати в кінець масиву 3 нові елементи.
  5.  Роздрукувати отриманий масив.

11.

  1.  Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
  2.  Роздрукувати отриманий масив.
  3.  Видалити 5 останніх  елементів масиву.
  4.  Додати в початок масиву 3 елементи із значенням M[ I+1 ]+2.
  5.  Роздрукувати отриманий масив.


12.

  1.  Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
  2.  Роздрукувати отриманий масив.
  3.  Поміняти місцями мінімальний і максимальний елементи масиву.
  4.  Видалити з масиву всі елементи перевищуючі його середнє значення більш, ніж на 10%.
  5.  Роздрукувати отриманий масив.

13.

  1.  Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
  2.  Роздрукувати отриманий масив.
  3.  Видалити з  масиву всі елементи співпадаючі з його мінімальним значенням.
  4.  Додати в початок масиву 3 елементи із значенням рівним середньому арифметичному масиву.
  5.  Роздрукувати отриманий масив.

14.

  1.  Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
  2.  Роздрукувати отриманий масив.
  3.  Перевернути масив і, якщо число елементів масиву непарне, видалити його середній елемент.
  4.  Додати в початок масиву 3 елементи із значенням M[ I+10 ]-2.
  5.  Роздрукувати отриманий масив.

15.

  1.  Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
  2.  Роздрукувати отриманий масив.
  3.  Видалити всі елементи із заданим значенням.
  4.  Додати перед кожним парним елементом масиву елемент із значенням 0.
  5.  Роздрукувати отриманий масив.

16.

  1.  Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
  2.  Роздрукувати отриманий масив.
  3.  Видалити елемент з номером К.
  4.  Додати після кожного парного елемента масиву елемент із значенням 0.
  5.  Роздрукувати отриманий масив.

7


10

а

&а

$

*z

z

0

*k

0

*i

i

30

m

10

20

c

b

e

10

date

&date

k   i

Значение

Значение объекта

Указатель а

&a

*а –объект,
адресуемый указателем а




1. Организация кафе быстрого обслуживания.html
2. Курсовая работа- Появление и выявление подростковой депрессии
3. бук и контролирует соответствие его использования
4. Отдельные обязательные случаи деятельности ревизионных комиссий определены законодательством
5. берёзовых насаждениях нами установлено что оптимальный состав этих насаждений 8С2Б а схема создания 2 ~ 075 м
6. КАВКАЗСКИЙ ЭКОНОМИЧЕСКИЙ РАЙОН Состав- Ростовская область Краснодарский и Ставропольский края; Адыгейска
7. 3 подхода по 10 раз Подъём гантелейруки согнуты
8. Программное обеспечение вычислительной техники и автоматизированных систем
9. Организация статистики в РФ
10. Мехатронные системы Методическое пособие к выполнению лабораторной работы