|
Jażdy problem można rozwiązać na 100 sposobów, z których każdy jest dobry. Ale jeden jest najlepszy!
Jeśli ktoś znajdzie problem, którego nie da się rozwiązać to dostanie coś do picia!
|
Programowanie w języku C
Podstawy
Łatwe zadania oznaczono :-)
- :-) Napisz program, który wyświetli na ekranie prostokąt z kreseczek. Mniej więcej taki:
- Napisz program o nazwie rec, który wywołany w linii poleceń z dwoma parametrami np. ./rec 10 12, wyświetli prostokąt jak w zadaniu 1 o wymiarach 10 na 12 (w naszym przykładzie).
- :-) Zrób kalkulator. Podajesz ./calc 3 * 5 a program daje wynik: 3 * 5 = 15. Podobnie ./calc 3 + 5 daje: 3 + 5 = 8.
- Zrób kalkulator, który da poprawny wynik działania przy podaniu parametrów w postaci 2*3, 2 *3, 2 * 3. Zrób to tak aby dawał ostrzeżenie przy niepoprawnych danych np. ./rec 2, 3 daje w wyniku słowo BŁĄD.
- Zrób kalkulator, który poda odpowiedni komunikat jeśli podasz za duże liczby.
- :-) Zrób sumator, który poda sumę n kolejnych liczb całkowitych. Sprawdź rozwiązanie
- Popraw powyższy sumator aby dawał stosowne ostrzeżenie w przypadku zbyt dużego n.
- :-) Napisz program, który sprawdzi, czy liczba dzieli się przez 2 lub 3.
- :-) Napisz program, który wynik sumowania n liczb wyświetli na ekranie oraz zapisze na dysku komputera.
- Napisz program do odgadywania liczb. Np. ja myślę o liczbie 4, komputer pyta się, czy pomyślana liczba jest mniejsza od 10, jeśli tak to pyta się czy jest mniejsza/większa od 6 aż w końcu komputer odgadnie.
- Pomóż artylerzyście: jeśli strzelił za daleko to powiedz "za daleko" lub "za blisko" w przeciwnym przypadku. Obmyśl jak artylerzysta powinien strzelać aby trafić marnując najmniej pocisków.
- :-) Problem Collatza: bierzemy dowolną liczbę całkowitą, jeśli jest parzysta to dzielimy ją przez dwa, jeśli nieparzysta to mnożymy przez 3 i dodajemy 1. Z wynikiem postępujemy analogicznie. Sprawdź, co w końcu otrzymamy?
- Jaką największą liczbę otrzymamy po drodze, jeśli w problemie Collatza zaczniemy od liczby 234567?
- :-) Napisz program do rozwiązywania równania kwadratowego ze wszystkimi szykanami.
- :-) Podajemy różne liczby a komputer wyświetla największą. Obmyśl szczegóły.
- Podajemy dowolne liczby, a komputer drukuje od największej do najmniejszej.
- Podajemy różne imiona a komputer drukuje alfabetycznie posortowaną listę imion.
- Sprawdź ile razy w rozwinięciu liczby π z dokładnością 2000 miejsc po przecinku występują cyfry 0, 1, 2, ..9.
- Sprawdź częstotliwość występowania liter w wybranym tekście w języku polskim i angielskim.
- :-) Zrób sobie domowy kalkulator wydatków.
Pętle for, while, do while
Na napisanie programu należy poświęcić nie więcej niż 10 minut na każde zadanie lub o wiele dłużej!
- :-) Oblicz sumę liczb od 1 do 100 korzystając z pętli for, while i do while.
- Oblicz iloczyn liczb od 1 do n, ze sprawdzeniem, czy nie przekroczono zakresu.
- :-) Wygeneruj tabliczkę mnożenia do 100.
- Zrób program do obliczania liczb pierwszych. Liczby pierwsze to te, które mają tylko dwa dzielniki: 1 i samą siebie np. 2, 3, 5, 7, 11, 13, 17....
- :-) Napisz program do obliczania 2n.
- :-) :-( Oblicz sumę s1 = 1 + 1/2 +1/3 + 1/4 +........1/n w dwojaki sposób: sumując od początku i od końca s2 = 1/n + 1/(n-1) +....1/3 + 1/2 + 1/1. Sprawdź ile wyjdzie dla n = 100, n = 1000, n = 10000. Czy otrzymamy tyle samo? Ile wynosi naprawdę taka suma?
- Obmyśl sposób na dokładne sumowanie liczb. Poszperaj w Internecie i zobacz jak robili to inni.
Napisz program sumujący dokładnie szereg liczb. Podaj dokładność sumowania. Na ten problem poświęć kilka godzin.
- Dla jakiego maksymalnego n w zadaniu nr 27 otrzymujemy taką samą sumę? Napisz odpowiedni program. Znajdź najprostszy sposób wyznaczenia takiej liczby.
Operacje wejścia/wyjścia
- :-) Napisz najkrótszy program wypisujący na ekranie słowo Witaj.
- :-) Napisz program czytający z klawiatury.
- :-) Napisz program odczytujący plik zapisany na dysku.
- Zrób tak aby komputer zachęcał do podania nazwiska a potem umieszczał je w posortowanym pliku o nazwie KONTAKTY.Plik ten ma być trwale zapisany na dysku.
- Niech komputer sprawdza, w programie z zadania 32, czy podane nazwisko już istnieje na liście i podaje stosowny komunikat.
Techniki programistyczne
- :-) Oblicz pierwiastek kwadratowy z dwóch korzystając z następującego sposobu:
- Bierzemy dowolną liczbę np. 100.
- Obliczamy następne przybliżenie: ½(100 + 2 / 100) = 50,01
- Obliczamy kolejne przybliżenia wg tej samej reguły biorąc do obliczeń wartość obliczoną w kroku poprzednim.
- Sprawdź na papierku, że zbieżność takiej metody jest szybka. Po ilu krokach otrzymasz mniej więcej 1,41?
- Znajdź taki kąt α dla którego: cos (α) = α.
- :-) Zrób programik do wyznaczania liczb Fibonacciego (każda następna jest sumą dwóch poprzednich: 1 1 2 3 5 8 ...).
Rekursja
Poczytaj o rekursji i zrób poniższe zadania z wykorzystaniem właśnie rekursji aczkolwiek można to zrobić inaczej.
- :-) Oblicz sumę stu liczb naturalnych.
- :-) Oblicz iloczyn: 1*2*3*...
- Wyznacz najkrótszą drogę pomiędzy dwoma miastami na mapie.
- Rozwiąż problem wież w Hanoi. O tym piszą w Internecie na każdym kroku.
- Odwiedź wszystkie pola na szachownicy ruchem skoczka.
- Funkcja Ackermana dana jest wzorem:
- A(m,n)=n+1 gdy m=0
- A(m,n)=A(m-1,1) gdy m>0 i n=0
- A(m,n)=A(m-1,A(m,n-1)) gdy m>0 i n>0
Oblicz A(4,4). Napisz program liczący wartości tej funkcji. W ilu krojach można to zrobić?
- Oblicz 10. liczbę Fibonanciego korzystając z programu napisanego w sposób rekurencyjny.
- Oblicz pierwiastek z dwóch w sposób rekurencyjny.
Zastosowania
- Oblicz czas spadania kamienia z wysokości h z uwzględnieniem oporów proporcjonalnych do prędkości.
- Po jakiej krzywej pies goni zająca?
- W jaki sposób poruszają się ciała przyciągające się siłą grawitacji?
- Po jakim czasie zderzą się dwa kamienie przyciągające się siłą grawitacji Newtona. Początkowo kamienie były nieruchome w odległości 1 m?
- Oblicz maksymalny zasięg w rzucie ukośnym z uwzględnieniem oporów.
- Napisz program do gry Life.
Uff! Starczy
Komentarze2015-03-07 09:13:54 Autor: Seweryn WgielnikPanie Krzysztofie: dziaa, dziaa! To samo dotyczy Marty. Tempus fugit a Wy jeszcze w pierwszej klasie!
|