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 Xwersja 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>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;

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>usingnamespace std;int main(){int a;     string s ="123";     stringstream ss;     ss.clear();     ss << s;     ss >> a;cout<< a*2;return0;} Int to String (int2str)
#include <iostream>#include <sstream>usingnamespace std;int main(){int a =123;     string s;     stringstream ss;     ss.clear();     ss << a;     ss >> s;cout<< s;return0;}Float to String (float2str)
#include <iostream>#include <sstream>usingnamespace std;int main(){float a =123.321;     string s;     stringstream ss;     ss.clear();     ss << a;     ss >> s;cout<< s;return0;}

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>usingnamespace std;int main(){int a;while(cin>>oct>>a){                 stringstream ss;                 ss << a;                 string str = ss.str();if(str[0]==str[str.size()-1])cout<< str << endl;}return0;}
Co robi poniższy kod?

#include <iostream>#include <sstream>usingname…

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!".

LVL 0 - Zadanie 9

Autor: Radosław Furmaniak
Napisz program który, sprawdzi czy trzy wprowadzone liczby tworzą trójkę pitagorejską, tzn. czy suma kwadratów dwóch pierwszych jest równa kwadratowi trzeciej.

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ć czy dana wartość jest dodatnia czy uj…