Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Zmyrt avatar Zmyrt 3 Точки

Task 3 - Algebra helper ( Exam )

Здравейте колеги !

Вече ден втори след изпитът продължава да ми убягва едно нещо по въпросната задача 3 .

Ако правилно съм разбрал структурата "multimap" подрежда елементите си спрямо ключът и по възходящ ред .

Ако има ключове с равни стойности то се запазва редът в който са въведени като елементи в структурата .

Тази информация съм си я набавил от известни сайтове в интернет .

Можете ли да прегледате кодът, който съм написал и да разтълкуваме заедно, защо елементите с еднакви ключове не се подреждат по ред на въвеждането им като "input" ?

https://pastebin.com/DUw4Tpxu

Програмата се държи добре, докато не срещне елементи с еднакви ключове. Реално изходът е адекватен , но не удовлетворява малкото, капризно условиице :

  "If two or more equations have the same result he keeps their order from the input. The first one remains first, second one – second"

Старал съм се да напиша четимо кодът , дано лесно се разбира какво съм искал да постигна...

Условие на задачата : 

=======================================================================================

Little Ibrahim has some trouble with his math homework. He tries to learn some equation by heart. Help him out!
Ibrahim remembers the equations in his head by memorizing their result. He has good visual memory and utilizes it. He arranges the equations in his head in descending order by their result.
If two or more equations have the same result he keeps their order from the input. The first one remains first, second one – second, etc …
An equation will only be constructed from a 2 integers and an operating between the 2 integers.
NOTE: only the following 5 operations should be supported:
    + (sum)
    - (subtraction) 
    * (multiplication)
    / (integer division)
    % (integer modulo)
NOTE 2: there will be no brackets. Nothing fancy – just 2 integers and an operation between them.
Input
First a single integers (N) indicating how many equations will follow (each on a different line).
Next read (N) lines of equations. Each equation contains a number, after that an operations and then another number – always in that order.

Examples :

- Input 1 -

3

1 / 2

1 * 2

1 + 2 

- Output 1 -

1 + 2

1 * 2

1 / 2

- Input 2 -

4

2 * 0

6 % 4

5 + 3

2 - 6

- Output 2 -

5 + 3

6 % 4

2 * 0

2 - 6

- Input 3 -

4

2 * 13

6 % 3

20 + 6

2 - 2

- Output 3 -

2 * 13

20 + 6

6 % 3

2 - 2

=======================================================================================

Чакам идеи и благодаря предварително !  :)

Тагове:
0
C++ Fundamentals 19/11/2019 19:52:48
MartinBG avatar MartinBG 4803 Точки

Отделно от основната дискусия, ето решение с multimap, при което няма нужда от пренареждане на елементите:

#include <iostream>
#include <map>

int main() {
  std::multimap<int, std::string, std::greater<>> mm{
      { 2 * 13, "2 * 13" },
      { 6 % 3,  "6 % 3" },
      { 20 + 6, "20 + 6" },
      { 2 - 2,  "2 - 2" }
  };

  for (const auto& pair : mm) {
    std::cout << pair.first << " <- " << pair.second << std::endl;
  }

  return 0;
}

Output:

26 <- 2 * 13
26 <- 20 + 6
0 <- 6 % 3
0 <- 2 - 2

0
Zmyrt avatar Zmyrt 3 Точки

Супер!  Благодаря за идеите , колеги . Ок е задачата вече . 

Не знаех за наличието на трети параметър на мултимап . Реално само с добавянето на  " greater< int > "  приключи заигравката .

А и това за "обратният" итератор не го знаех а излежда полезно.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.