Лабораторная работа № 4
Тема : Сложные типы данных. Массивы.
Цель : Освоение принципов обработки массивов на C++
Массив- это структурный тип данных. Он представляет собой совокупность данных (элементов) одного типа. Элементы массива хранятся в памяти ЭВМ последовательно друг за другом. Доступ к отдельным элементам массива осуществляется по индексу. В принципе индекс - это смещение некоторого элемента относительно начала массива.
C++ | СИНТАКСИС– тип_элементов имя_массива[ размер ]; // или сразу с инициализацией тип_элементов имя_массива []={ x0, x1, x2, ...}; |
Pascal | СИНТАКСИС– var |
ПРИМЕР
Создать массив из 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() { int n; // размер будущего массива scanf(“%i”, &n ); int *a; //переменная-указатель для будущего массива a= new int[n]; // выделение памяти под массив printf( “Введите %i элементов >”, n ); 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. Полученный массив вывести на дисплей в прямом и обратном порядке.


