Официальный сайт студ.городка НГТУ
Учеба » Помогите с информатикой (описание работы программы) 

#1  26.09.07 21:41

Помогите с информатикой (описание работы программы)

ПОМОГИТЕ С ЗАЩИТОЙ ПЛИЗ
ГЛАВНОЕ ОПИСАТЬ ЧТО ДЕЛАЕТ ПРОГА
ОПИСАТЬ ПЕРЕМЕННЫЕ
И ОСНОВНЫЕ ПРИНЦИПЫ


1 Списки





struct list { int val; list *next,*pred; };

//------------------------------------------------------- 1

int F1(list *p)

{ int n;

for (n=0; p!=NULL; p=p->next, n++);

return n; }

//------------------------------------------------------- 2

list *F2(list *ph, int v)

{ list *q = new list;

q->val = v; q->next = ph; ph = q;

return ph; }





2 Рекурсия





long F1(int n)

{ if (n==1) return 1;

return (n * F1(n-1)); }

//------------------------------------------------------ 2

double F2(double *pk, double x, int n)

{

if (n==0) return(*pk);

return *pk + x *F2(pk+1,x,n-1);

}

void z3()

     { double B[] ={ 5.,0.7,4.,3. } ,X=3., Y;

Y = F2(B,X,4); }






3 Деревья




tree A1={"aaa",NULL,NULL,NULL,NULL};

tree A2={"bb",NULL,NULL,NULL,NULL};

tree A3={"cccc",&A1,&A2,NULL,NULL};

tree A4={"dd",NULL,NULL,NULL,NULL};

tree A5={"aaa",NULL,NULL,NULL,NULL};

tree A6={"fff",&A3,&A4,&A5,NULL};

void main()

{ printf("F=%d\n",F(&A6)); }           // Вызов для статического дерева



//------------------------------------------------------37-16.cpp

//-------------------------------------------------------1

struct xxx { int v; xxx *p[4]; };

int F1(xxx *q)

{ int i,n,m;

if (q==NULL) return 0;

for (n=F1(q->p[0]),i=1; i< 4; i++)

     if ((m=F1(q->p[i])) >n) n=m;

return n+1; }

//-------------------------------------------------------2

struct zzz { int v; zzz *l,*r; };

int F2(zzz *p) {

if (p==NULL) return(0);

return (1 + F2(p->r) + F2(p->l)); }






4 Динамическое связывание




double F1(double a, double b, double (*pf)(double))

{ double m;

if ((*pf)(a) * (*pf)(b) > 0 )return(a);

     while ( b-a > 0.0001 ) {

     m = (b + a)/2;

     if ((*pf)(a) * (*pf)(m) < 0) b=m; else a=m;

     }

return a ;}

//------------------------------------------------------- 2

double F2(double x, double s0, double (*pf)(double,int))

{ double s; int n;

for (n=1, s=0.0; fabs(s0) > 0.0001; n++)

     { s += s0; s0 = s0 * (pf)(x,n); }

return s; }

double ff(double x, int n) { return( x/n); }

void main1()

{ double x,y; y = F2(x,1,ff); }




5//------------------------------------------------------ 1

struct man {char name[20]; int dd,mm,yy; char *addr; };

char *F1(char *p, char *nm, char *ad)

{ man *q =(man*)p;

strcpy(q->name,nm);

strcpy((char*) (q+1 ),ad);

q->addr = (char*) (q+1 );

for (p=(char*) (q+1 ); *p!=0; p++);

p++; return p;}

//------------------------------------------------------ 2

struct man1 {char name[20]; int dd,mm,yy; char addr[]; };

char *F2(char *p, char *nm, char *ad)

{ man1 *q =(man1*)p;

strcpy(q->name,nm);

strcpy(q->addr,ad);

for (p=q->addr; *p!=0; p++);

p++; return p;}


ЗАРАНЕЕ СПАСИБО ТЕМ КТО ПОМОЖЕТ

Offline

#2  26.09.07 22:32

Re: Помогите с информатикой (описание работы программы)

struct list { int val; list *next,*pred; };

// *next указатель на следующйй элемент списка
// *pred указатель на предыдущий элемент списка
// val  значение i-го элемента списка

//------------------------------------------------------- 1

// Подпрограмма считает количество элементов в списке
// входной параметр - сам список

int F1(list *p)

{ int n;      // счётчик

for (n=0; p!=NULL; p=p->next, n++);  // пока не конец списка

return n;   // возвращает количество элементов в списке

}

//------------------------------------------------------- 2

// Подпрограмма добавляет в начало списка элемент

list *F2(list *ph, int v)

{ list *q = new list;   // создание списка

q->val = v;         // присвоение первому  элементу списка значение переменной v
q->next = ph;     //  объединение  двух списков: второй элемент списка q = первый элемент списка ph
ph = q;             //  теперь указатель ph указывает на первый элемент списка q

return ph;   //
}

Offline

#3  26.09.07 23:03

Re: Помогите с информатикой (описание работы программы)

Рекурсия

long F1(int n)
возвращает факториал числа н
{ if (n==1) return 1;

return (n * F1(n-1)); }

//------------------------------------------------------ 2

double F2(double *pk, double x, int n)
по ходу возвращает число записанное в x-ой системе счисления, с n-ой размерностью.
pk - массив вещественных чисел -цифр, записанных наоборот, т. е. сначала младшие разряды
т.е. делает при pk={1,2,3,4,5}, n=4  и x=5
return 1 + 2*5^1 +3*5^2 + 4*5^3+ 5*5^4
{

if (n==0) return(*pk);

return *pk + x *F2(pk+1,x,n-1);

}

void z3()

     { double B[] ={ 5.,0.7,4.,3. } ,X=3., Y;

Y = F2(B,X,4); }

Y=думаю вернёт х№^ню, т.к. размер b =4)




4 Динамическое связывание




double F1(double a, double b, double (*pf)(double))
Скорее всего поиск корня
{ double m;

if ((*pf)(a) * (*pf)(b) > 0 )return(a); //если имеет одинаковые знакие на концах отрезка от а до б

     while ( b-a > 0.0001 ) { // удовлетворяет ли точности?

     m = (b + a)/2;

     if ((*pf)(a) * (*pf)(m) < 0) b=m; else a=m;// выбор точки чтоб на концах были разные знаки

     }

return a ;}// возвращает корень, функция pf должна иметь разные знаки на a и b чтоб корень был найден

//------------------------------------------------------- 2

double F2(double x, double s0, double (*pf)(double,int))
// разложение в ряд  с общим членом вычисляемым по формуле a[n]=a[n-1]*(*pf)(x,n) до точности 0.0001
{ double s; int n;

for (n=1, s=0.0; fabs(s0) > 0.0001; n++)

     { s += s0; s0 = s0 * (pf)(x,n); }

return s; }

double ff(double x, int n) { return( x/n); }

void main1()

{ double x,y; y = F2(x,1,ff); }

Вроде так

Offline

#4  26.09.07 23:03

Re: Помогите с информатикой (описание работы программы)

// подпрограмма вычисляет факториал

long F1(int n)

{ if (n==1) return 1;   // подпрограмма будет выполняться пока п не будет равен 1

return (n * F1(n-1)); }

//------------------------------------------------------ 2

// перемножает соответствующем образом элементы массива:
    Y = 5. + 3.*(0.7 + 3.*( 4. + 3. * F2(3.,3.,0))) = 124.1 ,
              где при выполнении F2(3.,3.,0) вернётся *pk=3.

double F2(double *pk, double x, int n)

{

if (n==0) return(*pk);  // подпрограмма будет выполняться пока п не будет равно 0

return *pk + x *F2(pk+1,x,n-1);

}

void z3()

     { double B[] ={ 5.,0.7,4.,3. } ,X=3., Y;

Y = F2(B,X,4); }

Offline

#5  26.09.07 23:09

Re: Помогите с информатикой (описание работы программы)

return 1 + 2*5^1 +3*5^2 + 4*5^3+ 5*5^4

откуда взял ???  рекурсия в данном случае по другому сворачивается

return 1+5*(2+5*(3+5*(4+5*5)))

Offline

#6  27.09.07 00:03

Re: Помогите с информатикой (описание работы программы)

Ребят это в принципе я и сам понял а вот остальное

Offline

#7  27.09.07 00:06

Re: Помогите с информатикой (описание работы программы)

Короче как 3 и 4 и 5 лучше 4 и 5

Offline

#8  27.09.07 00:11

Re: Помогите с информатикой (описание работы программы)

Если поможете заранее спасибо

Offline

#9  27.09.07 00:15

Re: Помогите с информатикой (описание работы программы)

GriNDeR, см. приват

Offline

#10  27.09.07 07:28

Re: Помогите с информатикой (описание работы программы)

Ну блин помогите реше

Offline

#11  27.09.07 12:07

Re: Помогите с информатикой (описание работы программы)

Ребят это в принципе я и сам понял а вот остальное

жжош. Лови спасательный венок.

Offline

Учеба » Помогите с информатикой (описание работы программы) 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.024 сек.
Выполнено 14 запросов.