ltcelik

Kayıt : 11 Mayis 2007 YENİGÜN MAALLESİ
|
|
genelde döngülerde şu çeşit bildirmlere raslıyorum
#include <iostream> using namespace std;
int i,j; char a[][80]={"Pazartesi","Sali","Carsamba", "Persembe", "Cuma", "Cumartesi", "Pazar"};
void main() { for (i=0;a[i][0];i++) { for (j=0;a[i][j];j++) cout << a[i][j]; cout << "\n"; } }
*** for (i=0;a[i][0];i++) ***for (j=0;a[i][j];j++)
buralarda döngü koşulunda her hangibir karşılaştırma görünmediği halde nasıl bir karşılaştırma gerçekleşiyor ve
program çalışıyor...
Bir de bu karakter dizge ve dizilerini olabilecek en zor bir şekilde anlatıyorlar her tarafta mk.. hep c/p kafa karışıklığım giden kadar beynim zkildi..
EPoX Af550G pro /2GB RAM/ winXP Pirated Edişın** özür dileyeni . . .
|
wking

Kayıt : 28 Mart 2010
|
|
Hocam dediğinden şunu anladım, içteki for döngüsünün {} parantezleri yok fakat nasıl çalışıyor.
if, else if, for, while, do while... bunların hepsini kullanırken eğer koşul sağlandığında çalışacak kod tek satırsa, {} parantezlerini koymana gerek yok, aşağıda olduğu gibi.
for (j=0;a[i][j];j++) cout << a[i][j];
www.sarkimgeldi.com - Ne yani senin de şarkın gelmedi mi? Herkesin şarkısı gelebilir.
|
ltcelik

Kayıt : 11 Mayis 2007 YENİGÜN MAALLESİ
|
|
wking bunu yazdı: -----------------------------
Hocam dediğinden şunu anladım, içteki for döngüsünün {} parantezleri yok fakat nasıl çalışıyor.
if, else if, for, while, do while... bunların hepsini kullanırken eğer koşul sağlandığında çalışacak kod tek satırsa, {} parantezlerini koymana gerek yok, aşağıda olduğu gibi.
for (j=0;a[i][j];j++) cout << a[i][j];
-----------------------------
hayır
(j=0;a[i][j];j++)
satırında a[i][j] terimin yanıda bir karşılaştırma operatörü olmadığı halde kod nasıl çalışıyor,
normalde bir <=, >=, == gibi şeyler olması gerkmezmi ya da konmadığındane anlama geliyor..
EPoX Af550G pro /2GB RAM/ winXP Pirated Edişın** özür dileyeni . . .
|
j4x

Kayıt : 16 Temmuz 2005 Istanbul
|
|
Karşılaştırma operatörü olması gerekmez. Mantıksal bi ifade olması gerekir.
2. for döngüsünü kullanarak harf harf yazdirmişsin zaten. C deki stringlerin sonunda '\0' karakteri yani null terminator oldugu ve ayni zamanda false degerine esit oldugu icin duracaktir.
Ayni şekilde ilk dizininde son elemanı 0 (false) olduğu için duruyor.
Eski gVeR.
|
wking

Kayıt : 28 Mart 2010
|
|
ltcelik bunu yazdı: -----------------------------
wking bunu yazdı: -----------------------------
Hocam dediğinden şunu anladım, içteki for döngüsünün {} parantezleri yok fakat nasıl çalışıyor.
if, else if, for, while, do while... bunların hepsini kullanırken eğer koşul sağlandığında çalışacak kod tek satırsa, {} parantezlerini koymana gerek yok, aşağıda olduğu gibi.
for (j=0;a[i][j];j++) cout << a[i][j];
-----------------------------
hayır
(j=0;a[i][j];j++)
satırında a[i][j] terimin yanıda bir karşılaştırma operatörü olmadığı halde kod nasıl çalışıyor,
normalde bir <=, >=, == gibi şeyler olması gerkmezmi ya da konmadığındane anlama geliyor..
-----------------------------
Dediğini şimdi anladım. qVeR'in de dediği gibi mantıksal bir ifade yeterli. Mesela while döngüsüyle sonsuz döngü yapmak isterken nasıl while(1) yazıyorsan, for döngüsünde de bu mantıksal ifade işe yarar.
www.sarkimgeldi.com - Ne yani senin de şarkın gelmedi mi? Herkesin şarkısı gelebilir.
|
ltcelik

Kayıt : 11 Mayis 2007 YENİGÜN MAALLESİ
|
|
Tamam anladım dizinin son elemanı \0 olduğu için, genel olarak önerme FALSE =0 a düştüğü için döngüden çıkılıyor...
Teşekkürler TBT
EPoX Af550G pro /2GB RAM/ winXP Pirated Edişın** özür dileyeni . . .
|
|
|
bi örnekde ben verim int a; if(a) printf("a sıfır degil"); yada if(!a) printf("a sıfır");
|
JPriest

Kayıt : 9 Mart 2007 İstanbul--Çanakkale
|
|
Sadece stringlerde değil, diğer tipteki dizilerde de dolaşırken var mı kontrolü yapılıyor orda. Varsa true yoksa false işte.
(a != null) yerine (a) yazsan yeterli.
Sen hiç kaval çaldın mı?
|
|