Program Odwracający Wyrazy
Kod:
Napisz program, który zapisuje wspak podane na wejściu wyrazy.
Wejście
Na wejście programu podana zostanie pewna ilość (co najwyżej 1000) wyrazów, tj. ciągów znaków zbudowanych z małych liter. Poszczególne wyrazy zostaną rozdzielone znakiem nowej linii. Przyjmujemy, że długość wyrazów nie przekracza 1000 znaków.
Wyjście
Na wyjściu mają się pojawić te same wyrazy, które pojawiły się na wejściu, ale zapisane wspak. Poszczególne wyrazy należy rozdzielić znakiem nowej linii.
Przykład
Wejście:
alfa
beta
gamma
Wyjście:
afla
ateb
ammag
Program Kalkulator Ułamków
Kod:
Napisz program, który będzie dodawać, odejmować, mnożyć i dzielić ułamki zwykłe.
Wejście
Na wejście programu podana zostanie pewna ilość (co najwyżej 10.000) zestawów danych. Każdy z zestawów ma postać
a/b op c/d
gdzie a, b, c i d to liczby całkowite z zakresu 1-1.000.000, a op jest jednym ze znaków +, -, * lub /. Pomiędzy znakiem op a otaczającymi go liczbami znajduje się spacja. Poszczególne zestawy zostaną od siebie oddzielone znakiem nowej linii.
Wyjście
Dla każdego z wczytanych z wejścia zestawów należy wykonać operację op na ułamkach zwykłych a/b i c/d. Wynik należy wypisać w postaci:
p/q
gdzie p i q to licznik i mianownik wyniku w postaci nieskracalnej (q>0). Poszczególne wyniki należy oddzielić od siebie znakiem nowej linii.
Przykład
Wejście:
3/4 + 7/8
12/6 - 8/12
1/2 + 1/2
6/8 - 16/3
Wyjście:
13/8
4/3
1/1
-55/12
Program Kalkulator z pamięcią.
Kod:
Napisz program, który działa jak prosty kalkulator z pamięcią obsługujący pięć operacji: dodawanie, odejmowanie, mnożenie, dzielenie i obliczanie reszty z dzielenia liczb całkowitych. Przyjmujemy, że nasz kalkulator ma w pamięci 10 rejestrów o numerach 0 - 9 oraz że wszystkie rejestry zawierają na początku zera.
Wejście
Na wejście programu podana zostanie pewna liczba zestawów danych (co najwyżej 10.000). Każdy z zestawów ma postać:
o a1 a2
gdzie o jest jednoznakowym symbolem operacji do wykonania (+, -, *, /, % i z), a a1 i a2 argumentami tej operacji. Argumenty są albo liczbami całkowitymi (z zakresu od -1.000.000.000 do 1.000.000.000) albo napisami postaci r[i], gdzie i jest liczbą z zakresu 0 - 9. Poszczególne zestawy zostaną rozdzielone znakiem nowej linii.
Wyjście
Na wyjściu programu ma się pojawić ciąg liczb będących rezultatem wykonania pojawiających się na wejściu poleceń. Poszczególne liczby należy rozdzielić znakami nowej linii. To, co należy wykonać, zależy od symbolu operacji. Symbole +, -, *, / i % nakazują wykonanie odpowiednio dodawania, odejmowania, mnożenia, dzielenia i obliczenia reszty z dzielenia liczb będących argumentami operacji. Jeżeli argumentem nie jest liczba, a napis postaci r[i], to przed wykonaniem operacji należy zastąpić go bieżącą wartością rejestru o numerze i. Symbol z nakazuje zapis wartości podanej jako drugi argument w rejestrze o numerze podanym jako pierwszy argument (po wykonaniu tej operacji nie trzeba nic wyświetlać; można założyć, że argumenty operacji z są liczbami całkowitymi). Uwaga! Przyjmujemy, że wynikiem dzielenia oraz resztą z dzielenia przez 0 jest NaN.
Przykład
Wejście:
z 1 2
z 2 2
+ 1 5
* r[2] 6
/ r[1] r[0]
+ 7 r[9]
- 0 4
% 5 -6
Wyjście:
6
12
NaN
7
-4
5
Komentarz do ostatniego wyniku: reszta z dzielenia musi być nieujemna (przypomnienie: liczby q i r są odpowiednio ilorazem i resztą z dzielenia a przez b wtedy i tylko wtedy, gdy a = q*b + r i 0 <= r < |b|), więc użycie operatora % dostępnego m.in. w C do obliczenia wyniku może prowadzić do nieprawidłowego wyniku (5 % -6 daje w C wynik -1).
Prosze pomóżcie mi z tym. Co do programu kalkulator ułamków to mam napisany kod ale gdy wpisuje na ułamek 1/100000 + 1/100000 to wychodzą głupoty