Zadania z programowania

Transkrypt

Zadania z programowania
INFORMATYKA, sem. II i III
Zadania do samodzielnego rozwiązania
Zadania z cz. I przeznaczone są głównie dla sem. II , a z cz. II-V dla sem. III
I. Podstawy programowania (instrukcja warunkowa, pętle, instukcja przełącznikowa,
tablice jednowymiarowe).
Napisać następujące programy:
1. P. realizujący konwersję liczby naturalnej n z postaci dziesiętnej na postać binarną.
2.P. wyznaczający reprezentację oktalną i heksadecymalną liczby w oparciu o jej
reprezentację dziesiętną.
3. P. wczytujący dwie liczby naturalne n i m, dokonujący ich konwersji na postać binarną i
symulujący dodawanie binarne w kodzie binarnym naturalnym.
4. P. wczytujący liczbę całkowitą x i wyznaczający jej 32-bitową reprezentację w kodzie
znak-moduł.
5. P. wczytujący liczbę całkowitą x i wyznaczający jej 32-bitową reprezentację w kodzie U1.
6. P. wczytujący liczbę całkowitą x i wyznaczający jej 32-bitową reprezentację w kodzie U2.
8. P. wczytujący dwie liczby naturalne x i y i symulujący dodawanie tych liczb w kodzie U2 (
uwzględnić kontrolę poprawności wyniku).
9. P. wczytujący dwie liczby naturalne x i y i symulujący odejmowanie tych liczb w kodzie
U2 ( uwzględnić kontrolę poprawności wyniku).
10. P. wyznaczający n-bitową reprezentację binarną danego ułamka dziesiętnego.
11. P. wczytujący ciąg liczb rzeczywistych różnych od zera, oraz wypisujący sumę
elementów dodatnich oraz sumę elementów ujemnych. Wczytywanie ciągu ulega
zakończeniu po podaniu na wejście zera.
12. P., który wypisuje wszystkie czynniki pierwsze liczby naturalnej n, n>=2).
13. n-cyfrowa liczba naturalna jest liczbą Armstronga , jeśli jest równa sumie n-tych potęg
swoich cyfr. Napisać program znajdujący wszystkie dwucyfrowe i trzycyfrowe liczby
Armstronga.
14. P. znajdujący najmniejszą liczbę naturalną n taką, że n dzieli 22−n, ale nie dzieli 33−n.
15. P. znajdujący dwie najmniejsze liczby naturalne , które można przedstawić na różne
sposoby jako sumę dwóch sześcianów liczb naturalnych.
16. P. znajdujący wszystkie liczby Fibonacciego mniejsze od liczby naturalnej n, które są
kwadratami lub sześcianami liczb naturalnych.
17. P. znajdujący największy wspólny dzielnik i najmniejszą wspólną wielokrotną danych n
liczb naturalnych.
18. P. znajdujący trzy najmniejsze liczby naturalne n, takie że pomiędzy n a n+10 nie ma
żadnej liczby pierwszej.
19. P. znajdujący pięć najmniejszych liczb naturalnych, takich że liczba jest iloczynem trzech
różnych liczb pierwszych.
II. Funkcje (każda z funkcji powinna być przetestowana poprzez użycie w programie)
Napisać następujące funkcje:
1. F. zwracającą sumę swoich argumentów.
2. F.. przekazującą sumę swoich argumentów przez wskaźnik.
3. F. obliczającą n silnia.
4. F. wymieniającą wartości swych argumentów.
5. F. zwiększającą dwa pierwsze argumenty o wartość trzeciego argumentu.
6. F. realizującą konwersję liczby naturalnej na postać binarną.
7. F. wczytującą tablicę jednowymiarową oraz funkcję drukującą taką tablicę.
8. F. obliczającą w tablicy jednowymiarowej sumy elementów dodatnich, ujemnych i ilość
elementów zerowych.
9. F. obliczającą w tablicy jednowymiarowej sumę elementów parzystych i sumę elementów
nieparzystych.
10. F. odwracającą kolejność elementów w tablicy.
11. F. wyznaczającą minimalny i maksymalny element w tablicy jednowymiarowej.
12. F. sortującą tablicę metodą bąbelkową w zadany sposób( niemalejąco lub nierosnąco).
13. F. sortującą tablicę metodą prostego wybierania w zadany sposób (niemalejąco lub
nierosnąco).
14. F. zamieniającą kolejność elementów tablicy w taki sposób by elementy dodatnie znalazły
się na początku, później elementy ujemne, a na końcu elementy zerowe.
15. F. wyznaczającą wartość najczęściej występującą w tablicy i ilość wystąpień tej wartości.
16. F. przesuwającą wszystkie elementy tablicy o zadaną ilość pozycji w prawo, założyć, że
na skrajne pozycje z lewej wchodzą zera.
17. F. przesuwającą wszystkie elementy tablicy o zadaną ilość pozycji w prawo, założyć, że
na skrajne pozycje z lewej wchodzą zera.
18. F. przesuwającą wszystkie elementy tablicy o zadaną ilość pozycji w lewo, założyć, że na
skrajne pozycje z prawej strony wchodzą zera.
19. F. przesuwającą wszystkie elementy tablicy cyklicznie o zadaną ilość pozycji w lewo
(elementy o najniższych indeksach wchodzą kolejno na miejsce elementów o najwyższych
indeksach).
20. F. przesuwającą wszystkie elementy tablicy cyklicznie o zadaną ilość pozycji w prawo
(elementy o nawyższych indeksach wchodzą kolejno na miejsce elementów o najniższych
indeksach).
21. F. symulującą przy użyciu tablic mnożenie binarne metodą przesuń-dodaj w kodzie
binarnym naturalnym.
III. Tablice dwuwymiarowe(każda z funkcji powinna być przetestowana poprzez użycie
w programie)
Napisać następujące funkcje:
1. F. wczytującą tablicę 3x3.
2. F. drukującą tablicę 3x3.
3. F. tworzącą macierz jednostkową.
4. F. dokonującą transpozycji macierzy.
5. F. przepisującą tablicę dwuwymiarową do tablicy jednowymiarowej.
6. F. obliczającą wyznacznik macierzy 3x3 metodą Sarrusa.
7. F. obliczającą wyznacznik macierzy 4x4 przy wykorzystaniu funkcji z p.6.
8. F. obliczającą iloczyn macierzy 5x5.
9. F. zamieniającą miejscami dwie wybrane kolumny w macierzy.
10. F. zamieniającą dwa wybrane wiersze w macierzy.
11. F. obliczającą macierz odwrotną do danej macierzy 3x3.
12. F. obliczającą sumę elementów wybranej kolumny.
13. F. obliczającą sumę elementów wybranego wiersza.
14. F. wyszukującą liczbę najmniejszą i największą w tablicy dwuwymiarowej.
15. F. zliczającą ilość i sumę elementów należących do wybranego przedziału [a,b].
16. F. mnożącą każdy element tablicy dwuwymiarowej przez (-1)i+j
17. F. odwracającą kolejność elementów w wierszach o numerach parzystych.
18. F. odwracającą kolejność elementów w kolumnach o numerach parzystych.
19. F. tworzącą z danej macierzy (n x m) nową macierz poprzez usunięcie p-tego wiersza i
q-tej kolumny.
20. F. zwracającą listę (w postaci tablicy) numerów tych wierszy w tablicy dwuwymiarowej,
w których występuje dokładnie jeden element zerowy.
IV. Tablice znakowe (łańcuchy znaków)
Napisać nastepujące programy:
1. P. inicjujący tablicę znakową s1 pięcioma znakami oraz wczytujący tablicę znakową s2 i
następnie drukujący po trzy znaki z każdej z tablic (zastosować odpowiedni format wydruku
tablicy znakowej).
2. P. wczytujący dwie tablice znakowe s1 oraz s2 i następnie tworzący tablicę znakową s3
złożoną z tablic s1 i s2 rozdzielonych spacją.
3. P. obliczający we wczytanej tablicy znakowej s liczbę wystąpień zadanego znaku.
4. P. obliczający we wczytanej tablicy znakowej s liczbę wystąpień zadanej pary znaków na
sąsiadujących pozycjach.
5. P. stosujący podstawowe funkcje działające na tablicach znakowych (strcpy,
strlen, strcat, strchr, strstr, strrev, strcmp, strupr,
strlwr, itoa, atoi).
Napisać następujące funkcje (każda z funkcji powinna być przetestowana poprzez użycie w
programie) :
1. F. wczytującą i zwracającą tablicę znakową.
2. F. tworzącą kopię tablicy znakowej bez stosowania funkcji strcpy.
3. F. obliczającą długość tablicy znakowej bez stosowania funkcji strlen.
4. F. realizującą konkatenację tablic znakowych bez stosowania funkcji strcat.
5. F. alokującą pamięć dla tablicy znakowej o zadanej długości.
6. F. zwracającą ilość wystąpień zadanego znaku w tablicy znakowej.
7. F. zwracającą ilość wystąpień zadanej pary znaków w tablicy znakowej.
8. F. usuwającą spacje wiodące (początkowe ) w tablicy znakowej.
9. F. usuwającą spacje końcowe w tablicy znakowej.
10. F. otrzymującą dwie tablice znakowe zawierające liczby całkowite i zwracającą ich sumę
w postaci tablicy znakowej.
11. F. otrzymującą dwie tablice znakowe zawierające liczby rzeczywiste i zwracającą ich
sumę w postaci tablicy znakowej.
12. F. wymieniającą w tablicy znakowej wystąpienia ciągu znaków '2', '0', '1' ,'1' na '2', '0', '1'
,'1.'
V.Pliki
1. Utworzyć plik binarny a1.dat w bieżącym katalogu, następnie zrealizować następujące
operacje plikowe:
a) wczytać z wejścia zadaną ilość liczb typu int i zapisać je do pliku,
b) odczytać i wydrukować plik,
c) dopisać do pliku trzy zadane liczby, odczytać i wydrukować plik,
d) odczytać i wydrukować n ostatnich liczb z pliku,
e) zamienić miejscami drugi i czwarty element pliku,
f) obliczyć: sumy wszystkich elementów pliku, elementów dodatnich, elementów ujemnych,
ilość zer oraz sumę elementów parzystych,
g) wyznaczyć ilość wystąpień elementu o zadanej wartości, wydrukować numery pozycji na
których występuje,
h) wyznaczyć minimalny i maksymalny element pliku,
i) posortować plik niemalejąco bez przepisywania do tablicy.
2. Sprawdzić czy w katalogu Moje Dokumenty istnieje plik plik1.txt, jeżeli istnieje,
wyznaczyć jego rozmiar w bajtach.
3. Utworzyć w bieżącym katalogu kopię pliku a1.dat (z zad. 1) o nazwie b1.dat,
porównać długość oryginału i kopii, jeżeli zgadzają się, usunąć plik a1.dat.
4. Wydrukować plik b1.dat w odwrotnej kolejności elementów.
5. Wstawić wartość zero w określone miejsca pliku, pozycje wstawianych elementów pobrać
z wczytanej lub zainicjowanej tablicy. Sprawdzać czy wstawienie jest możliwe.
6. Dany jest plik liczb typu double plik1.dat, obliczyć sumy kolejnych par liczb i zapisać
sumy te do pliku plik2.dat.
7. Wczytać z wejścia tablicę struktur typu komputer o polach : char marka[20], double
czestZegara, int ram, double cena. Zapisać tablicę struktur do pliku, zamknąć
plik, ponownie otworzyć, odczytać i wydrukować plik.
8. Dany jest plik struktur komp1.dat ( pola jak w zad. 7). Obliczyć wartość komputerów,
następnie obniżyć cenę każdego komputera o 10%, jeżeli wartość <2500, a o 15% dla
pozostałych.
9. Zamienić miejscami w pliku komp1.dat struktury 3 i 5.
10. Posortować elementy pliku komp1.dat niemalejąco względem pola cena ( nie
stosować przepisywania do tablicy)
11. Napisać program wczytujący zadaną liczbę struktur o polach: char nazwisko [20],
char imie [20], i zapisujący je do pliku osoby.dat, tworzący kopię pliku o nazwie
osoby1.dat, i usuwający z pliku n pierwszych i m ostatnich struktur, sprawdzić
wykonalność tej operacji.
12. Dany jest plik liczb typu int, napisać program obliczający częstość wystąpień każdego z
pierwszych 10 elementów.
13. Wczytać tablicę dwuwymiarową liczb typu int ( ew. nadać wartość elementom stosując
funkcję rand() ), zapisać tablicę do pliku, następnie posortować plik nierosnąco i
wydrukować.
14. Dany jest plik binarny instrumenty.log zawierający pewną ilość znaków (litery)
wpisanych przez urządzenia pomiarowe, odczytać plik i zapisać do pliku dzienny.log
(zastosować fgetc i fputc).
15. Utworzyć plik binarny liczby.dat zawierający pewną ilość grup złożonych z dwóch
znaków będących cyframi i przecinka.
16. Wczytać plik liczby.dat, dokonać konwersji dwóch pierwszych znaków każdej grupy
na liczbę typu int, oraz zapisać te liczby do pliku wynik.dat. Odczytać pliki i
wydrukować w dwóch kolumnach poszczególne grupy znaków i odpowiadające im liczby.
17. Wczytać z wejścia 5 linii tekstu, zapisać do pliku tekst1.txt następnie odczytać plik i
wydrukować ( zastosować funkcje gets, fgets i fputs).
18. Napisać program wyszukiwania wprowadzonego przez użytkownika tekstu w istniejącym
pliku tekstowym.
19. Wczytać z wejścia do dwuwymiarowej tablicy znakowej zadaną liczbę linii tekstu,
następnie zapisać wiersze tablicy do pliku, odczytać i wydrukować plik.
20. Znaleźć w pliku tekstowym i wydrukować wyrazy rozpoczynające się od określonej litery
(założyć, że wyraz jest poprzedzony przynajmniej jedną spacją).