В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
ShahKulu
ShahKulu
29.10.2020 05:14 •  Информатика

Какой алгоритм называется линейным? Назовите  основные  символы алфавита языка программирования  Паскаль  АВС?

Каковы приоритеты выполнения операций?

Какие правила следует соблюдать при записи математических выражений на языке программирования  Паскаль  АВС?

Для чего необходимо компилировать программу?

Как запустить программу на выполнение?

Как увидеть результаты выполнения программы на экране?

Можно ли копировать фрагменты программы?

Какое расширение имеют файлы, созданные в среде программирования  Паскаль  АВС?

Как открыть файл в среде программирования  Паскаль  АВС?

Как создать файл в среде программирования  Паскаль  АВС?

Показать ответ
Ответ:
arinka90
arinka90
28.12.2022 23:02

Опубликовал решение на PasteBin и тут, поскольку суда криво копируются символы таба, и потом нельзя нормально скопировать код. https://pastebin.com/kWSChLsh

#include <algorithm>

#include <iostream>

#include <string>

#include <vector>

using namespace std;

struct State {

vector<pair<string, int>> candidates; // кандидаты в этом штате

string state; // название штата

int weight; // "вес" штата

State(string state = " ", int weight = 0) : state(state), weight(weight) {

}

void vote(string candidate) { // принимаем голос избирателя

 if (candidates.size() == 0) {

  candidates.push_back({ candidate, 1 });

  return;

 }

 for (int i = 0; i < candidates.size(); ++i) {

  if (candidates[i].first == candidate) {

   ++candidates[i].second;

   break;

  }

  else if (i == candidates.size() - 1) {

   candidates.push_back({ candidate, 0 });

  }

 }

}

string getResultOfElections() {

 if (candidates.size() == 1) {

  return candidates[0].first;

 }

 sort(candidates.begin(), candidates.end(), // сортировка по голосам

  [](pair<string, int>& a, pair<string, int>& b) {

   return (a.second > b.second);

  });

 int last = -1;

 for (int i = 1; i < candidates.size(); ++i) { // убираем проигравших

  if (candidates[i].second != candidates[0].second) {

   last = i;

   break;

  }

 }

 if (last != -1)

  candidates.erase(candidates.begin() + last);

 sort(candidates.begin(), candidates.end(), // лексографическая сортировка

  [](pair<string, int>& a, pair<string, int>& b) {

   return strcmp(a.first.c_str(), b.first.c_str()) < 0;

  });

 return candidates[0].first; // победитель

}

};

int main() {

setlocale(LC_ALL, "Russian");

cout << "Введите количество штатов: ";

vector<State> states;

int nOfStates = 0;

cin >> nOfStates;

cin.ignore();

cout << "Введите данные о состоянии штатов в формате Название_штата Значимость_Штата: ";

for (int i = 1; i <= nOfStates; ++i) {

 string input, buffer, name, weight;

 getline(cin, input);

 name = input.substr(0, input.find(' '));

 weight = input.substr(input.find(' '));

 states.push_back(State(name, stoi(weight)));

}

cout << "Количество голосов: ";

int nOfVotes = 0;

cin >> nOfVotes;

cin.ignore();

cout << "Данные о голосах в формате Штат Кандидат: ";

for (int i = 0; i < nOfVotes; ++i) {

 string input, state, candidate;

 getline(cin, input);

 state = input.substr(0, input.find(' '));

 candidate = input.substr(input.find(' ') + 1);

 for (int j = 0; j < nOfStates; ++j) {

  if (states[j].state == state) {

   states[j].vote(candidate);

  }

 }

}

vector<pair<string, int>> winners;

for (int i = 0; i < states.size(); ++i) {

 string result = states[i].getResultOfElections();

 if (winners.size() == 0) {

  winners.push_back({ result, states[i].weight });

  continue;

 }

 for (int j = 0; j < winners.size(); ++j) {

  if (winners[j].first == result) {

   winners[j].second += states[i].weight;

   break;

  }

  else if (j == winners.size() - 1) {

   winners.push_back({ result, 0 });

  }

 }

}

cout << endl;

for (int i = 0; i < winners.size(); ++i) {

 cout << winners[i].first << " " << winners[i].second << endl;

}

}

0,0(0 оценок)
Ответ:
Akimneznaet123
Akimneznaet123
29.08.2021 22:18

1)

а = 2

b = 27

2)

ответ: нужно ввести число 432

3) Код:

var

 x, a, b, c:integer;

Begin

 write('Введите трехзначное число: ');

 readln(x);

 a:= x div 100;

 b:= x div 10 mod 10;

 c:= x mod 10;

 writeln('Вы ввели число: ', x);

 writeln('Число: ', c, b, a);

END.

Объяснения:

1) a = 187; при b:= (a div 10) + 9 мы а (т.е 187) делим на 10 и прибавляем к результату 9, получаем 27.

а= 2, т.к. мы умножаем 10 на b (27) и отнимаем a (187), получаем 83. Функция mod означает получение остатка от деления на 9, т.е. делим 83 на 9 и получаем остаток, а именно 2.

2) 432 делим на 100, получаем а = 4, делим 432 на 10 и получаем остаток от деления на 10 результата, получаем b = 3, далее получаем остаток от деления на 10 числа 432 и получаем 2.

3) Здесь все довольно просто, мы разбили трехзначное число на части и с оператора вывода writeln, вывели число в обратном порядке, т.е. поменяли местами первую и последнюю цифры.

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