Kolokwium z PPR
Zestaw 1
Zadanie 1 (5 pkt)
Napisz program, który z dwóch kolejnych linii sczytuje dwa napisy, a
następnie
skleja je bez spacji: najpierw pierwszy, potem drugi.
Np.
Wejście:
Ala
MaKota
Wyjście:
AlaMaKota
Zadanie 2 (8 pkt)
Napisz program znajdujący indeks najmniejszej spośród danego ciągu
liczby.
Na wejściu znajduje się najpierw liczba liczb pojawiających się na
wejściu (nie więcej niż 1000), a po niej ciąg tych
liczb (każda nie większa niż 30.000, każda różna)
Na wyjściu program powinien wypisać jako która z nich pojawiła się ta
najmniejsza
Np.
Wejście:
4 56 23 21 22
Wyjście:
3
Zadanie 3 (5 pkt)
Napisz funkcję, która wkłada na stos (ang. lifo) kolejne elementy. W
tym celu uzupełnij poniższy kod (nie zmieniaj deklaracji zmiennych):
int stos[567];
int wierzcholek_stosu;
void na_stos(int x);
{
//???
}
Zadanie 4 (7 pkt)
Poniższy program powinien wykonać następujące operacje: Sczytać pewną
liczbę x, następnie liczbę elementów w ciągu oraz cały ciąg. (Wszystko jest poprzedzone liczbą zestawów) Następnie
powinien wziąć ten ciąg i wypisać wszystkie elementy, które są od tego
x mniejsze. Ich kolejność powinna być taka sama jak w wejściowym ciągu.
Popraw poniższy kod.
Zakładamy, że ciąg na wejściu jest nie dłuższy niż 100000, a liczby w
ciągu (tak samo jak i x) są z przedziału od -1000000 do 1000000
//---------------------------------------------------------------------------
#pragma hdrstop
#include <stdio.h>
//---------------------------------------------------------------------------
#pragma argsused
char t[100000];
int n,d,i;
int main(int argc, char* argv[])
{
scanf("%d",&d);
for (i=0; i<d; i++)
{
scanf("%d",&x);
scanf("%d",&n);
for (i=0; i<=n; i++) scanf("%d",&t[i]);
for (i=0; i<=n; i++) if (t[i]>x) printf("%c ",t[i]);
printf("\n");
}
return 0;
}
Np:
Wejście
2
3
4 1 3 5 2
6
5 1 23 4 3 5
Wyjście:
1 2
1 4 3 5
Zadanie 5 (5 pkt)
Napisz, co robi funkcja strchr() zadeklarowana w bibliotece string.h?
Opisz jej wejście i wyjście.
Zadanie 6 (10 pkt)
Napisz program, który sprawdza, czy podany na wejściu ciąg jest ciągiem
liczb, które rosną o 1.
W pierwszej linii wejścia znajduje
się jedna liczba całkowita,
oznaczająca liczbę zestawów danych, które za chwilę pojawią się na
wejściu.
W zestawie znajduje się najpierw liczba liczb pojawiających się na
wejściu (nie więcej niż 1000), a po niej odpowiedni ciąg tych
liczb (każda nie większa niż 30.000, każda różna, każda dodatnia)
Na wyjściu trzeba napisać TAK, jeśli ciąg na wejściu jest ciągiem
liczb, które rosną o 1, lub NIE jeśli tak nie jest.
Np:
Wejście:
2
5 2 3 4 5 6
6 5 7 8 9 10 12
Wyjście:
TAK
NIE
Możesz do tego wykorzystać poniższy schemat kodu:
//---------------------------------------------------------------------------
#pragma hdrstop
#include <stdio.h>
//---------------------------------------------------------------------------
#pragma argsused
int t[10000];
int n,d,i,q,qq;
int ok;
int main(int argc, char* argv[])
{
scanf("%d",&d);
while (d--)
{
scanf("%d",&n);
for (i=0; i<n; i++) scanf("%d",&t[i]);
// Tu dopisz brakujący kawałek kodu, który będzie sprawdzał to, co trzeba sprawdzić zgodnie z treścią zadania
if (ok) printf("TAK\n");
else printf("NIE\n");
}
return 0;
Zadanie 7 (10 pkt)
Koledzy Jasia mają pewne hobby -
chcą
nazbierać jak najwięcej monet
różnego rodzaju. W Bajtocji, gdzie mieszka Jaś, wszystkie nominały do
10.000
włącznie są monetami, a do każdego nominału przyporządkowana jest inna
moneta. Grześ i
Krzyś mają swoje kolekcje monet - po jednej z każdego rodzaju, które
udało im się nazbierać. Aby swoje kolekcje powiększyć postanowili je
połączyć. Po tym połączeniu mają nadzieję mieć więcej monet w swojej,
teraz już wspólnej kolekcji. Dodatkowo zyskali jeszcze monety, które
się powtarzały - postanowili oni nie trzymać w kolekcji powtarzających
się nominałów, a powtarzające się monety przeznaczyli na kupienie sobie
lodów, które obaj bardzo lubią.
Napisz program, który na podstawie
wiedzy o tym jak wyglądały kolekcje Grzesia i Krzysia przed
połączeniem odpowie na pytanie, jak będzie wyglądał zestaw pojedynczych
monet przed kupieniem lodów, tzn. takich które występują tylko i
wyłącznie w kolekcji Grzesia, albo tylko i wyłącznie w kolekcji Krzysia.
Wejście: W pierwszym wierszu wejścia znajduje się jedna liczba
całkowita,
oznaczająca liczbę zestawów danych, które za chwilę pojawią się na
wejściu.
Zestaw danych składa się z dwóch linii oznaczających odpowiednio
kolekcję Grzesia i Krzysia. Każda kolekcja opisana jest przy pomocy
wpierw jednej liczby oznaczającej liczbę monet w kolekcji, a następnie
w kolejności od najmniejszej do największej, nominały monet, które
znajdują się w danej kolekcji. W każdej kolekcji jest co najwyżej
10.000 monet i oczywiście nie powtarzają się one. Każda moneta ma
nominał od 1 do 10.000.
Wyjście: Na wyjściu dla każdego zestawu trzeba wypisać w taki sam
sposób, w jaki podane są na wejściu kolekcje, zestaw pojedynczych monet
w kolekcji Grzesia i Krzysia przed pójściem na lody. Tzn. na początku
powinna znajdować się informacja o tym, ile
monet nie znalazło miejsca w tej kolekcji, a następnie powinny
być
wypisane nominały monet, które się na nią składają, w
kolejności uporządkowanej od najmniejszej do największej
Np.
Wejście:
3
3 4 8 10
5 4 8 9 10 23
8 1 2 3 4 5 6 7 8
5 8 9 10 11 12
0
3 8 23 123
Wyjście:
2 9 23
11 1 2 3 4 5 6 7 9 10 11 12
3 8 23 123
Zadanie 8* (5 pkt)
Mamy daną szachownicę nxn. Na jednym z pól tej szachownicy stoi koń.
Twoim zadaniem jest wyznaczenie wszystkich pól, na które może wskoczyć
ów szachowy koń wykonując dokładnie k
ruchów (skoki).
Wejście: W pierwszej linii wejścia znajduje się jedna liczba całkowita,
oznaczająca liczbę zestawów danych, które za chwilę pojawią się na
wejściu. Każdy zestaw składa się na początku z jednej linii
zawierającej jedną liczbę naturalną n
oznaczającą rozmiar szachownicy (1
<= n <= 22). W drugiej linii zestawu znajduje się jedna liczba
natualna k oznaczjąca, ile
ruchów będzie wykonywał skoczek szachowy (0 <= k <= 20). Po niej
znajduje się kolejna linia, w której
znajduje się opis pozycji startowej konia szachowego. Pozycja
zapisywana jest każdorazowo w postaci takiej, że w jednym wymiarze pola
numerowane są kolejnymi literami alfabetu łacińskiego, a w drugim
kolejnymi liczbami naturalnymi.
Wyjście: Na wyjściu każdy zestaw powinien odpowiadać pewnej liczbie
linii. Pierwsza znich powinna zawierać liczbę X oznaczającą, na ile pól
szachowych może się przemieścić koń (skoczek) wykonując dokładnie k
skoków. Kolejne X linii
powinno zawierać opis tych pól w notacji wcześniej opisanej
Np.
Wejście:
2
8
1
a1
8
2
a1
Wyjście:
2
b3
c2
10
a1
a3
a5
b4
c5
c1
d4
d2
e1
e3