Sta sam pogresio

1

Sta sam pogresio

offline
  • Pridružio: 13 Apr 2007
  • Poruke: 452
  • Gde živiš: Beograd

Posto sam pre neki dan obarao system i nisam imo Cd sa D7, a imao sam D2005 na hardu instalirao sam njega....

Neznam da li sam ja pogresio ali evo koda.....Kompajler nece da izvrsi petlju u petlji var x,y,k : integer; procedure Button1Click begin y := StringToInt(Edit1.text); repeat x := x + 1;      repeat       //da bi u jednoj liniji bilo vise zvezdica      k := k + 1;      Memo1.lines.strings[x] := Memo1.Lines.Strings[x] + '*';      until k = x; until x = y;

Sad da objasnim...Na primer korisnik u Edit1 upise 5 i program u Memo1
napise

*
**
***
****
*****

ako stavi 7 dodace se jos dva reda, jedan sa 6 * a drugi sa 7 *

Kada stisnem Button1 stvori se samo 1 *....
Znaci da drugu petlju samo jednom uradi, uopste ne vrti dalje....
Probao sam i sa x := 0 to y .....isto

Verovatno sam ja negde pogresio, ali moguce da su i oni pogresili pri
pravljenju ovoliko vrsta applikacija



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Nisi inicijalizovao varijable.



offline
  • Pridružio: 13 Apr 2007
  • Poruke: 452
  • Gde živiš: Beograd

Stvarno te nerazumem....

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Kod while..do i repeat..until moras prvo varijablama koje koristis kao brojace zadati pocetne vrednosti, inace komp nece znati od kog broja treba da pocne da broji.

offline
  • Strog  Male
  • Stručni saradnik
    Web programiranje
  • Bojan Kopanja
  • Web & Mobile developer @ ZeusSoftware
  • Pridružio: 26 Jul 2003
  • Poruke: 2597
  • Gde živiš: Stara Pazova

To znaci da u ovom kodu koji si ovde dao nisi nigde postavio x, y i k promenljive na neku pocetnu vrednost. U stvari sad vidim da jesi postavio za y, ali za ove dve nisi. Takodje nemoj da koristis "x=x+1" vec koristi "Inc(x)", ne znam kako i zasto, ali na faxu smo ucili da se ovo drugo brze izvodi.

Takodje ovako na prvi pogled mi ove petlje nemaju previse smisla... Ti stavis recimo y na 5, a x na 0 i ta petlja ce se izvrsiti jednom, zatim se x uveca za 1 i onda se izlazi iz petlje posto je x sada 1, a to nije jednako sa 5...

Ovo ti vazi i za ovu drugu repeat petlju... Znaci obe petlje ca ti se izvrsisi max 2x i to u slucaju da se pogodi da ti je x za 1 manji od y, pa da se uveca za 1 i onda da bude jednak y.

Znaci nije problem do Delphija nego ti imas gresku u algoritmu, sto bi znacilo nazad na crtaci stol Very Happy. ( znaci upravo zbog ovoga sto sam ti objasnio i dobijes samo jednu zvezdicu... )

Dopuna: 14 Maj 2007 23:17

bobby i ja pisali istovremeno Very Happy

offline
  • Pridružio: 13 Apr 2007
  • Poruke: 452
  • Gde živiš: Beograd

Aha....pa treba da uvedu kad ja nestavim da on pocne on 0 ali nema veze, sad kapiram.....

Strog to cu da uradim sa for x := 0 to y i sve tako i reba da radi....

a mislim da moze i ovako.....zasto on nebi vrteo petlju dok x nebude = y
u until mu lepo pise da vrti dok x nebude = y
Mozes da mu napravis tako(valjda) da vrti petlju bez prestanka ako mu se x ne povecava

I nisam kopirao kod ali sam u Delphi-u pisao sa Inc(x);

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Nece da pocne od nule ako nisi inicijalizovao.
Kada pokrenes svoj program, toj varijabli ce sistem da podeli neku lokaciju u memoriji, i pocetna vrednost tvoje varijable ce biti ono sto se naslo na toj lokaciji u memoriji. Sistem nece da obrise memorijski prostor koji ce tvoj program da zauzme kada se pokrene, vec ce tu da bude podataka koji su ostali nakon iskljucivanja drugih programa.

offline
  • Pridružio: 13 Apr 2007
  • Poruke: 452
  • Gde živiš: Beograd

Ok...sad razumem HVALA

Dopuna: 14 Maj 2007 23:47

I Strog kada sam citao knjigu za delphi pisalo je da treba koristiti Succ(x)...a ne Inc(x)

Dopuna: 14 Maj 2007 23:56

I cini mi se kao da mi petlje while repeat i for vracaju vrednost ili ja opet nesto nisam dobro uradio...(valjda vracanje vrednosti nema veze sa petljom nego sa funkcijom, procedurom i tim stvarima)

offline
  • Strog  Male
  • Stručni saradnik
    Web programiranje
  • Bojan Kopanja
  • Web & Mobile developer @ ZeusSoftware
  • Pridružio: 26 Jul 2003
  • Poruke: 2597
  • Gde živiš: Stara Pazova

Koliko sam procesljao help Succ ti vraca vrednost uvecanu za jedan, alo originalni objekat ostaje nepromenjen, a Inc ce ti povecati i vrednost u x-u, tako da koristi Inc!

[Link mogu videti samo ulogovani korisnici]

kaze: The Succ function increments an ordinal value, and returns this value.

[Link mogu videti samo ulogovani korisnici]

kaze: The Inc procedure increments the ordinal Variable parameter passed to it.

Tako lepo pise i primer... Recimo za Succ moras da uradis:
x:= Succ(x)

Dok kod Inc kazes samo:
Inc(x)

Takodje kod Inc mozes da menjas i korak povecanja pa tako mozes da napises:
Inc(x, 5)

pa ce ti se promenljiva x uvecati za 5, dok kod Succ toga nema... Znaci batali to sto pise u knjizi i slobodno koristi Inc!

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

@litteHacker,
Ako stvarno zelis da naucis da programiras i da budes stvarno dobar programer, moraces da obrnes filozofiju.
Krenuo si od "jel ovo bug u delfiju", kao da je logicnije da 450 vukova programera propusti bug nego da si napravio gresku.

Pravilan pristup je "Gde sam pogresio".

Drugo pravilo:
Kad procedura ili funkcija ili modul uradi kako treba, prvo sto treba da pomislis je "proradilo je slucajno. Ne verujem da radi. Hajde da ponovim test 20-ak puta da sebi dokazem da nisam napravio bug"
I kad ponovis 20-ak puta, zovi nekog baksuza od druga, koji nema veze sa programiranjem, garantujem ti da ce u 50% slucajeva da nadje bag na prvom kliku.

15 Maj 2007 13:01 Strog Zaključavanje topica Razlog: Resen problem  
Ko je trenutno na forumu
 

Ukupno su 1282 korisnika na forumu :: 174 registrovanih, 19 sakrivenih i 1089 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 19602 - dana 30 Mar 2026 00:11

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 9k38, _Sale, A.R.Chafee.Jr., AC-DC, Ahilius, aleksandarbl, anbeast, aramis s, Avalon015, avijacija, BB, bbelic, berste23, Bgd123, black venom, Bokiboks, bokicacar, Boris BM, Boris.A, brandža84, BraneS, BrcakRS, CHARLIE JA., Cicumile, Cigi, coaa, coaaco, crazydkure, cuvarkuca, cyprus, darios, DeerHunter, dejko010, deks, DezurniOperativni, Dimitrije Paunovic, Dixtrix, djboj, Djole3621, djordjemiklusev, Djuza, Dolinc, Dorcolac, draganl, dragoljub11987, DragoslavS, Drugsparrow, dushkomkd, Dzuki, Electron, elenemste, EXIT78, FileFinder, Fog of War, Goxy1, Grochow, Hans Gajger, Hitri, hyla, Igritelj, ILGromovnik, Ir, ISOF, istina, istokzapad, ivan1973, ivan979, Jablan, Jakonjveliki, joca83, Jose, Josip77, Kajzer_Soze, kenny74, kirucar, kolle.the.kid, Koridor, kybonacci, lafa008, lcc, lucianovercetti, LUDI, Mackomen, madza, MarijaC84, marko.markovic, Marko00, marsi, medaTT, mercedesamg, Metanoja, mexo, mgolub, Mi lao shu, Mickey91, mikrimaus, milbos, Mile14, milenko crazy north, milijarder, MiljanXD, Milometer, Milovan Dinic, Milun24, Mirage 2000N, Mićko, moldway, Mrav Obrad, mrm, Mzee, nebidrag, nebkv, Nemanja.M, nikoladim, nixos, Nmr, obsidian, operniki, Orc, Orlova, OtacMakarije, Pekman, peradetlić, Permaldar, pisac12, PlayerOne, Posmatrac77OKB, Povratak1912, precan, Prle90, pzoca, RajkoB, rajkoplje, Remain, renvoi, Robin, royst33, S2M, samo_citam, samocitam, samojednoimeznam, sasics, siwoti, skok, skvara, Sky diver 29, Smiljkovich, Smor, Snorks, Solunac na steroidima, SympathyForTheDevil, Szigetwar, tomo2, trutcina, Tumansky, US_Rank_0, Valter071, Vasilije Budović, vazduh, veljko82, Veljko™, vensla, vidra boy, Vlada78, VOŽD, x011, x78186, Zanzibar, Zec, zgoljo, Zmaj Tolak, Zmajac, zubri, 800077