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

Praktikum_2008

.pdf
Скачиваний:
293
Добавлен:
06.06.2015
Размер:
8 Мб
Скачать
☆

Задачи для самостоятельного решения Циклы с условием

№4.1. Написать программу для вычисления значений Y= Z2 при изменении Z от N1 до N2 с шагом K, где K, N1, N2 — натуральные числа.

№4.2. Написать программу для вычисления суммы нечетных чисел натурального ряда в интервале от N1 до N2, , где N1, N2 — натуральные числа.

№4.3. Написать программу для вычисления значений Q = Y при

изменении Y от N1 до N2 с шагом K, где K, N1, N2 — натуральные числа.

№4.4. Написать программу для вычисления суммы обратных величин чисел от N1 до N2 с шагом K, где K, N1, N2 — натуральные числа.

№4.5. Написать программу для вычисления выражения S=π*R*R при изменении R в интервале от 1 до N с шагом K где K, N — натуральные числа.

№4.6. Составить программу для вычисления членов последовательности:

Sn =112 + 213 +... + n (n1+1) , где n — натуральное число. Члены последовательности вычислять до тех пор, пока текущий член последовательности не станет меньше заданного числа ε

(0<ε<0,0001).

№ 4.7. Составить программу для вычисления суммы ряда:

371

113 + 213 + 313 +... + n13 , где n — натуральное число.

Сумму ряда вычислять до тех пор, пока текущий член последовательности не станет меньше заданного числа ε (0<ε<0,0001).

№ 4.8. Составить программу для вычисления суммы ряда: 1− 12 + 13 − 14 + 15 − 16 +...

Сумму ряда вычислять до тех пор, пока текущий член последовательности не станет меньше заданного числа ε (0< ε <0,0001). № 4.9. Составить программу для вычисления члена an последовательности a1, a2, …, образованной по закону

an =

n

,

+1 −

n2

n2 −1

для которого выполняется условие an–an-1 <ε, причем n — номер члена последовательности (n≥2),

ε— заранее заданное положительное число.

№4.10. Написать программу для вычисления члена bn последовательности b1, b2, …, образованной по закону

bn = (1− 12)(1− 13)...(1− n1+1),

для которого выполняется условие bn–bn-1 <ε,

где n — номер элемента последовательности (n≥2); ε — заданное положительное число.

Циклы с параметром

№4.11. Написать программу для вычисления суммы S=S+1/i, где i=1, 2,..., N.

№4.12. Написать программу для вычисления произведения первых N натуральных чисел.

№4.13. Написать программу для вычисления dx=h*h/(2*S), при

значениях: 100≤ S ≤ 1000 м.

№ 4.14. Написать программу для вычисления суммы S из значений Y=X*X*X, где X задан в интервале от N1 до N2, где N1 и N2

— натуральные числа.

372

№ 4.15. Написать программу для вычисления выражения Y=N!.

§ 5. Использование массивов в программах,

компонента Memo для ввода данных в массив

В данном параграфе рассматриваются следующие вопро-

сы: массивы, компонент Memo для ввода и вывода массивов.

Теория

Массивы

Массивом называется упорядоченная индексированная совокупность однотипных элементов, имеющих общее имя. Элементами массива могут быть данные различных типов, включая структурированные. Каждый элемент массива однозначно определяется именем массива и индексом (номером этого элемента в массиве) или индексами, если массив многомерный. Для обращения к отдельному элементу массива указываются имя этого массива и номер (номера) элемента, заключенный в квадратные скобки, например, arrl[3, 35] или аrr3[7].

Количество индексных позиций определяет мерность массива (одномерный, двумерный и т. д.), при этом мерность массива не ограничивается. В математике аналогом одномерного массива является вектор, а двумерного массива — матрица. Индексы элементов массива должны принадлежать порядковому типу. Разные индексы одного и того же массива могут быть различных типов. Наиболее часто типом индекса является целочисленный тип.

Различают массивы статические и динамические. Статиче-

ский массив представляет собой массив, границы индексов и соответственно размеры которого задаются при объявлении — известны до компиляции программы.

Формат описания типа статического массива: Array [Тип индексов] of <Тип элементов>; Пример. Объявление статических массивов. Type tm = Array[l .. 10, 1 .. 100] of real;

Var arrl, arr2: tm;

arr3: Array[20 .. 100] of char; arr4: Array['a' .. 'z'] of integer;

373

Переменные arrl и arr2 являются двумерными массивами по 1000 элементов — 10 строк и 100 столбцов. Каждый элемент этих массивов представляет собой число типа real. Для объявления массивов arrl и аrr2 введен специальный тип tm. Переменные аrr3 и аrr4 являются одномерными массивами, соответственно на 81 символ и 26 целых чисел.

Доступ к каждому элементу массива осуществляется по индексу. Например, arr1[2,3] — элемент массива arr1, находящийся во второй строке и третьем столбце; arr3[34] — элемент массива arr3 с индексом 34, но пятнадцатый по порядку; arr4[i] — i-ый элемент массива arr4.

Компонент Memo для ввода и вывода массивов

При использовании компонента Memo для ввода массива значение каждого элемента массива следует вводить в отдельной строке и после ввода каждого элемента массива нажимать кла-

вишу «ENTER».

Получить доступ к находящейся в поле Memo строке текста можно при помощи свойства Lines, указав в квадратных скобках номер нужной строки (строки нумеруются с 0).

Следующий цикл демонстрирует ввод символьного массива из компонента Memo:

For i:=1 to Size do a[i]:=Memo1.Lines[i];

Вывод массива в компонент Memo можно осуществить таким образом:

For i:=0 to N-1 Memo2.Lines.Add(FloatToStr(massiv[i+1]);

Практика

Задача

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

Компоненты

Имя

Свойства

Значение

Назначение

 

компонента

компонента

 

 

 

Form1

Caption

Сортировка массива мето-

Заголовок формы

 

 

дом прямого выбора

 

 

Label1

Caption

Программа предназначена

Справочная

ин-

 

 

для сортировки массива

формация

для

374

 

 

 

 

действительных

чисел

по

пользователя

 

 

 

 

возрастанию либо по убы-

программы

 

 

 

 

 

 

ванию

 

 

 

 

 

 

 

Label2

 

Caption

 

Количество

элементов

в

Подсказка

поль-

 

 

 

 

массиве

 

 

 

зователю

 

 

Edit1

 

Text

 

…..

 

 

 

Поле

для

ввода

 

 

 

 

 

 

 

 

количества

 

эле-

 

 

 

 

 

 

 

 

ментов в массиве

Memo1

 

Lines

 

…..

 

 

 

Компонент

 

для

 

 

 

 

 

 

 

 

ввода

элементов

 

 

 

 

 

 

 

 

массива в

 

стол-

 

 

 

 

 

 

 

 

бик (в одной стро-

 

 

 

 

 

 

 

 

ке — один эле-

 

 

 

 

 

 

 

 

мент)

 

 

 

Button1

 

Caption

 

Сортировка

по

возраста-

Кнопка

для

вы-

 

 

 

 

нию

 

 

 

полнения

сорти-

 

 

 

 

 

 

 

 

ровки

по возрас-

 

 

 

 

 

 

 

 

танию

 

 

 

Button2

 

Caption

 

Сортировка по убыванию

 

Кнопка

для

вы-

 

 

 

 

 

 

 

 

полнения

сорти-

 

 

 

 

 

 

 

 

ровки

по

убыва-

 

 

 

 

 

 

 

 

нию

 

 

 

Button3

 

Caption

 

Завершение работы

 

Кнопка

для

за-

 

 

 

 

 

 

 

 

вершения работы

 

 

 

 

 

 

 

 

программы

 

 

Переменные и массивы

 

 

 

 

 

 

 

Обозначение

 

Содержание

 

 

 

Тип

 

 

в программе

 

 

 

 

 

 

 

 

 

 

NКоличество элементов в массиве Целый

действительных чисел

Massiv

Массив действительных чисел

Вещественный, расши-

 

 

ренный

I

Текущий индекс элемента массива

Целый

Jиндекс элемента массива, с котороЦелый

го начинается поиск минимального либо максимального элемента

min

номер минимального

элемента

в

Целый

 

массиве или части массива

 

 

max

номер максимального

элемента

в

Целый

 

массиве или части массива

 

 

buf

буфер для обмена местами эле-

 

Вещественный, расши-

 

ментов массива

 

 

ренный

st

строковое сообщение,

содержащее

Строковый

 

результат

 

 

 

Проект формы

375

Текст модуля

unit Unit1; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

…………

var

Form1: TForm1;

Massiv: array [1..100] of Extended;// массив действительных чисел N : Integer;

implementation {$R *.dfm}

procedure TForm1.Button3Click(Sender: TObject); begin

Form1.Close

end;

procedure TForm1.Button1Click(Sender: TObject);

Var I:Integer;// индекс элемента массива

min: Integer; // номер минимального элемента в массиве //или части массива

j : Integer; // индекс элемента массива, //с которого начинается // поиск минимального элемента

buf: Extended; // буфер для обмена местами // элементов массива

St: String; // строковое сообщение, содержащее результат

begin

376

//ввод количества элементов в массиве

N:=StrToInt(Edit1.Text);

//ввод массива действительных чисел

For I:=1 To N do Massiv[I]:=StrToFloat(Memo1.Lines[I-1]);

// поиск минимального элемента массива методом прямого выбора {алгоритм метода прямого выбора можно описать следующими слова-

ми. Сначала в качестве минимального элемента берется первый элемент и с ним последовательно сравниваются все следующие элементы массива, если попадается элемент меньше принятого за минимальный, то они меняются местами. В результате на первом месте оказывается самый маленький элемент массива. Затем берется второй или следующий элемент массива и просматривается с перестановкой оставшаяся часть массива. Эта последовательность шагов повторяется, пока номер минимального элемента не достигнет N–1}

For I:=1 to N-1 do begin

min:=I;

For j:=I+1 to N do

if Massiv[j] < Massiv[min] then min:=j;

buf:=Massiv[I];

Massiv[I]:=Massiv[min];

Massiv[min]:=buf;

end;

// вывод результатов сортировки st:='Отсортированный по возрастанию массив'+#13; For I:=1 to N do

st:=st+IntToStr(i)+ ' '+FloatToStrF(Massiv[I],Fffixed,10,2)+#13; ShowMessage(st);

end;

procedure TForm1.Button2Click(Sender: TObject);

Var I:Integer;// индекс элемента массива

max: Integer; // максимальный элемент в массиве j : Integer; // индекс элемента массива, с которого // начинается поиск максимального элемента

buf: Extended; // буфер для обмена местами элементов // массива

St:String;// строковое сообщение, содержащее результат begin

//ввод количества элементов в массиве

N:=StrToInt(Edit1.Text);

//ввод массива действительных чисел

377

For I:=1 To N do

Massiv[I]:=StrToFloat(Memo1.Lines[I-1]);

//поиск максимального элемента массива методом прямого выбора

//алгоритм аналогичен поиску минимального элемента

//отличие состоит в знаке сравнения

For I:=1 to N-1 do begin

max:=I;

For j:=I+1 to N do

if Massiv[j] > Massiv[max] then max:=j; buf:=Massiv[I];

Massiv[I]:=Massiv[max];

Massiv[max]:=buf;

end;

// вывод результатов сортировки st:='Отсортированный по убыванию массив'+#13; For I:=1 to N do

st:=st+IntToStr(i)+ ' '+FloatToStrF(Massiv[I],Fffixed,10,2)+#13; ShowMessage(st);

end;

end.

Задачи для самостоятельного решения

Группа А

№5.1. Дан массив действительных чисел. Найти сумму элементов массива.

№5.2. Дан массив действительных чисел. Найти произведение элементов массива.

№5.3. Дан массив действительных чисел. Найти сумму квадратов элементов массива.

№5.4. Дан массив действительных чисел. Найти модуль суммы и квадрат произведения элементов массива.

№5.5. Дан массив действительных чисел. Найти наибольший элемент массива.

№5.6. Дан массив действительных чисел. Найти наименьший элемент массива.

№5.7. Дан массив действительных чисел. Найти наибольший элемент массива.

№5.8. Дан массив действительных чисел. Найти наименьший из элементов массива с четными номерами.

378

№5.9. Написать программу для определения среднего роста студентов группы.

№5.10. Написать программу для вычисления среднего гармонического

Mn = n / (1/a1+ 1/a2+...+ 1/an), где ai≠0.

Группа Б

№ 5.11. Написать программу для обработки результатов N- кратного измерения величины L. Программа должна вычислять Среднее

1 N

L = N i∑=1Li ,

где Li — результат i–го измерения.

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

m =

где

 

 

 

1

N

2

 

2

 

L

 

=

 

∑Li .

 

 

 

 

 

N i =1

 

N(L2 −(L)2 ) ,

N −1

Среднюю квадратическую погрешность арифметической середины

M = m / N .

Предельную абсолютную погрешность измерений L = 3M . Количество измерений произвольно в пределах от 2 до 15.

Впрограмме предусмотреть следующую форму запросов при вводе исходных данных:

КОЛИЧЕСТВО ИЗМЕРЕНИЙ= L1=

L2=

ит. д. для всех измерений.

Впрограмме предусмотреть также проверку условия N<2. Если это условие выполняется, выдавать сообщение «ОДНО ИЗМЕРЕНИЕ НЕДОПУСТИМО» и осуществить переход к оператору ввода N.

Форма выдачи результатов: УСРЕДНЕННЫЙ РЕЗУЛЬТАТ=значение

379

СКП ОТДЕЛЬНОГО ИЗМЕРЕНИЯ= значение СКП СРЕДНЕГО= значение

ПРЕДЕЛЬНАЯ АБСОЛЮТНАЯ ПОГРЕШНОСТЬ= значение № 5.12. Написать программу для определения суммарной площади земельных участков

S= S1 + S2 +... + SN

ивычисления средней квадратической погрешности опреде-

ления этой суммы

M = M 12 + M 22 +... + M N2 .

Здесь Si — площадь i-го участка; Mi — средняя квадратическая погрешность определения этой площади. Общее количество участков произвольно, но не более 255.

Предусмотреть в программе следующую форму запросов при вводе:

КОЛИЧЕСТВО УЧАСТКОВ= УЧАСТОК 1:

ПЛОЩАДЬ= СКП= УЧАСТОК 2: ПЛОЩАДЬ= СКП=

и т.д. для всех участков. Форма вывода результатов:

СУММАРНАЯ ПЛОЩАДЬ=значение S СКП=значение M

№ 5.13. Написать программу для вычисления среднего арифметического

P = X1 + X2 +... + X N , N

среднего геометрического

G = N | X1 X 2 ... X N |,

среднего гармонического

H =

N

1/ X1 +1/ X 2 +... +1/ X N

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

380

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]