Postanowiłem zrobić tego bloga dla maturzystów jak też dla osób lubiących programować.
Razem przejdziemy przez zadania maturalne z programowania.
Pierwsze zadanie brzmi następująco:
W kolejnych wierszach pliku cyfry.txt znajduje się 1000 liczb naturalnych, mniejszychZadanie nie wydaje się być trudne, ale na nim możemy ustalić podstawowe zasady rozwiązywania.
niż 10 do 9 (jeden miliard), po jednej liczbie w każdym wierszu.
Napisz program, który da odpowiedzi do poniższych podpunktów. Każdą odpowiedź zapisz
w pliku zadanie4.txt, poprzedzając ją oznaczeniem odpowiedniego podpunktu.
a) Ile liczb parzystych jest w pliku cyfry.txt?
b) Podaj liczbę z pliku cyfry.txt, której suma cyfr jest największa oraz liczbę z tego
pliku, której suma cyfr jest najmniejsza. W obu przypadkach jest tylko jedna taka liczba.
Przykład:
Dla danego zbioru liczb:
121324
66562
675100
1187010
odpowiedzią są liczby: 66562 oraz 121324, ponieważ suma cyfr liczby 66562 jest
równa 25 (6+6+5+6+2) i jest największą taką sumą, zaś suma cyfr liczby 121324
(1+2+1+3+2+4) jest równa 13 i jest najmniejszą taką sumą.
c) Wypisz wszystkie liczby z pliku cyfry.txt, których cyfry tworzą ciąg rosnący.
Przykład:
Cyfry liczby 123579 tworzą ciąg rosnący, ponieważ 1<2<3<5<7<9.
Cyfry liczby 1232 nie tworzą ciągu rosnącego, ponieważ ostatnia cyfra (2) nie jest
większa od przedostatniej (3).
Cyfry liczby 34556 nie tworzą ciągu rosnącego, ponieważ cyfra trzecia (5) i cyfra
czwarta (5) są sobie równe.
Pierwsze co robimy to dokładnie zapoznajemy się jak mają wczytać się dane, a dokładniej który wiersz co oznacza. W naszym przypadku danymi są liczby to liczby do 1 miliarda tak więc potrzebujemy zmiennej całkowitej czyli int, dodatkowo wiemy, że są one naturalne tak więc zaczynają się od 0 oraz są całkowite, tak więc potrzebujemy zmiennej większej od int, wystarczy dodać do niej przedrostek long oraz wiedząc, że nie mamy liczb ujemnych dajemy przedrostek unsigned.
unsigned long int liczba;Czemu tylko jedna zmienna a nie np. tablica? Po prostu chodzi o efektywność, mimo, że nie jest wymagana na maturze to dobry nawyk, by dążyć to optymalizacji kodu.
Załatwiliśmy sprawę wejścia, zajmijmy się wyjściem:
- w podpunkcie a wyjściem będzie jedna liczba określająca ilość liczb parzystych tak więc początkowo możemy stworzyć zmienną
unsigned long int parzyste
- w podpunkcie b na wyjściu będą 2 liczby których suma ich cyfr jest największa oraz najmniejsza(WAŻNE! Jeżeli mamy w jednym wierszu napisać 2 zmienne nie pomylmy kolejności tj. w tym przypadku musimy podać największą i najmniejsza a nie najmniejszą i największą). Skoro są to 2 liczby mamy wybór: Możemy stworzyć 2 zmienne lub stworzyć tablicę. Wybór należy do was, ja akurat stworzę tablicę(pamiętajmy, że tablice indeksujemy od 0):
unsigned long int punktB[1]
- w podpunkcie c nie mamy określonej ilości liczb na wyjściu wiemy, że ich liczba jest mniejsza bądź równa 1000. Dobrze jest w tym przypadku zrobić tablicę dynamiczną:
tworzymy wskaźnik tablicy: unsigned long int * rosnie;
Na dzisiaj to tyle. Podsumujmy:tworzymy tablicę wykorzystując wskaźnik: rosnie = new unsigned long int[1000];
- stworzyliśmy zmienną przechowującą kolejne cyfry;
- stworzyliśmy 3 zmienne przechowujące dane na wyjściu;
W następnej części określimy co nasz program ma robić oraz przystąpimy do podpunktów a i b;
Dobre dobre, no ale sam bym lepiej napisał ;D
OdpowiedzUsuńOOo już widzę, że masz pierwszy komentarz. Ale Ci się powodzi, dość popularny ten blog ;)
OdpowiedzUsuń