Одновимірні масиви. Двовимірні масиви. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Одновимірні масиви. Двовимірні масиви.



 

Мета роботи:

1. Оволодіти правилами опису регулярних типів даних.

2. Вивчити операції та стандартні функції і процедури, які застосовуються до регулярних типів даних.

3. Здобути навички роботи з масивами і рядками символів.

Теоретичні відомості.(Pascal)

Масив – це структурний тип даних, який складається з фіксованої кількості елементів однакового (базового) типу.

Масив на мові Паскаль можна описати таким чином:

type <назва типу>=array [розмір] of <тип елементів>;

var <ідентифікатор,…>:<назва типу>;
або var <ідентифікатор,…> array [розмір]of <тип елементів>;

Приклад: var A,B: array [ 1..10 ] of integer;

Масиви можуть бути одновимірними (вектори), двовимірними (матриці) та багатовимірними.

Достyп до кожного окремого елемента масиву відбувається за його індексом, наприклад, A[2], A[i], A[i,j]. Індексовані елементи масиву можна використовувати як звичайні змінні відповідного типу.

Для роботи з масивами як цілими об’єктами можна застосовувати лише операції відношення “дорівнює” (А=В), “не дорівнює” (A<>B) та операцію присвоєння (А:=В). Це допускається тільки тоді, коли масиви мають однакову структуру.

Рядок – це послідовність символів. При використанні у виразах рядок береться в лапки. Довжина рядка може змінюватися в межах від 0 до 255.

Рядок можна описати таким чином:

var <ідентифікатор,…>: string [максимальна довжина рядка];

Приклад: var St, St1, St2: string[50];

Доступ до кожного окремого символу рядка відбувається з допомогою його номера (індексу), наприклад, St[3], St[i], St[i+j].

Над рядками можна виконувати операцію конкатенації (+), яка зчеплює рядки в один рядок, і операції відношення (=, <>, >, >=, <, <=). Порівняння рядків відбувається зліва направо до першого символу, який не співпадає. Результатом порівняння є TRUE або FALSE.

 

Теоретичні відомості.(C)

Це структуровані типи даних. До цього типу відносяться ще записи і файли. Індекс елемента масиву завжди ціле число. Кількість елементів масиву задається при оголошенні і надалі не міняється.

Оголошення масиву в програмі:

<тип><ім’я масиву>[розмір1][розмір2]…

для одновимірного масиву <тип><ім’я масиву>[розмір1].

Розмір – кількість елементів.

Для двохвимірних масивів. <тип><ім’я масиву>[розмір1][розмір2].

Таким чином масиви оголошуються так само, як змінні, наприклад:

Int A[100]; (від а[0] до a[99])

Char B[30];

Float C[42];

В мові Сі не перевіряється вихід індекса за межі масиву (немає повідомлень про помилку при виконанні програми).

Звертання до елемента 2-вимірного масиву А[5][9]. В мові Сі існує тісний взаємозв’язок між вказівниками і масивами. Будь-яка дія, що досягається індексуванням масиву, може бути виконана також за допомогою вказівників, причому цей варіант буде швидшим.

Оголошення int a[5] визначає масив з 5 елементів: a[0], a[1], a[2], a[3], a[4].

Якщо об’єкт *Y оголошений, як Int *Y; то оператор Y = &a[0]; надає змінній Y адресу елемента а[0].

A[0] A[1] A[2] A[3] A[4]

 

Y вказує на черговий елемент масиву, а y +1 вказує на наступний елемент масиву (кількість байт, яку займає елемент масиву, враховується автоматично).

Оскільки ім’я масиву є завжди адресою його нульового елемента, запис y = &a[0]; є аналогічним y =a; тоді елемент a[i] можна представити, як *(a+ i). Записи y[i] та *(y + i) також еквівалентні. Таким чином, будь-який масив і його індексний вираз можна представити через вказівники. Треба тільки враховувати, що ім’я масиву – константа. Тому вирази типу а ++; і z = &a; використовувати не можна, а у = а, і у ++ можна.

Приклад програми з використанням масивів. Вводиться рядок з десяти символів, які потім друкуються у зворотньому порядку.

#include<stdio.h>

Main()

{ char s[10]; /* оголошення масиву s з 10 елементів символьного типу */

int i;

puts (“ Введіть рядок з 10 символів “);

for (i = 0; i< 10; i++) scanf (“%c “, &s[i ]);/* Ввід елементів масиву s */

for (i = 9; i >= 0; i - -) printf (“ %c”, s[i]);

/* друк елементів масиву s у зворотньому порядку */

}

Інший приклад – програма, яка впорядковує масив з 10 цілих чисел за зростанням.

#include <stdio.h>

Main()

{

int m[10],i, n, k, ind;

puts(“введіть елементи масиву”);

for (i= 0; i <10; i++) scanf(“%d”,&m[i]);

for (n = 9; n>=0; n--)

{

k = -32768; /* мінімальне ціле число */

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

if (m[i]>k) {k=m[i]; ind=i;}

m[ind] = m[n]; m[n] =k;

/* на місце найбільшого елемента записуємо перший елемент, а на його місце – найбільший */

}

puts(“впорядкований масив”);

for (i = 0; i< 10; i++) printf(“%d”,m[i]);

}

та сама програма на мові Pascal.

Program sort;

Var

M: array[1..10] of integer;

I, n, k, ind: integer;

Begin

Writeln(‘введіть елементи масиву’);

For i:= 1 to 10 do read(m[i]);

For n:= 10 downto 1 do

Begin

K:= -32768;

For i:= 1 to n do

If m[i] > k then

Begin

K:= m[i];

Ind:= i;

End;

M[ind]:= m[n];

M[n]:= k;

End;

Writeln (‘впорядкований масив’);

For i:= 1 to 10 do writeln(m[i]:4);

End.

Двовимірні масиви

Двовимірний масив це масив одновимірних масивів. (мова Сі допускає багатомірні масиви).

Приклад:

#include <stdio.h>

#include <string.h>

Main()

{

char text[5][20];

strcpy (text[0], “Turbo Basic”);

strcpy (text[1], “Turbo Pascal”);

strcpy (text[2], “Borland C++”);

strcpy (text[3], “Turbo Prolog”);

strcpy (text[4], “Paradox”);

}

тут ми заповнили масив text[][].

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

Одновимірні: float mas[6] = {1.1,2.2,3.3,4.0,5,6};

Двохвимірні: int a[3][5] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; (Один із способів)

або int a [3][5] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};

Якщо цифр менше ніж 3*5, то решта елементів масиву не визначені.

Можна ініціалізувати масив без вказання його розміру.

Char mas[] = “масив без оголошення розміру”.

Компілятор сам підрахує необхідну кількість елементів масиву. Таким способом можна оголошувати масиви будь-якого типу, і багатовимірні масиви. (Для багатовимірних розмір не вказується тільки в лівих дужках)

Int mas [ ] = { 1,2,3,4,1,2,3 };

Int arr [ ] [3] = { 1,2,3,

5,6,7,

8,9,0 };

Масиви вказівників

Вказівники, як і змінні інших типів, можна об’єднувати в масиви. Оголошення масиву вказівників на 10 цілих чисел має вигляд

Int *x [10];

Кожному з елементів цього масиву можна присвоїти адресу; наприклад

X[2] = &y; (адреса змінної у).

Щоб знайти значення змінної у, треба записати *x[2].

Масиви вказівників зручно використовувати для обробки масивів рядків.

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

/* Приклад ініціалізації масиву вказівників*/

#include<stdio.h>

Main ()

{ int n;

char *name[ ] {

“ неправильний номер місяця”,

“ січень”,

“ лютий”,

“ березень”,

“ квітень”,

“ травень”,

“ червень”,

“ липень”,

“ серпень”,

“ вересень”,

“ жовтень”,

“ листопад”,

“ грудень”,};

puts (“ Введи номер місяця”);

scanf (“ %d”,&n);

printf (“ назва місяця -%s”,(n < 1|| n>12)? Name[0]: name[n]);

}

Введи номер місяця

назва місяця – серпень

 

Робота з одновимірними масивами

Завдання 1. Скласти програму і розв’язати задачу згідно варіанту. Вхідні дані підібрати самостійно з метою перевірки правильності розробленого алгоритму.

 

1. Дано координати точок Якщо точка попадає в площину, обмежену колом , то вивести на друк координати цієї точки і повідомлення “ТОЧКА В ПЛОЩИНІ”; Якщо точка за межами кола, то вивести на друк координати точок і повідомлення “ТОЧКА ЗА МЕЖАМИ”. .

2. Дано цілочисловий одновимірний масив, який складається з 16 елементів. Знайти парні елементи масиву, які більші числа А і їх кількість. Число А ввести з клавіатури.

 

3. Дано одновимірний масив Р, який складається з 16 елементів. Знайти номери тих елементів, модуль яких дорівнює заданому числу А. Число А ввести з клавіатури.

4. Дано цілочисловий одновимірний масив Т, який складається з 25 елементів. Сформувати два масиви: перший, який складається з додатніх елементів масиву Т, другий – з від’ємних.

5. Дано одновимірний масив Р, який складається з 30 елементів. Знайти мінімальний елемент і його порядковий номер. Знайти числа, які знаходяться перед мінімальним елементом, поділити на нього. Вивести на друк заданий і новоутворений масиви.

6. Дано одновимірний масив Р, який складається з 32 елементів. Обчислити значення функції для від’ємних елементів масиву і підрахувати їх кількість.

 

7. Обчислити елементи масиву Т, який складається з 8 елементів:

 

8. Дано одновимірний масив Х, який складається з 15 елементів. Визначити півсуму найбільшого і найменшого елементів масиву.

9. Дано одновимірний масив С, який складається з 16 елементів, поміняти місцями максимальний і мінімальний елементи.

10. Дано одновимірний масив В, який складається з 12 елементів. Сформувати вектор С, що повинен складатися з елементів вектора В, які знаходяться перед максимальним елементом. Вивести на друк вектори В і С.

11. Дано цілочисловий одновимірний масив С, який складається з 15 елементів. Знайти максимальний елемент і його порядковий номер. Всі непарні числа, які знаходяться за максимальним елементом, звести до квадрата. Вивести на друк заданий і новоутворений масиви.

12. Обчислити значення перших 15 елементів геометричної прогресії, коли відомий перший елемент і її знаменник . Наступний елемент геометричної прогресії утворюється множенням попереднього на знаменник прогресії.

Примітка: для розміщення в пам’яті обчислених елементів прогресії їх слід оголосити як масив.

13. Дано одновимірний маисв С, який складається з 12 елементів. Вилучити з масиву -й елемент масиву ().

14. Дано послідовність цілих чисел . Відомо, що в ній є два однакові числа. Вивести на друк порядкові номери цих двох однакових чисел і значення цього числа.

15. Дано цілочисловий масив А, який складається з 12 елементів. Створити масив С, який складається з непарних чисел масиву А, полічити кількість елементів масиву С. Вивести на друк заданий і новоутворений масиви.

16. Обчислити суму всіх елементів масива.

17. Обчислити суму елементів масиву, що мають парні індекси.

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

19. Обчислити добуток парних елементів масиву, що передують першому від’ємному елементу масиву.

20. Обчислити суму елементів масиву, що є кратними 4 і які стоять після першого нульового елемента.

21. Визначити кількість нульових, від’ємних та додатніх елементів масиву.

22. Визначити індекс першого та останнього нульового елемента масиву.

23. Визначити індекси всіх нульових елементів масиву.

24. Визначити максимальній елемент масиву та його індекс.

25. Визначити мінімальний елемент масиву та його індекс.

26. Визначити номер першого максимального (мінімального) елемента.

27. Визначити кількість мінімальніх елементів масиву.

28. Визначити кількість максимальних елементів масиву.

29. Всі максимальні елементи масиву замінити на 99, а мінімальні -на 0.

30. Обміняти місцями перший та максимальній елемент.

31. Обміняти місцями останній та мінімальний елемент.

32. Обміняти місцями попарно всі елементи масиву.

33. Зсунути всі елементи масиву на 1 вліво.

34. Зсунути всі елементи масиву на 1 вправо.

35. Зсунути всі елементи масиву на 2 вправо.

36. Відсортувати масив по зростанню, з використанням мінімального елемента.

37. Відсортувати масив по зростанню, з використанням максимального елемента.

38. Відсортувати масив з використанням метода кульки.

 



Поделиться:


Последнее изменение этой страницы: 2016-09-05; просмотров: 1244; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.220.137.164 (0.039 с.)