Przejdź do głównej zawartości

Posty

Wyświetlanie postów z 2013

Egzamin: Technik informatyk

Zadania testowe (część pisemna) z egzaminów zawodowych. Na stronach CKE można znaleźć odpowiedzi do tych testów. Każdy test składa się z 70 zadań zamkniętych (odpowiedzi a, b, c i d). 2010    czerwiec wersja X skany 2009    czerwiec  wersja X wersja Y    styczeń  wersja X 2008    czerwiec wersja X    styczeń wersja X 2007    czerwiec wersja X 2006    czerwiec wersja X

Zbiór zadań c++

Pod tym linkiem ( Zadania ) znajduje się zestaw zadań dla początkujących programistów. Przygotowuje on do poważniejszych zadań w języku C/C++. Zbiór nie jest dokończony a tym bardziej idealny. Informacje o znalezionych błędach, problemach lub propozycję nowych zadań proszę zostawiać w komentarzach. Zapraszam do zapoznania się z zadaniami i spróbowania swych sił.

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>   using namespace std ;   int main ( ) { string s ; while ( getline ( cin , s, '-' ) ) {     cout << s << endl ; }   return 0 ; } 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>   using namespace 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 <

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> using namespace 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 ;         else             cout << "Nie" << endl ;     }     return 0 ; } Wykorzystując sortowanie

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>           using namespace 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 ;   return 0 ; } W celu skrócenia kodu można użyć funkcji : min_element i max_element. #include <iostream>     #include <algorithm>       using namespace std ;   int main ( ) {   int iTab [ ] = { 3 , 7 , 2 , 5 , 6 , 4 , 9 } ;     cout << "min: " << *

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>   using namespace std ;   int main ( ) {     int iDec ;     string sHex ;     string sTmp = "0123456789ABCDEF" ;     cin >> iDec ;     while ( iDec ) {         sHex = sTmp [ iDec % 16 ] + sHex ;         iDec / = 16 ;     }     cout << sHex ;     return 0 ; } 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.

stringstream - konwersje

Aby wykorzystać ciekawe możliwości jakie daje stringstream należy dołączyć bibliotekę sstream. Poniżej kilka przykładowych konwersji: String to Int (str2int) #include <iostream> #include <sstream>   using namespace std ;   int main ( ) {     int a ;     string s = "123" ;     stringstream ss ;     ss. clear ( ) ;     ss << s ;     ss >> a ;     cout << a * 2 ;     return 0 ; } Int to String (int2str) #include <iostream> #include <sstream>   using namespace std ;   int main ( ) {     int a = 123 ;     string s ;     stringstream ss ;     ss. clear ( ) ;     ss << a ;     ss >> s ;     cout << s ;     return 0 ; } Float to String (float2str ) #include <iostream> #include <sstream>   using namespace std ;   int main ( ) {     float a = 123.321 ;     string s ;     stringstream ss ;     ss. clear ( ) ;     ss << a ;     ss

Matura 2013

Arkusze Poziom rozszerzony Zad. 2 (unieważnione) Było to zadanie typu odgadnij co robi ten algorytm. Tym razem algorytm miał być realizacją sita Eratostenesa. Popełniono jednak błąd w zapisie pętli, a dokładniej w definicji licznika pętli, typu j = i + i gdzie i = 1 ( i się nie zmieniało) w związku z tym licznik pętli j również nie ulegał zmianie co powodowało, że algorytm nigdy się nie kończył. Zad. 6 Odczytywanie liczb podanych w systemie ósemkowym, zamiana systemu na dziesiętny, zamiana zmiennej int na string, porównanie pierwszego i ostatniego znaku w ciągu i wypisanie liczb w których pierwsza cyfra równa się ostatniej. #include <iostream> #include <sstream>   using namespace std ;   int main ( ) {         int a ;         while ( cin >> oct >> a )         {                 stringstream ss ;                 ss << a ;                 string str = ss. str ( ) ;                 if ( str [ 0 ] == str [ str. size ( ) - 1

LVL 0 - Zadanie 10

Autor: Alicja Musiał Napisz program, który przyjmie imię i określi (z dużym prawdopodobieństwem) czy jest ono żeńskie czy męskie. Przyjmiemy, że kobietą jest osoba, której imię kończy się literą "a" (oczywiście jest to uproszczenie np. Kosma jest imieniem męskim). Posiadając informację o rodzaju imienia dostosuje do niego odpowiedni komunikat powitalny: - dla imienia żeńskiego: "Witaj << imie >> moja piekna kolezanko!", - dla imienia męskiego: "Witaj << imie >> moj przystojny kolego!".

Zaokrąglanie liczb rzeczywistych do całkowitych

  W niektórych zadaniach wymagane jest zaokrąglanie liczb rzeczywistych. Ogólnie polega ono na tym by  przekształcić liczbę rzeczywistą w całkowitą (czasem to ta sama wartość np. 2.0). Najczęściej wybieranymi zaokrągleniami są: zaokrąglenie w stronę zera, zaokrąglenie do najbliższej wartości.    Pierwsze z nich można opisać jako usunięcie części ułamkowej liczby np. liczba 3,14 po zaokrągleniu tą metodą stanie się 3, dla -3,14 otrzymamy -3, po zaokrągleniu tą metodą 3,75 otrzymamy 3.     Tę metodę zaokrąglania można zrealizować za pomocą rzutowania np.  a = ( int ) a ;    Druga ze wspomnianych metod służy do wyznaczania liczby całkowitej najbliższej przetwarzanej wartości rzeczywistej np. dla 3,14 otrzymamy 3, a dla 3,75 dostaniemy 4. Dla liczb ujemnych analogicznie dla -3,14 otrzymamy -3 a  dla -3,75 dostaniemy -4. W procesie implementacji tej metody pomocne znów okaże się rzutowanie. Tym razem nie obędzie się bez dodatkowych działań.     Musimy sprawdzić cz