XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Общение> Трактир
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
Вычисление числа Эйлера
Отнефигделать захотелось чето написать, ну решил посчитать число Эйлера. Говорят, хотя наверно врут, что е=0!+1/1!+1/2!+1/3!+...+1/n!+... Короче в этой отрыжке недостойной звания программы получается такой бред что себя жалко. Где же она?(Не отрыжка, ошибка).

СПЕШИАЛ ФОР ИКС ГЭ ЭМ=)))

Код:
#include<iostream.h>
#include<conio.h>
#include<fstream.h>
int DoFact(int x)
  {
  float y, s;
  if(x==0) return(1);
  else for(y=1; y<=x; y++){s+=y;}
  return(s);
  }
void main()
 {
 clrscr();
 int n, a;
 float e, z;
 int DoFact(int);
 ofstream ofs("D:\\WORK\\EylerNumber.TXT");
 ofs<<" n    e"<<endl;
 while(1)
  {
  cout<<"How many members are there in the expression?"<<endl;
  cin>>n;
  e=0;
  z=0;
  for(a=0; a<=n; a++)
   {
   z=DoFact(a);
   e+=1/z;
   }
  cout<<"Eyler's number is equal to "<<e<<" when expression has "<<n<<" members."<<endl;
  ofs<<" "<<n<<"    "<<e<<"         "<<endl;
  cout<<"Continue counting?\n1)Yes\n2)No"<<endl;
  cin>>a;
  if(a==1) continue;
   else if(a==2){getch(); break;}
    else {cout<<"ANTA BAKA!!!:_:"<<endl; getch(); break;}
  }
 }


Функция факториала правильная, отдельно тестил) Советую погонять прогу, зацените этот гон) Окажется, что идеальное количество элементов ряда- гдето между 55 и 60, в таком случае результат максимально похож на правду- 2.499021) Изменение их количества в большую или меньшую сторону неизбежно удаляет нас от заветных 2.71бла-бла-бла-много-циферок)
Старый 06.09.2008, 00:43
J
expert
offline
Опыт: 48,447
Активность:
Код:
#include <iostream>
using namespace std;

int Factorial(int n)
{
    if (!n)
        return 1;
    return n*Factorial(n-1);
}

void main()
{
    int i;
    float e;
    cout << "How many members are there in the expression?" << endl;
    while(1)
    {
        e = 0;
        for (cin >> i; i >= 0; i--)
            e += 1/(float)Factorial(i);
        cout << e << endl;
    }
}

Отредактировано Jon, 06.09.2008 в 02:10.
Старый 06.09.2008, 01:04
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
Чьорт, ре-кур-си-йа!11 А как все лаконично и сухо! То ли дело моя прога- с душой. Один минус- не работает)) А всетаки, где была ошибка? Ну я имею ввиду принципиальная? Или их было так много, что проще было написать новую прогу?)
Старый 06.09.2008, 01:20
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
Или их было так много, что проще было написать новую прогу?)
имено)
Старый 06.09.2008, 01:24
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
Я уничтожен и разбит. Спасибо, Jon))) Инцидент исчерпан.

Отредактировано Xenosapien, 13.09.2008 в 02:51.
Старый 06.09.2008, 01:32
Toadcop

offline
Опыт: 54,313
Активность:
оффтоп но я немогу понять смысла for =) вообще его суть существования... Т_Т

for (i; i >= 0; i--)
вон ты сам всё пишеш тока в одном рядке... ну корчое ясно. + имхо неуказавать мануально приоритеты бред. (я про фигурные скобки)

Toadcop добавил:
Цитата:
А как все лаконично и сухо! То ли дело моя прога- с душой.
+1 кстати я лично этого же мнения... полностью этого мнения...
Старый 06.09.2008, 01:47
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
имхо неуказавать мануально приоритеты бред. (я про фигурные скобки)

ну если больше одно строчки то да... бред... =)
а с одной это кому как, лично я никакой разницы невижу, дело вкуса
Старый 06.09.2008, 01:47
NETRAT

offline
Опыт: 83,712
Активность:
позабавило - в первом сырце используются три разных библиотеки потокового вывода(вообще говоря, взаимозаменяемые)
так я только на первом курсе писал...
Старый 06.09.2008, 18:37
Mefist
Is it cocktail hour yet?
offline
Опыт: 98,190
Активность:
Цитата:
е=0!+1/1!+1/2!+1/3!+...+1/n!+...

это ты где такое нашел?
Старый 06.09.2008, 20:37
J
expert
offline
Опыт: 48,447
Активность:
wikipedia
(второй сверху из способов определения)
Старый 06.09.2008, 20:44
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
Netrat, твое замечание поразительно точное) Ибо cpp я учил на протяжении второго семестра на первом курсе)

З.Ы.
Подскажите, какая библиотека имеет функции, аналогичные вариковским SleepAction'aм.
Старый 09.09.2008, 00:21
NETRAT

offline
Опыт: 83,712
Активность:
void Sleep(int MSecs) ?
в windows.h кажись, MSDN owns
Старый 09.09.2008, 01:13
J
expert
offline
Опыт: 48,447
Активность:
Xenosapien ну вообще это как и варе не рекомендуемо ей пользоваться, т.к. на протяжении ее использования приложение не отвечает на запросы системы
Старый 09.09.2008, 01:19
NETRAT

offline
Опыт: 83,712
Активность:
Sleep(0) это классика стабильных циклов
Старый 09.09.2008, 01:30
J
expert
offline
Опыт: 48,447
Активность:
ну ведь даже если и будем использовать Sleep(0) в цикле то приложение всеравно ведь будет "не отвечать", его хорошо использовать разве что не в основном потоке в котором запускается приложение, а в другом

да вместе Sleep(0) былобы лутче конешно использовать Application->ProcessMessages()
Старый 09.09.2008, 01:38
NETRAT

offline
Опыт: 83,712
Активность:
использование Sleep(0) внутри циклов не дает потоку повиснуть и позволяет "корректно" завершить приложение, скажем, если это консоль, то по нажатию на крестик окно консоли закроется и нет необходимости снимать задачу. Фактически оно дает родительскому потоку процессорное время, а значит, и возможность обработать очередь сообщений. Почти то же самое что и ProcessMessages, только ProcessMessages is lame, правильнее писать полноценный месадж луп, но в консолях это редко делается, ибо геморрно
Старый 09.09.2008, 02:01
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
Простите что туплю, но вынужден конкретизировать вопрос, ибо мне явно не хватает квалификации чтоб найти нужную мне информацию в вышенаписанном, буде таковая там есть. Блин. Попроще писать надо. Каким образом можно сделать цикл, который будет при каждом выполнении останавливатся на n секунд, обрабатывать команды(если они есть, скажем, нажатие клавиши) во время этой паузы, если же их нет или после обработки, по истечении положенного времени продолжит роботу? Для меня проблемма в функции, которая может обеспечить "вменямую" паузу. Надеюсь, я не слишком запутался в своих обьяснениях...
З.Ы.
Netrat верни аватарку;(((
Старый 09.09.2008, 21:24
NETRAT

offline
Опыт: 83,712
Активность:
Варианта по крайней мере два:
1. Два потока - основной и клава
2. Полноценный мессадж луп типа
Код:
bool bPaused = false;
while GetMessage(&msg)
{
  // Process message
  if msg == MSG_EXIT
    break;
  if bPaused OR (msg == MSG_PAUSE)
  {
    bPaused = (!bPaused) AND (msg != MSG_UNPAUSE);
    Sleep(0);
    continue;
  }
  // Iterate code
}

первый способ плох тем что потоки нужно запускать и синхронизовать, а второй плох тем что циклы нужно рубить на части и хитрым образом писать в Iterate Code

аватарка состарилась - уже год прошел

Отредактировано NETRAT, 09.09.2008 в 22:41.
Старый 09.09.2008, 22:28
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
Чтож, спасибо. Теперь, по крайней мере, я знаю что искать...

Отредактировано Кет, 09.09.2008 в 23:57.
Старый 09.09.2008, 22:43
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
У меня появился вопрос, недостойный отдельной темы, и при этом имеющий отношение к сипп.
Да будет он здесь. Можно ли перегрузить оператор(например суммы) для ссылок на обьекты класса, а не для самих обьектов? Я имею ввиду чтоб тут
Код:
friend Abc operator+(Abc a1, Abc a2);

вместо а1 и а2 было *а1 и *а2.
Старый 13.09.2008, 02:21
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 06:58.