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

Решение некоторых примеров (11занятие)

Читайте также:
  1. Antrag auf Erteilung einer Aufenthaltserlaubnis - Анкета для лиц, желающих получить разрешение на пребывание (визу)
  2. I.5.4. Решение задачи линейного программирования.
  3. II.1.3. Решение транспортной задачи в QSB.
  4. А380: ОПТИМАЛЬНОЕ РЕШЕНИЕ ДЛЯ ОБСЛУЖИВАНИЯ МАРШРУТОВ С БОЛЬШИМИ ПАССАЖИРОПОТОКАМИ
  5. Анализ некоторых заблуждений.
  6. Было время принять решение,
  7. В некоторых странах не принято наказывать детей. Что вы думаете по этому поводу?

Задание на стр. 21, 2 задание на стр 29

Решение некоторых примеров (11занятие)

1.1 Заполнить массив a из n целыхэлементов случайными числами из заданного диапазона [0, m –1].

Для генерации случайных чисел используется стандартная процедура random(m) – датчик случайных чисел (рандомизатор).

program Vect_1;

сonst nmax=10;

type T_El=integer;

vect=array[1..nmax] of T_El;

var a:vect;

n,m:integer;

procedure FillRandom(n:integer; var a:vect; m:integer);

var i:integer;

begin

for i:=1 to n do

a[i]:=random(m)

end;

procedure WriteArr(n:integer; const a:vect);

var i:integer;

begin

for i:=1 to n do

write(a[i],' ');

writeln

end;

begin

write('Введите размер массива ');

read(n);

write('Введите границу диапазона случайных чисел ');

read(m);

FillRandom(n,a,m);

WriteArr(n,a)

end.

1.2 Заполнить массив из n целых чисел числами Фибоначчи.

procedure FillFib(n: integer; var f: vect);

var i: integer;

begin

f[1]:=1; f[2]:=1;

for i:=3 to n do

f[i]:=f[i-1]+f[i-2]

end;

 

1.3 Дано натуральное число n. Заполнить массив из n элементов значениями, полученными в результате вычисления выражений:

1.4 Заполнить массив a из n элементов простыми числами.

1.5 В массив y поместить таблицу значений функции f(x), вычисленной на отрезке [ a,b ] (a<b) с заданным шагом h.

f(x)=sin(x) / x на отрезке [ 2.21, ] с шагом h = 0.1

Метод решения заключается в следующем:

1) определить размер массива n = (b – a) / h + 1;

2) для всех i от 1 до n (и одновременно для всех x от a до b с шагом h) вычислить y = f(x ).

Табулирование функции представлено в виде процедуры Tabul.

Программа Vect_6 предназначена для табулирования конкретной функции f(x)=sin(x) / x на отрезке [ 2.21, ] с шагом h = 0.1. Вывод значений аргумента и функции в виде таблицы осуществляется процедурой WriteTabl.

program Vect_6;

const nmax = 10;

type T_El=real;

vect=array[1..nmax] of T_El;

func = function(x:real):real;

var n:integer;

y:vect;

function f(x:real):real;

begin f:=sin(x)/x end;

procedure Tabul(a,b,h:real; f:func;

var n:integer; var y:vect);

var i:integer;

x:real;

begin

n:=trunc((b-a)/h)+1;

if n>nmax then n:=nmax;

x:=a;

for i:=1 to n do

begin y[i]:=f(x); x:=x+h end

end;

procedure WriteTabl(n:integer;const y:vect; a,h:real);

var i:integer;

begin

for i:=1 to n do

writeln(a+(i-1)*h:7:2,' ',y[i]:8:4);

end;

begin

Tabul(2.21,pi,0.1,f,n,y);

WriteTabl(n,y,2.21,0.1)

end.

 

1.6 Заполнить массив a компонентами перечислимого типа, используя в качестве типа компонент и типа индексов заданные перечислимые типы. Вывести полученный массив. Тип индексов – страны Европы, тип элементов – столицы этих стран. Например,

type country = (Austria, Bulgaria, Greece, Italy, Norway, Russia, France);

capital = (Vienna, Sofia, Athens, Rome, Oslo, Moscow, Paris);

Cvect = array [country ] of capital;

 

В задаче используются следующие перечислимые типы:

– тип country содержит названия стран Европы,

– тип capital содержит столицы этих стран.

Заполнение массива реализуется процедурой FillCapital1.

Так как выводить (и вводить) значения перечислимого типа нельзя, вывод элементов массива заменяется выводом соответствующего текста.

program Vect_7;

type country = (Austria, Bulgaria, Greece, Italy, Norway, Russia,

France);

capital = (Vienna, Sofia, Athens, Rome, Oslo, Moscow, Paris);

Cvect = array [country ] of capital;

var a: Cvect;

i: country;

procedure FillCapital1 (var a: Cvect);

var i: country;

x: capital;

begin

i:= Austria;

x:= Vienna;

a[i]:=x;

while i< France do

begin

i:=succ(i); { следующая страна }

x:=succ(x); { следующая столица }

a[i]:=x

end

end;

begin

FillCapital1(a);

writeln (' страна - столица');

for i:= Austria to France do

case i of

Austria: writeln(' Вена - Австрия ');

Bulgaria: writeln(' София – Болгария ');

Greece: writeln(' Афины - Греция ');

Italy: writeln(' Рим – Италия ');

Norway: writeln(' Осло - Норвегия');

Russia: writeln(' Москва - Россия ');

France: writeln(' Париж – Франция ');

end

end.

Второй вариант процедуры заполнения массива FillCapital2использует преобразование типа (так называемое автоопределённое преобразование типа): указывается идентификатор типа, а за ним в круглых скобках переменная (или выражение) исходного типа.

procedure FillCapital2 (var a: Cvect);

var i,m,n: country;

begin

m:= Austria;

n:= France;

for i:= m to n do

a[i]:= capital(ord(i))

end;

 

1.7 Сгенерировать массив случайных букв в диапазоне от 'A' до 'Z'.

Это можно сделать, добавляя к случайному числу в диапазоне от 0 до 25 порядковый номер буквы А и используя затем этот новый порядковый номер для получения случайной буквы.

const nmax=10;

type T_El=char;

vect=array[1..nmax] of T_El;

procedure FillRandChar(n:integer;var a:vect);

var i:integer;

begin

for i:=1 to n do

a[i]:=chr(ord('A') + random(25))

end;

 

1.8 Заполнить массив a из n вещественныхэлементов случайными числами из диапазона [0, 1).

program Vect_3;

сonst nmax=10;

type T_El=real;

vect=array[1..nmax] of T_El;

var a:vect;

n,m:integer;

procedure FillRandom1(n: integer; var a: vect);

var i: integer;

begin

for i:=1 to n do a[i]:=random

end;

procedure WriteArr(n:integer; const a:vect);

var i:integer;

begin

for i:=1 to n do

write(a[i]:7:3,' ');

writeln

end;

begin

write('Введите размер массива ');

read(n);

FillRandom1(n,a);

WriteArr(n,a)

end.

 

----------------------------------------------------------------------------------------

2.1 Даны натуральное число n,целое число x и массив a из n целых чисел. Найти номер элемента с заданным значением x в массиве a. Если такого элемента в массиве нет, то результату присвоить значение n +1.

2.2 Даны натуральное число n и упорядоченный по неубыванию массив a из n целыхчисел. Найти в массиве индекс элемента с заданным значением x. Если элемент со значением x в массиве отсутствует, результатом считать значение n +1.

2.3 Дан целочисленный массив a из n элементов. Найти количество различных элементов в массиве.

Для решения задачи используется поиск с барьером элемента в части массива a [1.. i -1], i = 2, 3, …, n. Поиск ведётся с начала массива. Элементы
(j = 1, 2, …) сравниваются со значением барьерного элемента до первого совпадения значений.

Алгоритм описан в виде функции Count.

function Count (n:integer; const a:vect):integer;

var i, j, k: integer;

x: integer;

begin

k:=1;

for i:=2 to n do

begin

j:=1; x:=a[i];

while x<>a[j] do j:=j+1;

if j=i then k:=k+1

end;

Count:=k

end;


Дата добавления: 2015-10-30; просмотров: 70 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
ПОЛОЖЕНИЕ 21.| Of presidents and kings

mybiblioteka.su - 2015-2024 год. (0.014 сек.)