[napisać program] ró?żne ciągi

0

Mam do was prosbe. Musze zrobic pewien program w c++ ale nie za bardzo wiem jak mam sie do tego zabrac. Jakby komuś zrobienie takiego programu nie sprawiało problemu to prosba o pomoc.
Dane jest po kilka pierwszych elementów ciągów:

  • Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21, (a1 = 1, a2 = 1, ai+1 = ai + ai-1 dla i > 2)
  • Pell: 1, 2, 5, 12, 29, 70, 169, (a1 = 1, ai = 2ai + ai-1 dla i >1)
  • Lukas: 1, 3, 4, 7, 11, 18, 29, (a1 = 1, a2 = 3, ai+1 = ai + ai-1 dla i > 2)
  • Trójkąt: 1, 3, 6, 10, 15, 21, 28, (ai = ((i+1)*i/2 dla i = 1, 2, )
  • Kwadrat: 1, 4, 9, 16, 25, 36, 49, (ai = i*i dla i = 1, 2, )
  • Pięciokąt: 1, 5, 12, 22, 35, 51, 70, (ai = ((3*i-1)*i/2 dla i = 1, 2, )
    x jest liczbą całkowitą nieujemną. Zrobić program sprawdzający czy x jest elementem któregoś z w/w ciągów liczbowych

//pisz sensowne tematy !! :-8 - m.M

0
#include <stdio.h>

typedef int(*proctype)(unsigned);

int fibonacci(unsigned a){
  long i,j,k;
  int  p=2;
  i=1;
  j=1;
  while(j<=a){
    if(a==j)return p;
    k=i+j;
    i=j;
    j=k;
    p++;
  }
  return 0;
}

int pell(unsigned a){
  return 0;
}

int trojkat(unsigned a){
  int i=1;
  long j;
  while((j=((i+1)*i)/2)<=a){if(j==a)return i;i++;}
  return 0;
}

int kwadrat(unsigned a){
  int i=1;
  long j;
  while((j=i*i)<=a){if(j==a)return i;i++;}
  return 0;
}

main(){
  char*    names[]={"Fibonacci","Pell","Trojkat","Kwadrat"};
  proctype p    []={fibonacci,pell,trojkat,kwadrat};
  do{
    unsigned i,j;
    int k;
    printf("\n\npodaj liczbe (0 konczy) : ");
    scanf("%d",&j);
    if(!j)break;
    printf("\n\nliczba %d pasuje do ciagow :\n",j);
    i=4;
    while(i--)if(k=p[i](j))printf("%s, element: %d\n",names[i],k);
  }while(1);
  return 0;
}

Reszte nietrudno dorobić.

// do postu ponizej: owszem właśnie to między innymi trzeba dopisać. Proctype to typ z ktorego jest zbudowana tablica p. Do pełnego szczęścia i projektu musisz dac również część pracy od siebie.

0

int pell(unsigned a){
return 0;

i tu już nic nie trzeba wiecej pisać?

co toznaczy proctype?

0

Troche przerobiłem ten program a dokładnie jego końcową część, ale chyba cos jest nie tak bo po uruchomieniu tego programu wyskakują jakies dziwne rzeczy. Jak możecie to zerknijcie na ten programik i poprawcie błędy. Z góry dzięki.

#include <iostream>

typedef int (*proctype)(unsigned);

int fibonacci(unsigned a){
long i,j,k;
int p=2;
i=1;
j=1;
while(j<=a)
{
if(a==j)return p;
k=i+j;
i=j;
j=k;
p++;
}
return 0;
}

int trojkat(unsigned a){
int i=1;
long j;
while((j=((i+1)*i)/2)<=a){if(j==a)return i;i++;}
return 0;
}

int kwadrat(unsigned a){
int i=1;
long j;
while((j=i*i)<=a){if(j==a)return i;i++;}
return 0;
}

main(){
char* names[]={"Fibonacci","Trojkat","Kwadrat"};
proctype p []={fibonacci,trojkat,kwadrat};
do{
unsigned i,j;
int k;
cout<< "podaj liczbe (0 konczy) : "<<endl;
cin>>j;
i=3;
while(i--)
if(k=pi)
cout<<"element: "<<names[i]<<k<<endl;
if(!j)break;
cout<<"liczba "<< j<<" pasuje do ciagow : "<<k<<endl;

}while(1);
return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1