Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практикум по программированию на языке СС++. Учебно-методическое пособие

.pdf
Скачиваний:
2
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
10 y=
 
 
a
x
a
Lп
ax
ae
X =
,.....
15
2
,
15
a=0.5, 0.6, 1.0, 1.2
11
y=
xSina
Cosx
22
1
X Є[0.05,0.3] ∆x=0.05
a=0.2, 0.35, 0.75
12
y=
3
)( axxbxTgx
X Є[0.8,1.6] ∆x=0.1
a=1.5, 2.1, -3.8 b=0.15
13 y=
Sinx
x
x
a
ax
1
2
2
X Є[1,2] ∆x=0.2
a=2.8, -3.1, -0.5
14
y=
x
aaxbxlп )(
X Є[0.5, 2] ∆x=0.5
a Є[0.5, 2.0] ∆a=0.5b=1.3
15
y=
)(2axLna
x
x
X Є[0.1, 1] ∆x=0.2
a Є[2, 2.6] ∆a=0.2
16 y=
x
x
e
a
b
a
x
Sin
 
 
2
X Є[0.1, 1] ∆x=0.2
a Є[0.3, 0.5] ∆a=0.1
b=3.3
17
y=
3
)cos( axax
ax
e
X Є[1,5] ∆x=0.5
a Є[1.5, 3.5] ∆a=1
18
y=
x
bxaxCos
5.12
5.1
X Є[0.2, 2.8] ∆x=0.4
a=2.3, 3.7, 4,1 b=1.8
19
y=
xaxLnxa
x
a )(
2
X Є[0.1,1] ∆x=0.2
a Є[1.5, 4.5] ∆a=1.5
20
y=
)()(
2
tCos
att
eatLnat
t Є[0.1,3] ∆t=0.3
a [-0.5, 4.5] ∆a=1.5
21 y=
aCos
b
x
xLп
2
2
 
 
X Є[7.5,12] ∆x=0.5
a=0.3, 0.05, 0.015 b=0.05
22
y=
Sin
)
2
(
2
3)( axCosax
X Є[0.1,0.25] ∆x=0.01
a=1, 2, 3, 4
23
y=
xпп
2
aL+(ax)L0.24
X Є[1,4.6] ∆x=0.4
a=2, 5, 8, 11
24 y=
1
3
)(
x
e
baxLп
X Є[0.1,1.9] ∆x=0.4
a=0,1, 2, 3 b=1.1
25
y=
ab
aLпxa
bx
)()sin(
sin
1
X Є[0.3,1.0] ∆x=0.1
a=1, 7.5, 14 b=1.8
41
Содержание отчета.
1. Номер, тема и цель лабораторной работы
2. Задание к лабораторной работе.
3. Схема алгоритма.
4. Программа на языке Си.
5. Результаты решения.
Показать отчет преподавателю.
Контрольные вопросы
1. Понятие параметра цикла, тела цикла, управляющих операторов цикла.
2. Вложенные циклы.
3.Операторы ввода-вывода.
4.Управление формой вывода в операторе printf.
Лабораторная работа №6.
ФОРМИРОВАНИЕ И ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ
Цель работы: Приобретение навыков разработки алгоритмов формирования и
обработки одномерного массива. Закрепление понятий базовых структур цикл, разветвление.
Подготовка к лабораторной работе
1. Повторите вопросы организации циклических алгоритмов, понятия конечного цикла.
2. Повторить следующие вопросы и понятия :
массивы данных (размерность массива, обращение к элементу массива,
расположение элементов массива в памяти ПК);
правила работы с массивами данных на языке программирования Си:
описание массивов, задание типа и размерности массива;
организация циклов для ввода и формирования элементов массива; алгоритм поиска максимального (минимального) элемента одномерного
массива;
алгоритм поиска суммы элементов одномерного массива; алгоритм подсчета количества элементов одномерного массива,
удовлетворяющих поставленному условию;
42
организация вывода элементов массива.
i
xx
3. В соответствии с вариантом (таблица 4) разработайте алгоритм обработки элементов массива.
4. Напишите программу на алгоритмическом языке в соответствии со схемой алгоритма, составленной в п.3.
5. Организуйте вывод массива и результатов обработки массива.
ИСХОДНЫЙ МАССИВ А:
15.583 19.287 28.385 45.621 39.728 5.456 -8.087 3.897
ПОЛУЧЕННЫЕ РЕЗУЛЬТАТЫ: МАХ = 45.621
СХЕМУ АЛГОРИТМА ИЗОБРАЗИТЕ С ПОМОЩЬЮ СИМВОЛА ПОДГОТОВКА.
Формирование, обработка и вывод массива.
Массив представляет собой упорядоченное множество однотипных элементов. При описании массива необходимо указать:
тип элементов. идентификатор массива число элементов;
Общий вид описания массива
<тип элементов> имя Массива [число элементов];
Доступ к каждому элементу массива осуществляется с помощью индексов. Индексы задают порядковый номер элемента, к которому осуществляется доступ. В языке Си первый элемент массива имеет индекс ноль. Число индексов определяет структуру массива: если используется один индекс, то такой массив называется одномерным, если два индекса - двухмерным, и т.д. В общем случае размерность массива может быть произвольной.
Одномерные массивы:
В математике одномерному массиву соответствует n-мерный вектор, например:
; i = 1,…, n ,
где хi - компонента (координата) вектора; i - номер компоненты; n - число компонент.
43
Описание одномерного массива На языке Си описание одномерного массива задается следующим образом:
<тип элементов><имя массива>[размер]; Компилятор отводит под массив память размером (sizeof(тип)*размер) байтов. При описании массива можно сразу задать начальные значения его элементов:
int dat[4]={5,8,-2,11};
float kom[]={3.5,6,-1.1};
Указатели могут обеспечить простой способ ссылок на массив. Имя массива фактически является константой-указателем, ссылающимся на начальный адрес данных (адрес первого элемента массива). Начальный адрес массива определяет компилятор в момент описания массива, и такой адрес не может быть переопределен. Первый элемент массива имеет индекс ноль.
Например:
int Ar[5]; printf ("адрес Ar=%x\n",Ar); printf ("адрес Ar=%x\n",&Ar[0]);
В приведенном фрагменте обе функции printf выводят адрес массива Ar, т.к. выражения Ar и &Ar[0] эквивалентны.
Индексированные переменные Выбор отдельного элемента из массива осуществляется с помощью
индексированной переменной, которая задается следующим образом: x[i] - индексированная переменная (элемент массива). Здесь x - имя массива; i - индекс (номер элемента массива). В качестве индекса используются: целые константы, например х[2]  х2; целые переменные, например х[к] хk; индексные выражения, например х[2*n+1]  x
2n+1
.
В языке Си индексы элементов любого массива начинаются с нуля. Индексными выражениями являются арифметические выражения целого типа.
Переменная с индексом может стоять в левой части оператора присваивания,
например: х[3]=2.5; Ввод-вывод одномерных массивов Ввод-вывод массивов осуществляется поэлементно с помощью операторов
scanf и printf соответственно и оператора цикла for..., в котором в качестве параметра используется индекс.
Пример 1. Организовать ввод с клавиатуры значений массива: A = (1.2, 5, -6.8, 14). Необходимо описать массив и индекс.
44
int main()
20,1
{ float A[4] ;
int i;
В программе ввод массива рекомендуется организовать в виде диалога, поместив перед оператором ввода оператор вывода (printf), которым выдается на экран поясняющее сообщение, например:
printf("Введите значенияэлементов массива А\n");
for( i = 0; i<4; i++)
scanf("%f",&A[i]);
Во время исполнения программы на клавиатуре через один или несколько пробелов набираются элементы массива и нажимается клавиша [Enter]:
1.2 5 -6.8 14 [Enter]
Пример 2. Организовать вывод массива А на экран таким образом, чтобы все элементы располагались на одной строке экрана.
В программе надо записать следующие операторы:
for ( i = 0; i<4; i++)
printf("%5.2f ",A[i]);
printf("\n");
Вид выводимого массива на экране:
1.2 5.0 -6.8 14.0
Оператор printf("\n"); без списка имен переменных служит для перевода курсора к началу следующей строки экрана.
Обработка одномерных массивов
При решении задач обработки массивов используют базовые алгоритмы реализации циклических вычислительных процессов: организация счетчика, накопление сумм и произведений, поиск минимального и максимального элементов массива.
Задача 1. Организация счетчика
Дан целочисленный массив: В = {bi};i=
. Определить количество элементов
массива, которые делятся на 3 без остатка.
Схема алгоритма
45
Конец
Вывод L
Да
i=0,19
НАЧАЛО
Ввод
L=0
Biкрат
L=L+1
Текст программы:
#include "stdafx.h" int main() { int В[20] ;// описание массива B int i, L; printf("Введите массив В\n"); for( i=0; i<20; i++) scanf("%d", &В[i]);// ввод данных в массив с клавиатуры L=0;
for( i =0; i<20; i++) if (В[i] % 3== 0) //проверка элемента на кратность 3 L++; printf("Кол-во кратных 3 элементов=%d\n", L); return 0; }
46
Задача 2. Накопление суммы и произведения
 
nixX
i
,1;
n
i
i
x
n
S
1
1
n
n
i
i
xP
1
Конец
Вывод S,P
S=S+X[i]
S=S/n P=P
1/n
i=1,n
S=0 P=1
Ввод
НАЧАЛО
Дано целое число n и массив вещественных чисел:
.
Вычислить среднее арифметическое и среднее геометрическое чисел массива, используя формулы:
;
Схема алгоритма:
n,X[n]
P=P*X[i]
.
Текст программы:
#include "stdafx.h" #include <math.h> int main() { float X [100]; //описание массива Х float z; int n; int i; float S=0, P=1;/*начальные значения суммы и
произведения*/ printf("Введите размер массива n= "); scanf("%d",&n);
47
printf("Введите массив X\n");
10,1
for( i = 0; i<n; i++) scanf("%f",&X[i]);
for( i=0; i<n; i++) { S = S + X[i]; // вычисление суммы элементов массива Х P =P*X; // вычисление произведения элементов Х } S = S/n; // вычисление среднего значения Х z=1.0/n; P=pow(P,z); // вычисление среднего геометрического Х printf("S=%6.2f\n", S); printf("P=%10.6f\n",P); return 0; }
Задача 3. Поиск минимального и максимального элементов массива
Дан вещественный массив: T = {ti}; i=
. Поменять местами минимальный и
максимальный элементы массива и вывести массив после обмена. Решение В этой задаче для осуществления обмена надо знать не только значения
минимального и максимального элементов массива, но и их местоположение. Поэтому во время поиска минимального и максимального элементов необходимо фиксировать значения их индексов.
Введем обозначения: min - минимальный элемент; imin - индекс минимального элемента; max - максимальный элемент; imax - индекс максимального элемента.
Текст программы:
#include "stdafx.h" #include<math.h> Int main() { floatT[10] ; // описание массива Т int i, imin, imax; float min, max; printf("Введите массив Т\n"); for( i = 0;i<10;i++)
48
scanf("%f",&T[i]);
Да
ВыводТ
Конец
Max=T[i]
Нет
Да
T[i]>M Нет
Min=T[i]
Min=106 Max=-
i=1,10
НАЧАЛО
T[i]<Mi
Ввод
min =+1E6; max =-1E6; for( i = 0; i<10; i++) { if (T[i]<min) { min = T[i]; imin=i; // сохранение номера текущего min } if( T[i]>max) { max = T[i]; imax = i;// сохранение номера текущего max } } T[imin]=max; T[imax]= min; for( i= 0; i<10; i++) printf("%6.2f ",T[i]); printf("\n"); return 0; }
массива Т
6
10
imin=i
Порядок выполнения работы.
imax=i
1. Получить допуск к работе у преподавателя(показать домашние
заготовки).
2. Загрузить среду Visual Studio.
49
3. Ввести текст программы.
№ вар.
Исходные данные
Действия по обработке массива
1
Массив Х[30] нецелых элементов задать датчиком случайных чисел.
Записать в массив Y подряд положительные элементы массива Х и найти их среднее арифметическое.
2
Массив С[15] нецелых элементов вводят с клавиатуры.
Определить минимальный элемент массива С и его порядковый номер. Заменить его на 0 .
3
Массив Х [36] целых элементов задать датчиком случайных чисел.
Переписать подряд в массив Y положительные и в массив Z отрицательные элементы массива Х и определить, сколько в массиве Y четных элементов.
4
Массив А[20] нецелых элементов вводят с клавиатуры.
Определить среднее арифметическое положительных элементов массива и подсчитать сколько элементов находится в интервале от 2.5 до 3.5.
5
Массив Z[15] нецелых элементов вводят с клавиатуры.
Переписать в массив R сначала положительные, а затем отрицательные элементы массива Z и найти сумму положительных элементов и количество отрицательных элементов.
6
Массив А[20] нецелых элементов задать датчиком случайных чисел.
Вычислить среднее арифметическое значение положительных элементов и максимальный элемент среди отрицательных элементов массива А.
7
Массив С[15] нецелых элементов вводят с клавиатуры.
Вычислить минимальный положительный и максимальный отрицательный элементы и их порядковые номера в массиве С.
8
Массив Y[10] нецелых элементов вводят с клавиатуры.
Вычислить среднее геометрическое элементов массива и определить наибольший элемент массива. Заменить наибольший элемент массива на среднее геометрическое элементов массива.
4. Провести отладку программы.
5. Выполнить программу, провести анализ результатов и убедившись в
правильности решения, предъявить их преподавателю для проверки.
6. Занести результаты расчета в отчет.
7. Выйти из среды.
Варианты заданий
Таблица 4
50
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]