Я пытаюсь заставить эту программу работать, поскольку она требует, чтобы вычислить непрерывную долю, внесенную в связанный список. программа не выдает никакой ошибки, однако она всегда падает в середине. Кто-нибудь может мне помочь?
Задача состоит в том, чтобы просто сохранить программу в связанном списке, а затем рассчитать ее, взяв параметр из ссылки. Это продолжение фракции.
#include <iostream>
#include <cmath>
using namespace std;
struct node
{
int data;
node *next;
} *h=nullptr, *t=nullptr;
float calculation (int co)
{
float a,c;
node *b,*f;
b->next = f;
while(co != 0)
{
f = t;
a = (float)f->data;
a = 1/a;
c = (float)b->data;
a = c + a;
t = b;
co--;
}
return a;
}
void storedata (int& c)
{
node *n = new node;
n->data = c;
n->next = nullptr;
cout<<n->data<<endl;
if(h==nullptr)
{
h=n;
t=n;
n=nullptr;
}
else
{
t->next=n;
t=n;
}
}
void formula (int a, int b, int co)
{
int c;
int z;
while (co!=0)
{
c = a/b;
storedata(c);
z = b*c;
z = a-z;
a = b;
b = z;
co--;
}
}
int main ()
{
int a,b,c,z,co,d;
float e;
a = 123;
b = 100;
co = 5;
formula (a,b,co);
e = calculation(co);
cout<<"cf1 = 123/100 ="<<e;
}
По крайней мере, следующие проблемы (некоторые из которых будут обнаружены при включенных предупреждениях, например, -Wall
):
Использование неинициализированных указателей, например node *b,*f; b->next = f;
, Это вызывает неопределенное поведение.
new
но нет delete
где угодно, поэтому утечки памяти будут присутствовать.
Других решений пока нет …