Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: dc nu mere sa schimbi contorul dintr-un loop?  (Citit de 3959 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
dausyana
Strain
*

Karma: -10
Deconectat Deconectat

Mesaje: 43



Vezi Profilul
« : Octombrie 03, 2005, 21:27:14 »

am incercat la o pb sa fortez iesirea dintr-un ciclu for... dar knd am trimis sursa mi-a dat eroare si mi-a fost oprita executia progului...dc nu se poate face asa?
....de ex dak am un for i:=1 to n do begin urmeaza un set de instructiuni si dak este indeplinita o anumita conditie i:=n end....
Memorat

does anybody remember laughter?
Binary_Fire
Client obisnuit
**

Karma: 82
Deconectat Deconectat

Mesaje: 87



Vezi Profilul
« Răspunde #1 : Octombrie 14, 2005, 18:51:04 »

Se foloseste functia break pentru a iesi din ciclu, nu dai end.
Memorat
dausyana
Strain
*

Karma: -10
Deconectat Deconectat

Mesaje: 43



Vezi Profilul
« Răspunde #2 : Octombrie 15, 2005, 12:08:38 »

prob mea e k nu pot sa fac urmatoarea atribuire in cadrul unui ciclu for:


 for i:=1 to n do
  i:=n;


...imi da eroare pe ev ..in schimb la mine mere perfect...
Memorat

does anybody remember laughter?
u-92
Vizitator
« Răspunde #3 : Octombrie 15, 2005, 13:23:57 »

am compilat cu gcc si bc si nu da nici o eroare, nici nu vad de ce ar da..
dar totusi ce rost are sa faci un
Cod:
for(i = 1; i <= N; i++)
i = N;

?
Memorat
Binary_Fire
Client obisnuit
**

Karma: 82
Deconectat Deconectat

Mesaje: 87



Vezi Profilul
« Răspunde #4 : Octombrie 18, 2005, 11:51:48 »

Ce incerci tu sa faci este fara sens si in plus este total neindicat sa modifici contorul dintr-un loop.
Memorat
cristi8
Vizitator
« Răspunde #5 : Octombrie 18, 2005, 19:07:56 »

Citat din mesajul lui: Binary_Fire
Ce incerci tu sa faci este fara sens si in plus este total neindicat sa modifici contorul dintr-un loop.


eh kkt.. de ce e "neindicat" sa modific i-ul ? si de ce nu are sens ?

daca vreau sa fac
Cod:

for(i = 0; i < n; i++)
{
   f1();
   if(conditie())
      i=n;
   f2();
}

 ?
..exista si varianta cu o valoare auxiliara, dar scrii in plus degeaba.

..sau poate pur si simpu vrei sa sari peste niste elemente care nu mai vrei sa le procesezi si e ok sa modifici i-ul.
Memorat
dausyana
Strain
*

Karma: -10
Deconectat Deconectat

Mesaje: 43



Vezi Profilul
« Răspunde #6 : Octombrie 19, 2005, 16:58:00 »

mda...nu vreau sa fac doar

 for i:=1 to n do
i:=n


sunt multe situatii in care nu e nevoie de ex sa verifici toate elem unui tablou si vrei k dupa ce ai gasit unu bun sa le ignori pe celellalte..anyway si mie imi merge aksa  programle in care fac asa..dar am trimis o sursa la nush ce pb de pe infoarena si mi-a dat eroare la atribuirea i:=n...in fine..
Memorat

does anybody remember laughter?
u-92
Vizitator
« Răspunde #7 : Octombrie 19, 2005, 20:23:21 »

aa.. pai atunci
Cod:
for(i = 1; i <= N; i++)
{
   if(conditie()) break;
}

asa poti sa fortezi iesirea din ciclul for, sigur poti sa faci si cum ai spus
Memorat
greco
Nu mai tace
*****

Karma: 144
Deconectat Deconectat

Mesaje: 434



Vezi Profilul
« Răspunde #8 : Octombrie 19, 2005, 21:13:48 »

Poate Pascalul trateaza altfel decat C-ul chestiile astea. Cine stie.

Mai bine ai trece la C, si dupa aia la C++.  Mr. Green
Memorat

Jump in the cockpit and start up the engines
Remove all the wheelblocks there's no time to waste
Gathering speed as we head down the runway
Gotta get airborne before it's too late.
svalentin
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« Răspunde #9 : Octombrie 19, 2005, 22:14:54 »

eu am lucrat cu pascal mai demult.. stiu ca era ceva mai prost in foruri:
daca aveai for i:=1 to n do
si apoi schimbai in loop valoarea la i cu, de exemplu n+1.. forul nu se oprea.. el verifica EGALITATE.. poate aici e problema ta!

* tin sa mentionez ca nu am mai programat pascal de un an jumate; va rog nu sariti pe mine daca zic prostii Smile
Memorat
dausyana
Strain
*

Karma: -10
Deconectat Deconectat

Mesaje: 43



Vezi Profilul
« Răspunde #10 : Octombrie 20, 2005, 09:36:27 »

nu zici prostii...ai dreptate verifica egalitatea..dak pui n+1 sau ceva mai mare  cicleaza...
Memorat

does anybody remember laughter?
fbkk
Client obisnuit
**

Karma: -13
Deconectat Deconectat

Mesaje: 72



Vezi Profilul
« Răspunde #11 : Decembrie 04, 2005, 20:48:14 »

Pascalu' ca linbaj de nivel inalt impune o structura buna a programului, iar o structura buna nu permite modificarea contorului in interiorul buclei , deci nu folosesti comodul "for" ci "repeat until" sau "while".

Nici in C/C++ nu este indicat sa schimbi contorul in mijlocul forului :
Cod:
for (i = 0; i < 5; i++)
{  
     i ++;
}


insa
Cod:
for(i = 0; i < 5; i += var_sau_const)
{
   ...(cod care nu modifica val lui i)
}

constituie un cod perfect structurat

Pascal din pacate nu permite incrementarea contorului decat cu 1 si verifica ca acesta sa nu fie modificat in interiorul for' ului.

Pentru cazurile cand contorul trebuie incrementat in interioul buclei este de recomandat a se folosi alta contructie repetitiva ( while ), cu toate ca C-ul nu  cere.
Memorat

No one should have to code the same thing twice !
svalentin
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« Răspunde #12 : Decembrie 05, 2005, 11:26:15 »

Tu de ce pascal vorbesti?!
Eu am schimbat valoarea contorului din for pana acum si nu am avut nici o problema... ok am avut una singura, cea ca pascalu verifica egalitate (am scris intr-un post mai devreme)

apoi, tu te cam limitezi in gandire cu for-ul asta
nu e doar ca sa numeri din 1 in 1 sau din x in x..
il poti folosi la o groaza de chestii; de fapt.. tocmai, nu ar trebui sa existe nici o diferentiere intre for sau while sau mai stiu eu ce..
fie ca scriu
Cod:
for (; scanf("%d", &tmp) != EOF; contor += tmp) ;

sau ca scriu
Cod:
while (scanf("%d, &tmp) != EOF) contor += tmp;


nu ar trebui sa existe nici o diferenta

poate, intradevar, ca o conventie de "scris cod frumos si aranjat", e mai indicat sa scrii cu while.. dar nu te limita in gandire!

.. sa nu ma leg si de "Pascalu' ca linbaj de nivel inalt"... asta poate poti sa zici de OOP.. dar nici asa in totalitate..
Memorat
Coty
Nu mai tace
*****

Karma: 6
Deconectat Deconectat

Mesaje: 235



Vezi Profilul WWW
« Răspunde #13 : Ianuarie 03, 2006, 13:27:48 »

zic sigur ca face urat FREE PASCAL... borland nu zice nimica... incearca cu break, asta sigur merge... exit pt proceduri si halt pt tot programul, desi de asta nu ar trebui sa ai nevoie Wink
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines