Przejdź do głównej zawartości

Posty

Wyświetlanie postów z czerwiec, 2013

Pierwiastek kwadratowy [m. połowienia]

Metoda połowienia jest najwolniej zbieżną metodą znajdowania przybliżonych pierwiastków funkcji w zadanym przedziale argumentów [a; b]. Metodę tę można zastosować, jeśli funkcja jest ciągła i ma przeciwne wartości w krańcach przedziału ( f(a) * f(b) < 0 ).

Aby wykorzystać tę metodę do wyznaczania wartości pierwiastków kwadratowych należy odpowiednio przygotować funkcję kwadratową:
f(x) = ax^2 + bx + c

Pierwiastek kwadratowy [m. Newtona-Raphsona]

Do wyznaczania pierwiastka kwadratowego liczby dodatniej można wykorzystać m.in. metodę Newtona-Raphsona. Zakłada ona, że postawiony problem jest identyczny z problemem, w którym należy szukać długości boku kwadratu o znanym polu powierzchni.

Podział stringa [getline]

Funkcja getline może przyjmować trzy parametry: źródło, element docelowy i znak, do który ma przerwać odczytywanie danych.

Gdy program będzie wyglądał tak:


#include <iostream>usingnamespace std;int main(){ string s;while(getline(cin, s, '-')){cout<< s << endl;}return0;}

a na wejściu otrzymamy:

12-05-2011

to wynikiem działania naszego programu będzie:


12 05 2011
Wykorzystam teraz tę właściwość funkcji getline by podzielić otrzymany ciąg znaków. Miejscem cięcia będzie określony znak. Efektem podziału będzie odpowiedni vector:


#include <iostream>#include <vector>#include <sstream>usingnamespace std;int main(){     string s ="12-05-2013";     vector <string> el;     stringstream ss(s);     string item;while(getline(ss, item, '-')){         el.push_back(item);}for(int i=0;i<3;i++){cout<< el[i];if(i<2)cout<<".";}return0;}

Wynik działania powyższego kodu:

12.05.2013



Anagramy

Anagram jest to, najczęściej, wyraz powstały w wyniku przestawień liter w innym wyrazie.

Zauważyć należy, że każde słowo to tak naprawdę zbór znaków. Jeżeli mamy słowo i jego anagram to składają się one z tych samych liter. Sortując litery (w kolejności rosnącej lub malejącej) w tych wyrazach utworzymy identyczne ciągi. Tak przetworzone ciągi należy porównać by dowiedzieć się czy jedno słowo jest anagramem drugiego (i odwrotnie).

Wykorzystując funkcję sort

#include <iostream>#include <algorithm>usingnamespace std;int main(){     string sSlowo1, sSlowo2;while(cin>> sSlowo1 >> sSlowo2){         sort(sSlowo1.begin(),sSlowo1.end());         sort(sSlowo2.begin(),sSlowo2.end());if(sSlowo1 == sSlowo2)cout<<"Tak"<< endl;elsecout<<"Nie"<< endl;}return0;}

Wykorzystując sortowanie bąbelkowe

#include <iostream>#include <algorithm>usingnamespace std;   string sort(string s){int l = s.size();for(int i =0; i < l; i++){f…

Największy i najmniejszy element w tablicy

Przeszukiwanie tablicy w poszukiwaniu elementów największych i najmniejszych polega na porównaniu wszystkich elementów ze sobą.

#include <iostream>         usingnamespace std;int main (){int iTab[]={3,7,2,5,6,4,9};int n;   n =sizeof(iTab)/sizeof(int);int min = iTab[0];int max = min;for(int i =1; i<n ; i++){if(min > iTab[i])         min = iTab[i];if(max < iTab[i])         max = iTab[i];}cout<<"min: "<< min << endl;cout<<"max: "<< max << endl;return0;}
W celu skrócenia kodu można użyć funkcji : min_element i max_element.

#include <iostream>     #include <algorithm>    usingnamespace std;int main (){int iTab[]={3,7,2,5,6,4,9};cout

Konwersja z systemu 10 na 16 [dec2hex]

1.
Typowe podejście do konwersji między systemem decymalnym a innymi systemami liczbowymi. Zapamiętujemy resztę z dzielenia liczby dziesiętnej przez liczbę podstawę docelowego systemu (w tym przypadku 16) (iDec%16) , następnie dzielimy liczbę całkowicie przez podstawę docelowego systemu liczbowego (iDec /=16). Powtarzamy tę czynność dopóki liczba dziesiętna nie stanie się zerem (while(iDec)).

#include <iostream>usingnamespace std;int main(){int iDec;     string sHex;     string sTmp ="0123456789ABCDEF";cin>> iDec;while(iDec){         sHex = sTmp[iDec%16]+ sHex;         iDec /=16;}cout<< sHex;return0;}Kolejne otrzymywane reszty powinny wchodzić na początek generowanej liczby stąd zapis:sHex = sTmp[iDec%16]+ sHex;Dzięki zmiennej pomocniczej sTmp dostajemy odpowiednią "cyfrę" bez dodatkowej analizy otrzymanej reszty.2.Wykorzystując stringstream #include <iostream>#include <sstream>usingnamespace std;