Регистрирайте сеРегистрирайте се

Мнение и предложения за оптимизиране на програмата


 
   Форум за математика Форуми -> Информатика/Компютри
Предишната тема :: Следващата тема  
Автор Съобщение
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
Местожителство: София
Репутация: 28.8Репутация: 28.8Репутация: 28.8
гласове: 5

МнениеПуснато на: Thu Mar 27, 2008 5:53 pm    Заглавие:

Това изобщо работи ли Smile
Махни изпозлването на 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, и аз се чудих дали изобщо е добра идея! А, и работи си програмата Very Happy! И отново благодаря за отговора!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
garion
Напреднал


Регистриран на: 10 Jan 2008
Мнения: 373

Репутация: 57.1
гласове: 13

МнениеПуснато на: Fri Mar 28, 2008 5:03 pm    Заглавие:

the1 написа:
А що се отнася до goto, и аз се чудих дали изобщо е добра идея! А, и работи си програмата Very Happy! И отново благодаря за отговора!


Irrefutable не ти е казал да го махнеш защото не работи. А защото goto е много остаряло и се поддържа все още само за съвместимост на старите програми. Също така да не се учиш да го ползваш, защото с него могат да станат много замазвания които да не могат даже и да се проследят. За това по-добре си ползвай някой от циклите while, do-while или for.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:   
   Форум за математика Форуми -> Информатика/Компютри Часовете са според зоната GMT + 2 Часа
Страница 1 от 1

 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети
Може да прикачвате файлове
Може да сваляте файлове от този форум
Copyright © 2005-2021 math10.com.