ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1083. Факториалы!!!

Why compilation error?
Послано AK 12 июл 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?
Послано CHIDEMYAN SERGEY 12 июл 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?
Послано AK 12 июл 2007 02:46
Благодарю, не обратил внимания.
Но проблемы этого не решает. Т.е. эррор на стадии компиляции присутствует. На трёх машинах (включая эмулятор из под линукса на одной из них) никаких вопросов при компиляции не возникало.
Использовался при написании Turbo C++ version 3.0
Re: Why compilation error?
Послано CHIDEMYAN SERGEY 12 июл 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?
Послано Alias (Alexander Prudaev) 12 июл 2007 08:52
а еще не мешало бы дописать

using namespace std;

т.к. ты используешь cin/cout
Re: Why compilation error?
Послано AK 12 июл 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?
Послано CHIDEMYAN SERGEY 12 июл 2007 17:47
Первое число не может равняться 0,т.к. в условии задачи говорится n>=1.
На тест
2!!!
ответ:2
5!!!!!!
отв:5
2!!!!
отв:2
Re: Why compilation error?
Послано gogokefakefa 28 сен 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!