Kolokwium z PPR
Zestaw 2
Zadanie 1 (5 pkt)
Napisz program, który z dwóch kolejnych lini sczytuje dwa napisy, a
następnie
skleja je bez spacji: najpierw drugi, potem pierwszy.
Np.
Wejście:
Gosia
KochaJasia
Wyjście:
KochaJasiaGosia
Zadanie 2 (8 pkt)
Napisz program znajdujący najmniejszą w danym ciągu
liczbę.
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 jest
najmniejsza
Np.
Wejście:
4 56 23 21 22
Wyjście:
21
Zadanie 3 (5 pkt)
Napisz funkcję, która zdejmuje elementy ze stosu (ang. lifo) kolejne
elementy. W
tym celu uzupełnij poniższy kod (nie zmieniaj deklaracji zmiennych):
int stos[567];
int wierzcholek_stosu;
int ze_stosu();
{
//???
}
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. Następnie
powinien wziąć ten ciąg i policzyć ile jest w nim liczb mniejszych od
x. Wyliczoną wartość powinien wypisać.
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,licz;
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]);
licz = 0;
for (i=0; i<=n; i++) if (t[i]>x) licz+=1;
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:
2
4
Zadanie 5 (5 pkt)
Napisz, co robi funkcja strncat() zadeklarowana w bibliotece string.h?
Opisz wejście i wyjście funkcji.
Zadanie 6 (10 pkt)
Napisz program, który sprawdza, czy podany na wejściu ciąg jest ciągiem
liczb, które maleją 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 odpowiednia ciąg tych
dodatnich
liczb (każda nie większa niż 30.000, każda różna)
Na wyjściu trzeba napisać TAK, jeśli ciąg na wejściu jest ciągiem
liczb, które maleją o 1, lub NIE jeśli tak nie jest.
Np1:
Wejście:
2
5 6 5 4 3 2
6 5 7 8 9 8 7
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ą.
Ale Krzyś jest bardzo spryny i chytry. Podejrzał wcześniej kolekcję
Grzesia i chce teraz ze swojej kolekcji odrzucić powtarzające się
monety i sam sobie za nie kupić lody, nie dzieląc się z Grzesiem.
Napisz program, który na podstawie
wiedzy o tym jak wyglądały kolekcje Grzesia i Krzysia przed
połączeniem odpowie na pytanie, jakie monety Krzyś ma zostawić w swojej
kolekcji dlatego, ze nie ma ich Grześ, żeby ich wspólna kolekcja była
jednak jak największa.
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
z kolekcji Krzysia, które dołoży do wspólnej kolekcji z Grzesiem. Tzn.
na początku
powinna znajdować się informacja o tym, ile
monet powinno być w tej opisywanej kolekcji, a następnie powinny
być
wypisane nominały monet, które się na tę kolekcję 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
4 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