Loading...
Ilia.M avatar Ilia.M 4 Точки

JA2 Task 3 Machine

Здравейте,

опитвам се да реша 3-та задача от judge assigment 2, но винаги ми дава 90/100.

Ето и кода ми :

https://pastebin.com/wgGaw2z8

Пробвам всички команди и винаги смята правилно, но judge е на друго мнение :) .

Ще се радвам ако някой открие грешката ми.

Поздрави

0
C++ Fundamentals
Zmyrt avatar Zmyrt 3 Точки

Здрасти , ами не виждам при функция  "CONCAT"  да правиш проверка, дали последното число не е отрицателно, а в условието пише, че тази функция няма да се изпълни, ако е отрицателно

0
SylviaNikolova avatar SylviaNikolova 20 Точки

Опитах всякакви неща с твоя код и накрая естествено се оказа, че проблемът няма нищо общо с логиката. Получих 100/100, когато конвертирах inputContainer във vector<int> преди печатането. 

1
galin_kostadinov avatar galin_kostadinov 166 Точки

Привет!

Проблема е с "concat".

Ако имаш две числа, които държиш като стринг, то като ги събереш примерно "0" + "3" =  "03"

Ето това ти е единия вариант:

if(numberB[0]=='0'){
    input.push_back(numberA);
}else{
    input.push_back(numberB+numberA);
}

Другия е да ги преобразуваш в  vector<int>, както пише SylviaNikolova.

Поздрави!

0
Ilia.M avatar Ilia.M 4 Точки

Благодаря на всички за помощта! А аз си мислих че проблема е във функцията discard :D

В този ред на мисли, има ли по-бърз начин за преобразуване на вектори?

В случая преобразуваме от string към int : 

for (int i = 0; i < forPrint.size(); ++i) {
		int number = std::stoi(forPrint[i]);
		std::cout << number << std::endl;
	}

Поздрави,

0
20/10/2019 14:13:49
galin_kostadinov avatar galin_kostadinov 166 Точки

Привет!

Ако числото ти е записано като string, то едва ли ще има по-бърз вариант от стандартния:

stoi(numberAsString)

Според мен в тази задача можеше да си използваш vector<int> numbers, deque<int> numbers, stack<int> numbers.

Понеже правиш някои излишни операции - добавяш и командите и след това ги махаш, което не ти е нужно, тъй като ги обработваш веднага. Може би си го направил за да провериш дали командата ти е "end", вариянтите са:

std::cin >> line;

while (line != "end") {

//to do

      std::cin >> line; 

  }

Или

while (  std::cin >> line && line != "end") {

//to do

  }

Поздрави!

0
Ilia.M avatar Ilia.M 4 Точки

Здравей,

ще може ли да споделиш твоето решение. 

Използвах вектор от string, точно заради командите,които се подават. Наистина моето решение е най-бавното, но просто не можах да се сетя, как да отделям числата от командите.

Поздрави

0
mitakvd avatar mitakvd 7 Точки

За инфо - ето решение, което дава 100/100. Използвал съм само стек и опашка и няма проверка за отрицателно число при concat.

https://pastebin.com/rd7kKJ5w

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