ENG  RUSTimus Online Judge
Online Judge
Problems
Authors
Online contests
About Online Judge
Frequently asked questions
Site news
Webboard
Links
Problem set
Submit solution
Judge status
Guide
Register
Update your info
Authors ranklist
Current contest
Scheduled contests
Past contests
Rules
back to board

Discussion of Problem 1083. Factorials!!!

Why compilation error?
Posted by AK 12 Jul 2007 02:04
Here is my code.
Why error?
Я его тестировал не на одной машине и на куче примеров - всё отлично считает. В чём собственно проблема?
#include<conio.h>
#include<iostream.h>
#include<stdio.h>

int division(int a, int b)
{
 int counter=0;
 while(a>0)
 {
 a=a-b;
 counter++;}
 return counter-1;
}
int voskl(char str[100]) // Fynkcia podscheta woskl znakow
{
int counter=0;
for (int i=0; i<100; i++)
{
if (str[i]=='!') counter++;
}
return counter;
}

void main()
{
clrscr();
int tmp;// schetchik dla cikla esli a delitsa na str_len bez ostatka
int otnim=0;//w cikle dla ywelicjhenia otnimaemogo
int rez=0;//rezyltat nahogdenia fakrotiala
int a;// imenno chislo, kotoroe faktorialim
int str_len;//kol-wo "!"
char str[100];
//cout<<"Wwedite stroky w sootwetstwii s prawilami:\n ";
fflush(stdin);
fgets(str,100,stdin);
///cout<<str;
a=str[0];
a=a-48;// wot ono chislo w chistom wide
//cout<<a<<"\n";
str_len=voskl(str);
//cout<<str_len;
if (a%str_len==0)
{
   tmp=a/str_len;
   rez=a;
   for (int i=1; i<tmp; i++)
   {
        rez=rez*(a-i*str_len);
   }
    rez=rez*str_len;
}
else
{
tmp=division(a,str_len);
rez=a;
for (int i=1; i<tmp; i++)
   {
        rez=rez*(a-i*str_len);
   }
    rez=rez*(a%str_len);

}
cout<<"\n"<<rez;
getch ();
}
Re: Why compilation error?
Posted by CHIDEMYAN SERGEY 12 Jul 2007 02:34
На сервере нет заголовочного файла <conio.h>
Read this:
http://acm.timus.ru/help.aspx?topic=cpp

Edited by author 12.07.2007 02:36
Re: Why compilation error?
Posted by AK 12 Jul 2007 02:46
Благодарю, не обратил внимания.
Но проблемы этого не решает. Т.е. эррор на стадии компиляции присутствует. На трёх машинах (включая эмулятор из под линукса на одной из них) никаких вопросов при компиляции не возникало.
Использовался при написании Turbo C++ version 3.0
Re: Why compilation error?
Posted by CHIDEMYAN SERGEY 12 Jul 2007 02:57
Попытайся убрать clrscr() и getch();
Я скомпилировал код и PC принёс 'clrscr' : undeclared identifier.
Когда я убрал clrscr() и getch() мой комп скомпилировал этот код.
Если и это не поможет,перед отправлением кода щёлкни:
reply To my E-Mail address.
P.S.алгоритм неверный.Попробуй след.тесты:
9!!!
ans:162
8!!!!
ans:32
4!!
ans:8
10!!!
ans:280

Удачи!



Edited by author 12.07.2007 02:59

Edited by author 12.07.2007 03:00

Edited by author 12.07.2007 03:01

Edited by author 12.07.2007 03:01

Edited by author 12.07.2007 03:08
Re: Why compilation error?
Posted by Alias (Alexander Prudaev) 12 Jul 2007 08:52
а еще не мешало бы дописать

using namespace std;

т.к. ты используешь cin/cout
Re: Why compilation error?
Posted by AK 12 Jul 2007 11:50
Благодарю за консультацию. Есть ещё вопрос. Вот в этой версии кода на ваши тесты программа даёт верные ответы.
#include<conio.h>
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>


int division(int a, int b)
{
 int counter=0;
 while(a>0)
 {
 a=a-b;
 counter++;}
 return counter-1;
}
int voskl(char str[100]) // Fynkcia podscheta woskl znakow
{
int counter=0;
for (int i=0; i<100; i++)
{
if (str[i]=='!') counter++;
}
return counter-1;
}

void main()
{
clrscr();
int tmp;// schetchik dla cikla esli a delitsa na str_len bez ostatka
//int otnim=0;//w cikle dla ywelicjhenia otnimaemogo
int rez=0;//rezyltat nahogdenia fakrotiala
int a;// imenno chislo, kotoroe faktorialim
int str_len;//kol-wo "!"
char str[100];
//cout<<"Wwedite stroky w sootwetstwii s prawilami:\n ";
fflush(stdin);
fgets(str,100,stdin);
///cout<<str;
a=str[0];
a=a-48;// wot ono chislo w chistom wide
cout<<a<<"\n";
str_len=voskl(str);
cout<<str_len;
if (str[1]=='0') a=10;
cout<<"\n it is "<<str[1]<<"  "<<a;
if (a==str_len)
{
rez=a*a;
cout<<"\n"<<rez;
getch ();
exit(1);
}

if (a<str_len)
{
rez=a;
cout<<"\n"<<a;
getch ();
exit(1);
}

if (a%str_len==0)
{
     tmp=a/str_len;
     rez=a;
     for (int i=1; i<tmp; i++)
     {
        rez=rez*(a-i*str_len);
     }
 //    rez=rez*str_len;
}
else
{
tmp=division(a,str_len);
rez=a;
for (int i=1; i<tmp; i++)
     {
        rez=rez*(a-i*str_len);
     }
    rez=rez*(a%str_len);

}
cout<<"\n"<<rez;
getch ();
}
Но ошибка на первом тесте высвечивается анализатором вашим. Я догадываюсь, почему так, и хотел бы уточнить один момент. Как ведёт себя факториал, если восклицательных знаков больше числа?
Скажем, 2 !!!? тогда 2 !!!=6?
А если первое число равно нулю? 0 !! ?

Edited by author 12.07.2007 11:58

Edited by author 12.07.2007 11:59

Edited by author 12.07.2007 12:06

Edited by author 12.07.2007 14:14
Re: Why compilation error?
Posted by CHIDEMYAN SERGEY 12 Jul 2007 17:47
Первое число не может равняться 0,т.к. в условии задачи говорится n>=1.
На тест
2!!!
ответ:2
5!!!!!!
отв:5
2!!!!
отв:2
Re: Why compilation error?
Posted by gogokefakefa 28 Sep 2007 14:43
I send my source but and i test it with Dev-c++ 4.9.9.2 but
when i refresh i see compilation error.Why?Please tell me because I can't submit any problems!