Файл: Разработка циклических алгоритмов.pdf

ВУЗ: Не указан

Категория: Задание

Дисциплина: Программирование

Добавлен: 25.10.2018

Просмотров: 2850

Скачиваний: 49

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

11 

1)  выбор структуры данных (простая переменная или массив) может быть 

неоднозначен; 

2)  выбор структуры данных влияет на алгоритм. 

Блок-схема  алгоритма  приведена  на  рис.  3,а.  Обратите  внимание  на 

нумерацию  блоков.  Нумерация  нужна  для  сложных  блок-схем,  которые  не 
умещаются  на  одной  странице  или  некоторые  блоки  которых  отображают 
обобщенное  действие  и  подлежат  последующей  детализации.  Нумерация  не 
обязательно  производится  подряд,  некоторые  блоки  могут  не  иметь  номеров. 
Для  рассматриваемой  блок-схемы  является  обобщенным  блок  6,  его 
содержание  раскрыто  на  рис.3,б.  Обратите  внимание  на 
значки,  с  помощью  которых  показывается  связь  между 
исходной  и  подчиненной  блок-схемами.  Подставив  в 
исходную  блок-схему  вместо  блока  6  его  расшифровку,  получим  детальный 
алгоритм решения задачи (см. рис.3,в). 

Разработанный  алгоритм  имеет  кратный  (вложенный)  цикл:  тело 

цикла, управляемого параметром i - этот цикл называется внешним, - содержит 
цикл,  управляемый  параметром  j,  внутренний  цикл.  Представленная 
конструкция  также  называется  циклом  кратности  (вложенности)  2. 
Заметим, что внешний цикл (с параметром i) обеспечивает переход от строки к 
строке матрицы, внутренний цикл (с параметром j) обеспечивает движение по 
строке (т. е. переход от столбца к столбцу при фиксированном значении i). 


background image

 

12 

 

 

 

 

Рис.3,а. Блок-схема программы примера раздела 4 

6   вычисление s – суммы 

     элементов i-й строки 

да 

да 

i<N-

нет 

1  начало 

   

Ввод N, M;  a[i,j], 

i=0,…,N-1, j=0,…,M-1 

2   

3    k:=0 

4    i:=0 

7  s>0 

8    k:+k+1 

   вывод i,s 

10    i:=i+1 

11      вывод k 

12    конец 


background image

 

13 

 

 

 

 

д

а 

j:=0 

j:=j+1 

s:=0 

s:=s+a[i,j] 

j



M-1 

да 

н

ет 

Рис. 3,б. Детализация блока 6. 


background image

 

14 

 

Рис.13,в. Детальная блок-схема программы примера 4 

да 

i

N-

нет 

1  начало 

   Ввод N, M 

  a[i,j], i=1,…,N, j=1,…,M 

2   

3    k:=0 

4    i:=0 

да 

7  s>0 

8    k:+k+1 

   вывод i,s 

10    i:=i+1 

11      вывод k 

12    конец 

j:=0 

j:=j+1 

s:=0 

s:=s+a[i,j] 

j



M-1 

да 

Блок 6 


background image

 

15 

Программа, написанная по блок-схема рис.3,в приведена ниже. 

#include

 

<stdio.h> 

#include

 

<conio.h> 

 

void

 main() 

{

float

 a[5][5],s; 

int

 N,M,k,i,j; 

 printf(

"

Введите N, M\n"

); 

 scanf_s(

"%d%d"

,&N, &M); 

 printf(

"Введите матрицу %d * %d\n"

,N,M); 

 

/* Далее цикл для поэлементного ввода матрицы*/ 

 

for

 (i=0; i<N; i++) 

 

 

for

 (j=0; j<M; j++) 

          scanf_s(

"%f"

, &a[i][j]);

/*Далее алгоритм по блок-схеме*/ 

 k=0; 
 

for

 (i=0; i<N; i++) 

 { 
  s=0; 
  

for

 (j=0; j<M; j++) 

 

  s=s+a[i][j]; 

  

if

 (s>0) 

  {         k=k+1; 
  } 
 } 
  
 printf(

" k=%d \n"

,k); 

 _getch(); 

 } 

5

. Варианты индивидуальных заданий на разработку алгоритма 

со сложным условием продолжения цикла

1

 

1.  А—начальная  стоимость  оборудования.  В  первый  год  эксплуатации 

стоимость  оборудования  снижается  на  В  руб.,  а  в  каждый  следующий  год 
снижение стоимости уменьшается на р % (относительно предыдущего года). 
Определить, через сколько лет стоимость оборудования станет меньше А/2. 
Рассматривать срок не более N лет. 

                                           

1

 Код приложения для первой  задачи этого раздела приведен в качестве 

примера в п.2 семинара. Ответьте на вопрос: зачем в этом коде нужен оператор 

if

 (At<A/2)…? Можно ли сравнение At c A/2 заменить сравнением i и N?