Формальный язык, предназначенный для записи компьютерных программ, определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель...это * система программирования программа язык программирования среда разработки программ
Это не влияет на ответ, но в решении я буду предполагать, что вершина без названия (слева сверху) - это вершина Б. А вершина с двумя названиями (по центру сверху) - это вершина Д.
Объяснение:
В таких задачах рекомендую начинать с поиска вершин минимальной степенью (т.е. с минимальным числом связей).
Такие вершины в данном графе: А, Д, Б, Е - их степень равна двум.
В таблицы каким-либо образом им соответствуют столбцы П7, П5, П3, П1. Начнем анализировать, например, с П7. Мы видим что у П7 две связи с П4 и П6. При этом П4 имеет степень 4, а П6 имеет степень 5. Среди них нет вершины со степенью 2 или 3. Значит П7 это не А, не Б, и не К. Потому что у А, Б есть сосед со степенью 2, а у К есть сосед со степенью 3, чего нельзя сказать из таблицы о П7. Значит П7 это пункт Д на графе.
У пункта Д (он же П7) только два соседа - В и Е. Где у В степень 5, а у Е степень 4. Значит, соответственно таблице, В - П6, Е - П4.
Найти необходимо расстояние между В и Е (они же П6 и П4). Смотрим в таблицу, результат 20.
Тут нам несколько повезло, потому что не пришлось долго анализировать таблицу и граф. Мы правильно сделали что начали с П7, но не всегда так удачно выходит.
Приложение принимает на ввод информацию о Именах и Фамилиях программистов, а также используемом языке и позволяет найти среди записей информацию о программистах C++.
Иллюстрации кода и тестовых ввода-вывода прикреплены во вложениях.
Ваши оценки и отзывы позволяют лучше оценить решение.
20
Примечание:
Вижу опечатку!
Это не влияет на ответ, но в решении я буду предполагать, что вершина без названия (слева сверху) - это вершина Б. А вершина с двумя названиями (по центру сверху) - это вершина Д.
Объяснение:
В таких задачах рекомендую начинать с поиска вершин минимальной степенью (т.е. с минимальным числом связей).
Такие вершины в данном графе: А, Д, Б, Е - их степень равна двум.
В таблицы каким-либо образом им соответствуют столбцы П7, П5, П3, П1. Начнем анализировать, например, с П7. Мы видим что у П7 две связи с П4 и П6. При этом П4 имеет степень 4, а П6 имеет степень 5. Среди них нет вершины со степенью 2 или 3. Значит П7 это не А, не Б, и не К. Потому что у А, Б есть сосед со степенью 2, а у К есть сосед со степенью 3, чего нельзя сказать из таблицы о П7. Значит П7 это пункт Д на графе.
У пункта Д (он же П7) только два соседа - В и Е. Где у В степень 5, а у Е степень 4. Значит, соответственно таблице, В - П6, Е - П4.
Найти необходимо расстояние между В и Е (они же П6 и П4). Смотрим в таблицу, результат 20.
Тут нам несколько повезло, потому что не пришлось долго анализировать таблицу и граф. Мы правильно сделали что начали с П7, но не всегда так удачно выходит.
Приложение принимает на ввод информацию о Именах и Фамилиях программистов, а также используемом языке и позволяет найти среди записей информацию о программистах C++.
Иллюстрации кода и тестовых ввода-вывода прикреплены во вложениях.
Ваши оценки и отзывы позволяют лучше оценить решение.
Если ответ удовлетворил, отметь его как "Лучший".
Успехов в учёбе!
Код:
#include <iostream>
#include <string>
#include <utility>
#include <vector>
#include <exception>
struct Coder {
std::string name;
std::string lastname;
std::string language;
Coder(std::string name, std::string lastname, std::string language) :
name(std::move(name)),
lastname(std::move(lastname)),
language(std::move(language))
{ }
explicit operator std::string() const
{
return name + " " + lastname + " " + language;
}
};
struct DataBase {
private:
std::vector<Coder> _base;
public:
bool add_coder(Coder coder) {
_base.push_back(std::move(coder));
return true;
}
std::vector<Coder> search_by_language(const std::string& language_name) {
std::vector<Coder> search_results;
for(auto & coder : _base) {
if (coder.language == language_name) {
search_results.push_back(std::move(coder));
}
}
return search_results;
}
};
int main() {
DataBase base;
std::cout << "Please enter information about programmers like this \"Bjarne Stroustrup C++\" bellow" << std::endl;
std::cout << "You can type .find command for finding all added programmers who have developed with C++" << std::endl;
std::string input, name, lastname, language;
while(true) {
std::cout << "> ";
std::cin >> input;
if(input == ".find") break;
name = input;
std::cin >> lastname >> language;
base.add_coder(Coder(input, lastname, language));
}
std::vector<Coder> search_results = base.search_by_language("C++");
for(auto & search_result : search_results){
std::cout << (std::string)search_result << std::endl;
}
return 0;
}