Nurik1990
22.01.2023 19:06

Решите на python(алгоритм решения есть,осталось реализовать в коде) Андрей изучает социальные сети и пытается определить скрытые атрибуты пользователей по их друзьям. Поскольку Андрей - профессиональный программист, то он хочет протестировать свою программу прежде чем верить ее результатам. Но для этого требуется много разных графов, похожих на социальные сети. Андрей хочет получать графы с разным количеством пользователей (т. е. вершин графа) и разными отношениями дружбы (т. е. ребрами графа). Отношение дружбы ненаправленное. В графе не должно быть петель и кратных ребер. Андрей будет задавать желаемое количество вершин и желаемое среднее количество ребер, инцидентных вершине. Его устроит даже граф, если эти его характеристики будут отличаться от заданных, но не более чем на 20%.

Ваша программа получает на вход 2 целых положительных числа - N - количество вершин и K - среднее количество ребер у вершины (1≤ N ≤ 200, 0 ≤ K ≤ N - 1)

Программа печатает граф описанного вида. В первой строке печатается количество вершин графа. Начиная со следующей строки, печатается матрица смежности графа по строкам. Вершины нумеруются последовательно, начиная с 0. Элемент матрицы смежности равен 1, если соответствующее ребро входит в граф, и 0, иначе. Элементы разделяются пробельными символами. Элементы главной диагонал матрицы смежности должны равняться 0. Если графа описанного вида не существует, программа ничего не печатает.

Рассмотрим неориентированный граф с количеством вершин M и количеством ребер L. Такой граф точно существует, если 0<=L<=M(M-1)/2. Итого для целых чисел M и L должно выполняться
0<=L<=M(M-1)/2
0.8K<=L<=1.2K
0.8N<=M<=1.2N
M и L можно найти простым перебором.
Если найдены целые числа M и L, удовлетворяющие этим условиям, то строим граф с M вершинами и L ребрами.​

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
manawer
09.05.2021 03:29

C++ GNU. Простое заполнение массива, а потом в цикле проверки.

В конце выводим результаты.

Мой вариант решения:

#include <iostream>

using namespace std;

int main()

{

const int size = 20;

int arr[size];

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

{

 cout << "Enter " << i << " element -> ";

 cin >> arr[i];

}

int AllSum = 0;

int EvSum = 0;

int OddSum = 0;

int EvCounter = 0;

int OddCounter = 0;

int SmallThenZero = 0;

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

{

 AllSum += arr[i];

 if (arr[i] < 0) SmallThenZero++;

 if (arr[i] % 2 == 0)

 {

  EvCounter++;

  EvSum += arr[i];

 }

 else

 {

  OddCounter++;

  OddSum += arr[i];

 }

}

cout << "Even numbers counter - " << EvCounter << endl;

cout << "Odd numbers counter - " << OddCounter << endl;

cout << "Even numbers sum - " << EvSum << endl;

cout << "Odd numbers sum - " << OddSum << endl;

cout << "All numbers sum - " << AllSum << endl;

cout << "Small then zero numbers - " << SmallThenZero << endl;

cin.get();

cin.get();

}

0,0(0 оценок)
Ответ:
raisabarsegyan
26.02.2021 08:05

Привет, я тестировал на VS 2017, но разницы нет, я тебя уверяю (по крайней мере в данном случае).

Кратко об моём решении. Запускаю цикл и считываю символ в переменную, если это точка, добавляю к счётчику +1, если доллар - цикл прекращается.

Мой вариант решения:

#include <iostream>

using namespace std;

int main()

{

char symbol;

int counter = 0;

do

{

 cout << "Enter symbol -> ";

 cin >> symbol;

 if (symbol == '.') counter++;

} while (symbol != '$');

cout << "Dot's counter " << counter << endl;

cin.get();

cin.get();

}

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота