Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Prosty program wykorzystujący stałą tablicę jednowymiarową

Ostatnio zmodyfikowano 2016-12-15 19:41
Autor Wiadomość
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.
C/C++
#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;
}
P-154991
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:
C/C++
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.
P-154993
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ć.
P-154996
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.
P-154998
latajacaryba
» 2016-12-15 18:30:58
C/C++
||
ten operator oznacza "lub".
C/C++
if( a < 5 ); //1.

cout << "Jestes Bardzo Blisko Celu." << endl;

if( a > 5 || a < 10 ); //2.

cout << "Jestes Blisko Celu. " << endl;

if( a > 10 || a < 100 ); //3.

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.
C/C++
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ć
C/C++
if( a == 5 ) // == tak, 2 razy '=', operator porownania
P-155001
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.
C/C++
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ą.
P-155005
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.
P-155008
« 1 »
  Strona 1 z 1