5-6 działu czy 5-6 lekcji z 1 działu? Czego konkretnie nie rozumiesz?
Wersja do druku
5-6 działu czy 5-6 lekcji z 1 działu? Czego konkretnie nie rozumiesz?
Pomyłka. 9 dokładnie.
Nie rozumiem o co chodzi z buforem i jak napisać tą pracę domową. Wyszło mi coś takiego:
Ale primo to nie działa, segundo raczej źle zrobione bo nie zbyt rozumiem zadanie.Kod:#include <iostream>
int main()
{
int jedynka;
int dwojka;
int trojka;
bool jeden = std::cin.good();
bool dwa = std::cin.good();
bool trzy = std::cin.good();
std::cout << "wpisz jedynke" << std::endl;
std::cin >> jedynka;
std::cout << "wpisz dwojke" << std::endl;
std::cin >> dwojka;
std::cout << "wpisz trojke" << std::endl;
std::cin >> trojka;
std::cout << "jedynka to = " << jedynka << std::endl;
std::cout << " czy cos kurwa nawalilo? " << jeden << std::endl;
std::cout << "dwojka to = " << dwojka << std::endl;
std::cout << " czy cos kurwa nawalilo? " << dwa << std::endl;
std::cout << "trojka to = " << trojka << std::endl;
std::cout << " czy cos kurwa nawalilo? " << trzy << std::endl;
std::cin.clear();
std::cin.sync();
return 0;
}
Poprawione:
1. Używaj using namespace std; na początku programu. Dzięki temu nie bedziesz musiał pisać std::cin tylko po prostu cin (tak samo z cout)
2. W pracy domowej pisze zebys czyscił bufor po kazdej liczbie a w twoim kodzie jest on czyszczony na samiutkim koncu gdzie w sumie nie jest juz do nieczego potrzebny
3. Zmienne jeden, dwa, trzy oznaczajace poprawne wczytywanie musza byc przypisane dopiero po sprawdzeniu liczby a nie na samym poczatku. Skad program ma wiedziec że chcesz użyc np jeden po wszytaniu jedynki a nie gdzie idziej.
4. No i niepoprawny napis na koncu :D powinno byc "Czy nic k*** nie nawalilo" :D
5. W zadaniu pisze ze masz wczytywac zmienne rzeczywiste (float,double) a wczytujesz całkowite inty
SPOILER ALERT:
Kod:#include <iostream>
using namespace std;
int main()
{
float jedynka;
float dwojka;
float trojka;
bool jeden, dwa, trzy;
cout << "wpisz jedynke" << endl;
cin >> jedynka;
jeden = cin.good();
cin.clear();
cin.sync();
cout << "wpisz dwojke" << endl;
cin >> dwojka;
dwa = cin.good();
cin.clear();
cin.sync();
cout << "wpisz trojke" << endl;
cin >> trojka;
trzy = cin.good();
cin.clear();
cin.sync();
cout << "jedynka to = " << jedynka << endl;
cout << " czy nic kurwa nie nawalilo? " << jeden << endl;
cout << "dwojka to = " << dwojka << endl;
cout << " czy nic kurwa nie nawalilo? " << dwa << endl;
cout << "trojka to = " << trojka << endl;
cout << " czy nic kurwa nie nawalilo? " << trzy << endl;
return 0;
}
Widzę, że temat obumarł...
Wróciłem z majówki pełen chęci do pracy (mam nadzieję, że mi nie przejdzie D:) i zamierzam popróbować zadanka z Google Code Jam, dopracować zadanie od Killavusa z krową i ogarnąć grafy.
Zastanawiałem się również nad tematem Olimpiady Informatycznej. Brał ktoś z Was udział? W ile można się przygotować do takiej olimpiady (żeby chociaż osiągnąć tytuł finalisty)? Jakie książki mogą pomóc?
Nie warto startować w Olimpiadach. Po dobrym opanowaniu jakiegoś języka, a potem algorytmów można się zabrać np. za webmasterstwo (ten termin chyba nie pasuje do dzisiejszych czasów ; x) albo za aplikacje na telefony i zgarnąć całkiem niezły hajs. Dodatkowo takie programowanie, próby stworzenia czegoś z niczego dają dużo więcej satysfakcji niż bycie maszyną do rozwiązywania zadań.
Mylisz się, większość maszynek do rozwiązywania zadań pracuje w Google i robi bardzo dobre pieniądze. Firmy zabijają się o te maszynki, co widać na zawodach AMPPZ czy CERC.
Olimpiada Informatyczna to ciekawy konkurs ale imho zadania na nim są raczej średnim odzwierciedleniem tego jak programuje się naprawdę. W prawdziwym programowaniu bardzo dużą rolę odgrywają rozwiązania heurystyczne, które na OI są zerowane (znam kolesia ktory obmyslal testy do zadan i mówił mi że gdy oni obmyślają tesy to siadają i starają sie obmyślic wszelkie możliwe heury i je potem udupić). Ogólnie polecam tworzyć własne projekty nieważne jak bardzo h*jowe by były na początku. Kalkulator? Prosze bardzo. Zacznij od najprostszego typu "Podaj 2 liczby i działanie". Dodaj potem do niego obsługe liczb zespolonych. Potem wczytywanie działań (np. "2+3*(4-2)"). Potem obliczenia macierzowe itp. Gra? Zacznij od ogarniecia jakiejś biblioteki graficznej (polecam Allegro). Zrob kuleczke odbijajaca sie od krawedzi okna. Potem dodaj paletke. Potem klocki. Potem dodaj wykrywanie kolizji z klockami. Potem dodaj jakis system cząsteczkowy i inne graficzne pierdółki. Zrób realistyczne odbicia kulki od klockow. Z kazdym projektem rośnie frajda z programowania i w pewnym momencie znika "bariera jezykowa" tak przeszkadzająca na początku
Ciekawe spojrzenie na sprawę. Głównie myślałem o OI dlatego, że już sam tytuł finalisty zwalnia z pisania matury, a co za tym idzie - wolny wstęp na którąkolwiek uczelnie. Dodatkowo takie rozwiązywanie problemów olimpijskich na pewno rozwija myślenie.
@up
Podoba mi się idea tworzenia własnych projektów. Jednak od rozpoczęcia mojej przygody z programowaniem, bardziej kręciło mnie robienie "użytecznych" programów niż rozwiązywanie problemów z uva czy spoja. (Chociaż rozwiązanie takiego problemu również przynosi dużo satysfakcji)
Z drugiej strony chciałbym chociaż spróbować swoich sił w OI, ale nie mam pojęcia jak się do niej przygotowywać. Czytałem, że "Biblię algorytmów" Cormena trzeba mieć w małym palcu, a to i tak nie wystarcza.
@up nie chce cie zniechecac ale o wieee(duzo jeszcze tych "e")le łatwiej jest po prostu napisac mature z infy na 100% niz zostać finalista OI. Problem jest taki że jej poziom jest zwykle bardzo wysoki, zadania trudne i wymagające nie tylko myślenia ale i znajomości bardzo dużej ilości wszelkiej maści algorytmow i to na pamiec (przeszukiwania w grafie, Dijkstra, Floyd-Warshall, przeszukiwanie w tekscie, jakies numeryczne, geometria obliczeniowa itd itd). Na studiach tworzy sie bardziej przyziemne projekty (np moj obecny "Zaprojekstuj system wspomagający prace biblioteki uczelnianej." mam zapewnic dodawanie, edytowanie ksiazek, uzytkownikow, zrobic interfejs itp). Do tego OI raczej sie nie przydaje
Wprowadzenie do algorytmów CLRS to raczej kiepska książka, napisana w mało zrozumiały sposób i z dużą liczbą skomplikowanych teorii i dowodów. Przeczytać nie zaszkodzi, ale istnieją dużo lepsze pozycje (niestety chyba żadna inna książka nie pokrywa całego materiału CLRS). Jako pierwszą książkę do algorytmów czytałem 'Algorytmy' R. Sedgewicka i K. Wayne'a i wydaje mi się dużo bardziej zrozumiała i przejrzysta niż CLRS, poza tym przykłady są pisane w Javie a nie w jakimś niezrozumiałym i abstrakcyjnym pseudokodzie.
@edit
Tak jak napisał Sir Krzaku, taka znajomość algorytmów ma niewiele wspólnego z prawdziwym programowaniem, gdzie największe problemy stanowią zazwyczaj modularność, dobra hierarchia klas, dokumentacja, obsługa błędów itp.
Poza tym nie jestem fanem wkuwania takich rzeczy na pamięć. Jak potrzebuje napisać jakiś bardziej skomplikowany algorytm to biorę książkę, otwieram google i jazda... na nieznajomości wszystkiego na pamięć dużo czasu nie stracisz.
Panowie, algorytmy szukania ścieżki ( pathfinding ) ?
Staram się stworzyć parę AI do gry, gra dzieje sie w dwóch wymiarach (X,Y) więc powinno być w miarę łatwe do zrobienia.
Materiały jakieś na ten temat masz może? ;d