Napisałem kod, który oblicza liczby dla ciągu Fibbonaciego i przypisuje je indeksom w tabeli jednowymiarowej. Chciałem następnie aby wartości te były posortowane przy pomocy prostego sortowania przez wstawianie. Niestety to się nie udało. Program w którym piszę poprostu wywala . Dla kodu Fibbonaciego użyłem odwołania do funkcji. Oto on:
Kod: Zaznacz cały
---------------------------------------------------------------------------------------
#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
int fib(int n)
{
if(n==0 || n==1){
cout << "Liczba n musi byc liczba calkowita wieksza od 1!";
return 1;}
else{int a=0;
int b=0;
int c=1;
while (--n){
a = b;
b = c;
c = a+b;
}
return c;
}
}
int main(int argc, char *argv[])
{
int a,b,c,f,i,n,N;
int tab[N];
cout << "Podaj N jako rozmiar tablicy: N=";
cin >> N;
for (i=0; i<N; i++){
cout << "Podaj n (calkowita i wieksza od 1) dla ciagu Fibbonacciego: n=";
cin >> n;
cout << endl;
f=fib(n); //Wywołanie funkcji z ciągiem Fibbonaciego
tab[i]=f;
cout << "Tablica o indeksie "<<i<<" ma wartosc: "<<f<<" z ciagu Fibbonaciego""
";}
cout << endl;
cout << "Wartosci nieposortowane tablicy dla indeksu [i]: ""
";
for(i = 0; i < N; i++){
cout << setw(4) << "["<<i<<"]" << setw(4) << tab[i];}
cout << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
--------------------------------------------------------------------------------------------------
Ten program działa dobrze.
Poniższy program (z sortowaniem) niestety nie działa.
-------------------------------------------------------------------------------------------------
#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
int fib(int n)
{
if(n==0 || n==1){
cout << "Liczba n musi byc liczba calkowita wieksza od 1!";
return 1;}
else{int a=0;
int b=0;
int c=1;
while (--n){
a = b;
b = c;
c = a+b;
}
return c;
}
}
int main(int argc, char *argv[])
{
int a,b,c,f,i,j,n,N,x;
int tab[N];
cout << "Podaj N jako rozmiar tablicy: N=";
cin >> N;
for (i=0; i<N; i++){
cout << "Podaj n (calkowita i wieksza od 1) dla ciagu Fibbonacciego: n=";
cin >> n;
cout << endl;
f=fib(n); //Wywołanie funkcji z ciągiem Fibbonaciego
tab[i]=f;
cout << "Tablica o indeksie "<<i<<" ma wartosc: "<<f<<" z ciagu Fibbonaciego""
";}
cout << endl;
cout << "Wartosci nieposortowane tablicy dla indeksu [i]: ""
";
for(i = 0; i < N; i++){
cout << setw(4) << "["<<i<<"]" << setw(4) << tab[i];}
cout << endl;
//Algorytm sortowania przez wstawianie
for(j = N - 2; j >= 0; j--){
x = tab[j];
i = j + 1;
while((i < N) && (x > tab[i])){
tab[i - 1] = tab[i];
i=i+1;
}
tab[i - 1] = x;}
cout << "Posortowane wartosci tablicy:
";
for(i = 0; i < N; i++){
cout << setw(4) << tab[i];
cout << endl;}
system("PAUSE");
return EXIT_SUCCESS;
}
--------------------------------------------------------------------------------------------
Pozdrawiam serdecznie i z góry dziękuję za pomoc.