Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <math.h>
- #include <algorithm>
- using namespace std;
- bool czyFib(int liczba);
- int fib(int wyraz);
- int ktoryWyraz(int liczba);
- int main()
- {
- ifstream daneF("dane.txt");
- ofstream wyniki("zadanie4.txt");
- int dane[201];
- for(int i=0; i<201; i++)
- daneF >> dane[i];
- wyniki << "a)\n";
- for(int i=0; i<201; i++)
- {
- if(czyFib(dane[i]))
- {
- wyniki << dane[i] << endl;
- }
- }
- wyniki << endl;
- /************************************************/
- int mini=INT_MAX, maxi=0;
- for(int i=0; i<201; i++)
- {
- if(czyFib(dane[i]))
- {
- if(dane[i]<mini)
- mini=dane[i];
- if(dane[i]>maxi)
- maxi=dane[i];
- }
- }
- //cout << mini << " " << maxi << endl;
- wyniki << "b)\nNajmniejsza liczba Fibonacciego: " << mini
- << "\nNajwieksza liczba Fibonacciego: " << maxi << endl << endl;
- /****************BŁĄD***************BŁĄD***************BŁĄD*************/ //BŁĄD
- int wyrazy[201];
- for(int i=0; i<201; i++)
- {
- cout << i << endl;
- if(czyFib(dane[i]))
- {
- wyrazy[i] = ktoryWyraz(dane[i]);
- }
- else
- {
- wyrazy[i] = -1;
- }
- }
- sort(wyrazy, wyrazy+201);
- int najdluzszy=0, licz=0;
- for(int i=0; i<201; i++)
- {
- if(wyrazy[i]==-1)
- continue;
- if(wyrazy[i]==wyrazy[i+1]-1 && i!=200)
- {
- licz++;
- }
- else
- {
- licz++;
- if(licz>najdluzszy)
- najdluzszy=licz;
- licz=0;
- }
- }
- cout << najdluzszy << endl;
- wyniki << "c)\n Najdluzszy ciag rosnacy kolejnych liczb fibonacziego ma dlugosc: " << najdluzszy << endl << endl;
- {
- //// cout << fib(6) << endl;
- //// cout << ktoryWyraz(8) << endl;
- //
- //
- // int daneSort[201];
- //
- // for(int i=0; i<201; i++)
- // daneSort[i] = dane[i];
- //
- // sort(daneSort, daneSort+201);
- //
- //// if(czyFib(daneSort[200]))
- //// cout << 1;
- //
- // int ciagMax=0;
- //
- // for(int i=0, ciag=0; i<201; i++)
- // {
- // if(czyFib(daneSort[i]) && czyFib(daneSort[i+1]))
- // {
- // if(daneSort[i+1] == fib(ktoryWyraz(daneSort[i])+1))
- // {
- // ciag++;
- // }
- // else
- // {
- // if(ciag>ciagMax)
- // ciagMax=ciag;
- // }
- // }
- // else
- // {
- // if(ciag>ciagMax)
- // ciagMax=ciag;
- // }
- // }
- //
- // //cout << ciagMax << endl;
- //
- // wyniki << "c)\nDlugosc tego ciagu to: " << ciagMax << endl << endl;
- ////
- //// for(int i=0; i<201; i++)
- //// cout << daneSort[i] << endl;
- ////
- ////
- //// int ciagMax=0;
- ////
- //// for(int i=0, ciag=0; i<201; i++)
- //// {
- //// if(czyFib(dane[i]))
- //// {
- //// ciag++;
- //// }
- //// if(!czyFib(dane[i]) || i==200)
- //// {
- //// if(ciag>ciagMax)
- //// ciagMax=ciag;
- //// ciag=0;
- //// }
- //// }
- ////
- //// cout << ciagMax << endl;
- }
- /***************************************************************/
- wyniki << "d)\n";
- daneF.seekg(0);
- // string test;
- // daneF >> test;
- // cout << test;
- string daneUluz[201];
- for(int i=0; i<201; i++)
- {
- daneF >> daneUluz[i];
- }
- for(int i=0; i<201; i++)
- {
- sort(daneUluz[i].begin(), daneUluz[i].end());
- }
- // for(int i=0; i<201; i++)
- // {
- // cout << daneUluz[i] << endl;
- // }
- for(int i=0; i<201; i++)
- {
- bool pierwszy=true;
- for(int j=i+1; j<201; j++)
- {
- if(daneUluz[i]==daneUluz[j] && dane[i]!=dane[j])
- {
- if(pierwszy)
- {
- //////////////////
- wyniki << dane[i] << '\t' << dane[j];
- pierwszy=false;
- }
- else
- {
- wyniki << '\t' << dane[j];
- }
- }
- }
- if(!pierwszy)
- wyniki << endl;
- }
- wyniki << endl;
- return 0;
- }
- bool czyFib(int liczba)
- {
- if(liczba==0)
- return true;
- int szukaj1 = 0;
- int szukaj2 = 1;
- int szukaj3 = 1;
- while(liczba>szukaj1)
- {
- //cout << "dziala\t" << szukaj1 << '\t'<< szukaj2 << '\t'<< szukaj3 << '\n';
- int bufor=szukaj3;
- szukaj3 = szukaj3 + szukaj2;
- szukaj1 = szukaj2;
- szukaj2 = bufor;
- }
- if(liczba==szukaj1)
- return true;
- return false;
- }
- int fib(int wyraz)
- {
- if(wyraz==0)
- return 0;
- if(wyraz==1)
- return 1;
- return fib(wyraz-1) + fib(wyraz-2);
- }
- int ktoryWyraz(int liczba)
- {
- int wynik=0;
- while(fib(wynik)<liczba)
- {
- wynik++;
- }
- return wynik;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement