Файл: Основные структуры алгоритмов:сравнительный анализ и примеры их использования.pdf

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

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 05.04.2023

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

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

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

Если условие цикла ложно - управление передается следующему оператору. Таким образом, цикл может выполняться ноль или более раз.

Рассмотрим применение цикла while на примере движения автомобиля. На псевдокоде, то это будет так: Пока скорость движения автомобиля меньше 60 км/ч, продолжать наращивать скорость.

Истинным условием цикла, в данном случае, является скорость автомобиля меньше 60 км/ч, а ложным -- скорость автомобиля больше или равно 60 км/ч. Повторение цикла будет продолжаться до тех пор пока скорость автомобиля не станет больше или равно 60 км/ч, после наступления этого момента условие цикла станет ложным, и программа выйдет из цикла.

Рассмотрим фрагмент кода на C++ с циклом while решающим поставленную задачу.

1 intspeed = 5; // начальная скорость автомобиля

2 while( speed< 60 ) // заголовок цикла while

3 speed += 10; // телоцикла

Цикл do…while

Цикл do…while отличается от цикла while тем, что в do…while сначала выполняется тело цикла, а затем проверяется условие продолжения цикла. Из-за такой особенности do…while называют циклом с «постусловием». Таким образом, если условие do…while заведомо ложное, то хотя бы один раз блок операторов в теле цикла do…while выполнится. В итоге do…while отличается от цикла while структурой. Если в while сначала выполняется проверка условия продолжения цикла, и если условие истинно, то только тогда выполняется тело цикла. Цикл do…while работает с точностью да наоборот, сначала выполняется тело цикла, а потом проверяется условие, вот почему тело цикла do…while, хотя бы раз, выполнится.

Синтаксис цикла do…while выглядит следующим образом:

// форма записи оператора цикла dowhile:

do // началоцикла do while

{

/*блок операторов*/;

}

while (/*условие выполнения цикла*/); // конец цикла dowhile

В начале цикла do…while пишется зарезервированное слово do, после идут фигурные скобки, которые можно опускать, в случае использования одного оператора в теле цикла do…while. После закрывающей фигурной скобки, обозначающей конец тела цикла dowhile, стоит условие цикла do…while, после которого обязательно нужно ставить точку с запятой. Рассмотрим программу с циклом do…while, которая выполняет некоторые транзакции с денежным счётом в банке. На рисунке 6 отображен код данной программы:

Практическая часть:

Задание 5.

Разработать программу вычисления значений функции. Интервал изменения переменных ввести с клавиатуры. Шаг изменения переменных: .

  • Ввод исходных данные xn-(начальное),xk-(конечное), zn-(начальное), zk-(конечное).
  • Вычисление значения переменной y (выражение).
  • Результат выводим на экран

3. Описание переменны

xn, zn- начальные значения переменныхx и z.

xk, zk - конечные значения переменных x и z

x – счетчик цикла

z –счетчик цикла

y-Значений функции

Листинг программы

#include"iostream"

Usingnamespacestd;

intmain()

{

setlocale(LC_ALL, "Russian");

intxn, xk;

doublezn, zk;

cout<<"Введитезначениеxn";

cin>>xn;

cout<<"Введите значение xk";

cin>>xk;

cout<<"Введите значение zn";

cin>>zn;

cout<<"Введите значение zk";

cin>>zk;

int x;

double z, y;

for (x = xn; x <= xk; x++)

{

z = zn;

do

{

y = exp(x) / (1 + (fabs(x+sin(z))));

cout<<"x="<< x <<" z="<< z <<" y="<< y <<"\n";

z = z + 0.5;

} while (z <= zk);

}

system("pause");

}

Результаты выполнения программы представлены на рисунке 5.

Рис.5. Результаты выполнения программы

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

Массив — это набор однотипных данных. Например, вы можете хранить все носки в одном месте. Для этого вы используете полку. В C++ множество элементов хранятся в массивах.

Для лучшего понимания давайте рассмотрим следующею картинку:

По ней мы можем понять следующее:

  • Каждый массив должен иметь свое название.
  • Он может в себе содержать от одного элемента до бесконечности (это в теории, на практике размер массива ограничивается памятью компьютера).
  • Все элементы должны быть одного типа. Так, например, вы не можете в одном массиве хранить переменные типа int и типа double.

Теперь, когда вы понимаете концепцию массива, мы можем перейти к его реализацией на С++.

Элементы массива и индексация

Каждая из переменных в массиве называется элементом. Элементы не имеют своих собственных уникальных имен. Вместо этого для доступа к ним используется имя массива вместе с оператором индекса ([]) и параметром, который называется индексом, и который сообщает компилятору, какой элемент мы хотим выбрать. Этот процесс называется индексированием массива.

В примере выше первым элементом в нашем массиве является testResult[0]. Второй — testResult[1]. Десятый — testResult[9]. ПоследнийэлементвмассивеtestResult — testResult[29]. Хорошо, что уже не нужно отслеживать и помнить кучу разных (хоть и похожих) имен переменных – для доступа к разным элементам меняется только индекс.

Важно: В отличие от повседневной жизни, где мы обычно начинаем считать с 1, в массивах и в C++ отсчет всегда начинается с 0!


Для массива длины N элементы массива пронумерованы от 0 до N-1! Это называется диапазоном массива.

Массив можно сделать из любого типа данных.

Описание синтаксиса

Массив создается почти так же, как и обычная переменная. Для хранения десяти фамилий нам нужен массив, состоящий из 10 элементов. Количество элементов массива задается при его объявлении и заключается в квадратные скобки.

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

Для объявления массива необходимо указать две вещи (помимо имени): тип и размер массива:

intmy_array[ 6 ];

Данная строка объявляет массив из шести целочисленных значений. Обратите внимание, что размер массива заключен в квадратные скобки после имени массива.

Для доступа к элементам массива используются квадратные скобки, но на этот раз вы указываете индекс элемента, который хотите получить:

my_array[ 3 ];

Визуализировать данный процесс можно так:

Массивы в C++

my_array ссылается на весь массив целиком, в то время как my_array[0] только на первый элемент, my_array[3] — на четвертый. Обратите внимание, что индексация элементов в массиве начинается с 0. Таким образом Обращение к элементам массива всегда будет происходить со смещением, например:

intmy_array[ 4 ]; // объявление массива

my_array[ 2 ] = 2; // установить значение третьего (именно третьего!) равным 2

5. Объявление многомерных массивов в C++

Массивы могут также использоваться для представления многомерных данных, например, таких, как шахматная доска или поле для игры в крестики нолики. При использовании многомерных данных для доступа к элементам массива будут использоваться несколько индексов.

Для объявления двумерного массива необходимо указать размерность двух измерений:

inttic_tac_toe_board[3][3];

Визуализация массива с индексами его элементов:

Массивы в C++

Для доступа к элементам такого массива потребуется два индекса — один для строки второй для столбца. На изображении показаны нужные индексы для доступа к каждому из элементов.

Использование массивов


При использовании массивов вам не обойтись без циклов.  Для того, чтобы пробежать по циклу вы просто инициализируете нулевую переменную и увеличиваете её, пока она не превысит размеры массива — шаблон как раз подходящий для цикла.

Следующая программа демонстрирует использование цикла для создания таблицы умножения и хранения результата в двумерном массиве:

#include <iostream>

usingnamespacestd;

intmain() {

    intarray[8][8]; // Объявляем массив, который выглядит как шахматная доска

    for(inti = 0; i< 8; i++) {

        for(intj = 0; j < 8; j++) {

            array[i][j] = i * j; // Задаем значения каждого элемента

        }

    }

    cout<< "Multiplication table:\n";

    for(inti = 0; i< 8; i++) {

        for(intj = 0; j < 8; j++) {

            cout<< "[ "<<i<< " ][ "<< j << "] = ";

            cout<< array[i][j] << " ";

            cout<< "\n";

        }

    }

}

Практическая часть:

Задание 6. Отсортировать элементы массива по убыванию

Словесный алгоритм

  • Заполняем массив(mas) данными.
  • Проходим по всем элементам массива.
  • Вывод на экран массива.
  • Сортировка массива.
  • Результат выводим на экран.

Описание переменных

mas - Массив

max- индекс максимального элемента

n-размерность массива

i,j,in,s-счётчикмассива

Листинг программы

#include"iostream"

Usingnamespacestd;

int main()

{

setlocal(LC_ALL , "Russian");

constant n=5;

int mas[n], i, j, in, s;

cout<<"Введите элементы массива \n";

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

{

cout<< "mas(" <<i<< ") = ";

cin>>mas [i];

}

cout<<"\n\n Ваш массив до сортировки: \n" ;

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

cout<< "mas(" <<i<< ") = " << mas[i] << "\n";

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

{

in =j;

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

if (mas[i] > mas[in])

in = i;

s= mas[j];

mas[j] = mas[in];

mas[in] = s;

}

cout<<"\n\n Массив после сортировки: \n";

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

cout<< "mas(" <<i<< ") = " << mas[i] << "\n";

system("pause");

}

Результаты выполнения программы представлены на рисунке 6.

Рис.6. Результаты выполнения программы

Заключение

В данной работе мы научились основам языка программирования С++, а также на базовом уровне научились работать программой VisualStudio 2015. Все это было применено для решения заданий в данной работе.

Список использованных источников