Loading...
Yoana_Borisova avatar Yoana_Borisova 4 Точки

Factorial Division

Здравейте! Аз решавам задача 03.Factorial Division от упражнението за функции, но ми дава само 60/100. 

#include <iostream>
using namespace std;

int numberFactoriel(int number)
{
    int pro=1;
    for(int i=1; i<=number; i++)
    {
      pro=pro*i;
    }
    return pro;
}


int main(){
int number1 = 0;
int number2 =0;
std::cin>>number1>>number2;
int factorielNumber1=numberFactoriel(number1);
int factorielNumber2=numberFactoriel(number2);
cout<<factorielNumber1/factorielNumber2<<".00";

return 0;
}

Това е кодът ми като разбирам, че не взимам всички тестове, защото директно принтя ".00" след частното и заради това не мога да хвана случаите, в които си се получава нещо след десетичната запетая. 

Потърсих за оператори в гугъл, които да ми помогнат с оформлението след десетичната запетая, но попаднах само на setprecision() . Не знам обаче дали ще ми свърши работа, след като аз не знам с каква дължина ще е частното след делението, тъй като доколкото разбрах при него се задава дължината на цялото число. 

Ако може да ми кажете оператор, с който мога да оформям само броя на числата след дестичната запетая, ако има такъв или някакъв начин, с който мога да го постигна сама! Благодаря предварително!

0
C++ Fundamentals
Stefan5kov avatar Stefan5kov 2 Точки

Аз го правя с кода: 

cout.setf(ios::fixed);

cout.precision(2);

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

0
RaUndreundre avatar RaUndreundre 54 Точки

Форматирането можеш да го направиш и така:

void printResult(double result) {
    std::cout.setf(std::ios::fixed);
    std::cout.precision(2);
    std::cout << result << std::endl;
}

Това ще ти качи резултата до 70/100.
Другия подводен камък е че факториел могат да са огромни числа. Използвай long long int вместо int и ако останалото ти е вярно, хващаш 100/100.

0
03/04/2021 16:21:39
MrDimitrovv avatar MrDimitrovv 1 Точки
#include <iostream>
#include <cmath>
#include<iomanip>
void numsInput(double& num1 , double& num2) {
	std::cin >> num1 >> num2;
}
int loopSum(double& num) {
	double factorialSum = 1.00;
	
	for (double i = 1; i <= num; i++)
	{
		 factorialSum = factorialSum * i;
	}
	return factorialSum;
}
int main()
{
	double n1 = 0.00;
	double n2 = 0.00;
	numsInput(n1, n2);
	if (n2 != 0.00) {
		n1 = loopSum(n1);

		n2 = loopSum(n2);

		double result = n1 / n2;
		std::cout << std::fixed << std::setprecision(2) << result << std::endl;
	}
	else {
		std::cout << "0.00" << std::endl;
	}
	
}


Здравейте и аз малко бъгясах на същата задача , форматирането ми става правилно ,но джъдж дава 70/100 , пробвах различни проверки и това е до което стигнах след доста мислене. Ако някой има идея , ще бъда благодарен да помогне. 

0
03/04/2021 18:17:15
RaUndreundre avatar RaUndreundre 54 Точки

Написал съм го къде е проблема, точно над твоя пост

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