[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.27657 Reply
File: 42c0ee85ffe8.jpeg
Jpeg, 86.52 KB, 637×600 - Click the image to expand
edit Find source with google Find source with iqdb
42c0ee85ffe8.jpeg
Доброняши, подскажите как реализовать счетчик вызова функции zet() и fib() - переменный count1 и count2 соответственно? Счетчики внезапно считают, в power() и Fibonaci() выдают правильный результат, а в main() выдают нули.


#include "stdafx.h"
#include <iomanip>
#include <iostream>
using namespace std;

int count1;
int count2;

int zet(double &y, double &x, unsigned int &k)
{
count1++;
if (k>0)
{
if (k%2==1)
{
y*=x; k--;
}
else
{
x*=x; k/=2;
};
zet(y,x,k);
}
return count1;
}

double power(double x, unsigned int n)
{
double y =1;
zet(y, x, n);
return y;
}
//////////////////////////////////////////////////////////////////////////

void fib(double &f1, double &f2, unsigned int n)
{
count2++;
if (n>=2)
{
double f =f2; f2+=f1; f1=f;
fib(f1, f2, n-1);
}
return;
};

double Fibonaci (unsigned int n)
{
double f0=0, f1=1;
switch ( n )
{
case 0:
return f0;break;
case 1:
return f1; break;
default:
fib(f0, f1, n);
return f1;
}
};
/////////////////////////////////////////////////////
int tmain(int argc, TCHAR* argv[])
{
   double x;
   unsigned int n;
   cout<<"________"<<endl<<setw(22)<<"Power"<<endl<<"________"<<endl;
   cout<<"Enter the number"<<endl;
   //cin>>x;
   x = 5;
   cout<<x<<endl;
   cout<<"Enter the power"<<endl;
   //cin>>n;
   n = 3;
   cout<<n<<endl;
   unsigned int numb;
   cout<<"x = "<<x<<" n = "<<n<<endl;
   cout<<"Result: "<<power(x,n)<<endl<<"Number of occurrences: "<<endl;
   cout<<"________"<<endl<<setw(24)<<"Fibonaci"<<endl<<"________"<<endl;
   cout<<"Enter number what you want"<<endl;
   //cin>>numb;
   numb = 8;
   cout<<"numb = "<<numb<<endl;
   cout<<"Result: "<<Fibonaci(numb)<<endl<<"Number of occurrences: "<<count2<<endl;

   return 0;
}
>> No.27660 Reply
>>27657
> case 0:
> return f0;break;
Студия при писании на С# в таких случаях кричит, что это недостижимый код. Смешно, правда?
>> No.27664 Reply
>>27660
Как и любому отродью мелкомягких, студии еще ПРЕВОЗМОГАТЬ и ПРЕВОЗМОГАТЬ чтобы достичь хороший код. Ну, хотя бы мой для начала.
>> No.27665 Reply
File: Dbg1.png
Png, 7.06 KB, 669×338 - Click the image to expand
edit Find source with google Find source with iqdb
Dbg1.png
>>27657
Вот я тебя отдебажил.

Изменения:
cout<<"Result: "<<power(x,n)<<endl;
cout<<"Number of occurrences: "<<count1<<endl;
вместо одной строки.
>> No.27666 Reply
>>27665
> d:\Социология
>> No.27668 Reply
>>27666
А ты думал кто на вопросы анкеток отвечает? ГСЧ конечно же, а ВЦИОМ с левадой бурно одобряэ.
>> No.27670 Reply
File: 512003.jpg
Jpg, 199.42 KB, 430×640 - Click the image to expand
edit Find source with google Find source with iqdb
512003.jpg
>>27665
Благодарю, все сделал, лабу отправил. Если и пойду кирзачи топтать, то со спокойной душой и из-за всякой гуманитарщины.
>> No.27671 Reply
Алсо, не лучше ли оформить эти две задачи в классы и соответственно сделать счётчики статическими полями?
>> No.27676 Reply
>>27671
Конечно лучше.
Дарю идею: внутри класса организовать словарь предрасчитанной последовательности фибоначи Dict[n -> Fn].

Примерный алгоритм расчёта нового члена последовательности.
1) Проверить по словарю требуемый член последовательности если найден то вернуть Dict[n].
2) Расчитать новый член последовательности (NFn), начиная с ближайшего расчитанного Fn.
3) Сохранить NFn в словарь Dict[n -> NFn].
4) Вернуть NFn;

Препод будет в экстазе! А если серьёзно, лаба же, зачем тут классы?
>> No.27678 Reply
>>27676
> А если серьёзно, лаба же, зачем тут классы?
Если человек "учится" для галочки - то низачем. А если он таки хочет что-то понять и чему-то научиться - то надо таки учиться. Я на первом курсе задание "реализовать граф методом матрицы инциденций" выполнил в виде нескольких классов (двусвязный список, поверх него композицией класс графов с кучей методов, которые еще и перегружены по разным типам были). Получил в результате автомат сразу и попрактиковался.
>> No.27679 Reply
>>27678
Жму тебе руку братишка. Я на третьем страдал тем же.
>> No.27680 Reply
>>27676
Проще вывести O(1) функцию для расчета n-го числа последовательности, препода больше впечатлит.
>> No.27681 Reply
>>27680
Кажется её уже вывел какой-то Бине (ruwiki://Числа_Фибоначчи).
> препода больше впечатлит.
Математика.
>> No.27682 Reply
>>27681
Да да, но у нас на семинаре (без интернета) была такая задачка, что характерно со звездочкой.


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]