Zaloguj się, aby obserwować  
Bartuc

Język C / C++ / C# / Java - pytania, problemy...

1979 postów w tym temacie

Dzięki za szczegółową odpowiedź. Ale mam jeszcze jeden problem. Nie wiem dlaczego, ale mój nagłówek nazwany "naglowek.h" nie chce się dołączyć do pliku przy kompilacji tworząc błąd. I to nie tylko przy moim programie. Ściągnąłem ze strony autora Symfonii plik z kodem źródłowym jego programu składającego się z wielu plików i wyskakiwały te same błędy. Czyli jakby tego nagłówka po prostu nie było.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 23.10.2011 o 21:02, Xjumpaytech napisał:

Dzięki za szczegółową odpowiedź. Ale mam jeszcze jeden problem. Nie wiem dlaczego, ale
mój nagłówek nazwany "naglowek.h" nie chce się dołączyć do pliku przy kompilacji tworząc
błąd.

Zwykle problemem jest ścieżka i fakt czy nagłówek ma rozszerzenie .h (w C++ nie powinien). Bez ścieżki w cudzysłowie wszystko jest zależne od katalogów przeszukiwania przez kompilator.

Dnia 23.10.2011 o 21:02, Xjumpaytech napisał:

I to nie tylko przy moim programie. Ściągnąłem ze strony autora Symfonii plik z
kodem źródłowym jego programu składającego się z wielu plików i wyskakiwały te same błędy.

Najprawdopodobniej błędna konfiguracja IDE (Visual C++).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Mam do napisania w C++ dwa programy:
a) program wybierający najmniejszą liczbę z 10 podanych przez użytkownika.
Liczby powinny być podawane w dwóch formach:
1 2 3 4 5 6 7 8 9 10 (oddzielone spacjami);
1 2 3 4 5 6 7 8 9 10 (oddzielone enterami).
b) program wypisujący podaną liczbę całkowitą w postaci binarnej oraz binarną w postaci całkowitej

Pomoże ktoś? :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 24.10.2011 o 13:50, Henrar napisał:

Mam do napisania w C++ dwa programy:
a) program wybierający najmniejszą liczbę z 10 podanych przez użytkownika.
Liczby powinny być podawane w dwóch formach:
1 2 3 4 5 6 7 8 9 10 (oddzielone spacjami);


funkcja scanf() z biblioteki stdio
użycie scanf("%d %d %d %d %d %d %d %d %d %d \n", a[0], a[1], a[2], a[3]...);

Dnia 24.10.2011 o 13:50, Henrar napisał:

1 2 3 4 5 6 7 8 9 10 (oddzielone enterami).

for(k=0; k<10; k++) scanf("%d\n", a[k]);

po wczytaniu liczb for(k=0;k<10;k++) if (a[k]<min) min=a[k];

Dnia 24.10.2011 o 13:50, Henrar napisał:

b) program wypisujący podaną liczbę całkowitą w postaci binarnej oraz binarną w postaci
całkowitej


do tego potrzebujesz napisać sam funkcję np taką:

int inttobin (int a)
{
int k=0, b=0;
while (a>0)
{
b+=((a%2)*pow(10,k++));
a/=2;
}
return b;
}

oraz taką:

int bintoint(int a)
{
int k=0, b=0;

while(a>0)
{
b+=(a%10)*pow(2,k++);
a/=10;
}
return b;
}

Dnia 24.10.2011 o 13:50, Henrar napisał:

Pomoże ktoś? :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

int main()
{
int tn;
do
{
coutuje rozne opcje
int d;
cin>>d;
switch(d)
{
case 1: dodawanie() ;break;
case 2: odejmowanie();break;
case 3: mnozenie();break;
case 4: dzielenie();break;
default: cout<<"Niewlasciwy numer.";
}

cout<<"Czy chcesz liczyc dalej? (t/n): "<<endl;
cin>>tn;
}
while(tn!=''n'');
return 0;
}

Tym razem problem chyba prosty, ale i tak nie wiem gdzie. Niezależnie od tego jaki znak wpisze wszystko i tak się zapętla... tn jest zdeklarowane w main.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 26.10.2011 o 17:43, tomoliop napisał:

Tym razem problem chyba prosty, ale i tak nie wiem gdzie. Niezależnie od tego jaki znak
wpisze wszystko i tak się zapętla... tn jest zdeklarowane w main.


1. spróbuj zadeklarować tn jako char zamiast int.
2. Po linii sczytującej tn daj coś takiego:
cout<<endl<<tn<<endl;
Spowoduje to wyświetlenie tego co przechwyciło cin>>tn; taki prosty sposób debugownia na zasadzie wywalania na ekran zmiennej jeśli nie wiesz w czym jest problem.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 26.10.2011 o 18:33, Nufiko napisał:

> Tym razem problem chyba prosty, ale i tak nie wiem gdzie. Niezależnie od tego jaki
znak
> wpisze wszystko i tak się zapętla... tn jest zdeklarowane w main.

1. spróbuj zadeklarować tn jako char zamiast int.
2. Po linii sczytującej tn daj coś takiego:
cout<<endl<<tn<<endl;
Spowoduje to wyświetlenie tego co przechwyciło cin>>tn; taki prosty sposób debugownia
na zasadzie wywalania na ekran zmiennej jeśli nie wiesz w czym jest problem.


Dzięki, wiedziałem, że problem jest jakiś głupi...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Mam taki problemik.

Robię sobie pewien programik do gry w pokera kościanego i jak zrobić, by podczas tworzenia obiektu Player tworzyły się i zapisywało do vectora, tablicy w klasie Player 5 obiektów typu Dice.

Mam coś zrobione:

Player::Player()
{
for(int a=0;a<5;a++)
{
Dices[a] = new Dice;
}
}

Lecz jak później korzystam z funkcji do losowania liczby na kościach:

void Player::rollAll()
{
for(int a=0; a<5;a++)
{
Dices[a]->roll();
}
}

Gdzie roll() to funkcja w klasie Dice:

void Dice::roll()
{
srand ( time(NULL) );
value = rand()%6+1;
}

To na wszystkich 5 kościach jest ten sam wynik.

Edit ---> Jak dodałem plik testowy do konstruktora Dice to wywołał mi się 5 razy, więc jak zrobić, by miały różne wyniki rzutu?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 30.10.2011 o 14:18, Piotrbov napisał:

void Dice::roll()
{
srand ( time(NULL) );
value = rand()%6+1;
}


Prawdopodobnie tu jest błąd. Ponieważ time(NULL) zwraca ilość sekund od 1 stycznia 1970, a pętla wykonuje się w mniej niż sekundę, za każdym razem srand dostaje taki sam parametr, a więc i kolejne losowania będą wyglądały tak samo. Aby liczby były różne, powinieneś użyć tylko jeden raz srand, wtedy kolejne losowania będą miały różne wyniki. A przynajmniej tak mi się wydaje.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ok, dzięki za podpowiedź, lecz nie podziałało, dałem natomiast w tej pętli srand(a) i to połowicznie zadziałało, tylko, że ciągle po każdej kompilacji są te same wyniki.

Jest jakaś funkcja w C++, co powoduje przerwę w wykonywaniu funkcji na ileś tam sekund?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 30.10.2011 o 15:09, Piotrbov napisał:

Ok, dzięki za podpowiedź, lecz nie podziałało


void Player::rollAll()
{
srand ( time(NULL) );
for(int a=0; a<5;a++)
{
Dices[a]->roll();
}
}

void Dice::roll()
{
value = rand()%6+1;
}

Takie coś nie działa?

Dnia 30.10.2011 o 15:09, Piotrbov napisał:

dałem natomiast w tej pętli srand(a) i to połowicznie zadziałało, tylko, że ciągle po każdej
kompilacji są te same wyniki.

Nic dziwnego, po to daje się srand(time(0)), żeby przy każdym uruchomieniu programu dostać inne wyniki (dla każdej sekundy jest wtedy inna kombinacja). Jeśli przekazujesz a, to za każdym razem masz te same liczby jako parametr (0,1,2,3,4).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ze względu na to, że mój problem tyczy się programowania między innymi, postanowiłem zapytać się w tym temacie. Mianowicie sytuacja wygląda tak: Jestem w drugiej klasie LO na profilu humanistycznym, miałem iść na filologię angielską po skończeniu szkoły, ale stwierdziłem, że to bez sensu, "obudziłem się" i pomyślałem, że może zrealizuje swoje marzenie i zostanę programistą / informatykiem. Teraz do sedna: Czy możliwe jest przez te 1,5 roku nauczyć się rozszerzonej matmy i programowania np. C++ ucząc się 12 godzin tygodniowo matmy i 12 godzin programowania tak żeby zdać maturę z matmy i ewentualnie z informatyki i dostać się na studia? Nie mam przyszłości w zawodzie humanistycznym, a z komputerami chciałem mieć do czynienia w życiu zawodowym od małego. Pomóżcie drodzy gramowicze.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Aby dostać się na studia informatyczne nie musisz umieć programować, uczą zwykle od zera w tempie ekstremalnym. Jak napiszesz kilka prostych ćwiczeniowych programów w wakacje, to i tak pewnie będziesz przebijał poziomem część roku, więc na razie nie przejmowałbym się tym zbytnio. Co do matmy - to zależy na jakim poziomie jesteś, generalnie wykonujesz obrót o 180 stopni, co nie jest często spotykane, więc ciężko ocenić. Ale jeśli przez półtora roku nie dasz rady przygotować się do matury z matmy to jesteś albo leniem, albo powinieneś zostać przy filologii :P

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Leniem to ja nie jestem, raczej jestem zmotywowany i mam duże chęci, chciałbym się tego wszystkiego nauczyć, żeby dostać się na studia i je skończyć, nie wiem czy dobrą drogę obrałem, ale kupiłem sobie symfonię c++(słyszałem o niej dobre opinie) podręczniki z ćw do matmy rozszerzonej i zamierzam się z nich uczyć w weekendy co by wychodziło właśnie po 12 h z tego i z tego tygodniowo. Sugerujesz więc że się da? Mam wielkie nadzieje i motywacje, dodatkowo kumatym i dobrym uczniem jestem.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jest możliwe nauczyć się szybciej nawet. Zależy to tylko od twojego samozaparcia. Ogólnie jeśli chcesz iść na studia techniczne albo ścisłe to ta ilość wiedzy jaka chcesz przyswoić to na studiach dają na to ok 1 semestr. Z maturą jest jednak tak że najlepiej na nią uczyć sie pod kątem wymagań a nie ogólnej wiedzy.
Jeśli chodzi o samo programowanie to wystarczy przyswoić sobie w zasadzie wiedzę z jednej książki (na początek) by znać podstawy i umieć coś napisać, a potem pisać i pisać i pisać i z czasem będziesz coraz lepszy w te klocki albo stwierdzisz, że to nie dla Ciebie i zrezygnujesz.

Aha i programowanie to nie jest do końca zamiłowanie do komputera. Znam osobiście programistów, którzy nie bardzo wiedzą co mają pod obudową, a już zupełnie są zagubieni jak im coś się zepsuje. Także zadaj sobie pytanie wolisz być programistą z wiedzą w jaki sposób napisać program na komputer/telefon, czy może kimś kto dostaje niedziałający (znaczy niedziałający w tej kwestii że trzeba to oprogramować aby mieć z tego użytek) kawałek sprzętu i napisać kawałek kodu oby to ożywić czy może też chcesz być tym, który zaprojektuje sprzęt a pisanie bardziej skomplikowanego kodu zostawi innym.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dziękuję za odpowiedź. Chciałbym być programistą który pisał by programy/gry na komputery/telefony, tak jak napisałem wyżej, mam dużo samozaparcia i wiary w siebie, więc skoro piszesz, że się da to zaufam i zabiorę się do roboty w takim razie. :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 01.11.2011 o 20:58, Arumantis napisał:

zamierzam się z nich uczyć w weekendy co by wychodziło właśnie
po 12 h z tego i z tego tygodniowo.


Jeśli chcesz siedzieć cały dzień na nauce matmy albo programowania, to krzyżyk na drogę. Lepiej rozplanuj to sobie na cały tydzień, po kilka godzin dziennie, na pewno więcej wiedzy z tego wyniesiesz, i mniej nerwów będzie cię to kosztowało.
A co do nauki matmy - nie kieruj się książkami, tylko załatw sobie jakieś arkusze maturalne z zeszłych lat i je rozwiązuj, a jak czegoś nie będziesz wiedział to dopiero posiłkuj się książkami.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

mam stringa z tekstem, w którym są znaczniki w formacie %%xxx%% np.
string s = "to dlugi tekst z %%znacznikiem%% i %%drugim%%, i jeszcze trzecim%%znacznikiem%%"
muszę wyciągnąć wszystkie znaczniki i wrzucić je do listy. tekst między %% jest różny i muszę znajdować wszystko co jest między procentami. Dzielenie po spacji nie przejdzie, bo znaczniki mogą być ze sobą sklejone np:
%%znaczniki1%%%%znacznik2%%
Jeden string może mieć wiele znaczników.
Jak w C# to jakoś sensownie i szybko rozwiązać?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 02.11.2011 o 10:45, DemoBytom napisał:

mam stringa z tekstem, w którym są znaczniki w formacie %%xxx%% np.
string s = "to dlugi tekst z %%znacznikiem%% i %%drugim%%, i jeszcze trzecim%%znacznikiem%%"
muszę wyciągnąć wszystkie znaczniki i wrzucić je do listy. tekst między %% jest różny
i muszę znajdować wszystko co jest między procentami. Dzielenie po spacji nie przejdzie,
bo znaczniki mogą być ze sobą sklejone np:
%%znaczniki1%%%%znacznik2%%
Jeden string może mieć wiele znaczników.
Jak w C# to jakoś sensownie i szybko rozwiązać?

Poczytaj dokumentację do wyrażeń regularnych (Regexp). Zrobisz to w jednej linijce.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Utwórz konto lub zaloguj się, aby skomentować

Musisz być użytkownikiem, aby dodać komentarz

Utwórz konto

Zarejestruj nowe konto na forum. To jest łatwe!


Zarejestruj nowe konto

Zaloguj się

Masz już konto? Zaloguj się.


Zaloguj się
Zaloguj się, aby obserwować