Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 8 sty 2025, o 20:42


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 28 gru 2013, o 18:54 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 24 mar 2013
Posty: 15
Lokalizacja: warmińsko-mazurskie
Pomógł: 0

Witam.
Startuje w olimpiadzie elektronicznej i niestety jednym z zadań jest napisanie programu w dowolnym języku wysokiego poziomu.
Z programowaniem to miałem doczynienia tylko na AVR w C i BASCOM. :cry:
Możecie coś doradzić przy pisaniu tego typu programów, jakieś wskazówki?
Poniżej przykładowe zadanie z rozwiązaniem w języku Fortran. Może to w tym języku najłatwiej "programować". Sam już nie wiem.
Doradźcie coś. Muszę choć trochę się nauczyć tego typu zadań :P
Dzięki za odpowiedzi. ;)


Z A D A N I E

R O Z W I Ą Z A N I E



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 19:10 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

Nie wiem, na czym dokładnie polega problem. Chodzi Ci o samo kodzenie czy podejście do tego typu zadań?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 19:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2013
Posty: 79
Lokalizacja: Rybnik
Pomógł: 2

Ja bym raczej się skłonił do C++ lub C#. Operujesz na gotowych klasach, dostępność materiałów jest ogromna.
Widać że zadanie wymaga operacjach na zmiennych, zapisaywaniu, odczytywaniu pliku, z pomocą np Visual C# możesz to łatwo zrobić. Jest mnóstwo przykładów odczytywania/ zapisywania do plików.


Autor postu otrzymał pochwałę


Ostatnio edytowano 28 gru 2013, o 19:17 przez marc90, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 19:17 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

Dobór samego języka to sprawa opcjonalna, czysto subiektywna. Ja osobiście skłaniałbym się do c++. Może dlatego, że dobrze mi się w nim pisze. Jednak najważniejsza w tego typu zadaniach jest algorytmika. Napisz na kartce co kolejno ma się dziać. Następnie dobierz do tego odpowiednie polecenia takie jak pętle etc. Jeśli to zrobisz to napisanie kodu to formalność:) Jeśli chcesz dowiedzieć się czegoś konkretniejszego to też konkretniej sformułuj pytanie, wtedy postaram się coś dopowiedzieć. Pozdrawiam


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 19:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 kwi 2013
Posty: 381
Lokalizacja: Łowisko
Pomógł: 32

na tej olimpiadzie możesz korzystać z pomocy które weźmiesz ze sobą, oczywiście prócz internetu :D więc zaopatrz sie w dobra książkę a dalej pójdzie z górki

_________________
невозможно ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 19:32 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 24 mar 2013
Posty: 15
Lokalizacja: warmińsko-mazurskie
Pomógł: 0

No chodzi właśnie o to jak zacząć rozwiązywać takie zadania. Wspomniałeś o robieniu algorytmu to już coś wiem.
Trudno coś konkretniej pytać jak nie znam dostatecznie problemu, mam podobne zadanie jak powyżej i tyle co wiem na ten moment. :cry:
Programowanie jest dosłownie na kartce papieru jeśli to coś zmienia. Głównie chodzi mi o wskazówki jak najprościej takie zadanie rozwiązać, co muszę zrobić krok po kroku i w jakim języku da się to osiągnąć najłatwiej.
Padło tutaj C++ więc rozumiem, że warto się nim zainteresować pod kątem tych zadań, należy też rozplanować działanie takiego programu. Mam już jakiś obraz tej sytuacji. Dzięki za dotychczasowe zainteresowanie i czekam na dodatkowe wskazówki.

Zabranie książki też rozważałem tylko czy to wystarczy, chciałbym poćwiczyć pisanie takich programów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 19:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 kwi 2013
Posty: 381
Lokalizacja: Łowisko
Pomógł: 32

hunger napisał(a):
Startuje w olimpiadzie elektronicznej i niestety jednym z zadań jest napisanie programu w dowolnym języku wysokiego poziomu

nie do końca, masz dwa zadania do wyboru, jedno z programowania, a drugie matematyczne i tylko od ciebie zależy co chcesz zrobić

_________________
невозможно ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 19:39 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 24 mar 2013
Posty: 15
Lokalizacja: warmińsko-mazurskie
Pomógł: 0

D_C napisał(a):
hunger napisał(a):
Startuje w olimpiadzie elektronicznej i niestety jednym z zadań jest napisanie programu w dowolnym języku wysokiego poziomu

nie do końca, masz dwa zadania do wyboru, jedno z programowania, a drugie matematyczne i tylko od ciebie zależy co chcesz zrobić


Zgadza się, jednak nie chcę lekceważyć tego programowania bo może się okazać, że łatwiej będzie napisać program niż zrobić zadanie matematyczne. Wolę być choć trochę przygotowany z tej dziedziny.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 19:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 kwi 2013
Posty: 381
Lokalizacja: Łowisko
Pomógł: 32

hunger napisał(a):
nie chcę lekceważyć tego programowania bo może się okazać, że łatwiej będzie napisać program niż zrobić zadanie matematyczne

i z tym się w 100% z toba zgadzam, jednak zawsze można od kogoś spisać :lol:

_________________
невозможно ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 23:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2013
Posty: 93
Lokalizacja: Piotrków Trybunalski
Pomógł: 1

Nie chcę reklamować, ale:
http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/24
http://warsztat.gd/files/articles/megatutorial/kurscpp/Kurs%20C++.pdf
http://xion.org.pl/productions/texts/coding/megatutorial/

Zacznij od drugiego linku, trzeci jest rozszerzeniem dla pierwszego. Pierwszy jest też bardzo fajny, po przeczytaniu śmigasz jak chcesz :)

Achtung!
W drugim linku jest pewien błąd, wynikający z czasu w jakim ta książka była pisana, ale być może też dlatego, że ja używam innego kompilatora :) Jednak przejrzyj to wszystko, a naprawdę załapiesz C++ na WYSOKIM POZIOMIE :D

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 23:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 208
Lokalizacja: Kraków
Pomógł: 16

Offtop:
Jedziesz na OWT, etap okręgowy? Wydaje mi się że miałem to zadanie właśnie :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2013, o 01:36 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

Hmmm... jeśli to zadanie nie jest na pewno konkursowym na ten moment, to myślę, że można je rozpatrzyć na łamach forum. Zapewne gdzieś takowe rozwiązanie istnieje ale skoro już tu padło to spróbuję coś naskrobać. Jesteśmy w o tyle fajnej sytuacji, że praktycznie wszystko masz wyłożone na tacy jeśli chodzi o obliczenia. Zwróć uwagę na to, co program musi robić. Na pewno łatwiej będzie policzyć poszczególne jego elementy niż cały parametr od razu, zwłaszcza że powtarzają się one kilka razy. Dla uproszczenia załóżmy, że liczby wprowadzane są z klawiatury. W pierwsze kolejności należy stworzyć(zdefiniować) tyle zmiennych ile wyrażeń musisz policzyć. Aby nie dawać wszystkiego na tacy podpowiem, że chodzi o poszczególne sumy występujące we wzorach. Pod koniec będziesz sobie dziękował za zastosowanie właśnie takich uproszczeń:) Zastanów się ile zmiennych musisz utworzyć oraz nazwij je w odpowiedni sposób, aby łatwo było do nich wrócić.
Następnie pojawia się problem zapisywania liczb do pamięci. Zakładając ograniczoną ilość wpisywanych danych polecałbym na ten moment, choć za pewne koledzy będą mieli równie fajne jak nie lepsze pomysły, zastosowanie tablicy dwuwymiarowej zawierającej kolejne i-te i j-te wartości x,y. Jest to o tyle wygodne, że możesz stworzyć tablicę 100 na 100, więc pewnie wystarczy;)
EDIT: Jest to trochę uproszczenie myślowe. Oczywiście chodzi o tablicę dwukolumnową:)
Oczywiście przy tym temacie pojawia się również pytanie: jak sprawdzić kiedy użytkownik skończy wprowadzać dane. Tu z pomocą przychodzi np. pętla while. Za każdym zakończeniem pętli pytamy czy chcesz wprowadzić następne dane. Można oczywiście na początku zapytać ile danych zostanie wprowadzonych, co na pewno będzie bardziej eleganckie w wykonaniu jednak wymaga użycia tablicy dynamicznej (co również jest proste i warto się tym zainteresować). Wprowadzane dane są zapisywane jako kolejne elementy tablicy przez co później w łatwy sposób można będzie się do nich odwoływać. Oczywiście należy tutaj pamiętać o wprowadzeniu zmiennej pomocniczej, która będzie się inkrementować przy każdym przejściu pętli tak, aby nasz program wiedział ile liczb ma np. do zsumowania. Może pokracznie to brzmi ale mam nadzieję, że rozumiesz. Kiedy już to wykonamy, pozostaje zapoznać się z funkcjami oferowanymi przez bibliotekę math.h i zastosować je do utworzenia poszczególnych elementów wyrażeń opisujących parametry a i m. Aby wyliczyć np. sumę iloczynów należy stworzyć pętlę for która w kolejnych krokach będzie do naszej zmiennej suma_iloczynow dodawać kolejne iloczyny tablicy A inkrementując jednocześnie i++, j++ aż do granicy naszej zmiennej pomocniczej z zastosowanej pętli while.
Tak na dobrą sprawę jest to już koniec programu. AAA... no i zapis do pliku. Tutaj z pomocą przychodzi zmienna plikowa. Polecenia są proste i spokojnie znajdziesz je w każdym kursie cpp.
Jeśli masz jeszcze jakieś pytania, to śmiało.
Pozdrawiam


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO