Problem A - Zapytania
Problem B - Analizator ciągów
Problem C - Dopasowywanie wzorca do tekstu
Problem D - Problem z trójkątem

 

1980

Problem A - Zapytania


Opis

Szefowa pragnie posiadać prostą metodę realizacji zapytań (kwerend) w swoim pliku z danymi personelu i prosi ciebie, abyś w ciągu 1/2 dnia roboczego napisał program, który będzie zliczał lub wypisywał rekordy pliku spełniające pewne kryteria. Plik składa się z wierszy. W każdym wierszu znajdują się cztery dodatnie liczby całkowite: identyfikator pracownika (ID), wiek pracownika (AGE), stawka płacowa w centach na godzinę (WAGE) oraz kod rodzaju wykonywanej pracy (JOBTYPE). Wszystkie wartości są mniejsze od 32768. Zestaw rekordów pracowników będzie zawierał nie więcej niż 100 wierszy z danymi. Plik będzie się kończył pustym wierszem, który nie zawiera żadnych liczb. Nie trzeba sprawdzać poprawności tych danych, lecz następne wiersze, które będą zawierać zapytania, muszą być sprawdzone pod kątem poprawności.

Każde zapytanie będzie zawarte w pojedynczym wierszu, a żaden wiersz nie będzie zawierał więcej niż jedno zapytanie. Format poprawnego zapytania wygląda następująco:

 

gdzie

field={ID,AGE,WAGE,JOBTYPE},
ro={LT,EQ,GT},
initval=wartość całkowita bez znaku < 32768,

{ } oznacza "jeden z",
[ ] oznacza element opcjonalny,
_ oznacza jedną lub więcej spacji,

COUNT = zliczaj
LIST = listuj
QUIT = zakończ
RECORDS = rekordy
WHERE = gdzie
LT = Less Than = mniejszy niż
EQ = Equal = równe
GT = Greater Than = większe niż

 

Po prawej stronie zapytania mogą pojawić się różne znaki, które należy zignorować. Poprawne zapytanie rozpoczyna się od początku wiersza i nie będzie zawierało żadnych błędów w pisowni.

Program ma działać wykonując dla każdego zapytania następujące kroki nad rekordami pracowników:

  1. Odczytać wiersz z zapytaniem i wydrukować go w całości.
  2. Jeśli odczytany wiersz nie zawiera poprawnego zapytania, należy wypisać w następnym wierszu słowo ERROR, wydrukować pusty wiersz i kontynuować od kroku 1.
  3. a) Jeśli zapytanie jest typu QUIT, program ma zakończyć działanie.
    b) Jeśli zapytanie jest typu COUNT, należy wyznaczyć liczbę rekordów spełniających warunek podany w zapytaniu i wypisać ją w następnym wierszu w postaci ANSWER: liczba. Wydrukować pusty wiersz i kontynuować od kroku 1.
    c) Jeśli zapytanie jest typu LIST, to należy wyznaczyć wszystkie rekordy spełniające kryterium podane w zapytaniu i wypisać je w kolejnych wierszach w postaci: ANSWER: cztery liczby. Wydrukować pusty wiersz i kontynuować od kroku 1.

Przykładowe dane wejściowe

1 22 1200 12
2 34 1800 16
3 28 2100 4
4 39 2000 3
5 31 2800 2
6 37 3500 10
7 29 1750 12
8 25 3325 10
9 45 3725 9

COUNT RECORDS WHERE AGE.GT.30
COUNT RECORDS WHERE JOPTYPE.EQ.10
LIST  RECORDS WHERE WAGE.LT.3000
QUIT

Przykładowe dane wyjściowe

COUNT RECORDS WHERE AGE.GT.30
ANSWER: 5

COUNT RECORDS WHERE JOPTYPE.EQ.10
ERROR

LIST  RECORDS WHERE WAGE.LT.3000
ANSWER: 1 22 1200 12
ANSWER: 2 34 1800 16
ANSWER: 3 28 2100 4
ANSWER: 4 39 2000 3
ANSWER: 5 31 2800 2
ANSWER: 7 29 1750 12

QUIT

 



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2017 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.