Loading...
Somma avatar Somma 6 Точки

Задача 06. Math Power Джъджа връща, че има грешни резултати, а не би трябвало!

Здравейте, прятели! 

Задачата, за която имам питане е следната: 

Пример: степен на число
Да се напише функция, която изчислява и връща резултата от повдигането на число на дадена степен.
Ясно е нали? Ето и кодът, който съм сглобил: 

/*
    Пример: степен на число
    Да се напише функция, която изчислява и връща резултата от 
    повдигането на число на дадена степен.
    Примерен вход и изход
    
    ╔═══════════╦═══════════╗	╔═══════════╦═══════════╗	
    ║    Вход   ║   Изход   ║	║    Вход   ║   Изход   ║	
    ╠═══════════╬═══════════╣	╠═══════════╬═══════════╣	
    ║      2    ║    256    ║	║      3    ║     81    ║	
    ║      8    ║           ║	║      4    ║           ║	
    ╚═══════════╩═══════════╝	╚═══════════╩═══════════╝	
*/

#include <iostream>
using namespace std; 

double powerBy(double num, double pow) {
	double result = 1; 
	
	for (int i = 1; i <= pow; i++)
	{
		result *= num; 
	}

	return result; 
}


int main() {
	double a, x; 
	cin >> a; 
	cin >> x; 

	double returnResult = powerBy(a, x); 

	cout << returnResult; 

	return 0; 

}

 

...и, тук не разбирам какво се случва, или по-скоро, мисля, че не би трябвало да се случва, но човек може да се разсее и да не забележи проблемите. Та: Джъджа ми дава, че имам 3 грешни отговора? Някой има ли представа защо? Аз ли нещо греша, или Джуджа е за пренастройка?

Благодаря, предварително! :)

Тагове:
1
C++ Programming 05/03/2022 14:58:56
MartinBG avatar MartinBG 4803 Точки
Best Answer

Или условието е непълно (например очаквано закръгление на резултата), или има проблем със заложенте в Judge отговори, защото тестовете фейлват дори и ако се използва стандартната за езика pow функция. 

0
05/03/2022 20:43:02
Somma avatar Somma 6 Точки

Благодаря за включването, Марти! :)

Имаш ли представа, кого трябва да уведомим, за да се поправи? По-назад в упражненията от глава 9-та, мисля, също има някакво недоразумение, защото всички участници имаха резултат 90/100, както и аз, а не би трябвало! Просто Джъджа не отчита един от отговорите както трябва. 

Не е редно (хич, даже) да има система полу-работеща, полу-не! Но вероятността колегите да не знаят за проблема е голяма и затова мисля, че е редно да уведомим хората управляващи системата.

 

1
11/03/2022 13:52:46
MartinBG avatar MartinBG 4803 Точки

@Somma, в страницата на курса към всяко занятие трябва да има линк/бутон през който да се докладват проблеми в материалите и задачите.

Както е видно от решението на @Nikolay_Dimitrov10, Judge очаква решение, което работи само с цели числа, а това не е изричо указано в условието.

0
Nikolay_Dimitrov10 avatar Nikolay_Dimitrov10 3 Точки

Здрасти

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

Изпълнява се 100/100

Ето моя код =>

#include <iostream>
#include <cmath>
using namespace std;

int returnResult() {
    int number;
    cin >> number;
    int powerOf;
    cin >> powerOf;
    int result = pow(number, powerOf);
    cout << result << endl;

}
int main() {

    returnResult();
}

2
11/03/2022 18:06:22
Somma avatar Somma 6 Точки

Здравей, Ники! 

Възниква проблем и искам да те питам дали ползваш същия линк, който и аз? Линкът, към който тествам кода е от книката "Основи на програмирането със С++". Ето и линк към Джъджа, който ползвам за тестване на кода на задачата "06. Math Power"

А проблемът който възниква е че, след като направих Copy->Paste на кода, който си шернал по-горе резултатът е 50/100? А ти казваш, че ти връща 100/100 и затова питам да не би да ползваш друг линк (да не би Джъджа да го има и на друг домейн, знам ли?!?....). 

 

Твоя резултат - 50/100 и моя резултат 70/100 !!!

0
12/03/2022 22:28:31
tt104 avatar tt104 15 Точки

Кода който "Copy->Paste" може да активира UB. Попълнете липсващите return оператори и опитайте отново.

0
tt104 avatar tt104 15 Точки

...и, тук не разбирам какво се случва

Вижте разликите:

#include <iostream>
#include <iomanip>

template <typename T> T special_fmt(std::ostream & s, T v, int w = 12)
{
    return s.width (w), s << std::right, v;
}

int main()
{
    int i = 1, n = 1;
    for (double d = 2; d < (1<<30) ; d *= 2)
        std::cout << "2^" << special_fmt (std::cout, n++, 2) << " = "
            << "std::cout double: \"" << special_fmt (std::cout,      d)
            << "\" vs. int: \""       << special_fmt (std::cout, i=i<<1)
            << "\"" << std::endl;
    return 0;
}

Примера ми дори не включва аритметично препълване - с него става още по-интересно.

.

.

.

.

offtopic: Това което искате (очаквате) и това което сте написали, често ще се разминават. Намерете С++ стандарта и четете какво прави std::cout при числа с плаваща запетая - какви са форматиранията по подразбиране, дали са свързани с текущите локални настройки например и т.н. С++ стандарта е плашещо сложен, но това е положението :). Успех!

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