Содержание отчета и его форма
Теоретическое обоснование
Массивы – структурированный тип данных с элементами одного типа, имеющий одно имя и определенное количество элементов. Количество элементов определяет размер массива. Например, массив составляют номера зачетных книжек студентов, здесь число элементов равно числу студентов; массив образуют набор чисел, их количество равно числу элементов массива. Порядковый номер элемента массива называется его индексом. Массив может иметь не один, а большее число индексов. Число индексов называется размерностью массива, например, массив с двумя индексами называется двумерным массивом. Строка символов является массивом символов, вектор – массив вещественных чисел, матрица – массив векторов.
Обработка массивов выполняется в следующем порядке: описание, ввод или инициализация элементов массива, преобразование и вывод.
При описании массивов после имени в квадратных скобках указывается число его элементов. В языке Си индекс элемента массива начинается с нуля, поэтому индекс последнего элемента массива на 1 меньше числа элементов в данном массиве.
Ввод и вывод элементов массива выполняется с использованием операторов цикла. Например, массив Х из 10 элементов можно ввести через форматный или потоковый ввод следующим образом:
Int i, Х [10];
for (i=0; i<10; i++) {printf( “Введите элемент массива \n ”);
scanf ("%d", &a[i]);}
|
|
Или
for (i=0; i<10; i++) {cout cout << “Введите элемент массива ” <<endl;
cin >> X[[i] ;
}
Манипулятор endl (сокращение end line) выполняет переход на новую строку при выводе значений.
Вывод элементов массива можно выполнить в строку или в столбец. Для вывода элементов массива Х [10] в строку:
for (i=0; i<10; i++) printf ( "%6d", Х[i] );
Или
for (i=0; i<10; i++) cout << Х[i] ;
Для вывода в столбец надо написать:
printf ( "%6d \n", a[i] ); или cout << Х[i] << endl;
Пример 1. Дан массив из N чисел. Найти сумму отрицательных среди них.
… // объявление массива, переменных и ввод значения n
for (int S=0, i = 1; i<= n; i++)//начало цикла, первоначально сумма чисел = 0
if (a[i]<0) S +=a[i]; //прибавление числа к сумме, если оно отрицательно
//возвращение на начало цикла с увеличением счетчика на шаг
cout << "\n Сумма всех отрицательных чисел="<< S; }
Пример 2. Дан массив из N чисел. Получить из него массив положительных чисел.
# include <stdio.h>
# define n 15 // определение константы n=15
int kol, nom, a[n], b[n]; //описание массивов целых чисел из n элементов
int main()
{ for (i=0; i<n; i++) {printf( “Введите элемент массива \n ”);
scanf ("%d", &a[i]);
}
printf("\n Вывод элементов исходного массива : \n");
|
|
for (i=0; i<n; i++) printf ( "%6d", a[i] );
//подсчет количества положительных чисел и запись их в новый массив
kol= 0;
for (i=0; i<n; i++)
if (a[i]>0) {b[kol]= a[i]; kol++; } }
printf ("\n Количество положительных элементов в массиве = %d \n" , kol ); printf("\n Вывод массива положительных элементов \n");
for (i=0; i< kol; i++) printf ( "%6d ", b[i] );
return 0;
}
Пример 3. В заданном одномерном массиве а, состоящем из 30 элементов, подсчитать и вывести на печать количество положительных, отрицательных и нулевых элементов.
1 Начало |
2 а (30) |
3 sп=0; sо=0; sн=0 |
4 i = 1, 30 |
5 ai > 0 |
6 sп = sп + 1 |
7 ai < 0 |
8 sо = sо + 1 |
9 sн = sн + 1 |
11 Конец |
10 sп, sо, sн |
1. Начало алгоритма;
2. Ввод элементов массива а.
3. Обнуляем начальные суммы: sп = 0; sо = 0; sн = 0.
4. Организуем цикл по i, где i – порядковый номер элемента в массиве.
5. Сравниваем элемент массива ai с нулем. Если ai > 0, то элемент аi положительный и в переменной sп накапливаем сумму положительных элементов: sп = sп + 1 (блок 6). Если ai < 0, то элемент отрицательный и в переменной sо накапливаем сумму отрицательных элементов: sо = sо + 1 (блок 8). Если ai = 0, то элемент равен нулю и в переменной sн накапливаем сумму нулевых элементов: sн = sн + 1 (блок 9).
|
|
6. Вывод на печать искомых значений: sп, sо, sн (блок 10).
7. Конец алгоритма.
Пример 4. Ввести массив из 15 элементов, вывести его. На сколько каждый элемент массива отличается от среднеарифметического значения элементов этого массива.
Блок-схема алгоритма:
mas[15] |
sum =0 |
sr =sum/ n |
I =1, n |
raz |
sum =sum+ mas [i ] |
I =1, n |
raz = mas [i ] - sr |
mas[15] |
конец |
Составьте программу и выполните отладку.
Пример 5. Ввести массив А из 15 элементов, вывести его. Найти произведение положительных элементов массива А и сравнить его с произведением отрицательных.
Найдите ошибки в блок-схеме, исправьте их, напишите программу на С++, используя потоковый ввод-вывод и выполните отладку программы.
|
|
начало |
mas[15] |
K1 =1 K2 = 1 |
mas [ i ] >0 |
K1 =K1* mas [i ] |
I =1, 15 |
K2 =K2* mas [i ] |
К1>К2 |
К1>К2 |
К1<К2 |
К1,К2, mas[15] |
конец |
Порядок выполнения работы
1. Изучите теоретическое обоснование.
2. Выполните пример программы обработки одномерного массива:
Дан массив из 15 целых чисел. Найти среди них количество отрицательных чисел и вывести их.
# include <stdio.h>
# define n 15 // определение константы n=15
int kol, nom, a[n]; //описание массива целых чисел из n элементов
int main()
{ for (i=0; i<n; i++) {printf( “Введите элемент массива \n ”);
scanf ("%d", &a[i]);
}
printf("\n Вывод элементов исходного массива : \n");
for (i=0; i<n; i++) printf ( "%6d", a[i] );
printf("\n Вывод отрицательных элементов из массива : \n");
kol= 0;
for (i=0; i<n; i++) // подсчет отрицательных чисел и их вывод
if (a[i]<0) { printf ( "%6d", a[i] );
kol++;
}
printf ("\n Количество отрицательных чисел в массиве = %d \n" , kol );
return 0;
}
Пояснение. По окончании цикла переменная kol будет хранить количество отрицательных чисел. Вывод элементов массива выполняется в строку.
3. В отлаженной программе измените форматный ввод и вывод массива на потоковый, как описано в теоретической части.
4. Выполните пример 1,2, 3, 4, 5 из теории, составив программы.
5. Составьте алгоритмы и программы с применением массивов согласно вариантам задания, введите исходные данные, проверьте полученный результат. Исходные и результативные массивы обязательно вывести.
Таблица 1- Варианты заданий
№ варианта | Условия заданий |
| Дан массив чисел из N элементов. Найти значение минимального элемента. Если таких элементов несколько, то определить, сколько их. Все элементы массива А, которые больше 7 и меньше 20, переписать в новый массив. |
| Дан массив чисел В[N]. Вывести на печать первый отрицательный элемент массива и его порядковый номер. Получить массив положительных и массив отрицательных элементов. |
| Дан массив A[N]. Вычислить среднее арифметическое всех чисел массива с нечетными индексами, количество чисел равных нулю. Получить массив четных чисел. |
| Дан массив A[N]. Вместо отрицательных элементов массива записать 0 и посчитать их количество. Получить массив чисел по модулю меньших 10. |
| В массиве вещественных чисел изменить знак отрицательных чисел, после этого определить сумму чисел с четными индексами и с нечетными . Получить из исходного массива - массив отрицательных чисел |
| Дан массив чисел В[N]. Найти сумму отрицательных чисел и количество положительных чисел массива с четными индексами. Получить из исходного массива - массив нечетных чисел |
| Дан массив чисел В[N]. Найти сумму положительных и сумму отрицательных чисел массива с нечетными индексами и количество элементов массива равных нулю. Получить из исходного массива- массив чисел, больших 10. |
| Определить количество отрицательных чисел с нечетными индексами. Найти номер первого отрицательного числа элемент массива. Получить новый массив, поменяв местами первый элемент с последним |
| Дан массив чисел В[N]. Вычислить сумму и количество элементов массива, расположенных после последнего элемента, равного нулю. Все элементы до первого 0 переписать в новый массив. |
| Дан массив A[N]. Найти сумму всех отрицательных элементов, количество чисел, равных нулю и вычислить среднее арифметическое только положительных чисел. Все элементы меньшие среднее арифметического переписать в новый массив |
| Дан массив чисел В[N]. Найти произведение и вычислить среднее арифметическое всех элементов массива с четными индексами. Получить из него массив чисел, кратных 3 |
| Дан массив чисел В[N]. Найти кол-во и сумму четных чисел в массиве и кол-во и сумму нечетных чисел, которые переписать в новый массив |
| Дан массив A[N]. Вычислить произведение элементов между первым и последним положительными элементами массива. Элементы до первого положительного переписать в новый массив. |
| Дан массив из N чисел. Найти наибольший элемент массива и поменять его местами с наименьшим элементом. Получить новый массив чисел больших, чем число введенное с клавиатуры. |
| Дан массив чисел В[N]. Записать подряд в массив А элементы массива В, имеющие четные индексы, а имеющих, нечетные индексы – в массив У. Получить из него массив четных положительных чисел |
| Даны два массива целых чисел. Получить последовательность, состоящую из тех членов первой последовательности, которых нет во второй. |
| Даны два целочисленных массива. Выяснить, является ли один из них подмножеством другого. |
| Из двух отсортированных в убывающем порядке массивов получить новый массив, отсортированный в том же порядке. |
| Дан упорядоченный массив из N целых чисел. С клавиатуры вводятся три новых числа. Вставить их в исходный массив не нарушая упорядоченность. Получить из него массив отрицательных и массив положительных чисел. |
| Дан массив из N целых чисел. Вывести и переписать в новый массив все числа, стоящие на четных местах и встречающиеся более двух раз. Указать количество их повторений |
| Дан массив A из N чисел. В новый массив записать сначала все элементы, целая часть которых не превышает 1, а потом — все остальные.. |
Содержание отчета и его форма
Выполните все описанные пункты задания, письменно оформите отчет, который должен содержать:
- тему, цель лабораторной работы;
- условия, блок–схемы, программы и результаты выполнения индивидуальных заданий.
Контрольные вопросы и защита работы
1) Что такое массив, индекс элемента массива?
2) Какие виды массивов?
3) В каком порядке выполняется обработка массивов?
4) Как ввести и вывести элементы одномерных массивов в строку и в столбец?
5) Способы описания и инициализации массивов.
Защита лабораторной работы включает в себя демонстрацию выполненных программ, подготовленный отчет и устный ответ на контрольные вопросы.
Дата добавления: 2022-06-11; просмотров: 118; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!