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



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

#include <stdlib.h>

#include <stdio.h>

 

void main ()

{

  const int N=100;

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

  do

  {

         printf ("\nEnter n (0-%d%s", N, "): ");

         scanf("%d", &n);

  }

  while (n<0 || n>N);

  printf ("\nArray: \n");

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

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

  {

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

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

         printf ("a[%d%s%d%s",i,"]=",a[i],"\n");

  }

  max=a[0];

      

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

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

      

  printf ("\nmax = a[%d%s%d",imax, "]= ",max);

}

 

 

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

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

# include <iostream.h>

void main()

{

long n,m;

printf( “Enter n”);

scanf(“%d”, &n);

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

 int sum=0;

while (m>0)

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

printf (“sum = %d”,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++) printf (“%3d”,a[i][j]);//под каждый элемент отводится

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

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

printf(“\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; просмотров: 66; Мы поможем в написании вашей работы!

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






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