C Sorularım
-
Bu gün C çalışmaya başladım deitel&deitelin pdf'inden. Size çok basit gelecek olabilir bu sorunlar yalnız başka bilişim forumlarında yazmıyorum pek bende böyle bir konu açayım hem bu sene müh. giricek birçok arkadaş var arada yararlanırlar bu sorunları yaşarlarsa dedim. :)
İlk sorum.
toplama işlemi alıştırması vardı kitapta. Bende dedimki bir alışveriş programı yazayım sadece toplama basit kaçar yazayım kdv dahil olmayan fiyata kdv ekleyip toplam satış fiyatını göstersin.
Amacım: Ekmeğin ve Peynirin normal fiyatı girildiğinde kdv'yi ekleyip satış fiyatını veren bir hesap programı.
Ama programda hiç hata görememe ve çalışmasına rağmen ekmeğin fiyatını 2 kez yazmak zorunda kalıyorum.
Aynı şekilde normal bir toplama işlemi yaptırdım ama sorun çıkmadı onda 1 kere yazmam yeterli oluyor bir değişkeni.
Sorun: Birinci değişkeni 2 kere girmek zorunda kalmak.
#include <stdio.h> int main() { int ekmek,peynir,fiyat ; printf ("Ekmegin fiyatini girin\n") ; scanf (" %d ", &ekmek) ; printf ("Peynirin fiyatini girin\n") ; scanf (" %d ", &peynir) ; fiyat = ekmek + peynir + ( ( ekmek+peynir ) / 100*18 ) ; printf ("Fiyat %d TL'dir.", fiyat) ; return 0; }
-
scanf
(
" %d "
, &ekmek)
%d'lerden sonra bıraktığın boşluğu silersen sorunun çözülür hocam.
-
pcdoktor636 bunu yazdı
scanf
(
" %d "
, &ekmek)
%d'lerden sonra bıraktığın boşluğu silersen sorunun çözülür hocam.
Hacı çok sağol ya hiç aklıma gelmemişti bu. Kitapta okunabilirlik açısından bazı kısımlarda boşluk bırakmanız daha iyi olur C dili boşlukları yoksayar diyorduda ondan hiç ihtimal vermemiştim teşekkür ederim
-
Evet yok sayar fakat string içerisinde (" " işaretleri arasında) değil. Tabi kelimeleri de bölmemek kaydıyla istediğin yere boşluk veya tab atabilirsin.
-
Yine saçma bir soruya takıldım. Kesin çok basit bir yerde hata yapıyorum :/
Alıştırma şu. Klavyeden 3 farklı tam sayı girişi yaptıran ve bu sayıların toplamını, çarpımını, ortalamasını, enbüyüğünü ve enküçüğünü yazdıran bir program yazınız. Program bittikten sonra bu sırayla alt alta gösterecek .
Bu sekilde yazdım. enbuyuk ve enkucuk ifadelerini toplam carpım gıbı betımlemedıgım ıcın çalışmıyorlar bu kesin ama if kullanmam gerekiyor alıştırmanın istediğine göre. Bir süre sonra beynim error verdi :/. toplamı carpımı belirttiğim gibi en buyuk ve en kucugude matematiksel olarak belirtebilirim sanırım ama ifleri neye göre yazmalıyım bu durumda?
Ayrıca bu kadar uzun olmaması gerekiyor. Birçok alıştırmanın cevabı var ama bununkini bulamadığımdan buraya yazayım dedim.
Not: Taşak geçmeyin :D öğrenmeye çalışıyorum fransız olduğum bir durum bir bakmışsınız seneye işletim sistemi yazıyorum :D
#include <stdio.h> int main() { int a,b,c,toplam,carpim,ortalama, enkucuk, enbuyuk ; printf ("Birinci sayiyi girin.\n") ; scanf ("%d", &a) ; printf ("Ikinci sayiyi girin\n") ; scanf ("%d", &b) ; printf ("Ucuncu sayiyi girin.\n") ; scanf ("%d", &c) ; toplam = a+b+c ; ortalama = (a+b+c)/3 ; carpim = a*b*c ; if(a>b>c) printf ("En buyuk %d dir.\nEn kucuk %d dir.\n", a, c) ; if (a>c>b) printf ("En buyuk %d dir.\nEn kucuk %d dir.\n", a, b) ; if (b>a>c) printf ("En buyuk %d dir.\nEn kucuk %d dir.\n", b,c) ; if (b>c>a) printf ("En buyuk %d dir.\nEn kucuk %d dir.\n", b,a) ; if (c>a>b) printf ("En buyuk %d dir.\nEn kucuk %d dir.\n", c,b) ; if (c>b>a) printf ("En buyuk %d dir.\nEn kucuk %d dir.\n", c,a) ; printf ("Toplam %d dir.\nCarpim %d dir.\nOrtalama %d dir.", toplam, carpim,ortalama) ; return 0; }
-
c>a && c>b yaz iflerin içerisine
-
Eğer dalga geçen olursa onu linç ederiz merak etme. Bu forumda en nefret ettiğim şeyde zaten çok bildiğini düşünen adamların sen bunu bilmiyo muydun gibi söylemleridir. (unbalanced gibi reislerin çoğalması ümidiyle)
Bende C yi deitelden çalıştım ama hiç böyle bir hata yapmamıştım. (:
if
(b>a>c)
İf sorgusunun içinde karşılaştırma operatörleriyle 3 farklı argümanı bir anda karşılaştıramazsın. ayrı ayrı mesela b>a && a>c şeklinde yapabilirsin.
-
zeybekustasi bunu yazdı
Eğer dalga geçen olursa onu linç ederiz merak etme. Bu forumda en nefret ettiğim şeyde zaten çok bildiğini düşünen adamların sen bunu bilmiyo muydun gibi söylemleridir. (unbalanced gibi reislerin çoğalması ümidiyle)
Bende C yi deitelden çalıştım ama hiç böyle bir hata yapmamıştım. (:
if
(b>a>c)
İf sorgusunun içinde karşılaştırma operatörleriyle 3 farklı argümanı bir anda karşılaştıramazsın. ayrı ayrı mesela b>a && a>c şeklinde yapabilirsin.
Hocam amele gibi geçen senelerin ardından direk içine dalınca afallama oluyor. Ufak ayrıntıları kaçırıyorum. 3 argüman konusuna dikkat etmemişim mesela :) yavaş yavaş artık.
Teşekkürler tekrardan
-
if
((b>a) && (a>c)) yazacaksın hocam.
-
Eyv arkadaşlar sağolun :)
-
C de operatorler deger uretebilir yada nesne nin degerini degistirebilir. a>b yazdigin zaman karsilastirmanin sonucunun bi sekilde belirtilmesi lazim. Buda zero yada non-zero deger uretilerek yapilir yani sifir yada sifir olmayan deger. a ile b yi karsilastirdiginda > operatorunu kullaniyorsun yani 2 terim (operand) isteyen operator . > operatoru 6. oncelik seviyesinde ve oncelik yonu soldan saga. Simdi a>b>c ifadesinde soldan saga dogru bakacak ,a b den buyuk ise 1 degeri uretilecek, yani dogru. Simdi ifaden 1>c oldu. Bu yuzden C de operator kullanirken uretilen degeri goz onunde bulundurmak zorundasin. a>b && b>c dedigin zaman iki kosulda dogru ise 1 && 1 olacak. iki kosulda dogru dondugu icin if in icine girecek. "&& ve" , " || veya "opertorlerinede bir bak istersen kitaptan.