Лабораторная работа № 29.
Обработка массивов данных в C++

Время выполнения

4 часа 

Цель работы

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

Задачи лабораторной работы

После выполнения работы студент должен:
  • Знать правила написания текста программы на языке программирования С++;
  • Знать, как по схеме алгоритма написать текст программы, и, наоборот - по тексту программы составить схему её алгоритма;
  • Знать правила использования операторов цикла;
  • Уметь объявлять массивы и определять элементы массивов;
  • Назначение и работу каждого оператора в программе;
  • Уметь проводить тестирование программы.

Перечень обеспечивающих средств

Для обеспечения выполнения работы необходимо иметь компьютер со следующим математическим обеспечением: операционная система семейства Windows и язык программирования С++.

Общие теоретические сведения

Массив – это упорядоченная совокупность элементов одного типа, которые адресуются с помощью индекса. Доступ к элементу массива осуществляется по его порядковому номеру (индексу). Индексная переменная должна иметь целый тип. Нумерация элементов массивов в языке С++ начинается с нуля.
Массив называется одномерным, если для получения доступа к его элементам достаточно одной индексной переменной. Обработка таких массивов ведется с использованием одного цикла. Параметр цикла определяет порядковый номер элемента массива. Одномерные массивы называются также векторами.
Массив называется двумерным, если для получения доступа к его элементам необходимо иметь две индексные переменные: первая определяет номер строки, вторая – номер столбца элемента в массиве. Обработка таких массивов ведется с использованием вложенных циклов. Двумерные массивы называют еще матрицами.
Для объявления массива необходимо указать тип элементов, имя массива и количество элементов в нём (табл. 1).

Таблица 1. Объявление массивов 
 одномерные  тип_данных имя_массива [количество_ элементов];
 например,
 float a [10]; 
 двумерные  тип_данных имя_массива [количесво_строк][количество_столбцов]; 
 например,
 float b[5][5];
При обработке символьных массивов необходимо помнить, что каждому символу соответствует число – код символа. В программировании строка – это массив символов. Последним символом строки обязательно должен быть нуль-символ, код которого равен 0, и который в тексте программы изображается как «/0», поэтому длина строки увеличится на единицу. Вводимая во время работы программы строка заканчиваться нажатием клавиши <Enter> (её код – 13). Для обработки символьных массивов удобно использовать условные циклы. 

Пример. Вычислить длину введенной с клавиатуры строки.
Ниже представлен один из алгоритмов в текстуальной форме и программа:  
  1. Ввести строку с клавиатуры. 
  2. В цикле подсчитать количество символов введенной строки.
  3. Вывести количество символов и весь массив на экран. 
#include <stdio.h>
#include <conio.h>
main ()
{ char  S [80];   // введенная строка 
   int  i = 0; // длина строки
     puts ( “ \n Введи строку символов и нажми клавишу <Enter>: \n“ );
  gets ( st );      
   while (  st [i++] ) ;   // цикл выполняется, пока не закончатся все символы в строке
     printf ( “ Введенная строка: %s \n”, s );
     printf ( “ Количество символов в строке = %d \n”, i );  }

Варианты заданий

Содержание отчета
  1. Титульный лист по стандартной форме.
  2. Постановку задачи.
  3. Необходимые математические выкладки (и/или поясняющую картинку).
  4. Алгоритм решения задачи (в виде блок-схемы или в текстуальной форме).
  5. Тексты программы.
  6. Тестовые наборы  (тест – это проверка работоспособности программы по контрольным значениям данных).
  7. Результаты вычислений по каждому тесту.
Отчет для лабораторной работы составляется в одном и подлежит защите. Для защиты лабораторной работы студент должен подготовиться к ответу на контрольные вопросы.

Технология выполнения работы 

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

Вопросы для защиты работы

  1. Какую структуру данных описывает двумерный массив? Как в программе использовать значение конкретного элемента? Какой индекс двумерного массива изменяется быстрее при последовательном размещении элементов массива в оперативной памяти?
  2. Какой массив для обработки использует вложенные операторы цикла?  Как они работают? Нарисуйте графическую схему выполнения.
  3. Внешний цикл образован оператором цикла с параметром i, меняющимся от 1 до 5, внутренний – с параметром j, меняющимся от 3 до 7. Опишите последовательность изменения значений i и j.
  4. Сколько раз выполнится тело внутреннего цикла, если во внешнем цикле параметр цикла меняется от 1 до 4, а во внутреннем – от 1 до 3?
  5. Может ли тело внутреннего оператора вложенного цикла не выполниться ни разу? Выполняться бесконечное число раз?
  6. Вложенный цикл образован двумя операторами цикла с параметром. Можно ли во внешнем и внутреннем циклах использовать один и тот же параметр цикла (переменную цикла)?
  7. Внешний цикл образован оператором цикла с постусловием. Можно ли в качестве внутреннего цикла использовать оператор цикла с параметром? А оператор цикла с предусловием?
  8. Для чего используются величины, представляющие собой символьные строки? Как они описываются?
  9. Опишите, что представляет собой таблица ASCII.