17112

Масиви. Селективна обробка масивів

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторна робота № 21 Тема: Масиви. Селективна обробка масивів Ціль роботи: вивчити роботу з масивом як зі складеним типом даних прийоми введення і виведення даних обробку одномірних масивів. Обладнання: ПКПО Borland C Теоретичні відомості Масив це набір...

Украинкский

2013-06-29

74 KB

5 чел.

Лабораторна робота № 21

Тема: Масиви. Селективна обробка масивів

 Ціль роботи: вивчити роботу з масивом як зі складеним типом даних, прийоми введення і виведення  даних, обробку одномірних масивів.

Обладнання: ПК,ПО Borland C++

Теоретичні відомості

Масив - це набір об'єктів (елементів) однакового типу, доступ до яких здійснюється прямо по індексу в масиві. Звертання до масивів у Среалізовано за допомогою покажчиків (pointers).

Масив у Сможна оголосити в такий спосіб:

[Клас_пам'яті] Тип_даних Ім'я_масиву> [<Розмір_масиву>];

Розмір_масиву може бути заданий константним вираженням.

Доступ до елементів масиву відбувається в такий спосіб:

<Ім'я_масиву>[<Значення_індексу>], тобто, використовуючи ім'я масиву й індекс від 0 до (Розмір_масиву -1), тобто на одиницю менше, ніж <Розмір_масиву>.

Приклад оголошення масиву:

char name[20];

int grad[125];

float b[30];

Масив має ім'я (name), що є покажчиком на тип елементів масиву й адресує перший елемент з індексом (). Ім'я масиву фактично є константним покажчиком, що посилається на початкову адресу даних, з якого розташований сам масив і може бути використане як покажчик. Звертання до елементів може здійснюватися в такий спосіб name[0] -1-ий елемент масиву, name[1]- 2-ий елемент, name[19] – останній 20-ий елемент.

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

(sizeof(тип)*Розмір_масиву) байтів.

Масив розміщається послідовно в пам'яті, тобто кожна наступна осередок розташований відразу після попередньої.

У С++ не включені стандартні оператори, що здійснюють роботу з масивами, як стандартними типами даних. Щоб скопіювати дані з одного масиву в інший необхідно організувати функцію, тіло якої повинно мати приблизно наступний вид:

for(i=0; i<rasm; i++) mas2[i] = mas1[i];

де rasm - розмір масивів, що відповідає зазначеному в їхньому оголошенні

# define rasm 20

int mas2[rasm], mas1[rasm];

Приклад

/*    ЗАНЯТТЯ N 9

Виконав студент групи .........   Петров Ю.В.

Застосування масивів при роботі з перемінними

різних типів (int,float), зміна значень

перемінних. Приклади прийомів роботи з масивами  */

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#define N 15

#define M 10

int p[N],   x[N], i, j, j1, count=0;

int y[N*2], z[N]={15,37,10,-20,-10,25,27,30,89,67,\

   24,-6,22};

int   *pi=y;        //Два останніх елементи z[N] рівні 0

float *pf, mf[N];

void main()

{ clrscr();   randomize();

  pf=mf;

  printf("Вихідний масив p[]: \n");

  for (і=0;і<N;і++)

   { p[і]=random(81)-40;  //Ініціалізація за допомогою функції

     printf("%4d",p[і]);  //random() в інтервалі +40...-40

     if (p[і]>0)     //Вибір елементів >0 у масив х[]

  { x[count]=p[i];

    mf[count]=x[count]/5.5;

    count++;

  }

    }

   printf("\n");

   printf("Вихідний масив z[j]: \n");

   for (і=0;і<N;і++) printf("%4d",z[і]);

   printf("\nрабочий масив x[count]>0 з p[і]: \n");

   for (і=0;і<count;і++) printf("%4d",x[і]);

   j=0;//Вибір елементів у масив у[] з z[] і р[] за умовами

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

    {if (z[i]>=-M && z[i]<=(M+N) && (z[i]%2==0))

 { *pi = z[i];  pi++; j++;}

     if (p[i]>=-M && p[i]<=(M+N) && (p[i]%2==0))

 { *(y+j)=p[i]; pi++; j++;}

    }

   j1=j;

   printf("\nрабочий масив y[j] з z[і] і р[і] за умовами \n");

   printf(" -M<y[j]<(M+N) і парне:\n");

   for (і=0;і<j1;і++)  printf("%4d",y[і]);

   printf("\nрабочий масив mf[j]=x[j]/5.5 \n");

   for (і=0;і<count;і++)  printf("%6.4f ",*(pf+і));

      //Сортування масиву x[]

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

     for (j=i;j<count;j++)

if (x[i]<x[j])

  {int c=x[i];x[i]=x[j];x[j]=c;

  }

else continue;

     //Сортування масиву в[]

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

     for (j=i;j<j1;j++)

if (y[i]<y[j])

  {int c=y[i];y[i]=y[j];y[j]=c;

  }

else continue;

   printf("\nсортированный масив x[]: \n");

   for (і=0;і<count;і++)

      printf("%4d",x[і]);

   printf("\nсортированный масив y[]: \n");

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

      printf("%4d",y[i]);

   getch();

}

/*Вихідний масив p[]:

 32  37 -34  11  30   8 -11 -38   6 -21 -27 -23 -30 -19 -29

Вихідний масив z[j]:

 15  37  10 -20 -10  25  27  30  89  67  24  -6  22   0   0

Робочий масив x[count]>0 з p[і]:

 32  37  11  30   8   6

Робочий масив y[j] з z[і] і р[і] за умовами

      -M<y[j]<(M+N) і парне:

 10 -10   8   6  24  -6  22   0   0

Робочий масив mf[j]=x[j]/5.5

 5.8182 6.7273 2.0000 5.4545 1.4545 1.0909

Сортований масив x[]:

 37  32  30  11   8   6

Сортований масив y[]:

 24  22  10   8   6   0   0  -6  -10    */

Приклад програми на С++

Скласти програму для обробки масиву відповідно до індивідуального завдання приведеному в таблиці 9.1.

Вар.

Умова задачі

6

Обчислити добуток позитивних чисел масиву

#include<iostream.h>

#define COUT cout<<"s="<<s

void main()

{int i;

double x[10],s;

cout<<"input array x:\n";

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

cin>>x[i];

s=1.0;

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

{if(x[i]>0) s=s*x[i];

}

COUT;

}

Хід роботи

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

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

3.Розробити і набрати програму, налагодити її на комп'ютері, вивчити роботу операторів.

4.Одержати результати.

5.Оформити звіт.

6.Підготуватися до захисту лабораторної роботи, вивчивши контрольні питання по даній темі.

Вимоги до змісту звіту приведені в лабораторній   роботі   №1

Індивідуальне завдання

Скласти програму для обробки масиву відповідно до індивідуального завдання приведеному в таблиці 9.1.

Таблиця 9.1 - індивідуальне завдання

Вар.

Умова задачі

1

Знайти суму парних чисел масиву

2

Обчислити добуток негативних чисел масиву

3

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

4

Знайти суму негативних чисел масиву

5

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

6

Обчислити добуток позитивних чисел масиву

7

Знайти суму позитивних чисел масиву

8

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

9

Обчислити добуток парних чисел масиву

10

Знайти суму непарних чисел масиву

11

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

12

Обчислити добуток непарних чисел масиву

13

Знайти суму кратних 3 чисел масиву

14

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

15

Обчислити добуток кратних 3 чисел масиву

16

Знайти суму не кратних 3 чисел масиву

17

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

18

Обчислити добуток не кратних 3 чисел масиву

19

Знайти суму кратних 4 чисел масиву

20

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

21

Обчислити добуток кратних 4 чисел масиву

22

Знайти суму не кратних 4 чисел масиву

23

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

24

Обчислити добуток не кратних 4 чисел масиву

25

Знайти суму кратних 5 чисел масиву

26

Обчислити середнє арифметичне позитивних парних елементів масиву

27

Знайти середнє геометричне негативних непарних елементів масиву

28

Знайти добуток негативних не кратних п'яти елементів масиву

29

Знайти середнє арифметичне елементів масиву, що знаходяться в інтервалі [-10,20]

30

Знайти середнє геометричне елементів масиву, що знаходяться в інтервалі [5,20]

Контрольні запитання

1.З якого числа починається індексація масивів у мові З?

2.Як з'являється 1-но мірний масив?

3.Які типи мови С можна і не можна вказувати як тип при оголошенні масиву?

4.У яких випадках розмірність масиву при оголошенні можна не вказувати?

5.Який тип має ім'я масиву?

6.Як здійснюється ініціалізація елементів масиву?

7.Як можна ініціювати масив з елементами типу char?

8.Чи можна використовувати засіб typedef для оголошення типу “масив”?

9.Які альтернативні форми запису елементів масиву можна використовувати? Приведіть приклади.

10.Які правила використання індексних виражень?

11.Чи існують операції роботи з масивами?

12.Які класи пам'яті можна використовувати при оголошенні масивів?


 

А также другие работы, которые могут Вас заинтересовать

45132. Barristers 13.19 KB
  Baristers ct s sole trders with unlimited libility. Some brristers re employed prctice nd represent their employer for exmple inhouse lwyer or lwyer in government bodies. Mny of the brristers work in selfemployed prctice t the chmbers or t the Br. The Inns re noncdemic societies which provide collegite nd eductionl resources for brristers nd trinees.
45133. British Political System 16.82 KB
  Queen Elizbeth II is the fourth sovereign of the House of Windsor. It consists of two chmbers known s the House of Commons nd House of Lords nd the Queen s its hed but only House of Commons hve rel power. The House of Commons consist of 650 elected members nd it’s persisted over by the Speker. Only four members House of Commons hve reserved sets: Speker Prime Minister leder of the prty tht hs mjority in the House of Commons nd Leder of the Opposition nd member who hs st in the House of Commons for the longest unbroken period who clled...
45134. British Parliament 13.87 KB
  It consists of two chmbers known s the House of Commons nd House of Lords nd the Queen s its hed but only House of Commons hve rel power. The House of Commons consist of 650 elected members nd it’s persisted over by the Speker. Only four members House of Commons hve reserved sets: Speker Prime Minister leder of the prty tht hs mjority in the House of Commons nd Leder of the Opposition nd member who hs st in the House of Commons for the longest unbroken period who clled Fther of the House of Commons. The House of Lords consist of 750...
45135. Geography and Economy of Great Britain 16.75 KB
  They lie to the west of the continent of Europe. The lrger of the two big islnds is known s Gret Britin. The smller Islnd is Irelnd with Northern Irelnd nd Irish Republic.
45136. Просвещенный абсолютизм Екатерины II 20.12 KB
  Время царствования Екатерины II называют эпохой просвещенного абсолютизма. Основы просвещённого абсолютизма: человек есть самое ценное на земле и его свобода важнее интересов государства; все люди равны в своих человеческих правах невзирая на сословные различия; общество нуждается в совершенствовании и важнейшую роль должны сыграть в этом наука просвещение законотворчество. Время царствования Екатерины II называют эпохой просвещенного абсолютизма . Смысл просвещенного абсолютизма состоит в политике следования идеям Просвещения...
45137. Государственное правление при Павле I 37 KB
  Екатерина придя к власти не приблизила Павла к себе поскольку не испытывала к сыну особой любви и видела в нем претендента на власть. Недоброжелательное отношение со стороны матери и ее приближенных повлияло на характер Павла. Вспыльчивость часто приводили Павла к непредсказуемым поступкам жестокость и деспотизм сочетались в нем с обостренным чувством справедливости. Очень важным для него было понятие чести в духе средневекового рыцарства во многом именно с этим в годы правления Павла были связаны курьезные указы касающиеся этикета.
45138. Александр I 116.5 KB
  В целом деятельность Комитета разделялась на три направления: важные межведомственные вопросы государственного управления; одиозные вопросы которые формально находились в пределах ведения одного министерства но за которых министры не хотели брать на себя персональную ответственность и стремились переложить её на коллегию; мелочные вопросы список которых сформировался достаточно случайным образом прежде всего в результате уклонения отдельных министерств от принятия на себя решения данных задач; данная группа вопросов всегда была...
45139. Институты и механизмы власти в период правления Николая первого 20.51 KB
  Второе отделение было образовано с целью приведения в порядок российского законодательства систематизации законов Российской империи. со времени Уложения а затем из этого огромного собрания законодательного материала составил систематический свод действующих в стране законов. Такой способ работы был указан самим императором не желавшим сочинения новых законов. Отпечатали два издания: Полное Собрание Законов Российской Империи и Свод Законов Российской Империи.
45140. Реформы государственного управления при Александре II 6.43 KB
  Реформа муниципального управления при Александре II Земская реформа После крестьянского Положения в ряду административных реформ одно из важнейших мест занимает без всякого сомнения Положение о губернских и уездных земских учреждениях которое было издано 1 января 1864 года. Городская реформа 16 июня 1870 года было издано Городовое положение по которому в 509 из 1130 городах вводилось выборное самоуправление – городские думы избираемые на четыре года. Военная и судебная реформы при Александре II Судебная реформа В числе реформ одно из...