Регистрирайте се
Мнение и предложения за оптимизиране на програмата
|
| Предишната тема :: Следващата тема |
| Автор |
Съобщение |
the1 Начинаещ
Регистриран на: 19 Oct 2007 Мнения: 4
 
|
Пуснато на: Thu Mar 27, 2008 4:57 pm Заглавие: Мнение и предложения за оптимизиране на програмата |
|
|
Здравейте, току що си реших курсовата работа и бих искала да помоля тези, който имат време и желание да погледнат програмата и да дадат мнение по решението и предложения за оптимизиране на кода. Задачата е да се намери производна от по-висок ред - формулата: (lnx)^(n)=(-1)^(n-1)*(n-1)!*1\ x^(n) Благодаря предварително на всички отзовали се!
| Код: |
#include <iostream>
#include <cmath>
double a[2]={};//масива за х и n
long fact(int n);//потребитеслка функция
using namespace std;
int main()
{
int n;
again://маркер
//за съжаление много колеги вече се изкушиха да копират решението на задачата и ме помолиха да изтрия кода, макар и да е лош.
system("PAUSE");
return 0;
}
long fact(int n)//изчислява факториел
{
if (n == 0) return 1;
else{
long result = n * fact(n - 1);
return result;
}
}
| 22
Благодаря още веднъж за помоща и благодаря за разбирането!
Последната промяна е направена от the1 на Thu Mar 27, 2008 8:18 pm; мнението е било променяно общо 2 пъти |
|
| Върнете се в началото |
|
 |
Реклама
|
Пуснато на: Заглавие: Реклама |
|
|
|
|
|
| Върнете се в началото |
|
 |
Irrefutable Напреднал

Регистриран на: 15 Jul 2007 Мнения: 298 Местожителство: София
    гласове: 5
|
Пуснато на: Thu Mar 27, 2008 5:53 pm Заглавие: |
|
|
Това изобщо работи ли
Махни изпозлването на pow
И разкарай тая рекурсия за fact
Вместо намирай стъпка по стъпа итеративно (k!)/(x^k) за всяко к от 1 до n;
И този член го пази в една променлива а не в две, за да избегнеш overflow
И този масив double a[2], не е удачен, ползвай си две променливи.
Проверката if (!cin....) е абсурдна. cin ще ти даде бадбит като се затвори входа, а тогава и да пуснеш въпросния "goto again1;" , никаква работа няма да свършиш , само ще поемеш един безкраен цикъл.
После това goto по-добре го махни изцяло.
И изобщо защо има again и again1, до do{} while() , още ли не сте стигнали?
ПП: не се стряскай само, никой не се е родил научен. |
|
| Върнете се в началото |
|
 |
the1 Начинаещ
Регистриран на: 19 Oct 2007 Мнения: 4
 
|
Пуснато на: Thu Mar 27, 2008 6:11 pm Заглавие: |
|
|
Благодаря за бележките! Приципно грешката е моя, че не написах изискванията! Значи 1. трябва да има потребителска функция и единственно се сетих за факториела. 2.масива също е задължителен 3. проверката също, но и трябва да защитя входа за да се въвеждат само положителни числа!
А що се отнася до goto, и аз се чудих дали изобщо е добра идея! А, и работи си програмата ! И отново благодаря за отговора! |
|
| Върнете се в началото |
|
 |
garion Напреднал
Регистриран на: 10 Jan 2008 Мнения: 373
  гласове: 13
|
Пуснато на: Fri Mar 28, 2008 5:03 pm Заглавие: |
|
|
| the1 написа: | А що се отнася до goto, и аз се чудих дали изобщо е добра идея! А, и работи си програмата ! И отново благодаря за отговора! |
Irrefutable не ти е казал да го махнеш защото не работи. А защото goto е много остаряло и се поддържа все още само за съвместимост на старите програми. Също така да не се учиш да го ползваш, защото с него могат да станат много замазвания които да не могат даже и да се проследят. За това по-добре си ползвай някой от циклите while, do-while или for. |
|
| Върнете се в началото |
|
 |
|
|
Не Можете да пускате нови теми Не Можете да отговаряте на темите Не Можете да променяте съобщенията си Не Можете да изтривате съобщенията си Не Можете да гласувате в анкети Може да прикачвате файлове Може да сваляте файлове от този форум
|
|