Gra – Szubienica.

Szubienica.

Popularna gra: Szubienica! Polega na tym, że komputer losuje wyraz z puli wyraz wpisanych w program. My podając litery odgadujemy ten wyraz, zaś kiedy nie ma danej literki w wyrazie to jest to błąd i buduje się szubienica. Koniec gry jest wtedy, gdy odgadniemy wyraz lub zbudujemy całą szubienicę. Można rozbudować program o kategorię (poziomy) zgadywanych wyrazów, np. pierwszy poziom wyrazy 3-literowe, następny poziom 4-literowe, itd. Continue reading

Losowanie liczb

Losowanie liczb w java.

boolean nextBoolean() – zwraca wartość true lub false.

double nextDouble() – losuje liczbę typu double z zakresu [0.0; 1.0]

float nextFloat() – losuję liczbę rzeczywistą z zakresu [0.0; 0.1] i zwraca ją jako typ float

int nextInt() – losuje liczbę całkowitą z zakresu jaki może przyjmować typ int.

int nextInt(int n) – uwaga na zakres: [0;n)

long nextLong() – losuje liczbę całkowitą z zakresu jaki może przyjmować typ long.

void setSeed(long seed) – ustaw początkową wartość dla generatora liczb losowych. Continue reading

Matura 2018 (maj). Zadanie 6. Centrum danych

Matura 2018 (maj). Zadanie 6. Centrum danych

Pewna firma utrzymuje centrum danych, w którym znajduje się kilkaset pracujących komputerów. Specjalny zespół pracowników odpowiada za wykrywanie i usuwanie awarii komputerów. Pliki komputery.txt, awarie.txt oraz naprawy.txt zawierają dane niezbędne do wykonania zadania.

Plik komputery.txt zawiera opisy maszyn znajdujących się w centrum w 2015 roku, każdy wiersz tego pliku zawiera kolejno:

  • numer komputera (unikatową liczbę całkowitą) – Numer_komputera,
  • sekcję, w której znajduje się komputer (sekcje oznaczone są wielkimi literami alfabetu
    angielskiego: A, B, C, …) – Sekcja.
  • pojemność dysku twardego (liczoną w gigabajtach, liczba całkowita) – Pojemnosc_dysku.

Przykład:

Numer_komputera Sekcja Pojemnosc_dysku
1 R 700
2 N 130
3 E 300

Plik awarie.txt zawiera informację o awariach komputerów w 2015 roku. Każdy wiersz tego pliku zawiera kolejno:

  • unikatowy numer zgłoszenia awarii – Numer_zgloszenia,
  • numer komputera, który uległ awarii – Numer_komputera,
  • datę i godzinę wystąpienia awarii z dokładnością do sekundy – Czas_awarii,
  • priorytet zgłoszenia – liczbę całkowitą określającą w skali od 1 do 10, jak krytyczna jest
    awaria – Priorytet.

Przykład:

Numer_zgloszenia Numer_komputera Czas_awarii Priorytet
1 365 2015-01-01 04:40:55 8
2 249 2015-01-01 06:08:24 3
3 312 2015-01-01 06:33:43 4

W pliku naprawy.txt zapisane zostały raporty z prac, jakie wykonał zespół w 2015 roku.

Każdy wiersz tego pliku zawiera kolejno:

  • numer zgłoszenia, którego dotyczyła naprawa (mogło zdarzyć się, że jedno zgłoszenie awarii wymagało kilku napraw) – Numer_zgloszenia,
  • datę i godzinę zakończenia naprawy z dokładnością do sekundy – Czas_naprawy,
  • rodzaj naprawy (słowo restart oznacza ponowne uruchomienie komputera, wymiana –
    wymianę jednego z podzespołów komputera) – Rodzaj.

Przykład:

Numer_zgloszenia Czas_naprawy Rodzaj
2 2015-01-01 20:08:15 restart
7 2015-01-02 16:30:15 restart
4 2015-01-02 19:37:03 wymiana

Dane w wierszach plików są oddzielone znakami tabulacji, pierwszy wiersz pliku jest wierszem nagłówkowym.

Za pomocą dostępnych narzędzi informatycznych podaj odpowiedzi do poniższych zadań, zapisz je w pliku wyniki.txt, a każdą z nich poprzedź numerem odpowiedniego zadania.

Zadanie 1.

Znajdź 10 najczęstszych rodzajów dysków (czyli 10 najczęściej występujących pojemności) wśród komputerów w centrum. Dla każdej ze znalezionych pojemności podaj liczbę komputerów z takim dyskiem. Posortuj zestawienie nierosnąco względem liczby komputerów z dyskiem o danej pojemności.

Zadanie 2.

Znajdź wszystkie komputery w sekcji A, w których trzeba było przynajmniej dziesięciokrotnie wymieniać podzespoły. Podaj ich numery, a także liczbę wymian podzespołów dla każdego z nich.

Zadanie 3.

Pewnego dnia nastąpiła awaria wszystkich komputerów w jednej z sekcji. Podaj datę awarii oraz symbol sekcji, w której nastąpiła awaria.

Zadanie 4.

Znajdź awarię, której usunięcie trwało najdłużej (czas liczymy od wystąpienia awarii do momentu zakończenia ostatniej z napraw, jakiej ta awaria wymagała). Podaj numer  ogłoszenia, czas wystąpienia awarii i czas zakończenia ostatniej naprawy.

Zadanie 5.

Podaj liczbę komputerów, które nie uległy żadnej awarii o priorytecie większym lub równym 8 (wliczamy w to też komputery, które w ogóle nie uległy awarii).

Gra – Zgaduj zgadula.

Popularna gra: Zgadnij o jakiej liczbie myślę! Polega na tym, że komputer losuje liczbę z zakresu [0;100], a my musimy odgadnąć tę liczbę. Wynikiem jest po ilu razach została odgadnięta ta liczba.


C++


#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#include <cstdio>
#include <windows.h>
using namespace std;

int main()
{
  char znak;
  do {
    system("cls");

    srand(time(NULL));
    int liczba=rand()%101;
    int zgadywana_liczba;
    int ile = 0;
    do {
      cout << "Zgadnij liczbe o jakiej mysle z przedzialu [0:100] : ";
      cin >> zgadywana_liczba;
      ile++;
      if (zgadywana_liczba>liczba)
        cout << "Podana liczba jest za duza." << endl;
      if (zgadywana_liczba<liczba)
        cout << "Podana liczba jest za mala." << endl;
    } while (liczba!=zgadywana_liczba);
    cout << "Brawo! Zgadles po " << ile << " razach!" << endl;
    cout << endl << "Czy chcesz zgadywac jeszcze raz? [T/N]";
    cin >> znak;
  } while (toupper(znak)!='N');

  return 0;
}

JAVA


import java.util.Random;
import java.util.Scanner;
public class ZgadujZgadula {
    public static void main(String[] args) {
        // stworzenie obiektu klasy random
        Random losowanie = new Random();
        // losowanie liczby z zakresu [0;100] i przypsianie do zmiennej całkowitej
        int los = losowanie.nextInt(101);
        int liczba = 101;
        int i=0;
        do {
            i++;
            System.out.println("Podaj liczbę o jakiej myślę.");
            Scanner wej = new Scanner(System.in);
            liczba = wej.nextInt();
            if (los == liczba)
                System.out.println("To jest zgadywana liczba.");
            else if (los > liczba)
                System.out.println("Podana liczba jest za mała.");
            else
                System.out.println("Podana liczba jest za duża.");
        } while (los != liczba);
        // wyswietlenie tej losowej liczby
        System.out.println("Zgadłeś po "+i+" razach.");
    }
}

Matura 2018 (maj). Zadanie 5. Zbiornik

Matura 2018 (maj). Zadanie 5. Zbiornik

Rzeka Wirka co roku wylewała. Aby temu zapobiec, wybudowano na rzece zbiornik retencyjny. W kolejnych wierszach pliku woda.txt znajdują się dane dotyczące dziennego dopływu wody z rzeki Wirki do zbiornika retencyjnego w kolejnych dniach z lat 2008–2017. Plik zawiera 3 653 wiersze. W każdym wierszu podane są dane: data (rrrr-mm-dd) oraz liczba metrów sześciennych wody, jaka dopływała do zbiornika w ciągu doby. Dane oddzielone są znakami tabulacji.

Przykład:
2008-01-01 2275
2008-01-02 2831
2008-01-03 4615
2008-01-04 4084
2008-01-05 3258

Za pomocą dostępnych narzędzi informatycznych podaj odpowiedzi do poniższych zadań. Odpowiedzi zapisz w pliku wyniki.txt, a każdą odpowiedź poprzedź numerem odpowiedniego zadania.

Dodanie danych do programu:

Krok 1. Wybieramy opcje z pliku tekstowego.

Krok 2. Wybieramy odpowiedni plika zawierający dane.

Krok 3. 

Krok 4.

Krok 5.

Krok 6. Wskazanie miejsca gdzie ma importować dane.

Zadanie 1.

Podaj rok, w którym zbiornik retencyjny został zasilony łącznie największą liczbą metrów sześciennych wody z rzeki Wirki.

Rozwiązanie:

Rozpocząć musimy od wybrania roku z daty za pomocą funkcji =ROK(A2).

Do uzyskania odpowiedzi wykorzystamy sum częściowych.

Wybieramy sumy częściowe ze wstążki Dane.

W ustawieniach sum częściowych wybieramy Rok, Suma dla pola m3. Po wykonaniu sum mamy wynik, suma wszystkich metrów sześciennych dla każdego roku.

Do wybrania roku w którym największą liczbą metrów został zasilony zbiornik retencyjny wykorzystamy sortowanie A-Z (lub Z-A).

Odpowiedź:

Rok 2015 – 5364691 m3

Zadanie 2. 

Jaki był najdłuższy okres liczony w dniach, w którym codziennie dopływało do zbiornika retencyjnego co najmniej 10 000 metrów sześciennych wody z rzeki Wirki? Jest tylko jeden taki okres. Podaj datę początkową i datę końcową tego okresu.

Rozwiązanie:

Do obliczenia ilości dni proponuje wykonać następujące czynności. Po pierwsze sprawdzamy którego dnia powyżej 10000 m3 wody dopływa do zbiornika z rzeki. Jeżeli jest tak, należy obliczyć ile dni pod kolei spełnia ten warunek.

Po wykonaniu funkcji: =jeżeli(B2>10000;1;0) i =jeżeli(C3=1;C3+D2;0) należy sprawdzić jaki okres był najdłuższy oraz możemy sprawdzić daty od kiedy to było.

Odpowiedź:

Ilość takich dni to: 55.
Pierwsza data to: 2015-03-17.
Ostatnia data to: 2015-05-10.

Zadanie 3. 

Utwórz i podaj zestawienie łącznej liczby metrów sześciennych wody dopływającej do zbiornika retencyjnego w kolejnych miesiącach 2008 roku (od stycznia 2008 do grudnia 2008). Na podstawie zestawienia wykonaj wykres kolumnowy. Pamiętaj o czytelnym opisie wykresu (tytuł wykresu i opisy osi).

Rozwiązanie:

Przed rozpoczęciem obliczenia należy wybrać z daty nr miesiąca w 2008 roku za pomocą funkcji =MIESIĄC(A2). Następnie do uzyskania odpowiedzi wykorzystam sumy częściowe dla zaznaczonego obszaru m3 i wybrany miesiąc z daty (tylko 2008 rok).

Należy utworzyć wykres dla danych:

Odpowiedź:

m[3] Miesiąc
95433 1
94730 2
109439 3
632931 4
329203 5
85628 6
166597 7
139747 8
282342 9
170729 10
222440 11
172072 12

Zadanie 4. 

Poniżej opisano cykl pracy zbiornika retencyjnego.

1) Na początku doby, zaraz po północy, wykonywany jest pomiar objętości wody w zbiorniku i na jego podstawie realizuje się pozostałe działania.

2) Jeśli pomiar wskazuje w zbiorniku więcej niż 1 000 000 m3 wody, to nastąpiło tzw. przepełnienie zbiornika. W takiej sytuacji, niezwłocznie po wykonaniu pomiaru i stwierdzeniu przepełnienia, nadmiar wody powyżej 1 000 000 m3 jest wypuszczany ze zbiornika.

3) Codziennie rano (o godzinie 8) ze zbiornika wypuszcza się 2% objętości wody wykazanej przez pomiar zaraz po północy. Ilość wypuszczanej wody zaokrągla się w górę do pełnych metrów sześciennych.

Uwaga: pomiar wykonany po północy 2008-02-01 wskazał 338 406 m3 wody.

Uwzględnij opisany cykl pracy zbiornika retencyjnego oraz codzienne dopływy wody z Wirki i przyjmij, że pomiar w dniu 2008-01-01 wskazywał 500 000 m3 wody, a następnie:

a) podaj dzień, w którym pierwszy raz wypuszczono nadmiar wody po przepełnieniu,

b) podaj, w ilu dniach z podanego okresu (tj. od 2008-01-01 do 2017-12-31) w zbiorniku w momencie pomiaru znajdowało się co najmniej 800 000 m3 wody,

c) podaj, ile najwięcej wody znalazłoby się w podanym okresie (tj. od 2008-01-01 do 2017-12-31) w zbiorniku (w momencie pomiaru), gdyby całkowicie zrezygnować z procedury wypuszczania nadmiaru wody powyżej 1 000 000 m3, a zbiornik miałby nieograniczoną pojemność.

Rozwiązanie:

Odpowiedź:

pkt. a)  2008-04-26

pkt. b) 3544

pkt. c) 1 103 040

Matura 2018 (maj). Zadanie 4. Wega

Matura 2018 (maj). Zadanie 4. Wega

W ramach projektu WEGA naukowcom udało się odczytać sygnały radiowe pochodzące z przestrzeni kosmicznej. Po wstępnej obróbce zapisali je do pliku sygnaly.txt.

W pliku sygnaly.txt znajduje się 1000 wierszy. Każdy wiersz zawiera jedno niepuste słowo złożone z wielkich liter alfabetu angielskiego. Długość jednego słowa nie przekracza 100 znaków.

Napisz program(y), który(e) da(dzą) odpowiedzi do poniższych zadań. Odpowiedzi zapisz w pliku wyniki.txt, a każdą odpowiedź poprzedź numerem oznaczającym odpowiednie zadanie.

Uwaga: Plik przyklad.txt zawiera dane przykładowe spełniające warunki zadania. Odpowiedzi dla danych z pliku przyklad.txt są podane pod pytaniami.

Zadanie 1.

Naukowcy zauważyli, że po złączeniu dziesiątych liter co czterdziestego słowa (zaczynając od słowa czterdziestego) otrzymamy pewne przesłanie. Wypisz to przesłanie.

Uwaga: Każde co czterdzieste słowo ma co najmniej 10 znaków.

Dla danych z pliku przyklad.txt wynikiem jest:
NIECHCIMATURAPROSTABEDZIE

Rozwiązanie:

#include <iostream>
#include <fstream>
#define N 1000
using namespace std;
int main()
{
 ifstream plik;
 plik.open("sygnaly.txt");
 string t[N];
 for (int i=0; i<N; i++){
  plik >> t[i];
 }
 plik.close();
 ofstream w;
 w.open("wynik.txt");
 for (int i=39; i<N; i+=40)
  w << t[i][9];
 w.close();
 return 0;
}

Wynik algorytmu:

ZAPISZODPOWIEDZIWPLIKUTXT

Zadanie 2.

Znajdź słowo, w którym występuje największa liczba różnych liter. Wypisz to słowo i liczbę występujących w nim różnych liter. Jeśli słów o największej liczbie różnych liter jest więcej niż jedno, wypisz pierwsze z nich pojawiające się w pliku z danymi.

Dla danych z pliku przyklad.txt wynikiem jest:
AKLMNOPRSTWZA 12

Rozwiązanie:

#include <iostream>
#include <fstream>
#define N 1000
using namespace std;
int main()
{
  ifstream plik;
  plik.open("sygnaly.txt");
  string t[N];
  for (int i=0; i<N; i++){
    plik >> t[i];
  }
  plik.close();
  int maks=0, nr=0;
  for (int z=0; z<N; z++) { // sprawdzanie kazdego slowa
    int ile=0; // zerowanie ile liter jest roznych w slowie
    for (int litera=65; litera<=90; litera++) // sprawdzanie kazdej litery w A-Z (ascii)
      for (int x=0; x<t[z].length(); x++) // sprawdzanie kazdej litery w slowie
        if (t[z][x]==litera) {
          ile++;
          if (ile > maks) { maks = ile; nr = z; }
          break;
        }
    }
  ofstream w;
  w.open("wynik.txt");
  w << t[nr] << " " << maks << endl;
  w.close();
  return 0;
}

Wynik algorytmu:

SUOLDQWISCDRFLRWHZBNTMIAPHALMNCWHVGMXOZSQNXWXSFELZVTUTILXWKCTYBQYSUAKNYJKRXDJQYHXAQGWN 26

Zadanie 3. 

W tym zadaniu rozważmy odległość liter w alfabecie – np. litery A i B są od siebie oddalone o 1, A i E o 4, F i D o 2, a każda litera od siebie samej jest oddalona o 0. Wypisz wszystkie słowa, w których każde dwie litery oddalone są od siebie w alfabecie co najwyżej o 10. Słowa wypisz w kolejności występowania w pliku sygnaly.txt, po jednym w wierszu.

Na przykład CGECF jest takim słowem, ale ABEZA nie jest (odległość A – Z wynosi 25).

Dla danych z pliku przyklad.txt wynikiem jest :
AAAAAAAAAI
AAAAAAAAAE
AAAAAAAAAC
AAAAAAAAAH
AAAAAAAAAC
AAAAAAAAAI
AAAAAAAAAA
BB
AAAAAAAAAA
AAAAAAAAAA
AAAAAAAAAB
AAAAAAAAAE
AAAAAAAAAD
AAAAAAAAAI
AAAAAAAAAE

Rozwiązanie:

#include <iostream>
#include <fstream>
#include <cstdlib>
#define N 1000
using namespace std;
bool spr (string t) {
  bool wynik = true;
  for (int x=0; x<t.length()-1; x++)
    if (abs(t[x]-t[x+1])>10) { wynik = false; break; }
    else wynik = true;
  return wynik;
}
int main()
{
  ifstream plik;
  plik.open("sygnaly.txt");
  string t[N];
  for (int i=0; i<N; i++){
    plik >> t[i];
  }
  plik.close();
  ofstream w;
  w.open("wynik.txt");
  for (int z=0; z<N; z++)
    if (spr(t[z]))
      w << t[z] << endl;
  w.close();
  return 0;
}

Wynik algorytmu:

PUOMQVMRNOSNVONOQOQMPPMRTVRSVRUNMOUSVUOTTMNRVQX
DBCHDGHGBCCFFEBAABFHBBFDL
QQMLKKQNOHPKKPJOLHIPJKLKQIIHQHPNKNQPHNKLKQNIMLQPNLPMHNNIPNJJONQOHKKQOIHOHHJMOJPMNIPIKION
BAFBGEBGDECGGCAGDFEDFAGGFBBEAEFDBGFCAGBAFECGDDCCAECFDBDEBAGL
FABAFBFAFFCGEFGFFBDBEBAABEL
JLMLKMFKEKDEGFIGIGMGHMIDDKIKHFGJJIMFMEMKLO
PTPNTOLNOPOSKLQOQKNTQTPLPNLNRRSTNNSMRNNMLPNLKORTSMNKRTLLLLNRKKOLKTRQOQOQONKTKRSPTTORMKQTRNOKKQ
MROSMNMOQLMLPQNQJRQNNKNOMKPOQPNJPLSSLMU
RQVPNSOTSRRSTSWVPROQRRVUWNTVURSSWVNQSVNVTNPUROVPNROWQWWPPVQRUWPUSQTWUONSTUVORSNVQWQWTSRNVVVQTUWY
BCGEBHAHBADFCDDAEEAEAEFBHHEBHCADAFDBBGBHBGEFCABHAHEDDHADBHBDBFFFDCADDAHFHBAEHCAGFAFDFBFHGHGL
JONLNPOJRPKPMMSQOLPLNNMKLJKOPRKRKNSJMSOJQPLOOLSOJQSOLLOQKSOJJMNRKMJMJPQKJRSMJQ
MMKLMPPPMTMOOMPRPTKMKQKMKSOKMKMSSPLLOOSOTNKSTPQMNSOPNOPTMTRLNQQPSSLPOKOLRLMTNV
MTNLLNPLLNPOPOSSNSORSRRSNNRNQQMOQLKPOPLTQKQRLRPOPSNLRRNKKLROMKRTNSRPQMKNPMRRNTTSLTMV
TWUSWQTTOUXUTVTWWUTSXUWXWXRPSXOTQQUPPXUPRUOSURVQWSWSOUQSXOSQQXTWSWTW
HCHDFCJEKCHBEHEIJHKM
GLKKHHJEFKDDGDFGEDIMHDGJEMGFIHLEHLJEEGLHKKHFFEKGKFJELIIGIHLGMDMLLIMMIHKHKEMMILLO
IICEGIFCCGBEBCKDBIGIH
KKLJIOIIKJMJJRNLPRKPNNKRKINKJKKNIPORJOJRJLORPKNMNJIQLNKPMMPMNT
NLEFLLNJGKFHP
BCCECAFCBCBFDFAFDDDAADBECABFAAEEBABCFACFDFABEDEABEFEEDBAEAECFACEDDFFFBBEDEADDBFEEEBABEFAEBBEBEDL
IFDEKFCJKGICIEECEGCFJJJICHCKJGBCEBFGKEDGDICCCDFDEIHBGBIKJICGBFIEIKM
FAAEEDBACDGEDCEBGEEFAAGBCFEFCCDFEGGGACFBBAGGEADGAAGEE
HHGINMJFLJMGNLQ
PNMTNQSOQOSTQLPTPTRNPMMQKTQNKPTROORQSTTSTKKTKLTTMNMQQSQKLKROSONOTNROONOPTQPPKMRTKMROPKTLTLRKQQKMOM
ULPOQLRPQUOSNUSMUMPSSULLTW
UPUNNNSTMUORMQMRX
OO
YSKJKRUV
NSY
FH
KBJS
IEIS
AE
DGO
QNTY
BJP
PINQGOR
VSQRYRRWQYQWXWXUUXPVWWUTSXYPXQVPSVXWYRXXRSPPYUVYWQUVSSPQTWXPTQPQTYSUSWTYRPXUX
RMTRVVNQX
DAACAEDDABDBBCADAEDDCABABDDDBCEBCDEAEBCEDAEADDABBEBBAAADBDDCCCECBEABBBBCBEBCABA
LKFLIGCHELFFIHLEFILHCIN
HFJEDIGFGIFFIJJKHGDFDJJDFEDHGKHJLGKEJHEEIILKIHKDHFLIEEEIHDKJEDLO
ABBFGBCEECFECCFAFBFBFCBCDADL
FDEEBCDBDBFFFCCFCADBCBEEFAFFCEAEDDFCFCDDACEFCEBFDFCCFBFCCCBDDEADCACBDBBB
SOOMMRSNPUTNQMQTQVSOOUSPOVVRNNRQTMOVSPTMVPVOUSNMTVNMUTVPNNQTSUMOX
DCCDEBCHCHADBHFBFHBCGCAAFBHBHDEGCCFFGAHEGCCHHECDAFCECFEEBEEFEE
ADBECABEEADFCBCBFEDL
UMNQOPRLLNNLOMMLQTUMMRUMMUOTSSQOUNQTNUMNMOROTUUORSNUSUPORNMRRMW
URWXRPRSXPQQROPSVTPVRSPOPTRXRUOVQPSPWPOUSOOWWXOPOPSOXRROUUSQWRTUUWSPTQVRQSTRWUUPZ
OPQPHIHQQIQLQPPMNIJPIPLON
LOPNOKPTKNKNPOSRV
DDEDGLCKJJHLHGIDFICFDIJEGDCHEIGLLCGFCHKKCFKHFGGIIKKGCEFN
EEL
HJFFCJDKHFGCDFGGEJJJHBFICJEDCJCGBIJEKDDCCKDDGCFJHHJFHFGKFCEGKKBCGHHCHCIKDIKKJKIHM
LKNPMOKKKOOJNMKJJNSSRKOQRJSJSKSPSJSLKQRJJPSPRPLOONKPLMPRNOROLRKPRRNQJMPSNPMRNRQNJQSMNMPRJNMNJNMPOPMU
SRMQOLLOLTSPUMRUMRTNPRRLSUSRTRT
MTPQONOOTUMVTSRTUVTSRSVQNVMVTQQPSSVNMVTSTSOTX
MPIIMKILMIIJRIQMQQQQJPINJOIMKMRRT
ACBHABAAIDAEGFHDHIAHCBDBL
OKMKMLOJHMLQMNNPPOHIPHMHNIIHIJPJPPOPJJNONNNMQIMNMHQJNQJPOKIKMJJQMQQJOKKPJHNNMPHQOS
OJQMKJOPQKKQOORKKOMNJQKKMNKQRNNQOLJKNNMSKLMSSMSRLNPRSNO
DIIKDFEDBGJBFJJGJGDBCKM
LJHEJFMMKELLNFLIJJP
DFBBHGBFDFDEHFDFEEHEBGFBEAIFGL
FBBBBGDCAEAFDDEFAGCGDFBL
HBDHIFAGHAJHADDCECACFHDHCHJJFDIGEFGBBGEICDJGJAJFDGAHGCBCEAFDEJADGJAHIJGDEDBIDECAJBEI
UUPTQPOMPMORPNRMPVOOPVNPMQRROSOUOPQUPNUQQPUPNTTPMQUQVTTSUTRVPRORPURNQORUPPSUNPRSPX
AEACFEHGFICDEL
BBEACBBABEDBDEBABCBBDDDBCABCBECEABDDEEEAEEDEABCCEABDAEBEACCABCBADEBBBECL
NMFEN
FGMLHKMJEHLKFHKLIILNKGHIFHFLLIFELKMKEFEMNEHGKNMIJMLLJHFIJJGKEFFFJHKGHKHKKNGLMHNMHHIEFFEEILNMEGKEJP
SKTTPNPKQSQRMQTQMSTMMTSOOPOPMTSOMOTSTOMTOKNNRPPMRKQQPTNQNNLRNONRKORSLPQTOLKSOKMMNRKPKRQKQNPMPLV
FFEEEFFDFEEEFCADAGADAGGGHHDCHCDAHACGBHAHCFBBCEAAFHL
PGKJIGONMNNKIIKIIKNMGPMGLIOLHHLJHKKLNNGNOHGNHONNPNGNLMPGPINGMOOJIKMGGLJLLMIHGHLJLMOGPHHLPMR
CCHHGEHEHBGAEDCGHCECHFFHECDEDCHECABFHDGDECBGFAH
FBDAECFFECEBFFABFCDCCBBECCFAEL
GMKKMGMHLMFFOMGOKKFOMOIJKMGHIKHMJHOJHKOFJKFIGMOLLKLGMLHNNKFOKOGIMINLJLKNLQ
OMRMMUQSTUNRMLTOUPLSUNRTQQPUMQSPUSMOMMOSQRLOTPNTQTSNOLLULPQUMLSSMRRMPMMRLTTMURPSNOQRSNUQQNSMQPMOW
XWYYYXWTTXTYWWUWYUXWVTVXTYYTYYTTXVVVYWXTUTXXWXYYUUTXTXT
JOLLHOMLOIJIJNILJIJOMKGIIMHMKONHNNGMJFNKLIQ
SXTQUOWWXTOQVUQPUVOVUQRWXTSRSSWSPXXRPQTWVPVXUWOTPPPQSRXRROQTXOTTUXOPUSOWWTOUXSTTWZ
UOWSUNVUY
MINPQIOJILNQMLQQMPNJQOOPNQPRLNQOIPIIQLKOILPILKQLQMNMMQKKQRRKJNKQKJOLNILMOJLJKT
EFCHGGIJKFDBFKFCEGHHFFGGHGFHKEEGKHIFBJBKDGFGCFKIIEHGICGFJH
DAAAABFHEHBFHBECAAEBEAHGADFCDAFDHCAFCDDGADBBDEABFACAFEHABGBCDGAGHBHCEEHGBHCL
PPKIOIGPHGKKLKKKOLLHMKHGOJNPKIHKKLGKOKMIGGMKIGILLIKHHPLIHLOPIHLMOGHOIPNHHJNKR
GDBCHEGFAFDACFFDEECGHFCDGGEBCFEDFGBBFCDEECEHFEGFBFGGEAAGL
RQSRQSRSRRLPNNLQTTQMOSRTQPQLPLPLPMRMNM
PQPQSPMLRRTUTTW
JIKDBGKJJKHIBIHJBCEJBCCFIEJEGDDBDDJBJFM
CBBCEGCGFFBCEEGADCDGL
SSQRTSNOUPOSVQUOQVSPOQRSNORUUTSNSSWRRPPVOUQOUU
NKOOPMGOLKKMIKOLJHMPMPNJLGPIJLNNPJGPGHHGHOKR
JHLMNNGOMPNGGMLJNLOHNLNHMMOPILMHGMGHLOPNLLPNGPMGMLGNIOKHOMHOPGKMKPOHKOPGHKMOPOHGOPHHHMJHMKR
EABEGFBFAGDEECGEBFBBFFAECDGGFCBCFDCEABDGBGEBEEFFGCGDDAAGFDBG
DDCDGHECFDCDCDDAAACBFEBFDGBFGABBDHFHGDBBEAGHDDDEGBAFGFHAFAFBFGADBGAFCDCCEBDGCBCGHBCHGL
JJCCKDEFGIDCLLCHKHLEGLFHHDCHKEHDLCLIDILEGKHHEKLCCJFKDDKJIHJIGFJKGGHELHJGEFEHELN
JFKKFMJFMIILOLFOMOMGNFNLKHKHNGLOJJIOIOJLLKLFIJIHOJFLLKLGIGGIILNNJMOLIGGHLFINOOOJ
SPQRLLLPSTSNMQPSMUQPPMORPNNUSLMURNNW
VVXUVSUUTWSWTXYTYUVTTWTYSWXUSWYTTXTYXVSWUSVSYUSYTUUTXUSWTSUYVTXYUXTYXVYUWVSVWWVUUTSTXUWS
POOOSKKSLKOQQMPQPKTLPTNKMTRNPLMLKPRNRKMSMNMLSKLPQTLPRSRPOTLRPTNPRPTONOPKRNSPRMPQNLSV
KTSTSORLOQNSRLQRQRQQLLKNNNSNNNSPPMOMNRMQNLQOTNPQSTRPPPTQPTLLLQSOMSMOSOORQKTNMKNNONPNPNPPMTRNOV
NKSRKRKLKQSLOOKOKSSMSMLMMNRRPPQPPQPQLNTSSQLV
HFBCABEECHDDHFDHFBCIDCBCHHEDBHFGFDCIACGDFGEDFBCDDIDDGFEFHAHDL
JHJKDFGHHFGFHEJGGGIDCEHFLFCFDJDLDJHGGCGILCLKJHLKDFGICL
QNNQPUPQPVMTSVOQMQNVQVPSVVVNMTQNVMPOOUSMPORVQMVUOPTVSPMPNSRVSPNRRNSTROUUSOUNQSQOPUOQSVX
QRVOPUTTNUNQSMUPVMPNVQNVTUPRMQTRNQUX
OGHFKHFKHONHFFIHHFNKINIOFHKIONMONNOGLMFOGOJKNFHGILOHHOIHFIHNFGGHJGGHIFINMNFNHFLMOIMLOMNMLJIHOGNJHN
TOUWOOQQZ
EDIEBFAIBL
OJMNHMJMJKPKPKLPPIHNMMMPNHKMQNIJJNOLQKHKIPQQPQMIKNIHHIOJONKOJJLOOOMKLOQKKHNJJHPJJKMJHO
EFGIDIEJJFJDCJFBDCGIHDKKKHDIBKJEIKCCHHGIHCFDHGJHHEIGDEIFGJKIHEDCJDEHDECIHBKHFGFGFFIHDBFJFM
DAAAECEFAECAEEFAFBFFAAFEBCAFBDCFAFDABCEAFCEAEECDCABCBCEBDCEL
RUSRQNMNX
DJJBHGFGGDKIKCHKGKBFEKFEFJEGEHCHIFBDBGKJKCDGDCIDIBEBDGCGFKCGFFCHJJEJBJCIHKKBHIEGKDG
KBKJEEFFCEFEEKICGCIKIDKEFDDM
YWUUSRXWSQTYVXVVUTRXWWVVUQQVTSXUWWVXUXTSTSSRWTTWXWUYURVYTWTXXVYVUUWURQUYUU
MOQIPPOMHJMJJLNKKOIJLIJMMQPIPJMNMMQ
TXTUVUWWUUUWUWUXWYWXXTTXWWYWUVXXXVYWYWYVUYYUYTXVUXUTTUYTYUTXYWXWTVVYXTYWUWWWUYUVTUXVTVWYXWVYWV
LOMTSKNMLPMPSPMNLLPKTTPQPSRLOOPLQQRPOTLKOMSKLOTRSRKSTKKTNRSOONONSTKQV
HDICGHDEEN
EEEEB
WUYTXVXUXVWXVTUVTUUTUTWVVVTUXXUVTXUVYVYXXUUYWVUUUVYYYUXTUUUTWUVYXWVYTYUTYYTTWUUVXXUVYXTUXTWTYYVT
NTVTQQQOPOQRNNVRURSRMTRQUSOPNSOPMTQPQTQTPQQVUQROVMPQQX
QLKPLMQQOKRNQRPTTSLSLNOMQROQKTONOTTTNTNPKNKPNNPOOKQRLLQOLV
WXVUYUXYUUVYXTWVVTXVYYVXXWWUTUXXUVXWUYWTWTWWUWXVUYXYUYVTTXUUW
WPRORSTRTVOSOTTXRRSXSSQTQORRQXPPOXUXUVRSWPOWQOPXXTVRSSXTVOPOOWTSPXXUTVQTRUPVXVOSSWTQUWVPVXUZ
JIKBFIKIBFBBHBJIHFIKHDGIIEFEFHEKCKBBGCGCKCKBICFCFFEDDBHJEFDIHIDKHICIBEHEGHCBGHGGFM
DKGO
WVSSQSSXRUUPVQXVTPYSTYURWTSURYVRVPPWXVXUVWQUXQSWWUWTXTSU
MILQKMMIPNKROJQRLMJJROLJIILKOQKOOJQIJNNQRPMQLIMNQJRIJLPLLJPNOJLNIJILPKKRKJLLOKJOOKQONOQJT
DEBDBDCDECCABAAEBBDEDBCCADA
DBEFDEEDFCFBDCCCADEAECEABFBFFBBBCDDFEABBEAEDDFDDECDDDCBDEEFDBDFCFEDAABL
QQ
IEMMLGIHFKHLKIJNEKJFEJFLFLFKKJKENMFKKKLNIINNKEMIEMJHJHEKNMLFGFIGHLGEHNLENFFMEENFIMLGFP
SOTNKSKKQQLOTNTONSMSRKORMSTMV
GIDIHFGKLLKE
LRMPKMRIJRQKOLNLNMJJKOPQILRNQLPJRRMPOQORQOQRLMLINPJRKQORNPNQRQMJOJKINQRMLPNMJPLPRPIPMQRQKT
TQYQTWRPXTQSWSYVSYSWVYRWSRPTSXVXPT
VOSVQOSQQTUOOTXUTSVXUSWWRXWPXVVUSWURSWTWPSOWWXXPUTXVVXRTURSWTSXQWXWUTSOPTTPSPWQUPVXQXPVXSSOQOUXV
CDDCDCFFBFEFDCDFFEBCCDFADBBDADFFEDECABECEBDEBADEEABFEACEECDCBEFCDBDBEBAEEFDEEL
RSQWVQQVWSWPSVQUNRVUUSNNSVTWSVTRTRTPNTOSTNSNSWPNROY
UVWUYYYYXWUWXYVVWXVXVYWYWYYVUXUYUXUVWWYXWXWUVWWVUWXWUXYUYUWWYUWXVVWVWWVUYUVXXVYUWWUWXVXW
GGAGFAHGGDGEHDEGDHDGHHFDFGDGBCDACCCCDHAFDFEECEAGFDHA
GHAAGCCIIAFAEIHFHGCAEBGAGAGEDCBDCGEIBBBEDFGFHIGGCFEDBFFIBGBFEAGDGIGFDBGFHHAHFCDEBDADCHIBBACCL
NJIKQLPNROKIRRLQRKRRIRLOMNOILLT
JEDGEKJHLJEDGKDFDLDDLFHIFGLHGEELMKIHHHIEIEGILJIMJHEKDFIKKMGJMJGEIEEFLJDEKIO
EABDAADFECFAEEBBADBCBAEAADADEADBADAFEBDFEFDDBCCBBBCACBADEDEADFFEFEBFEABBDFCFBBBFCCFEFCCD
CHAHDCDDGEDBDEAAAFGABCGAECHBEHEDDBHHGAGEECGGHCGL
DEFLLLEMKTTKMMKLGJDGGDIGIJIJLIGGGEKHFJEGMFGGGDIHGEDFKKFDDMJFMDMMMHJJMFFFHHFJLEJDJFHIEEIIFEGIHLFJK
JMNOQIJJPMOLKJKOKT
EIFEACGHGGGBDBGCCBFDCGCICHDHDEEACIAHCBAHAHHIDIDGHIBIBABECGEHDCGFEFFEHBEGHBIIFIEBBCBDAEDFEADHHFFEDGIA
DJIILEDJEHGLGLDFKKDLIEEFJFJDGFGHIJIIDHILJJDJDHIFJHGCILFKEFKCHCJLGJICGLKGDKIKFIEFKCKIHLDKKCEN
UYYSRSXUWWXTXYSVVRWRTQTXXWSYVRTUW
BDABDDEAACDABBBBCBDCBCL
CEDIDGGHCCFIADAEGHGHIABBDFIGIGIEEACBHFHCFHHFBBAIBL
FFDFAFFDDBCDEBDBEADCAABCDCFFEBABDBABBDEFBDDL
KNMJKPMNOOIILPRQPOMNPLIKKIJMKPMRPMPIOROJLMRT
BFFH
QPQQOLMNSQNRRMQSMOLPQQRPOTSKSNRKQOKTMOOSV
IKCHJKBJFFEFGGFFBGGGIHFIFFHBBGCHGBGFBGJFJIDGDCCECGJBBCKEDGBBGG
IGIKGBECKIHFKFKKCCFEBGIFFBHFEBKGEEICBKKBJFKJFGICDBFGGJHKHM
GJMKKJEDJDDEIGKMKMKLFKGHLLKMDFKEIHLKEIEIJMMLKHMGMHFFGDLKKHGKDIDMEDKGFLHIFIKJFJGFKO
IJJBGAJBGDFJFHJIGJDDBFAIAGFCDAHEBEIGBCIIJBFIDEEFHDAIFJDEGAAIBHCDBCFDCGJIBD
FJIOKFGOGNNJKOMIOIMNLLOHJHOMMMGKFOOLKFOGFLLKIJHGLJLGNKHLFINGINGMLILLGHLGNHNOHLFJONIJOMLLHMNMQ
LJNKLMJOINGJOMMGLKNJLIGOMJNMLKHGNGMPNR
TRRPOURNVTRWWOWOURNQTVTRTVWOWVTOSPWOTSORTNR
ONMTTQRTOTQPUUTRNX
LTTOTPSSUNMRMNRPMUTMTW
BFBFGABGCAGACBFFABBGDHADBFFIHL
DEHDDEAHFBBCEBDFCGHDDFEHHDBCDDFECDFADAGFDGEBEFCBFADHEHAEBACGFCDDECAG
DCBAACFDFBDEBCDEDEDAFL
ONPLROQSQKPQPSKPNTLQV
QNUSNNUWSOQQRVWQRTNSPNNQTQUUTUPSOWSUTSNQTUTWSRWQTNRQRVTUNOSNUQUVNORONSRSUWPPPNRRSWQNSSWNSNUSUOOVWQ
ECBCDECABCBEBDBAEADACACDCEL
NUTNPMPNSPPQSTTPVVVVX
BEFEC
PPWROWRSUXXPTXXUOQSRWPTXUOTVWVWSSUUSXTWTUOUROQXUTOVVSRRXXRXWURXWRTTORTSOXTTSUWSSXVZ
FFMEJJHFJNKFHKFLMINGJJLJELKLHFLJHGJJIEKEELJFMIFKENINFKGLEENKHMHMMFIFIP
DGFGDBACBEGAHAHHAEFHECBFBFGBDAGFHHFAEEDEEDFFCHGEDBCCCGDBHAAHAACL
QRTWTPPURPUXWWRWOPOVXTVPXTWTOTUOOPROTOPXVUOWWWTOPOTWPTQOSWOVRPQTUTVVTSVUSRWSS
JFLKHEKHIDJGJMKFFDJGO
PSMUQPPSSPTQNTNVTMNUVSUPNRNVNOOTVRSQPSNNVUPPPVTSMRUTUVMRNRMQTQQVMSSMOSRTRT
GEEGHDEDGGAGBBDCFGHEDIGADHBCEDDEHFEGEAFDDEGEDBFGGAEAGIDIDFADHIGDHHGADFFAADHDIACECIAFFCEFADDAIL
CBCCACDHFAAHFGEEGEEHAHCAEDDHBGDEFGHFBGEGAFGGCHEHEBCGCHGL
UU
TVUPTVUWQVNVSUWWUUTWOORUPSNUNTPVUOPURVROQRUUTVRQNVROTNWRPPSUNTQSUQQTPUTQY
XVXXUUWUYTYVVWWSUWSUSSUSTYTVYWVTYTTSWSVYYYVTXYSYWSUYWXTUXVSWWWVTWYWXUSUWVXWSYUVWUXYSWTTSYVYVVTYYYVXX
JLNEKNFJFIGIIFGMEKKGMKFLNEHJHFMINJJEJNHGELIHNILGHLNJENFGGGEMFKGEKLNKKGFIELHFENKHHP
AAHEGCCGGBCECGBDBIADEDCIEICEFGBGAGA
HJKGJNNFOFOLOKLKLJFGKHGIOHJGKFLMHMGOOFKKILMOKGHMKKGIOLLMJIFOGGLNFOQ
GLICJLIIKKKDILKEDEJEFFLGECLFFIFGFHIGIJGKDFGEHGKLKDEDLCFFICGJHIJEHJFDFLDHGIDLKEEJLEDEECIJGIIGJKCCJDJF
TRSVRUUTUWRSRNPY
ABBDCAEEEBBCDAABBCDBACCCBECCBCDECEEBACEECAAEBBAEEBDEEBDABBCECBBABDAAAADEDCEDBBBCDECCCBEBECAACABBCDBA
KJJKOPSQRSONRKJQMQKNSLKRPLLMRJNJQOQJPNLOMMMOSQSRQMJOMRMOMQMNMQSPMOLPKSSOJSPNNRU
BECBDAEEDCADBCACDBCCADDCEL
QUVOTXTWRUVURXTXXWSUVTTPVPSXOUPOSUTSQUXXVWSSZ
CIDFCDGIHCIBFGJHAEEAAAAGHADGBL
GDEKFJKKLLLEJGK
BEJKBKCBHDGCBFJCBEDFGDIJBFGJJBFIIJEKCFDEDCDFGIFIHJEHCHM
LNLJFKGMEIFEKKEFHGFJNGMGENGHIKHFMJNHINGFMMGIELMIIEMP
NNQMQIOMLQPONJMLKT
JJGHLMMMFMIFHONHGOINFIJKIJGJMJOIKHNOIGHKMMGNMJJMFMHNHFOLOMMOMFIGLLNHHIKLGOIIMNFLLFFOKHNONLMNMMONMLJ
QUORROSQWUTUOUXPPVZ
CDAFDFFEDBACACDCGADGGABECGEHHAHDEFHADFBDFCBCDAFGCL
KENKLNIEMMJGHFKFHEMLGFNMFKNIHEKGGGMJJIP
UVVUXVUXWWXVXUWXXYWYWUVYYXYVXXVYXWUUXWWWYWVVWUYVUWXXYXUXYYWWWYUUXYUVWXYYUYXUUUVXXYXWUXXXUUWVUVWWYU

Matura 2018 (maj). Zadanie 2. Krajobraz

Matura 2018 (maj). Zadanie 2. Krajobraz

W pewnym paśmie górskim znajduje się n szczytów, które będziemy przedstawiać jako punkty w układzie kartezjańskim na płaszczyźnie. Wszystkie punkty leżą powyżej osi OX, tzn. druga współrzędna (y) każdego punktu jest dodatnia.

W punkcie (0,0) stoi obserwator. Jeśli dwa szczyty A i B mają współrzędne (xA, yA) oraz (xB, yB), to mówimy, że:

• szczyt A jest dla obserwatora widoczny na lewo od B, jeśli xA/yA < xB/yB;
• szczyt B jest widoczny na lewo od A, jeśli xA/yA > xB/yB.

Wiemy, że żadne dwa szczyty nie leżą w jednej linii z obserwatorem, a zatem dla obserwatora te szczyty nie zasłaniają się nawzajem. Ilustrację przykładowego położenia szczytów można zobaczyć na poniższym rysunku:

W tym przykładzie, patrząc od lewej do prawej strony, obserwator widzi kolejno szczyt D, szczyt A, szczyt B i szczyt C.

Współrzędne szczytów dane są w dwóch tablicach X[1..n] oraz Y[1..n] – szczyt numer i ma współrzędne (X[i], Y[i]).

Zadanie 1. 

Napisz algorytm (w pseudokodzie lub wybranym języku programowania), który znajdzie i poda współrzędne skrajnie lewego szczytu, tzn. widocznego dla obserwatora na lewo od wszystkich pozostałych szczytów.

Specyfikacja:

Dane:

n – liczba całkowita dodatnia
X[1..n] – tablica liczb całkowitych
Y[1..n] – tablica liczb całkowitych dodatnich
Para (X[i], Y[i]) to współrzędne jednego szczytu, i = 1, 2, …, n.
Żadne dwa szczyty nie leżą w jednej linii z obserwatorem.

Wynik:

x, y – współrzędne skrajnie lewego szczytu spośród tych opisanych w tablicach X i Y.

Algorytm:

#include <iostream>
using namespace std;
int main()
{
int n=4;
int X[n]={1,3,2,-2};
int Y[n]={3,4,1,2};
int x,y;
for (int i=0; i<n-1; i++)
  if (float(X[i])/float(Y[i]) < float(X[i+1])/float(Y[i+1])) {
    x = X[i];
    y = Y[i];
  }
cout << x << " " << y << endl;
return 0;
}

Zadanie 2.

Napisz algorytm (w pseudokodzie lub wybranym języku programowania), który przestawi elementy tablic X i Y tak, aby szczyty były uporządkowane w kolejności, w której obserwator widzi je od lewej do prawej strony. Aby otrzymać maksymalną ocenę, Twój algorytm powinien mieć złożoność czasową kwadratową lub mniejszą. Algorytm może używać wyłącznie instrukcji sterujących, operatorów arytmetycznych, operatorów logicznych, porównań i przypisań do zmiennych. Zabronione jest używanie funkcji bibliotecznych dostępnych w językach programowania.

Specyfikacja:

Dane:

n – liczba całkowita dodatnia
X[1..n] – tablica liczb całkowitych
Y[1..n] – tablica liczb całkowitych dodatnich
Para (X[i], Y[i]) to współrzędne jednego szczytu, i = 1, 2, …, n.
Żadne dwa szczyty nie leżą w jednej linii z obserwatorem.

Wynik:

X[1..n], Y[1..n] – tablice zawierające współrzędne danych szczytów, uporządkowanych w kolejności, w której obserwator widzi je od lewej do prawej strony.

Algorytm:

#include <iostream>
using namespace std;
int main()
{
 int n=4;
 int X[n]={1,3,2,-2};
 int Y[n]={3,4,1,2};
 for (int j=0; j<n-1; j++)
   for (int i=0; i<n-1; i++) { 
     if (float(X[i])/float(Y[i]) > float(X[i+1])/float(Y[i+1])) {
       swap(X[i],X[i+1]);
       swap(Y[i],Y[i+1]);
     }
   }
 for (int i=0; i<n; i++) {
   cout << "X[" << i << "]= " << X[i] << " ";
   cout << "Y[" << i << "]= " << Y[i];
   cout << endl;
 }
return 0;
}

Matura 2018 (maj). Zadanie 1. Analiza algorytmu

Matura 2018 (maj). Zadanie 1. Analiza algorytmu

Rozważamy następujący algorytm:

Dane:

n – liczba całkowita dodatnia

Wynik:

p – liczba całkowita dodatnia

p ← 1
 q ← n
 dopóki p < q wykonuj
 s ← (p+q) div 2
 (*) jeżeli s*s*s < n wykonaj
 p ← s+1
 w przeciwnym wypadku
 q ← s

Uwaga: zapis div oznacza dzielenie całkowite.

Zadanie 1.

Podaj wynik działania algorytmu dla wskazanych w tabeli wartości n.

n p
28
64
80

Miejsce na obliczenia.

Algorytm:

#include <iostream>

using namespace std;

int main()
{
 cout << "Podaj n = ";
 int n, p=1;
 cin >> n;
 int q=n;
 int s;
 while (p<q) {
   s = (p+q)/2;
   if (s*s*s<n)
     p=s+1;
   else
     q=s;
 }
 cout << "p = " << p << endl;
 return 0;
}

Zadanie 2.

Podaj najmniejszą oraz największą liczbę n, dla której wynikiem działania algorytmu będzie p = 10.

Miejsce na obliczenia.

Najmniejsza liczba n to 9*9*9+1=730, ponieważ musi być spełniony warunek s3<n. Największa liczba n to 10*10*10=1000, ponieważ musi być spełniony warunek s3<n.

Odpowiedź: Najmniejsza liczba to 730, największa liczba to 1000.

Zadanie 3. 

Dokończ zdanie. Wybierz i zaznacz właściwą odpowiedź spośród podanych. Dla każdej liczby całkowitej n > 1 instrukcja oznaczona w algorytmie symbolem (*) wykona się

A. mniej niż 2*log2n razy.
B. więcej niż n/2, ale mniej niż n razy.
C. więcej niż n+1, ale mniej niż 2n razy.
D. więcej niż n2 razy.

Komentarz:

Odpowiedź A ponieważ, 2*log2n -> 2 * log264 = 2 * 6 = 12. Jest to mniej niż 12.

log264=x
2x = 64
26 = 64

Matura 2016 (maj). Zadanie 6. Liczby

Matura 2016 (maj). Zadanie 6. Liczby

Liczba pierwsza to liczba naturalna większa od 1, która ma dokładnie dwa dzielniki naturalne: 1 i samą siebie. Przykłady liczb pierwszych: 11, 17, 23.

Liczba 21 nie jest liczbą pierwszą, ponieważ oprócz liczb 1 i 21 jej dzielnikami są także 3 i 7.

W pliku dane_6.txt znajduje się 2000 liczb całkowitych o wartościach z zakresu <0;30000>, każda liczba zapisana jest w osobnym wierszu.

Napisz program, który da odpowiedzi do poniższych zadań. Każdą odpowiedź zapisz w pliku wyniki_6.txt, poprzedź ją numerem odpowiedniego zadania.

Dane do pobrania.

Zadanie 1.

Podaj, ile liczb zapisanych w pliku dane_6.txt to liczby pierwsze.

Rozwiązanie:

#include <iostream>
#include <fstream>
#define N 2000
using namespace std;
bool liczba_pierwsza(int a) {
 int i=2;
 bool wynik = true;
 while (a>i) {
   if (a%i==0) {
     wynik = false;
     break;
   }
   i++;
 }
 return wynik;
}
int main()
{
 int tab[N];
 int ile=0;
 ifstream plik;
 plik.open("dane4.txt");
 for (int i=0; i<N; i++){
   plik >> tab[i];
   if (liczba_pierwsza(tab[i]))
     ile++;
   }
 cout << ile << endl;;
 plik.close();
 ofstream wynik;
 wynik.open("wynik_6.txt");
 wynik << "Liczb pierwszych jest : " << ile;
 wynik.close();
 return 0;
}

Zadanie 2. 

Podaj, jaka jest największa oraz jaka jest najmniejsza liczba pierwsza z pliku dane_6.txt.

Rozwiązanie:

#include <iostream>
#include <fstream>
#define N 2000
using namespace std;
bool liczba_pierwsza(int a) {
 int i=2;
 bool wynik = true;
 while (a>i) {
   if (a%i==0) {
     wynik = false;
     break;
   }
   i++;
 }
 return wynik;
}

int main()
{
 int tab[N];
 int maksimum=0, minimum=30000;
 ifstream plik;
 plik.open("dane4.txt");
 for (int i=0; i<N; i++){
   plik >> tab[i];
   if (liczba_pierwsza(tab[i])) {
     if (tab[i]>maksimum)
       maksimum=tab[i];
     if (tab[i]<minimum)
       minimum=tab[i];
   }
 }
 cout << maksimum << endl;
 cout << minimum << endl;
 plik.close();
 ofstream wynik;
 wynik.open("wynik_6.txt");
 wynik << "Maksymalana liczba pierwsza jest to : " << maksimum << endl;
 wynik << "Minimalna liczba pierwsza jest to : " << minimum;
 wynik.close();
 return 0;
}

Zadanie 3.

Liczby bliźniacze to takie dwie liczby pierwsze, które różnią się o 2, np.: (3, 5), (5, 3), (11, 13) lub (19, 17).

Zbadaj w pliku dane_6.txt kolejne pary sąsiadujących ze sobą liczby, tzn. pierwszą i drugą liczbę, drugą i trzecią liczbę, …, przedostatnią i ostatnią liczbę. Podaj liczbę par liczb bliźniaczych oraz wypisz wszystkie te pary. Każdą parę wypisz w osobnym wierszu.

Przykład:

Dla poniższych danych

11698
13234
1999
1997
16444
15173
5927

odpowiedzią jest:

1
1999 i 1997.

Rozwiązanie:

#include <iostream>
#include <fstream>
#define N 2000
using namespace std;
bool liczba_pierwsza(int a) {
 int i=2;
 bool wynik = true;
 while (a>i) {
   if (a%i==0) {
     wynik = false;
     break;
   }
   i++;
 }
 return wynik;
}
int main()
{
 int tab[N];
 ifstream plik;
 plik.open("dane4.txt");
 for (int i=0; i<N; i++){
   plik >> tab[i];
 }
 plik.close();
 ofstream wynik;
 int w=0;
 wynik.open("wynik_6.txt");
 for (int i=0; i<N-1; i++)
   if (liczba_pierwsza(tab[i]) && liczba_pierwsza(tab[i+1]))
     if ((tab[i]==tab[i+1]+2) || (tab[i]==tab[i+1]-2)) {
       w++;
       wynik << tab[i] << " " << tab[i+1] << endl;
     }
 wynik << w;
 wynik.close();
 return 0;
}

Matura 2016 (maj). Zadanie 5. Sklep internetowy

Matura 2016 (maj). Zadanie 5. Sklep internetowy

Sklep internetowy Matrix zajmuje się sprzedażą sprzętu komputerowego. W plikach produkty.txt, klienci.txt oraz zamowienia.txt znajdują się dane dotyczące działalności sklepu w okresie od maja 2012 roku do maja 2013 roku włącznie. W każdym pliku pierwszy wiersz jest wierszem nagłówkowym.

Plik produkty.txt zawiera zestawienie dostępnych produktów – identyfikator produktu, nazwę produktu, grupę towarową, producenta i cenę brutto.

Fragment pliku produkty.txt:

ID_Produktu Nazwa_produktu Grupa_towarowa Producent Cena_brutto
1 98PDF Monitory CRT 19″ Smar 240,34
8 FINEPIXA400 Aparaty cyfrowe CER 414,4
446 EXPRESSP1-J224Y Notebooki HW 5350,52

Plik klienci.txt zawiera dane osób składających zamówienia – identyfikator klienta, imię i nazwisko.

Fragment pliku klienci.txt:

ID_klienta imie nazwisko
TL518 Tymoteusz Legierski
AZ877 Anna Zakopianska
AB721 Antoni Borek

Plik zamowienia.txt zawiera następujące informacje: identyfikator zamówienia, datę zamówienia, identyfikator zamawianego produktu, identyfikator klienta, który złożył zamówienie, oraz liczbę sztuk zamówionego produktu.

Fragment pliku zamowienia.txt:

ID_zamowienia Data ID_Produktu ID_klienta Liczba_sztuk
1/2012 2012-05-14 405 TC563 1
2/2012 2012-05-15 417 HS605 1
3/2012 2012-05-16 180 JP555 1

Wykorzystując dane zawarte w tych plikach oraz dostępne narzędzia informatyczne, wykonaj podane polecenia. Odpowiedzi zapisz w pliku wyniki_5.txt, poprzedzając je numerami zadań.

Pobieranie danych do programu. Zadanie zostało rozwiązane za pomocą MS Access.

Krok 1. Pobieranie danych zapisanych w plikach tekstowych do aplikacji.

Krok 2. Wybór pliku do pobrania.

Krok 3. Kreator pobierania danych z pliku do tabeli.

Krok 4. 

Krok 5. Sprawdzenie czy pobierane dane są odpowiedniego typu.

Krok 6. Wybór klucza podstawowego dla pola w tabeli.

Krok 7.

Krok 8. Tworzenie relacji.

Zadanie 1.

Podaj imiona i nazwiska wszystkich osób, które zakupiły notebooki firmy HW. Nazwiska posortuj alfabetycznie.

Rozwiązanie:

Zadanie 2.

Podaj nazwy produktów zakupionych przez klienta Anna Kotnicka, grupy towarowe oraz producentów tych produktów.

Rozwiązanie:

Zadanie 3.

Podaj imię i nazwisko osoby, która złożyła największą liczbę zamówień w sklepie internetowym Matrix, oraz liczbę tych zamówień.

Rozwiązanie:

Zadanie 4.

Podaj imiona i nazwiska trzech osób, które zapłaciły za wszystkie zamówione przez siebie towary najwięcej spośród wszystkich klientów. Zwróć uwagę, że klient mógł zamówić w jednym zamówieniu kilka sztuk tego samego produktu.

Rozwiązanie:

Zadanie 5.

Podaj, ile notebooków zamówiono w marcu 2013 roku.

Rozwiązanie: