C++. помогите с комментариями к программе

компьютеры программирование C++

В данной программе, объясните пожалуйста, что такое Num, swap и flag. Точнее, что делают эти функции вообще, на что они рассчитаны? От ссылок не откажусь.

#include "stdafx.h"
#include <iostream>//Подключаем библиотеку функций ввода-вывода
#include <locale.h>

using namespace std;//Объединяем именные пространства
using namespace System;// Подключение используемых пространств имен

struct MARSH {
char Departure[10];
char Destination[10];
int Number;
};

int main()
{
const int N = 3;
setlocale(LC_ALL,"russian_russia");//поддержка русского языка
MARSH Bus[N];
int i;//ввод переменной i
bool flag = true;
/*Самым "маленьким" типом данных является bool. Он может хранить
всего два значения: true или false. Эти значения можно заменять на 1 или 0.*/
int Num;
/*-------------------------------------Ввод рейсов-----------------------------------------*/
/*----Ввод и вывод значений осуществляется с помощью объектов cin(ввод) и cout(вывод)------*/
//В основном объекты cin и cout применяют вмести друг с другом
for(i=0;i<N;i++) {
cout << i+1 << "-й автобус\n";//вывод на экран значения
cout << "Начальный пункт: ";//вывод начального пункта
cin >> Bus[i].Departure;
cout << "Конечный пункт: ";//вывод названия конечного пункта
cin >> Bus[i].Destination;
cout << "Номер маршрута: ";//вывод номера маршрута
cin >> Bus[i].Number;
getchar();
}
/*-------------------------------------Сортировка------------------------------------------*/
while(flag) {
flag = false;
for(i=1;i<N;i++) {
if ( Bus[i-1].Number > Bus[i].Number ) {
swap(Bus[i-1],Bus[i]);
flag = true;//в случае выполнения - переменной flag придается значение true
}
}
}

for (i=0;i<N;i++) {
cout << Bus[i].Number << " " << Bus[i].Departure << " " << Bus[i].Destination << "\n";
}

cout << "Введите номер: ";//запрос у пользователя ввода номера
cin >> Num;

flag = false;//переменной flag придается значение false (в результате for)
for (i=0;i<N;i++) {
if (Bus[i].Number == Num) {
cout << Bus[i].Number << " " << Bus[i].Departure << " " << Bus[i].Destination << "\n";
flag = true;
break;
}
}
if (!flag) {// ! - логическое НЕ (т.е. условие может быть неверным, ! уводит от ошибки)
cout << "Нет таковых\n";//вывод, связанный со значением n
}
getchar();
return 0;
}//int main

Заранее благодарен!
Ответы:
swap - перемена местами двух элементов массива. Собственно у вас здесь усовершенствованный алгоритм пузырьковой сортировки. flag показывает, была ли сделана перестановка элементов на какой-либо итерации. В итоге мы получим следующее: если flag == false, то мы получаем, что в цикле for не было ни одной перестановки, а это значит, что массив уже упорядочен, и больше нет смысла делать другие итерации.
А Num - это номер автобуса, по которому будет произведен поиск по массиву структур MARSH (поиск линейный... при нахождении совпадения будет выведена вся информация о маршруте для данного автобуса).


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

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

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.