Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 5 (win).doc
Скачиваний:
0
Добавлен:
21.02.2020
Размер:
148.99 Кб
Скачать

Лабораторная работа № 5 Массивы и указатели

Цель работы: изучить определение, назначение, виды и описание массивов и указателей, приобрести навыки в решении задач с помощью массивов и указателей.

Основы теории

1 Понятие и описание массивов

Массивы являются важнейшим средством языка, применяемым во многих программах. Их использование позволяет удобным образом разместить в памяти большое количество необходимой информации.

Массив — именованный набор с фиксированным количеством однотипных данных (double, float, int и т.п.).

Из объявления массива компилятор должен получить информацию о типе элементов массива и их количестве. Порядковый номер элемента в массиве называется индексом.

В массивы объединены результаты экспериментов, списки фамилий и т.п.

Объявление массива имеет формат:

Тип имя_массива [количество_элементов];

Тип задает тип элементов объявляемого массива.

Каждые квадратные скобки определяют число элементов по данному измерению массива (одномерный, двумерный, …).

Количество_элементов определяет число элементов в массиве и может быть опущено если при объявлении массив инициализируется:

int a[]={0,1,2,3,4,5};

Индекс (номер) – числа, определяющие место элемента в массива.

Объявление одномерного целочисленного массива может иметь вид:

int a[20];

Объявляется, что a – массив, состоящий из двадцати членов, или элементов.

Первый элемент массива a с индексом 0 называется a[0];

второй с индексом 1– a[1] и т.д. до a[19].

Внимание

В современных языках программирования (PHP, C++, C#) нумерацию элементов массива принято начинать с нуля. Однако, программы с нумерацией элементов массива с единицы, также работоспособны

Объявление двумерного целочисленного массива, содержащего 2 строки и 3 столбца имеет вид:

int a[2][3];

a[0][0]

a[0][1]

a[0][2]

a[1][0]

a[1][1]

a[1][2]

Задание 1

Объявите квадратную матрицу b, состоящую из 25 вещественных элементов.

2 Одномерные массивы Пример 1 Ввод элементов одномерного массива

Напишем фрагмент программы, предусматривающей ввод числа посетителей Интернет-кафе в течение недели.

Таблица 1 – Фрагменты программ

Линейная программа

Использование цикла

Использование массива

Int n1,n2,n3,n4,n5, n6, n7;

printf("введите число посетителей за семь дней ");

scanf("%d %d %d %d %d %d %d",&n1, &n2, &n3, &n4, &n5, &n6, &n7, );

int i,n;

for (i=1;i<=7;i++)

{

printf("введите число посетителей, %d день ", i);

scanf("%d\n",&n);

}

int n[7],i;

for (i=1;i<=7;i++)

{

printf("введите число посетителей, %d день ", i);

scanf("%d",&n[i]);

}

Задание 2

Определите достоинства и недостатки каждого способа ввода информации.

Задание 3

Написать программу, определяющую общую и среднюю посещаемость Интернет-кафе за неделю:

Задание 4

Написать программу, определяющую наибольшее число посетителей Интернет-кафе за неделю. Определите количество дней, когда число посетителей было больше 50.

3 Двумерные массивы (матрицы)

Для ввода (вывода) элементов двумерного массива используются вложенные циклы:

int n=3, a[3][3],i,j;

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

for(j=1;j<=n;j++)

{

printf("введите элемент %d %d матрицы a ",i,j);

scanf("%d",&a[i][j]);

}

Пример 2

Чтобы сложить (вычесть) две матрицы, необходимо сложить (вычесть) соответствующие элементы этих матриц:

si,j = ai,j + bi,j ; i=1,2,...,n; j=1,2,...,m,

где n, m – размеры матриц.

Программный код имеет вид:

#include "stdafx.h"

#include<stdio.h>

#include<conio.h>

using namespace System;

int main(array<System::String ^> ^args)

{

int n=3, a[3][3], b[3][3],s[3][3],i,j;

// ввод элементов матрицы а

printf("Введите элементы матрицы a: \n");

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

for(j=1;j<=n;j++)

{

printf("элемент %d %d = ",i,j);

scanf("%d",&a[i][j]);

}

// ввод элементов матрицы b

printf("Введите элементы матрицы b: \n");

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

for(j=1;j<=n;j++)

{

printf("элемент %d %d = ",i,j);

scanf("%d",&b[i][j]);

}

// поэлементное суммирование матриц а и b

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

for(j=1;j<=n;j++) s[i][j]=a[i][j]+b[i][j];

//вывод результирующей матрицы s

printf("сумма матриц:\n");

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

{

for(j=1;j<=n;j++) printf("%d ",s[i][j]);

printf("\n");

}

getch();

return 0;

}

Задание 5

На основе примера 2 напишите программу умножения матрицы на скаляр k*А. Чтобы умножить матрицу на скаляр, необходимо каждый элемент этой матрицы умножить на скаляр:

bi,j =k*ai,j; i=1,2,...,n; j=1,2,...,m,

где n, m – размеры матриц.