switch case

C, C++ ve C++ Builder ile ilgili konuları buraya yazabilirsiniz.
Cevapla
ßozis
Üye
Mesajlar: 16
Kayıt: 28 Ağu 2004 11:07
Konum: adapazarı

switch case

Mesaj gönderen ßozis »

SelamunAleykum

switch case ile

0 - 24 arası 'F'
25 - 44 arası 'E'
45 - 54 arası 'D'
55 - 69 arası 'C'
70 - 84 arası 'B'
85 - 100 arası 'A'

yukarıdaki işlemi yapmak istiyorum. Böyle bir örneği pascal'da [ 0..24 ] şu şekilde yapıyordum. Bu işlemi C 'de nasıl yapabilirim.

Teşekkür ederim.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

A.S.

Kod: Tümünü seç

switch (ifade) {
	case ifade1:
	case ifade2:	
	case ifade3:
	.......
case ifaden:
	default	    :
}
Sorunuza Gelelim

0 - 24 arası 'F'
25 - 44 arası 'E'
45 - 54 arası 'D'
55 - 69 arası 'C'
70 - 84 arası 'B'
85 - 100 arası 'A'

Kod: Tümünü seç

	printf("%2d", Bak);

	switch (bak) {
		case 1  :
		case 24: printf("F"); break;
		case 25  :
		case 44: printf("E"); break;
		case 45  :
		case 54: printf("D"); break;
		case 55  :
		case 69: printf("C"); break;
		case 70  :
		case 84: printf("B"); break;
		case 85  :
		case 100: printf("A"); break;
		default  : printf("Yanlış Veri ");
	}

Böyle bir şey olmalı ama tam hatırlayamıyorum.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
ßozis
Üye
Mesajlar: 16
Kayıt: 28 Ağu 2004 11:07
Konum: adapazarı

Mesaj gönderen ßozis »

göndermiş olduğunuz kodlar sadece 1 ve 24 bastığımda F diğerleri de aynı şekilde çalışıyor... ben 1 ile 24 arası bir rakam girdiğimde bana F vermesi lazım.. teşekkürler...
Kullanıcı avatarı
bluekid
Kıdemli Üye
Mesajlar: 541
Kayıt: 11 Haz 2004 10:45
İletişim:

Mesaj gönderen bluekid »

switch te belirtilen ifade uygun olan case zıplar ve break komutuna kadar işler eğer caselerden hiç birine uymuyorsa default işler
husonetin verdiği kodda mesela 2 değeri için default işler
printf("Yanlış Veri ");
:wink:
ßozis
Üye
Mesajlar: 16
Kayıt: 28 Ağu 2004 11:07
Konum: adapazarı

Mesaj gönderen ßozis »

hocam;
benim istediğim 0 ile 24 arasında sayı girdiğimde bana 'F' vermesi ama bunu bir türlü yapamadım.Bunu nasıl yapabilirim...

Teşekkür ederim.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Biraz hatırlar gibi oldum :P istediğiniz gibi yapabilirsiniz ama

Case 1:
Case 2:
Case 3:
....................

gibi yapmalısınız. istediğiniz şekilde if kullanarak yapabilirsiniz zaten Case yapısını genelde C de program geliştirirken Menu sisteminde kullanırdım.

Ya uzun yol seçeceksiniz yada if den yararlanacaksınız...

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

ewt bu durumda switch case kullanmak pek mantıklı olmaz 8)
ÜŞENME,ERTELEME,VAZGEÇME
ßozis
Üye
Mesajlar: 16
Kayıt: 28 Ağu 2004 11:07
Konum: adapazarı

Mesaj gönderen ßozis »

gökmen hocam;

peki 0 ile 24 arası bir sayı girdiğimde bana 'F' vermesini stiyorum. Bu işlem switch case ile olur mu olmaz mı.

teşekkür ederim.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Case 0:
Case 1:
Case 2:
Case 3:
.
.
.
Case 24:printf("F"); break;

bu sekilde calısması lazım, ben de denemedim
baska yerlerde de bu sekilde tarif ediliyor dedigim gibi hic efektif degil
if kullan

Kod: Tümünü seç

if(sart>=0 && sart<=24)then
  printf("F");
gibi
ÜŞENME,ERTELEME,VAZGEÇME
ßozis
Üye
Mesajlar: 16
Kayıt: 28 Ağu 2004 11:07
Konum: adapazarı

Mesaj gönderen ßozis »

anladım hocam bende if le çözdüm.. ama switch case ilede case 1: case 2:
case3: gibi yapmak istemiyorum.. okulda elemanın teki bunu switch case ile yapılabileceğini ama yukarıdaki gibi case 1: case 2: ... gibi değil switch case üstünde bir şeyler yazarak yapabileceğini söylüyor ... bende onun için soruyorum böyle bir şey olabilirmi diye;
doganzorlu
Kıdemli Üye
Mesajlar: 395
Kayıt: 22 Tem 2004 09:15
Konum: İzmir
İletişim:

Mesaj gönderen doganzorlu »

Selam,

Sanırım arkadaşınız switch içine girmeden verdiğiniz bağıntıdan bir not aralığı yakayıp o aralıkları case ile kontrol etmeyi düşünüyor. Bu ise daha uzun bir işlem. Aslında çok kolayca;

if (not > 84) cNot = 'A'
else if (not > 69) cNot = 'B'
else if (not > 54) cNot = 'C'
else if (not > 44) cNot = 'D'
else if (not > 24) cNot = 'E'
else cNot = 'F' ;

şeklinde yapılabilir. (ki yapmışsınız zaten).
Doğan Zorlu, İzmir

------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
ßozis
Üye
Mesajlar: 16
Kayıt: 28 Ağu 2004 11:07
Konum: adapazarı

Mesaj gönderen ßozis »

doğan hocam teşekkür ederim.. evet if ile çok basit bir şekilde halle dilebilir.. ama eleman switch case ile yaptığını söylemişti..bu gün okulda gösterecek bende inşallah yazarım ama bende pek fazla inanmıyorum çünkü switch case'nin syntax' ı belli bunun haricinde bir şeyle yazmış isede zaten ben kabul etmem.. eleman ile aramızda tatlı bir idda oluştuda :)
tüm arkadaşlardan allah razı olsun ...
Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Mesaj gönderen warder »

Kod: Tümünü seç


if (not > 100) /*hata mesajı */;
else if (not > 84) cNot = 'A' ;
else if (not > 69) cNot = 'B' ;
else if (not > 54) cNot = 'C' ;
else if (not > 44) cNot = 'D' ;
else if (not > 24) cNot = 'E' ;
else cNot = 'F' ; 

doganzorlu hocam aceleye getirmiş. ilk satır ile daha uygun olur sanırım. Ayrıca satırlardaki sıralamayı değiştiriseniz sonuç alamazsınız.
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
Cevapla