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

Тема : Сложные типы данных. Массивы.

Цель : Освоение принципов обработки массивов на C++

Массив- это структурный тип данных. Он представляет собой совокупность данных (элементов) одного типа. Элементы массива хранятся в памяти ЭВМ последовательно друг за другом. Доступ к отдельным элементам массива осуществляется по индексу. В принципе индекс - это смещение некоторого элемента относительно начала массива.

C++

СИНТАКСИС

тип_элементов имя_массива[ размер ];

// или сразу с инициализацией

тип_элементов имя_массива []={ x0, x1, x2, ...};

Pascal

СИНТАКСИС

var
имя_массива : [ниж_индекс..верх_индекс]
of тип_элементов;

ПРИМЕР

Создать массив из 10 целых чисел { 1, 4, 9, 16, 25, 36, 49, 64, 81, 100 } и отобразить его на дисплей.

C++

#include <stdio. h>

void main()

{

// создание и инициализация массива

int A[]= { 1,4,9,16,25,36,49,64,81,100};

printf(“массив :\n”); // вывод массива на дисплей

for ( int c= 0; c < 10 ; c++)

printf(“%i ”, A[с] );

}

Pascal

program _EXAMPLE_;

var

A : [1..10] of integer; // создание массива

c : integer;

begin

//В pascal массив сразу инициализировать нельзя
//- только отдельными операторами присваивания

A[1] := 1; A[2] := 4; A[3] := 9;

A[4] := 16; A[5] := 25; A[6] := 36;

A[7] := 49; A[8] := 64; A[9] := 81;

A[10] := 100;

writeln(‘массив :’); // распечатаем массив на дисплее

for c:= 1 to 10 do

write( A[c],‘ ‘ );

end.

ПРИМЕР

Найти сумму 5-ти элементов массива и результат отобразить. Ввод элементов должен быть произведен с клавиатуры.

НЕ нашли? Не то? Что вы ищете?

C++

#include <stdio. h>

void main()

{

int A [5]; // создаем массив на 5 элементов

printf(“Введите 5 элементов >”);

for (int i= 0; i<5; i++)

scanf( “%i”, &A[i] );

int s =0; // переменная для расчета суммы (=0)

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

s += A[i] ;

printf(“Сумма элементов = %i”, s );

}

Pascal

program _CALC_SUM_ ;

var

// создаем массив на 5 элементов

A :array [1..5] of integer;

// индекс элементов массива

i :integer ;

// переменная для расчета суммы

s : integer ;

begin

write(‘Введите 5 элементов >’);

for i := 1 to 5 do

read( A[i] );

s := 0; // переменная для расчета суммы (=0)

for (I := 0 to 5 do

s := s+ A[i] ;

write(“Сумма элементов массива= ‘, s );

end.

ПРИМЕР

Заполнить массив 10-ю случайными числами 0..1000.

C++

#include <stdlib. h>

void main()

{ int v[10];

randomize();

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

v[i] = random(1000);

}

Pascal

program _X_;

var

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

i : integer;

begin

randomize;

for i:=1 to 10 do

v[i]:=random(1000);

end.

ПРИМЕР

Найти сумму n элементов массива и результат отобразить. Ввод элементов должен быть произведен с клавиатуры.

C++

#include <stdio. h>

void main()

{
printf(“Требуемое количество элементов >” );

int n; // размер будущего массива

scanf(“%i”, &n );

int *a; //переменная-указатель для будущего массива

a= new int[n]; // выделение памяти под массив

printf( “Введите %i элементов >”, n );
for ( int
с = 0; c< n; c++ )

scanf(“%i”, &a[c] );

int s=0; // переменная для суммирования

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

s += a[c];

printf( “Сумма всех элементов = %i”, s );

delete []a; // освобождение памяти

}

Pascal

program _CALC_SUM_ ;

//переменная-указатель для будущего массива

var a: pointer;

// переменная для индексирования элементов

c: integer;

// переменная для суммирования

S :integer;

begin

write(‘Требуемое количество элементов >’);

read( n );

// выделение памяти под массив

getmem( a, n * sizeof(integer) );

for c:=0 to n-1 do

read(

integer(

pointer(

longint(a) + i*sizeof(integer)

)^

)

);

for c:=0 to n-1 do

s := s+

integer(

pointer(

longint(a) + i*sizeof(integer)

)^

);

Write(‘Сумма всех элементов = ’, s );

// освобождение памяти

freemem( a, n * sizeof(integer) );

end.

ПРИМЕР

Заполнить массив 10-ю случайными числами -5..+5.

C++

#include <stdlib. h>

void main()

{ int v[10];

randomize();

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

v[i] = -5 + random(11);

}

Pascal

program _X_;

var

v : array[1..5] of integer;

i : integer;

begin

randomize;

for i:=1 to 5 do

v[i]:= -5 + random(11);

end.

ПРИМЕР

Написать программу, выполняющую разложение целого числа (x <= 9999) на цифры. Полученные цифры записать в массив.

C++

#include <stdio. h>

void main()

{

priintf(”Введите число (<=9999) :”);

int x; // - для исходного числа

scanf(“%i”, &x );

int digits[4] ; // массив для цифр

int ci =0; //счетчик цифр числа, он же индекс для массива

while ( ci < 4 ) {

digits[ci] = xc % 10; // цифру в массив...

xc = xc / 10; // “отбрасываем” цифру от xc

ci++ ; // следующий индекс

}

priintf(”В результате имеем массив - \n”);

for ( ci= 0; ci < 4; ci++)

printf(“%i\n”, digits[ci] );

}

Pascal

program GET_4_DIGITS;

var

x: integer; // - для исходного числа

digits : array[1..4] of integer; //массив цифр

xc : integer; // для хранения копии xc ;

ci : integer; //счетчик цифр числа, он же индекс для массива

begin

write(‘Введите число (<=9999) :’);

read( x );

xc := x; //скопируем исходное число в переменную xc

ci :=1; //счетчик цифр числа, он же индекс для массива

while ( ci < 4 ) do begin

digits [ci] := xc mod 10; // цифру в массив...

xc := xc div 10; // “отбрасываем” цифру от xc

ci := ci +1 ; // следующий индекс

end;

writeln(‘В результате имеем массив -‘);

for ci:= 1 to 4 do

writeln (digits [ci], ‘ ’ );

end.

ЗАДАЧИ

1.Имеется массив из элементов (5,15,20,25,30). Вывести весь массив на дисплей в прямом и обратном порядке.

2.Заполнить массив из 10- элементов случайными числами в пределах
-10 <= x <= +10. После заполнения весь массив вывести на дисплей в прямом и обратном порядке.

3.Написать программу, выполняющую заполнение массива из 10 элементов случайными числами, лежащими в пределах 0.0 <= x <= 1.0 с шагом 0,1. После заполнения весь массив вывести на дисплей в прямом и обратном порядке.

4.Написать программу, выполняющую заполнение массива из 5 элементов целыми числами, введенными с клавиатуры. После заполнения весь массив вывести на дисплей в прямом и обратном порядке.

5.Написать программу, которая инициализирует массив (10 элементов) введенными с клавиатуры значениями. Инициализированный массив вывести на дисплей в прямом и обратном порядке.

6.Дан массив на 5 элементов - {25, 16, 81, 36, 49}. Написать программу, способную извлечь квадратный корень из любого указанного по номеру элемента этого массива. Отобразить результат в виде:
массив -> ...
корень из... -> ...

7.Дан массив на 5 элементов. Написать программу, способную все элементы массива возвести в квадрат. Полученный массив вывести на дисплей в прямом и обратном порядке.

8.Дан массив на 5 элементов. Написать программу, способную все элементы массива возвести в степень 0,5. Полученный массив вывести на дисплей в прямом и обратном порядке.

9.Дан массив из 5 элементов. Написать программу, позволяющую все элементы увеличить в X раз. Полученный массив вывести на дисплей в прямом и обратном порядке.

10. Дан массив из 5 элементов. Написать программу, позволяющую все элементы уменьшить на число X. Полученный массив вывести на дисплей в прямом и обратном порядке.