Azrael Temat założony przez niniejszego użytkownika |
Prosty program wykorzystujący stałą tablicę jednowymiarową » 2016-12-15 17:18:16 Witajcie :) jestem tutaj dość świeży, tak jak w pisaniu w C++. Mam dość ambitny plan napisać program/grę. Postaram się wytłumaczyć w miarę logicznie o co mi chodzi :) (nie widziałem nigdzie opcji szukaj, oraz nie wiem nawet jak to zakwalifikować, więc przepraszam jeśli już było) Chcę określić tablice jednowymiarową która będzie składała się z 100 stałych pól od 1 do 100. Po podaniu liczby program ma mnie informować wiadomościami dot. czy jestem bardzo blisko celu, blisko czy daleko. Postanowiłem wykorzystać do tego funkcję "if". Dodatkowo chcę, aby cel losowo przeskakiwał po tej tablicy. Poniżej wstawiłem kod który przybiera taką tabelę i teraz nie wiem co mam dalej z tym zrobić, aby mieć interakcję jakąś z ów programem. Dziękuję za rady oraz pozdrawiam. #include <iostream> #include <conio.h> #include <string.h>
using namespace std;
int main()
{ int a; string miasto[ 100 ]; for( int i = 0; i < 100; i++ ) cin >> a; if( a < 5 ); cout << "Jestes Bardzo Blisko Celu." << endl; if( a > 5 || a < 10 ); cout << "Jestes Blisko Celu. " << endl; if( a > 10 || a < 100 ); cout << "Jestes Daleko od Celu. " << endl; return 0; }
|
|
Gibas11 |
» 2016-12-15 17:28:01 Źle do tego podszedłeś, nie potrzebujesz żadnej tablicy (zwłaszcza typu string), po prostu zrób zmienną trzymającą pozycję celu. Wtedy odległość od niego to std::abs( cel - pozycja ) (abs – wartość bezwzględna). A całość opakuj w pętlę i powtarzaj ją dopóki pozycja != cel . //edit: for( int i = 0; i < 100; i++ ) cin >> a;
A ten kod wczytuje 100 razy liczbę od użytkownika, chyba nie o to Ci chodziło. |
|
Azrael Temat założony przez niniejszego użytkownika |
» 2016-12-15 17:50:55 Dokładnie, zastanawiałem się dlaczego program chce abym 100 razy wpisywał liczbę, po czym się kończył. Teraz zauważyłem ten błąd. Ogólnie to staram się zastosować std::abs( cel - pozycja ) . Konkretniej ten cel, dobrze żeby był wartością nie deklarowaną przeze mnie, tylko zmieniał losowo swoje położenie w tabeli. Czyli załóżmy że ja podaję liczbę 7, a cel jest ode mnie 8 pól dalej, później po wpisaniu liczby 15 cel żeby przesunął się powiedzmy na pozycję 25. Właśnie w tym momencie rodzi mi się w głowie zagwozdka co dalej z tym zrobić. |
|
Gibas11 |
» 2016-12-15 18:02:41 Do prostego losowania możesz użyć funkcji rand() z cstdlib, jest opisana gdzieś na tej stronie (chyba kursy). I lepiej przesuwać cel o 1 w prawo / lewo, bo inaczej praktycznie nie dałoby się go trafić a tak możesz osiągnąć taki prawie pościg. |
|
latajacaryba |
» 2016-12-15 18:30:58 ten operator oznacza "lub". if( a < 5 );
cout << "Jestes Bardzo Blisko Celu." << endl;
if( a > 5 || a < 10 );
cout << "Jestes Blisko Celu. " << endl;
if( a > 10 || a < 100 );
cout << "Jestes Daleko od Celu. " << endl;
1. tutaj mowisz: "jesli a jest mniejsze od 5 to..." 2. tutaj mowisz: "jesli a jest wieksze od 5 LUB mniejsze od 10." Wiec np. liczba 3 sie zalicza, bo jest mniejsza od 10 ;) 3. to samo. a > 10 LUB a < 100. zalicza sie kazda liczba, bo np. -1094 jest mniejsze od 100 - zgadza sie, jak rowniez 1045 bo jest wieksze od 10 - zgadza sie Zakładam, że chodziło Ci o && - operator "i", czyli if( a > 5 && a < 10 ) - jesli a > 5 ORAZ a < 10. if( a < 5 );
cout << "Jestes Bardzo Blisko Celu." << endl;
if( a > 5 && a < 10 );
cout << "Jestes Blisko Celu. " << endl;
if( a > 10 && a < 100 );
cout << "Jestes Daleko od Celu. " << endl;
Teraz uważaj - mamy już poprawione, ale co jeśli wpiszemy 5? Nigdzie nie ma tu nic o a = 5. jest dla a<5, dla a>5 ale co z a = 5? Zastosuj a >= 5 lub a <= 5 czyli kolejno a wieksze lub rowne 5 i a mniejsze lub rowne 5. Możesz oczywiście dodać |
|
latajacaryba |
» 2016-12-15 19:16:02 Poza tym myślę, że na początek łatwiej by Ci było z tablicą char char tablica[ 100 ] . Zabawa ze stringiem będzie trudna bo będziesz musiał wiedzieć co to tzw. klasa, funkcję składowe i konstruktory (chociaż to ostatnie niekoniecznie). Najpierw dowiedz się co to funkcja (NIE funkcja składowa). Wszystko znajdziesz w kursach (symbol książki na pasku w lewym górnym rogu). Jeśli Cię to (programowanie) wciągnie, to gorąco polecam książkę "Symfonia c++ standard" Jerzego Grębosza. Co do dalszych wymagań programu: - liczby (pseudo)losowe, losowanie - http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Pseudolosowe-liczby-calkowite/290 - dowiedz się co to pętle (nie tylko for() ) - przeczytaj to: http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Operacje-logiczne/15 Ogólnie poleciłbym gruntowne przeczytanie kursów na forum i zastanowienie się nad kupnem w/w książki. 2 tomy kupiłem za ~80zł na allegro. String jest dobre dla początkującego, kiedy chce przechować tekst: "ala ma kota", bez zastanawiania się jak duża musi być zmienna, jak to ma miejsce z tablicą char. Poza tym, bardzo fajnie można na niej (zmiennej string) operować. np. string zdanie = "ala ma kota"; zdanie += ",kot ma ale";
Na razie nie martw się i nie googluj co to jest klasa, funkcja składowa bo bez podstawowych wiadomości tego nie zrozumiesz, a jedynie obrzydzisz sobie c++. Podsumowując, przeczytaj kurs, zastanów się nad "symfonią C++" J. Grębosza, i zobacz ten kanał na YT: https://www.youtube.com/channel/UCzn6vAfspIcagLax1fck_jw Na razie zostawiłbym ten projekt. Przynajmniej do dowiedzenia się co to pętle, poznania operatorów logicznych i dowiedzenia się co to są tablice i jak działają. |
|
carlosmay |
» 2016-12-15 19:41:46 gorąco polecam książkę "Symfonia c++ standard" Jerzego Grębosza. |
Mamy już rok 2016. Poszukaj jakiegoś tytułu Praty lub Stroustrupa uczącego już standardu C++11. |
|
« 1 » |