Задача на детерминированный цикл.



Пример. Сформировать массив целых чисел X(N), элементами которого являются случайные числа в диапазоне [-20..20]. Найти максимальный элемент и его номер.

#include <iostream.h>

#include <stdlib.h>

#include <time.h>

 

void main ()

{

int a[100],n,max,imax;

cout<<"\nEnter n ";

cin >>n;

cout<<"\n";

randomize();// инициализация счетчика случайных чисел

for (int i=0;i<n;i++)

{

a[i]= random(41)-20; // генерируем массив случайных чисел

              //в диапазоне [-20..20]

cout<<"a["<<i<<"]="<<a[i]<<"\n";

}

max=a[0];

for(int i=1;i<n;i++)

if (a[i]>max) {max=a[i]; imax=i;}

cout<< "\nmax = a["<<imax<<"]= "<<max;

}

 

Задача на итерационный цикл.

Дано натуральное число N. Подсчитать сумму его цифр.

# include <iostream.h>

void main()

{

long n,m;

cout << “Enter n”;

cin >> n;

m=n; // Сохранили значение исходного числа

 int sum=0;

while (m>0)

{ sum+=m%10; m/=10;}

cout<< “sum = ”<< sum;

}

 

Задача на вложенные циклы.

Сформировать матрицу A(10,10) следующего вида

# include <iostream.h>

# include <iomanip.h>

void main ()

{ const int N=10;

static int a[N][N]; //статический массив инициализируется

           //нулями

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

for (j=0; j<N; j++)

if (i>=j) a[i][j]=i-j+1 //условие попадания под главную

                   // диагональ

for (i=0; i<N; i++)                      // печать матрицы

{

for (j=0; j<N; j++) cout <<setw(3)<<a[i][j];//под каждый элемент отводится

              //3 позиции, что обеспечивает

              // красивый вывод матрицы

cout << “\n”;

}

}

 

Как видно из примеров основные три конструкции программирования (цепочка, ветвление, цикл) можно комбинировать произвольным образом, получая программы любой сложности.

 

Кроме конструкций следования, ветвления, мультиветвления и цикла, существует еще один блок конструкций, изменяющих активную точку выполнения программы – конструкции передачи управления.

1. Конструкция безусловного перехода goto, который имеет формат:

goto идентификатор;

где идентификатор – имя метки оператора, расположенного в той же функции, где используется конструкция безусловного перехода. Метка – это обычный идентификатор, после которого ставится двоеточие и следует некоторый оператор. Использование конструкции goto необходимо сводить к минимуму.

При использовании goto следует придерживаться 3 строгих правил:

- не входить внутрь любого блока извне;

- не входить внутрь условной конструкции, переключателя, цикла извне;

- не перескакивать через описания, содержащие инициализацию объектов.

Однако в двух случаях использование goto действительно обосновано

- при необходимости выйти из вложенных циклов или переключателей;

- переход из нескольких мест программы к одному участку, который нельзя по каким-либо причинам оформить в виде функции.

Пример, смотри в книгах!!!

2. Конструкция принудительного выхода из цикла и переключателя break (можно использовать только в циклах и переключателях). Передает управление на оператор следующий за конструкцией цикла. (Умножение чисел, где встречается ноль)

3. Конструкция перехода к следующей итерации continue (применяется только в циклах). С его помощь завершается текущая итерация и начинается проверка условий дальнейшего продолжения цикла. Типичный пример использования continue - подсчитать сумму только положительных элементов одномерного массива.

for (s=0,i=0;i<n;i++)

{

if (x[i]<=0) continue;

s+=x[i];

}

4. Конструкция возврата из функции return. Будет изучаться во втором семестре.

 


Дата добавления: 2021-01-20; просмотров: 97; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!