Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Работа с массивами




Программирование алгоритмов разветвляющейся структуры

Пример. Вычислить значение функции.

если

 

а) с использованием условного оператора if-then-else

Паскаль-программа

 

Program prim21;

var a,b,c,x,y:real;

n:integer;

begin

write(‘Введите а=’); readln(a);

x:=ln(abs(a-cos(a)));

c:=x*a; b:=x+a;

c=xa b=x+a
if c<=0 then

begin y:=-10.5; n:=1; end

else

if c=>3.5 then

да begin y:=c+ln(b); n:=3; end

else

нет begin y:=exp(c)+2*b; n:=2; end;

writeln(‘x=’,x:1:3,’ c=’,c:1:3,’ y=’,

да y:1:3,’ n=’,n);

end.

нет

y=eс+2b, n=2
y=c+lnb, n=3
Результат

y=-10.5, n=1
Введите а=7.35

           
     
 
 
 


x=1.927 c=14.162 y=16.389 n=3

 
 


 

 

 



б) c использованием оператора выбора case

 

Паскаль-программа

 
 


Program prim22;

var a,b,c,x,y:real;

k:integer;

 
begin

write(‘Введите а=’); readln(a);

x:=ln(abs(a-cos(a)));

c:=x*a; b:=x+a;

c=x·a b=x+a
if c<=0 then k:=1 else

if c<=3.5 then k:=2 else k:=3;

case k of

1: y:=-10.5;

да 2: y:=exp(c)+2*b;

3: y:=c+ln(b);

нет end;

да writeln(‘x=’,x:1:3,’ c=’,c:1:3,’

=’,y:1:3,’ k=’,k);

  k=1
нет end.

  k=3
  k=2
Результат

Введите а=7.35

x=1.927 c=14.162

y=16.389 k=3

нет

       
 
   
 

 

 


  y=-10.5
да k=1

 
 

 


k=2

       
   
 
 
  y=c+lnb

 

 


k=3

         
   
 
   
 
 

 

 

Задача. Разработать программу решения 4-х взаимосвязанных задач

1) расчёт элементов квадратной матрицы A=a(i,j), i,j=1,2,…

по заданной формуле;

 

2) вычисление элементов вектора X=x(i) i=1,2,…

по заданному правилу;

 

3) упорядочение элементов матрицы А или вектора Х;

 

4) вычисление значения функции y по заданной формуле.

 

Пример.

1) ; ;

 

2) ; ;

 

3) упорядочить элементы второго столбца матрицы А по

убыванию значений;

 

4) ; .

 

Задание выполнить для n=6.

Замечание. Предварительно провести отладку программы при n=3, для чего получить решение задачи вручную (или с помощью калькулятора) и проверить полученные данные на ЭВМ.


 

Блок-схема алгоритма

       
   
 
 

 

 


нет

           
   
s=s+xk
 
   
 
 



да

           
   
   
k=j
 
 
 

 

 


нет

           
 
   
     
 
 

 

 


нет
  y=y*xi*s
да

           
   
 
     
 
 

 


да

           
 
   
     
 
 

 


Паскаль-программа

program prim5;

var a:array[1..10,1..10] of real;

x:array [1..10] of real;

i,j,k,n:integer;

y,s,c:real;

begin

writeln(‘Введите n’); read(n);

{---------------------------------------часть 1-----------------------------------}

for i:=1 to n do

for j:=1 to n do

a[i,j]:=(2*j*i+4*i)/j;

writeln(‘ ‘:20,’МАТРИЦА А’);

for i:=1 to n do

begin

for j:=1 to n do write(a[i,j]:8:3);

writeln;

end;

{---------------------------------------часть 2-----------------------------------}

for i:=1 to n do

begin

s:=0;

for j:=1 to n do s:=s+sqr(a[i,j]);

x[i]:=sqrt(s)/n;

end;

writeln(‘ ‘:20,’ВЕКТОР Х’);

for i:=1 to n do write(x[i]:8:3);

{---------------------------------------часть 3-----------------------------------}

for i:=1 to n-1 do

begin

k:=i;

for j:=i+1 to n do

if a[j,2]>a[k,2] then k:=j;

if i<>k then

begin

c:=a[i,2]; a[i,2]:=a[k,2]; a[k,2]:=c;

end;

end;

writeln(‘ ‘:14,’УПОРЯДОЧЕННАЯ МАТРИЦА’);

for i:=1 to n do

begin

for j:=1 to n do write(a[i,j]:8:3);

writeln;

end;

{---------------------------------------часть 4-----------------------------------}

y:=1;

for i:=1 to n do

begin

s:=0;

for k:=1 to n do s:=s+x[k];

if x[i]<>0 then y:=y*x[i]*s;

end;

writeln(‘ЗНАЧЕНИЕ ФУНКЦИИ У=’,y:1:3);

end.

 

Результаты

Введите n=6

МАТРИЦА А

6.000 4.000 3.333 3.000 2.800 2.667

12.000 8.000 6.667 6.000 5.600 5.333

18.000 12.000 10.000 9.000 8.400 8.000

24.000 16.000 13.333 12.000 11.200 10.667

30.000 20.000 16.667 15.000 14.000 13.333

36.000 24.000 20.000 18.000 16.800 16.000

 

ВЕКТОР X

1.555 3.110 4.665 6.220 7.776 9.331

 

УПОРЯДОЧЕННАЯ МАТРИЦА А

6.000 24.000 3.333 3.000 2.800 2.667

12.000 20.000 6.667 6.000 5.600 5.333

18.000 16.000 10.000 9.000 8.400 8.000

24.000 12.000 13.333 12.000 11.200 10.667

30.000 8.000 16.667 15.000 14.000 13.333

36.000 4.000 20.000 18.000 16.800 16.000

 

ЗНАЧЕНИЕ ФУНКЦИИ Y=123454118108000.000



Список рекомендуемой литературы

 

1. Задания для практических и лабораторных занятий по информатике (работы 1-5): Методические указания./ Cост. Т.Г. Умергалин,

И.Г. Мухамадеев, Э.В. Писаренко - Уфа: изд-во УГНТУ,1997.-51 с.

2. Основы программирования и работы в интегрированной среде Турбо-Паскаль: Методические указания./ Cост Т.Г. Умергалин,

И.Г. Мухамадеев - Уфа: изд-во УГНТУ,1992.-45 с.

3. Емелина Е.И. Основы программирования на языке Паскаль. - М.: Финансы и статистика, 1997.-208 с.

4. Фаронов В.В. Турбо Паскаль: В 3-х кн. Кн. 1. Основы Турбо Паскаля. – М.: Учебно-инженерный центр “МВТУ-ФЕСТО ДИДАКТИК”,1992. – 304 с.

 

 


 


 

МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

 

Уфимский государственный нефтяной технический

университет

Кафедра вычислительной техники и инженерной кибернетики

 

 




Поделиться с друзьями:


Дата добавления: 2015-06-28; Просмотров: 298; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.