Zaloguj się, aby obserwować  
Bartuc

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

1979 postów w tym temacie

Dnia 11.05.2009 o 00:29, LifaR napisał:

for(int i=1, int licznik=0 ; ((gen_liczba==min)||(gen_liczba==max)) ; i++, licznik++)


Dopiero teraz zauwazylem blad ;) For wykonuje sie oczywiscie dopoki warunek jest prawdziwy, wiec powinno byc:

for(int i=1, int licznik=0 ; ((gen_liczba!=min)&&(gen_liczba!=max)) ; i++, licznik++) ;

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 11.05.2009 o 11:49, LifaR napisał:

> for(int i=1, int licznik=0 ; ((gen_liczba==min)||(gen_liczba==max)) ; i++, licznik++)


Dopiero teraz zauwazylem blad ;) For wykonuje sie oczywiscie dopoki warunek jest prawdziwy,
wiec powinno byc:

for(int i=1, int licznik=0 ; ((gen_liczba!=min)&&(gen_liczba!=max)) ; i++, licznik++)
;



Wielkie Dzięki :)

Czystość kodu jest bardzo ważna :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

// Sry za double posta

Teraz znowu dostałem dawkę errorów , być może dev-c++ się gryzie ^^

expected unqualified-id before "int" - a to jest dla mnie nie zrozumiałe
expected `,'' or `;'' before "int" - tu ja nie wiem totalnie co mu nie pasuje // w kalkulatorze mojej roboty też przed "for" było ";" i go nie wkurzało ^^


kod [...]

{
gen_liczba=rand()%101;
cout << "Wygenerowana liczba to " << gen_liczba << ".\n";
cout << "\n";
}
{
for (int i=1, int licznik=0 ; ((gen_liczba==min)||(gen_liczba==max)) ; i++, licznik++) ; // jak to zrobię jako komentarz nie ma błedów
{
if((gen_liczba==min)||(gen_liczba==max))

{

// (co do wcześniejszego nie do końca wyjaśnionego przez ze mnie co chce osiągnąć)

chce aby pętla wykonała się "n" aż spełni się warunek że jeśli liczba (((gen_liczba==min) [minimalna zakres] II (lub) (gen_Liczba==max)[max zakresu])||([lub](gen_liczba==max)&&(gen_liczba==min)))

kombinuje z własnym algorytmem (binarne wyszukiwanie) , ponieważ pseudo kody się sypią w devie-C++ , pewnie z powodu tego że kompilator nie obsługuje np. (tab)

Wziąłem sobie wyzwanie :) i skombinowałem sobie zadanko które chce wykonać

bo ogólnie mówiąc to się zastanawiam czy treść dobrze zinterpretowałem zadanka [wyzwania]


- program losuje liczbę od 0-100[101 znaków] - w devie zastosowanie gen_liczba=rand(100) // powoduje error biblioteki i zastosowałem ominięcie tego gen_liczba=rand()%101;

Program ma znaleźć liczbę metodą bisekcji(później jest opis i jeśli dobrze go rozumowałem to wyszukiwania binarnego) ma znaleźć tą liczbę i w ilu krokach //czyli ile razy się pętla wykonała

Lewy początek przedziału wynosi 0(min=0), prawy 100(max=100). Dzielisz przedział na pół i sprawdzasz, w której połowie jest szukana liczba (porównując czy środek przedziału jest większy od liczby czy nie) (zastosowanie wykluczeń ^^). Następnie zmniejszamy o połowę przedział poszukiwań wybierając tą połowę, w której jest szukana liczba. Operację dzielenia i szukania liczby wykonuje pętla.


Chciałbym się czuć wolny w c++ jak pisząc skrypty w php :D

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 11.05.2009 o 18:20, BoloMaster napisał:

zbliżają się wakacje i chciałbym rozpocząć przygodę z programowaniem. Od czego najlepiej
zacząć?


od php proponuje :) jest bardziej swobodny w programowaniu niż c++ :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 11.05.2009 o 18:20, BoloMaster napisał:

zbliżają się wakacje i chciałbym rozpocząć przygodę z programowaniem. Od czego najlepiej
zacząć?

proponował bym zacząć od programów do modowania gier (takowe dołączone są np do neverwitera czy wiedzmina) ich języki skryptowe dadzą ci dobry wstęp do podstaw programowania.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 11.05.2009 o 19:57, BoloMaster napisał:

a poleciłbyś mi jakąś książkę o tej tematyce:)


ja się php uczę z online kursów + zadawanie pytań jak nie mogę znaleźć rozwiązania w internecie.

więc za bardzo ci good książki nie polecę , bo nie czytałem :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 11.05.2009 o 18:20, BoloMaster napisał:

zbliżają się wakacje i chciałbym rozpocząć przygodę z programowaniem. Od czego najlepiej
zacząć?

Ja niezmiennie zawsze proponuję javę. Wszystko na tym zrobisz, ma praktycznie wbudowane możliwości obsługi komputerów wieloprocesorowych lub procesorów wielordzeniowych. No i jeżeli dobrze ten język opanujesz, to przesiadanie się na każdy inny poza assemblerem, to igraszka. Będziesz musiał się jedynie nauczyć ograniczeń innego języka i tylko pojedynczych własności czasem niedostępnych w javie.
Już pomijam to, że w ciągu dnia lub dwóch napiszesz pierwsze programy okienkowe wyglądające i działające jak przeciętne aplikacje z Windows. W tym czasie w innych językach opanowuje się dopiero "alfabet"...
Do uczenia się programowania PHP się nie nadaje bo jest to język i środowisko serwera, na którym nie odpala się zasadniczo aplikacji klienckich.
Podobnie uczenie się programowania za pomocą forów internetowych i witryn różnych amatorów, to kompletne pomyłka. Tak można się jedynie nauczyć jak nigdy nie należy programować.
Tak czy inaczej potrzebny jest porządny podręcznik do nauki programowania. Język nie jest tu aż tak istotny bo można zrobić dobry podręcznik zarówno w C, Javie, Perlu, Ruby czy Pascalu (a nawet PHP).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 11.05.2009 o 22:57, Olamagato napisał:

Podobnie uczenie się programowania za pomocą forów internetowych i witryn różnych amatorów,
to kompletne pomyłka. Tak można się jedynie nauczyć jak nigdy nie należy programować.
Tak czy inaczej potrzebny jest porządny podręcznik do nauki programowania. Język nie
jest tu aż tak istotny bo można zrobić dobry podręcznik zarówno w C, Javie, Perlu, Ruby
czy Pascalu (a nawet PHP).


Racja , Ale konsultowanie się z programistą z prawdziwego zdarzenia , też jest metodą nauki :)

To jakiś był polecał konkretny podręcznik do php ?

// btw. mógłbyś spojrzeć na mój problem dot. c++ byłbym wdzięczny :P // kilka postów up

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 11.05.2009 o 22:57, Olamagato napisał:

Ja niezmiennie zawsze proponuję javę.


Śmiem się tu troszkę nie zgodzić.
Osobiście każdemu kto zaczyna proponuję "standardowową" drogę - C, C++, wszystko inne.
Mam doświadczenie z ludźmi, którzy zaczynali od Javy - i cóż - programistami to ciężko ich nazwać..
Już samo wytłumaczenie idei klas (a bez tego programowania w Javie nie ma) dość ciężko nauczyć kogoś kto nie programował.
Wiem jakie męki przechodziłem ucząc kilku ludzi programować właśnie w Javie.
Naprawdę uważam, że najlepiej na początek nie rzucać się na aplikacje okienkowe - a poznać kilka podstaw - pętle, zmienne, pewną logikę myślenia. Potem przerzucamy sie na C++ i klasy - a potem już na cokolwiek ;]

Nie mówię, żeby od razu wykuwać na pamięć całe ANSI C i wszystkie biblioteki C++ - po prostu uważam, że mimo tego, że są mniej przyjazne dla usera to jednak do nauki podstaw nadają się najlepiej.

Sam zaczynałem od programowania skryptów do NWNa, potem miałem pascala w LO, lecz dopiero przy programowaniu w C, C++ na studiach się nauczyłem myśleć jak programista.
Dziś piszę w Javie, C#..

Dnia 11.05.2009 o 22:57, Olamagato napisał:

Do uczenia się programowania PHP się nie nadaje bo jest to język i środowisko serwera, na którym nie odpala się zasadniczo aplikacji klienckich.


Tu się zgadzam w 100% :)

Dnia 11.05.2009 o 22:57, Olamagato napisał:

Podobnie uczenie się programowania za pomocą forów internetowych i witryn różnych amatorów, to kompletne pomyłka. Tak można się jedynie nauczyć jak nigdy nie należy programować.


Dodam od siebie, że nauka z polskiego internetu - to dopiero porażka.
Prawda jest taka, że na polskich stronach poza Hello World i kilka bardzo prostych i ogólnych przykładów - nic nie znajdziemy. Poza crapem i bullshitem..

Na stronach angielskich jest troszkę lepiej - jednak nadal wyłuskanie tego jednego dobrego przykładu spośród setek nietrafionych jest conajmniej nierealne dla niewprawionego oka..

>>Jan_Czarny
>Racja , Ale konsultowanie się z programistą z prawdziwego zdarzenia , też jest metodą nauki :)

Znajdź takiego - to będziesz dobry. Jak napisałem wyżej - wyłuskanie dobrego przykładu spośród setek śmieci jest naprawdę trudne.
A nie każdy kto ci radzi i wie jak napisać pętlę for - od razu jest dobrym programistą.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 11.05.2009 o 23:42, DemoBytom napisał:

Już samo wytłumaczenie idei klas (a bez tego programowania w Javie nie ma) dość ciężko
nauczyć kogoś kto nie programował.

Tyle, że w Amerykanom na ich uczelniach jakoś się ta sztuka udaje.

Dnia 11.05.2009 o 23:42, DemoBytom napisał:

Wiem jakie męki przechodziłem ucząc kilku ludzi programować właśnie w Javie.
Naprawdę uważam, że najlepiej na początek nie rzucać się na aplikacje okienkowe - a poznać kilka podstaw - pętle, zmienne, pewną logikę myślenia.

Zgoda. Dopóki nie pozna się konstrukcji języka zaczyna się od prostych programików konsolowych. Żeby budować aplikacje okienkowe trzeba rozumieć sterowanie zdarzeniami i wielowątkowość. Rzeczy, które poznaje się raczej na końcu kursu programowania

Tyle, że nawet w dziedzinie programów konsolowych taka Java lepiej sobie radzi od C czy C++. Jeżeli popełni się prosty błąd kończący się zawieszeniem, to w języku opartym na VM nie ma żadnego problemu. Natomiast w przetłumaczonym kodzie natywnym może skończyć się przy pechu resetem całego kompa lub zawieszką systemu.

Dnia 11.05.2009 o 23:42, DemoBytom napisał:

Potem przerzucamy sie na C++ i klasy - a potem już na cokolwiek ;]

OK. Tyle, że C++ to język przestarzały i w obecnej postaci (wraz z szablonami i operatorami) zwykle nieczytelny. To najgorszy wybór dla początkującego. Co innego czysty proceduralny C. Od tego warto by zacząć bo przy okazji liźnie się nieco programowania niskopoziomowego.

Dnia 11.05.2009 o 23:42, DemoBytom napisał:

Nie mówię, żeby od razu wykuwać na pamięć całe ANSI C i wszystkie biblioteki C++

Akurat biblioteki z C++ są wyjątkowo ubogie, i co dużo mówić - dość słabe dla uczącego się (nie rozumie ich, albo nie potrafi wykorzystać).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 12.05.2009 o 00:23, Olamagato napisał:

Tyle, że w Amerykanom na ich uczelniach jakoś się ta sztuka udaje.


Nie wiem jak jest u amerykanów, wiem jak to idzie u nas.
Kumpel u siebie na uczelni zaczynał od Javy NetBeansa i cóż - przejście przez początek było dla niego conajmniej trudne.
U mnie na uczelni pół grupy zajęcia z C/C++ przeszła nie oddając linii kodu i też później na Javie (którą nota bene zaczynaliśmy od najprostszych podstaw) się zwyczajnie posypali.
Po prostu uważam, że Java czy C#, języki naprawdę przyjemne w pisaniu - do nauki nadają się średnio.

Dnia 12.05.2009 o 00:23, Olamagato napisał:

Tyle, że nawet w dziedzinie programów konsolowych taka Java lepiej sobie radzi od C czy C++. Jeżeli popełni się prosty błąd kończący się zawieszeniem, to w języku opartym na VM nie ma żadnego problemu. Natomiast w przetłumaczonym kodzie natywnym może skończyć się przy pechu resetem całego kompa lub zawieszką systemu.


Co w najgorszym przypadku nauczy przyszłego "programistę" odrobinę pokory. Cóż powodowanie resetów prostymi programami konsolowymi to już troszkę chyba przesada, wcale to aż takie proste nie jest.
A jak już się zdarzy - osobiście najwięcej się nauczyłem właśnie na bluescreenach :P To nauczka, którą się pamięta (a i chwalić się można przed znajomymi) XDD

Dnia 12.05.2009 o 00:23, Olamagato napisał:

OK. Tyle, że C++ to język przestarzały i w obecnej postaci (wraz z szablonami i operatorami) zwykle nieczytelny. To najgorszy wybór dla początkującego.


Jednak z tego co czytałem w niektórych gałęziach programowania nadal dość szeroko wykożystywany.
No ale fakt - nie piszemy o zawodowcach, lecz początkujących.
Cóż ja swojej przygody z C++ źle nie wspominam. Fakt w C# w 10 minut napiszę teraz bardziej skomplikowaną (przynajmniej w pewnych zakresach) aplikację, jednak i C++ dawało radę. Kilka gier, czy mniejszych programów stworzyłem i uważam, że był to czas dobrze spędzony.
Nauczyłem się, że o pewne zasoby trzeba dbać, pilnować pamięci. Nauczyłem się podstaw klas, ich tworzenia i usuwania z pamięci.
Java i C# rozleniwiają programistów. Przede wszystkim nie zmuszają go do pisania schludnego kodu i dbania o te małe, drobne rzeczy, które w C++ trzeba było obsłużyć (choćby destruktory klas).

Nie wiem, może takie moje osobiste wrażenie - ale ja zaczynałem od pisania programów w C i C++ pod notatnikiem i kompilowałem je w konsoli.. I dzięki temu dziś żadne narzędzie nie jest mi strasznie. Nie ważne czy to Visual Studio, czy vim..
A kiedy tylko zmieniłem Netbeansa kumplowi na bodaj J.Creatora - to ten już miał problemy z jego użyciem.

C# i Java to dziś także bardzo zaawansowane środowiska graficzne, które za nas zrobią masę pracy.
Ale czasem jednak wiedza o tym jak dane okno jest tworzone okazuje się conajmniej użyteczna.

Dnia 12.05.2009 o 00:23, Olamagato napisał:

Co innego czysty proceduralny C. Od tego warto by zacząć bo przy okazji liźnie się nieco programowania niskopoziomowego.

Dokładnie tak twierdzę - naukę powinno się zacząć od zwykłego, czystego C. Trochę poprogramować, trochę się pouczyć, zrozumieć trochę podstaw i można iść dalej.

Zawsze twierdziłem, że podczas nauki najpierw należy zacząć chodzić, potem biegać.
Nauka od assemblera to byłaby przesada i przerost formy nad treścią IMHO, ale pewne podstawy warto poznać.

Podsumowując - każda droga na pewno ma swoje zalety.
Ja uczyłem się wg jednej, którą uważam za naprawdę dobrą i przystępną.
Znam osoby, które uczyły się wg tej drugiej - i większości to na dobre mimo wszystko nie wyszło.
Może moje spaczone spojżenie, nie wiem, kłócić się na siłę nie będę xD Od tego mój promotor jest (on uwielbia takie rozważania filozoficzno/programistyczne) xD

Nie mówię, że aby przejść do Javy trzeba być mistrzem C i C++, mieć 3 assemblery wykute na pamięć i znać conajmniej 4 języki skryptowe..
Ale znajomość i umiejętność czytania kodów C/C++ jest bardzo przydatna podczas nauki. Jakby nie spojżeć - nadal duża ilość kodów i przykłądów pisana jest w tych językach. To kolejny atut rozpoczęcia nauki od ANSI C.
Ale jak mówiłem - kłócić się nie będę, wszystko się zmienia - podjeście do programowania też..

Swoją drogą czytałem jakiś czas temu, że dziś popularne jest programowanie w C++ z dodatkiem assemblera dla kodu lowlevel. Ale w niedalekiej przyszłości prawdopodobnie dojdzie do przesunięcia - programować będziemy w C#/ Javie a C/C++ stosować właśnie do kodu lowlevel - zastępując assemblera kompletnie..
Jak będzie? Zobaczymy - ale taką prognozę akurat (między innymi) zapamiętalem - i trochę nawet się z nią zgadzam..

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 12.05.2009 o 01:08, DemoBytom napisał:

U mnie na uczelni pół grupy zajęcia z C/C++ przeszła nie oddając linii kodu

I takich od razu powinno się wyrzucać. Bo można pisać bzdury i fatalny kod, ale nawet to jest lepsze od nie robienia niczego bo czegoś się człowiek uczy nawet robiąc coś źle.
Dlatego tak mnie wnerwiają ludzie kupujący gotowce na zaliczenia bo wychodzą lepiej na oszukiwaniu niż Ci naprawdę chcący się czegoś nauczyć na nieudanych próbach. Później się to odwraca, ale jest już o 2 lata za późno.

Dnia 12.05.2009 o 01:08, DemoBytom napisał:

Po prostu uważam, że Java czy C#, języki naprawdę przyjemne w pisaniu - do nauki nadają się średnio.

Poniekąd tak, ale dość dużo zależy od środowiska. Prostego, zamkniętego i nie zmuszającego uczącego się do grzebania w nim. Konsola jest o tyle dobra, że żadnego wymuszonego grzebania nie ma (chyba, że samemu coś chce się zmienić). Niezły był również IDE Turbo Pascala 2 i 3 bo był wprost stworzony do nauki (Turbo C i C++ powstały dużo później i nie było tam kompilacji do pamięci). Dzisiaj taką rolę może pełnić jakieś proste IDE do Javy bez generatora kodu.

Dnia 12.05.2009 o 01:08, DemoBytom napisał:

Co w najgorszym przypadku nauczy przyszłego "programistę" odrobinę pokory. Cóż
powodowanie resetów prostymi programami konsolowymi to już troszkę chyba przesada, wcale to aż takie proste nie jest.

Ano prawda, ale część początkujących obala to twierdzenie dość szybko. :)

Dnia 12.05.2009 o 01:08, DemoBytom napisał:

A jak już się zdarzy - osobiście najwięcej się nauczyłem właśnie na bluescreenach :P

Ja też ucząc się kiedyś sypałem kompilatory i całe systemy. Natykałem się nawet na błędy kompilacji. Ale wtedy człowiek przestaje już być początkujący.

Dnia 12.05.2009 o 01:08, DemoBytom napisał:

Jednak z tego co czytałem w niektórych gałęziach programowania nadal dość szeroko wykorzystywany.

Tak. Ale Fortran, Forth czy Ada też są wciąż wykorzystywane. A to przecież muzeum.

Dnia 12.05.2009 o 01:08, DemoBytom napisał:

Nauczyłem się, że o pewne zasoby trzeba dbać, pilnować pamięci. Nauczyłem się podstaw
klas, ich tworzenia i usuwania z pamięci.

Tylko, że to pewnie zasługa programowania niskopoziomowego - czyli najpewniej C się kłania. Może ewentualnie assembler.

Dnia 12.05.2009 o 01:08, DemoBytom napisał:

Java i C# rozleniwiają programistów. Przede wszystkim nie zmuszają go do pisania
schludnego kodu i dbania o te małe, drobne rzeczy, które w C++ trzeba było obsłużyć (choćby destruktory klas).

Tak - kiedy ktoś umie pisać tylko wysokopoziomowo, to tak niestety jest. Dopiero konieczność programowania na samym dnie zmusza do dobrej organizacji kodu.

Dnia 12.05.2009 o 01:08, DemoBytom napisał:

Nie wiem, może takie moje osobiste wrażenie - ale ja zaczynałem od pisania programów
w C i C++ pod notatnikiem i kompilowałem je w konsoli.

To niezłe podejście. Podobno na niektórych zachodnich uczelniach dają studentowi nieznany mu kompletnie komputer, szczątkowy system operacyjny z podstawowymi funkcjami, assembler i jego listę rozkazów (lub kompilator C) - i każą delikwentowi stworzyć prostą aplikację użytkową. Nic ambitnego, ale nawet procedury wyrzucania znaku na ekran musi stworzyć samodzielnie.

Dnia 12.05.2009 o 01:08, DemoBytom napisał:

Znam osoby, które uczyły się wg tej drugiej - i większości to na dobre mimo wszystko nie wyszło.

Może zależy to od tego czy ktoś chce coś nowego poznać czy nie. Jak chce się coś nauczyć, to w szybkim tempie pozna się języki niskopoziomowe i bardzo wysokopoziome. Na przykład mimo, że zacząłem zabawę od prostego Basica, to ten prymitywny język (o budowie do złudzenia przypominającej assembler) nie odrzucił mnie i pozwalał tworzyć proste rzeczy. I to moim zdaniem jest najważniejsze w pierwszym języku. Zaraz potem rzuciłem się na C, co było końcem pisania w Basicu, ale swoje zadanie jako pierwszy styk wykonał. Potem z C przesiadałem się na inne języki od Pascala po microProlog w tempie błyskawicznym. Jedynie więcej dodatkowego wkładu trzeba było przy assemblerach.

Mówiąc o Javie chodzi chodzi mi o to, że napisze się w tym każdy niechlujnie napisany program, który będzie działał. Nawet korzystając ze ściąg i gotowego kodu napisze się pierwsze programy okienkowe, które będą cieszyć tym, że w ogóle działają (bez znaczenia czy ktoś będzie rozumiał dlaczego działają). I to moim zdaniem jest najważniejsze w języku pierwszego kontaktu.

Dnia 12.05.2009 o 01:08, DemoBytom napisał:

Ale znajomość i umiejętność czytania kodów C/C++ jest bardzo przydatna podczas nauki.

Co do C, to zgadzam się. Ale uczenie się obiektowości, współbieżności, sterowania zdarzeniami z C++, to moim zdaniem pomyłka. Są o wiele lepsze alternatywy. I tu moim zdaniem jest miejsce Javy (ewentualnie C#). Składnia prawie taka sama, więc i czytanie kodu C++ nie będzie nastręczać prawie żadnych problemów. Natomiast uwzględnienie wskaźników i tak pochodziłoby z C.

Dnia 12.05.2009 o 01:08, DemoBytom napisał:

Ale jak mówiłem - kłócić się nie będę, wszystko się zmienia - podjeście do programowania też.

Dnia 12.05.2009 o 01:08, DemoBytom napisał:

Ale w niedalekiej przyszłości prawdopodobnie dojdzie do przesunięcia - programować
będziemy w C#/ Javie a C/C++ stosować właśnie do kodu lowlevel - zastępując assemblera kompletnie.

Moim zdaniem to już nastąpiło (i to kilka lat temu). Oczywiście nie w Polsce.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dnia 11.05.2009 o 17:35, Jan_Czarny napisał:

kod [...]

{
gen_liczba=rand()%101;
cout << "Wygenerowana liczba to " << gen_liczba << ".\n";

cout << "\n";
}
{
for (int i=1, int licznik=0 ; ((gen_liczba==min)||(gen_liczba==max)) ; i++, licznik++)
; // jak to zrobię jako komentarz nie ma błedów
{
if((gen_liczba==min)||(gen_liczba==max))

{


for (int i=1, licznik=0 ; ((gen_liczba==min)||(gen_liczba==max)) ; i++, licznik++)

Tak powinno być poprawnie (czytaj: skompiluje się), co nie znaczy, że jest dobrze. Po co dwie zmienne "licznikowe" różniące się jedynie wartością początkową ? Do tego obie lokalne w pętli, a z tego co rozumiem chcesz po skończeniu pętli wypisać na konsole ile razy się ona wykonała. No i sens tego if-a w pętli jest dla mnie niepojęty. Przecież kiedy zajdzie warunek pętla się skończy, więc kod z if-a równie dobrze można umieścić po pętli.

Dnia 11.05.2009 o 17:35, Jan_Czarny napisał:

// (co do wcześniejszego nie do końca wyjaśnionego przez ze mnie co chce osiągnąć)

chce aby pętla wykonała się "n" aż spełni się warunek że jeśli liczba (((gen_liczba==min)
[minimalna zakres] II (lub) (gen_Liczba==max)[max zakresu])||([lub](gen_liczba==max)&&(gen_liczba==min)))

Teraz jest jeszcze mniej jasne.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 12.05.2009 o 14:38, haDsz napisał:


> kod [...]
>
> {
> gen_liczba=rand()%101;
> cout << "Wygenerowana liczba to " << gen_liczba <<
".\n";
>
> cout << "\n";
> }
> {
> for (int i=1, int licznik=0 ; ((gen_liczba==min)||(gen_liczba==max)) ; i++,
licznik++)
> ; // jak to zrobię jako komentarz nie ma błedów
> {
> if((gen_liczba==min)||(gen_liczba==max))
>
> {

for (int i=1, licznik=0 ; ((gen_liczba==min)||(gen_liczba==max)) ; i++, licznik++)


Tak powinno być poprawnie (czytaj: skompiluje się), co nie znaczy, że jest dobrze. Po
co dwie zmienne "licznikowe" różniące się jedynie wartością początkową ? Do tego obie
lokalne w pętli, a z tego co rozumiem chcesz po skończeniu pętli wypisać na konsole ile
razy się ona wykonała. No i sens tego if-a w pętli jest dla mnie niepojęty. Przecież
kiedy zajdzie warunek pętla się skończy, więc kod z if-a równie dobrze można umieścić
po pętli.



teraz działa (nie potrzebne int było ^^)

z tym if lekko przesadziłem , chciałem za dobrze

Dnia 12.05.2009 o 14:38, haDsz napisał:

> // (co do wcześniejszego nie do końca wyjaśnionego przez ze mnie co chce osiągnąć)
>
> chce aby pętla wykonała się "n" aż spełni się warunek że jeśli liczba (((gen_liczba==min)

> [minimalna zakres] II (lub) (gen_Liczba==max)[max zakresu])||([lub](gen_liczba==max)&&(gen_liczba==min)))

>
Teraz jest jeszcze mniej jasne.


Chciałem na początku wyeliminować liczby które na dzień dobry sprawiają problem

0-100 ( zakres)

max=100 (zakres)
min=0 (zakres)
max_gen=(generowana)

// ale tak po chwili myślenia to


pętla

po zakończeniu jej wypisać wynik czyli po ilu (wykonaniach pętli) liczba została znaleziona metodą (Wyszukiwania binarnego - zakładając dobra moją interpretacją opisu działania )

{

Dnia 12.05.2009 o 14:38, haDsz napisał:

(((gen_liczba==min)
[minimalna zakres] II (lub) (gen_Liczba==max)[max zakresu])||([lub](gen_liczba==max)&&(gen_liczba==min)))


- Przerwanie pętli jeśli gen_liczba jest równa min , lub max (określają zakres) lub kiedy zakres będzie równy szukanej czyli z 0-100 zrobi się po x wykonaniach pętli 21 a szukaną będzie 21 (metoda połowienia zakresu w celu znalezienia gen_liczby), ale ten warunek powinien rozwiązać problem , po dłuższej analizie ((gen_liczba==max)||(gen_liczba==min))

ogólnie to się zastawiam czy dobrze myślę nad sposobem rozwiązania problemu

// Znowu zrobiło się to nie zrozumiałe :/

w przednich moich postach opisałem jak miała działać owa aplikacja

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 12.05.2009 o 17:35, Jan_Czarny napisał:

w przednich moich postach opisałem jak miała działać owa aplikacja

Tak, tylko konfrontacja opisu z prezentowanym kodem powoduje u mnie pewną dezorientację :)

Jeśli nie chce ci się myśleć nad tym jaki wstawić w pętli warunek, albo z konieczności ten warunek jest bardzo rozbudowany i paskudnie wygląda, to czasem warto zastosować proste rozwiązanie zastępcze - zadeklarować zmienną logiczną i jej używać jako warunku pętli, w treści pętli zmieniając ją kiedy chcemy pętlę zakończyć. Jeśli dobrze zrozumiałem twoje intencje może to wyglądać tak:

int i=0; // iterator
int min=0; // lewy koniec przedziału
int max=100; //prawy koniec przedziału
int szukana=...; // tu wstaw pożądaną metodę wylosowania szukanej liczby
bool dalej=true; // kontroler pętli

while(dalej)
{
i++;
podzial=(min+max)/2;
if(szukana==podzial)
dalej=false; // znaleźliśmy, więc koniec
else
if(szukana<podzial)
max=podzial-1;
else
min=podzial+1;
}

// tu możesz wypisać i

Edit: Forum automatycznie obcina mi spacje na początku wiersza, więc wcięcia szlag trafił, przepraszam za wygląd.

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ć