
- •Лабораторная работа № 5 Массивы и указатели
- •1 Понятие и описание массивов
- •2 Одномерные массивы Пример 1 Ввод элементов одномерного массива
- •4 Символьные массивы
- •Пример 3 Описание символьного массива
- •Пример 4 Сравнение строк
- •5 Указатели и операции над указателями
- •Пример 5 Описание указателей
- •Пример 6 Операции над указателями
- •Пример 7 Сравнение указателей
- •6 Связь между массивом и указателем
Лабораторная работа № 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 – размеры матриц.