Kısayı boşver temiz yazmaya bak. Senin kod kirli olmuş. Sistematik düşün, böylece kısa da olur zaten. main deki argc, argv leri sil önce, gerekmedikçe yazma onları. system("pause") gibi sistem bağımlı gereksiz şeylerden de uzak dur, programı komut satırından çalıştır (cmd). Bunlar taçizane tavsiyelerim.
|
Hocam programı açtığımda direk onları koyduğu için silmiyorum , argc,argv ne işe işe yarıyor bilmiyorum zaten. Pause olmadan ekranı nasıl göreceğiz , bir de int min in işlevi tam olarak ne ? Kitaptan gittiğimden farklı şeyler kullanmıyorum konu dışında . Teşekkür ederim tavsiyeleriniz için ![]() |
Elektro_gadget hocamız gene bizden önce davrandı. Hocam sizleri burada görmek çok güzel ![]() #include <limits.h> -> INT_MIN leri bunun sayesinde yazdırdık. öncelikle bu kütüphanemiz. INT_MIN dediğimiz ise mesela buyuk1 değişkenine verilecek en küçük değeri veriyor. internetten bakabilirsin bu değerlere.. argc,argv'a gelince, büyük ihtimalle "Kaynak Kodu Dosyası" açmıyorsunuz. "Kaynak Kodu Dosyası" açarsanız bembeyaz bir ekran gelecektir önünüze. system("pause"); yerine, #include <conio.h> ekleyerek, system("pause"); yerine getch(); yazarakta programı ekranda tutabilirsiniz. |
INT_MIN int değişkene atanabilecek en küçük sayı (benim sistemde -2147483648). Bunun max olanları var, diğer türde olanları var, hepsi limits.h içinde sembolik sabit olarak tanımlı. Peki niye direkt o sayıyı yazmadık ta (hard coding) semboliğini yazdık? Sebebi hem hatadan korunmak hem de programı taşınabilir (her ortamda derlenip çalışabilen) bir hale getirmek. C/C++ ta char haricinde hiçbir değişken türünün standart bir uzunluğu yoktur, limits.h gibi başlık dosyaları ile uyumluluk sağlanır. Birde stdint.h var. Diyelimki bir değişkene ihtiyacınız var ve "kesinlikle" 32 bit olmalı. Eğer siz bunu int olarak tanımlarsanız hata edersiniz. Sizin sisteminizde int 32 bit olabilir ama başka bir ortamda 16, 32 veya 64 olabilir. Bu değişkeni int yerine stdint.h dosyasında tanımlanan "int32_t" yaparsanız işiniz garanti olur. Aynı şekilde mutlaka 64 bit gerekiyorsa int64_t var ve bunların başında "u" olan unsigned olanları var. uint16_t gibi. Konuya dönelim. buyuk2 ye atanan INT_MIN gereksiz olmuş, sonradan farkettim. buyuk1 e atanan ise algoritmanın bir parçası. Eğer bunu yapmamış olsaydık ilk aldığımız sayıyı en büyük varsayıp buyuk1 e atmamız gerekecekti. Bu da döngü yapısını bozacaktı (strahd_von_zarovich in örneğindeki gibi. ![]() Yukarıda taşınabilirlikten bahsetmiştik. system("pause"); satırı, programı windows tan başka bir ortama "taşınamaz" hale getirir. Mesela ben şu an linux tayım. O kodu aynen kopyalasam derlenir ama çalışmaz çünkü linux ta pause komutu yok. getch() ise standart değil, bende getch yok mesela. İlla ki durdurucu bir kod ekleyecek iseniz getchar() koyun, bu standarttır. http://www.cplusplus.com/reference/clibrary/cstdio/getchar/ Ama dediğim gibi en iyisi onların hepsini silip konsol penceresi açarak çalıştırmak. Çalıştığınız IDE kendisi çalıştır penceresi açıyorsa onu da kullanabilirsiniz. |
Teşekkürler ederim , çok iyi anladım ![]() ![]() Burada ekrana ne yazdirir demiş ama , printf de ne yapılıyor anlamadım . #include <stdio.h> |
Bir de buradaki işleyiş tam olarak nasıl , x=9 ve y=11 dedik diyelim. X in doğruluğuna bakıyor doğru olduğu için y nin doğruluğuna bakıyor o da doğru olduğundan * lı satırı oynatıyor, $ satır ne olursa olsun zaten yazılacak dimi ? x=11, y=9 dediğimizde ise sadece $ lı satır yazılacak, yani kısaca # lı satırı yazdırmak için x e doğru değeri , y ye ise yanlış değeri vermek gerekiyor ? if(x<10) if(y>10) printf("*****\n"); else printf("#####\n"); printf("$$$$$\n"); |
parantezleri nerde bu kodun ya. öğrenmenin kolay yolu var kodu çalıştır öğren buraya yazmanın manası yok ki? |
x'e doğru y'ye yanlış değer verirsen, yani mesela x=9, y=11 verirsen, çıktı olarak hem ##### hemde $$$$ elde edersin.. Eğer x=11,y=9; yaparsan $$$$$ elde edersin. vs kendin deneyerekte görebilirsin. |
Parantezleri nerede bu kodun Paul J Deitel ![]() |
Hepsini denedim hocam zaten de genede yanlış bir şeyler öğrenmemek için sordum teşekkür ederim . printf("%s\n",sayac%2?"****":"++++++++"); Burada tam olarak ne yapılıyor ? ![]() |
Hocam bir tavsiyede bulunmak istiyorum. Ben visual studio kullanıyorum ve debug modu çok işime yarıyor hiç birşey anlamadığım bir koddan bile adım adım çalıştırarak nasıl işlediğini anlayabiliyorum. Bu tarz problemlerinide o şekilde kullanımla çok rahat anlayabilirsin. |
Dediğim gibi C'a tam hakim değilim.. Şu linki inceleyerek öğrenebilirsin. http://www.cplusplus.com/reference/clibrary/cstdio/printf/ |
Visual stdio yu nasıl kullanıyoruz hocam gerçekten öyle bir şey çok işe yarar . |
printf ile alakası yok. printf("%s\n", sayac % 2 ? "****" : "++++++++"); Koşul operatörü ?: |
Sadece visual studio da değil çoğunda var o. Senin kullandığın IDE ne? |
arkadaşlar şöyle bir hata alıyorum .Yazmaya başlaıktan sonra hep bu hata alıyor ve hep kapanıyor . http://oi45.tinypic.com/33pbo1k.jpg |
Elektro gadget hocamın demesiyle wikipedia araştırdım , heralde kitapta ilerlerken gözümden kaçtı ya da önemsemedim ![]() Hocam bu arada DevC++ ı kullanıyorum. |
İnternete biraz baktım fakat pek birşey bulamadım. Sorunun nasıl çözüleceğiyle ilgili net fikrim yok.. Sizin bilgisayarınızdanda kaynaklanıyor olabilir. Visual Studio'yu kaldırıp tekrar kurun eğer sorun çözülmesse express yerine başka versiyonlarında deneyin.. Bu kadar yardımcı olabiliyorum... ![]() |
İkimiz kaldık heralde hocam bir tek
Bu mesaja 1 cevap geldi. Cevapları Gizle