Студопедия — Лабораторная работа № 4. Составление программ обработки одномерных массивов
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Лабораторная работа № 4. Составление программ обработки одномерных массивов






 

Цель работы: овладеть практическими навыками работы с одномерными массивами, особенностями их ввода и вывода.

 

Краткие теоретические сведения

Линейным массивом в программе на C++ называется упорядоченный набор однотипных переменных, которые располагаются в памяти последовательно (рисунок 5).

Рис. 5. Одномерный (линейный) массив

Массив является простейшей структурой данных, облегчающей работу с большими объемами информации путем их упорядочения. В случае с массивами, упорядочение происходит за счет индексирования элементов, то есть обращения к каждому из них по порядковому номеру. Показанный на рисунке массив состоит из n элементов с индексами от 0 до n -1, в который записаны числа 5, 21, 0, 12 и т.д.

Любой массив в C++ характеризуется тремя параметрами: именем, типом элементов и размером. Как и обычная переменная, перед использованием массив должен быть объявлен. Общая форма записи объявления:

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

Здесь тип_элементов – это любой из известных стандартных типов (int, float, double, char и т.д.), имя_массива – уникальное имя (идентификатор), используемое для обращения к массиву, размер_массива – количество его элементов. В качестве последнего параметра в объявлении может быть использована только целочисленная константа или константное выражение. Примеры объявлений

int A[15]; // массив из 15 целочисленных элементов с именем A

float x[3]; // массив x из 3-х элементов типа float

Объявление массива является командой компилятору на выделение памяти для хранения его элементов. Общее количество выделенной памяти зависит не только от числа элементов, но и от размера каждого элемента, то есть от его типа. Например, текстовая строка из 1000 символов (тип char) займет P = 1000*sizeof(char) = 1000 байтов, а массив из такого же количества вещественных чисел двойной точности (тип double) займет уже в восемь раз больше – P = 1000*sizeof(double) = 8000 байтов.

Нумерация элементов в массиве начинается с нуля. Таким образом, первый элемент массива имеет индекс 0, а последний – индекс n-1, где n – размер массива. Обращение к элементу производится с использованием имени массива и индекса элемента в квадратных скобках. Например, запись “ x[0] = 5.5; ” означает “присвоить значение 5.5 нулевому элементу массива x ”.

Для работы с массивами характерным является использование итерационных циклов for. С их помощью организуется выполнение однотипных операций со всеми элементами массива, в частности, поэлементный ввод-вывод, поэлементные арифметические операции и др.

 

Задание

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

2. Разработать алгоритм решения в соответствии с заданием.

3. Составить программу решения задачи.

4. Подготовить тест для проверки программы.

Пример выполнения работы

Условие: Напишите программу, запрашивающую у пользователя 10 целых чисел, и выводящую на экран их сумму.

#include < conio.h>

#include < iostream.h>

void main(void)

{

int A[10]; // объявляем массив из 10 целых

for(int i=0; i< 10; i++) // организуем цикл по i от 0 до 9

{

cout < < " input A[" < < i < < " ] = "; // приглашение

cin > > A[i]; // вводим A[i]

}

int sum = 0; // объявляем переменную

for(int i=0; i< 10; i++) // организуем цикл

sum = sum + A[i]; // в цикле суммируем элементы

cout < < " \nSumma: " < < sum; // выводим результат на экран

getch(); // задержка

}

Условие: Дан одномерный массив x[n], где n – размер массива. Найти k– й отрицательный элемент массива.

Начальные данные:

1. константа n, которая определяет размер массива;

2. одномерный массив размерности n;

3. параметр k для порядкового номера отрицательного элемента массива;

4. параметр kn для подсчета числа отрицательных элементов массива;

5. параметр ki для индекса найденного элемента массива.

Результат вычисления: значения параметра kn; значения параметра ki.

#include< iostream.h>

#include< conio.h>

#include< stdlib.h>

void main(void)

{ const n = 10;

int i, a[n];

int k, kn = 0, ki = -1; // kn – для числа отрицательных элементов.

// ki – для индекса текущего отрицательного элемента.

// k – для порядкового номера отрицательного элемента массива.

clrscr();

// Ввод одномерного массива с клавиатуры.

cout < < " Введи элементы массива с клавиатуры: \n";

for (i = 0; i < = n-1; i++) // Начало цикла. Перебор индексов массива.

{

printf(" a[ %d ]= ", i); // Подсказка для пользователя.

scanf(" %d", & a[i]); // Ввод элемента массива с клавиатуры.

}

// Вывод массива на терминал.

clrscr();

cout < < " Введен массив: \n";

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

printf(" %d ", a[i]);

cout < < " \n";

cout < < " Введи номер для поиска отрицательного элемента k= ";

cin > > k;

// Начало подсчета числа отрицательных элементов в массиве.

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

{

if (a[i] < 0)

{

kn++; // Если элемент массива отрицательный, значение kn

// увеличиваем на 1.

ki = i; // Запоминаем индекс текущего отрицательного элемента.

if (kn == k)break; // Нашли отрицательный элемент с заданным

// порядковым номером.

}

}

if (kn == k)

cout < < " Элемент a(" < < ki < < ")= " < < a[ki] < < " является " < < kn < < " - ым отрицательным элементом массива \n";

else

cout < < " Отрицательных элементов с порядковым номером " < < k < < " отсутствует\n";

getch(); }

Задания для самостоятельного выполнения

1. Задан одномерный числовой массив. Вычислить среднее арифметическое тех его элементов, значения которых лежат в интервале от 0 до 9.

2. Задан одномерный числовой массив. Заменить все его максимальные элементы числом 100.

3. Задан одномерный числовой массив, в котором есть хотя бы один отрицательный элемент. Определить количество элементов, расположенных до первого отрицательного элемента.

4. Задан одномерный числовой массив. Верно ли, что количество его положительных элементов не превышает количества его отрицательных элементов?

5. Задан одномерный числовой массив. Заменить последний из его минимальных элементов значением последнего элемента всего массива.

6. Задан одномерный числовой массив, в котором есть хотя бы один нулевой элемент. Какое количество элементов расположено после первого нулевого элемента до конца массива?

7. Задан одномерный числовой массив. Вычислить количество тех его элементов, значения которых совпадают с последним элементом этого массива.

8. Задан одномерный числовой массив. Вычислить сумму тех его элементов, значения которых отличны от значения максимального элемента этого массива.

9. Задан одномерный числовой массив, в котором есть хотя бы один отрицательный элемент. Поменять местами значения первого элемента этого массива и первого встретившегося отрицательного элемента.

10. Задан одномерный числовой массив. Вычислить сумму тех его элементов, значения которых есть четные числа.

11. Задан одномерный числовой массив. Подсчитать количество максимальных элементов этого массива.

12. Найти сумму всех элементов массива, имеющих четные индексы.

13. Дан массив А, содержащий положительные, отрицательные и нулевые элементы. Из индексов нулевых элементов сформировать новый массив С и найти произведение его элементов.

14. Определить, сколько элементов массива больше, чем число 3 и меньше, чем число -1.

15. Найти сумму элементов массива, превышающих число 8.

16. Найти произведение отрицательных элементов массива.

17. В массиве определить индексы нулевых элементов и заменить нулевые элементы на 5.

18. Дан массив А, содержащий положительные, отрицательные и нулевые элементы. Из отрицательных элементов массива, сформировать новый массив С и найти среднее геометрическое его элементов.

19. Найти разность между наибольшим и наименьшим элементами массива.

Контрольные вопросы

1. Указать особенности программ, использующих массивы.

2. Какие операторы языка можно использовать для описания массивов?

3. В чем состоит особенность организации цикла при обработке массивов?

4. В чем состоит особенность использования приемов программирования при обработке массивов?

5. Указать особенности ввода и вывода массивов.

6. Что представляет собой одномерный массив?

7. Индекс первого элемента массива всегда равен нулю. Верно ли это?

8. Предусмотрена ли в С++ проверка «нерушимости» границ массива?

9. Каждая размерность многомерного массива в С++ заключается в собственную пару квадратных скобок. Верно ли это?

10. Покажите, как объявить двумерный целочисленный массив с именем mas размерностью 10 х 8?

11. Может ли содержать массив переменные нескольких типов?

 

 







Дата добавления: 2014-11-10; просмотров: 4207. Нарушение авторских прав; Мы поможем в написании вашей работы!



Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Законы Генри, Дальтона, Сеченова. Применение этих законов при лечении кессонной болезни, лечении в барокамере и исследовании электролитного состава крови Закон Генри: Количество газа, растворенного при данной температуре в определенном объеме жидкости, при равновесии прямо пропорциональны давлению газа...

Ганглиоблокаторы. Классификация. Механизм действия. Фармакодинамика. Применение.Побочные эфффекты Никотинчувствительные холинорецепторы (н-холинорецепторы) в основном локализованы на постсинаптических мембранах в синапсах скелетной мускулатуры...

Шов первичный, первично отсроченный, вторичный (показания) В зависимости от времени и условий наложения выделяют швы: 1) первичные...

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

Плейотропное действие генов. Примеры. Плейотропное действие генов - это зависимость нескольких признаков от одного гена, то есть множественное действие одного гена...

Методика обучения письму и письменной речи на иностранном языке в средней школе. Различают письмо и письменную речь. Письмо – объект овладения графической и орфографической системами иностранного языка для фиксации языкового и речевого материала...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия