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

Praktikum_2008

.pdf
Скачиваний:
292
Добавлен:
06.06.2015
Размер:
8.23 Mб
Скачать

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

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. Составить программу для вычисления суммы ряда: 112 + 13 14 + 15 16 +...

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

an =

n

,

+1

n2

n2 1

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

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

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

bn = (112)(113)...(1n1+1),

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

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

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

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

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

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

значениях: 100S 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), где ai0.

Группа Б

№ 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

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