• 19-02-2015, 23:43:20
    #1
    Arkadaşlar Okulda C ile alan hesaplamaları yapan bir ödev verdi hocamız bende kafamda bir konsept belirleyip kodlamayı yaptım ancak kullanıcı işlemi tekrar yapabilsin istersede kapatabilsin diye seçenekli bir şekilde yapmaya çalıştım.

    Ancak ne hikmetse secimin değerini bir türlü almak bilmiyor secim diye yaptıdım tanımlama boş dönüyor hal böyle oluncada tekrar işlemi gerçekleştirememiş oluyor.

    printf("Yeni islem icin 5, cikmak icin 6 \n");
    	scanf("%d",&secim);
    	if(secim == 5){
    		goto basla;
    	}else{
    		printf("Cikis yapiliyor\n");
    		//exit(0);
    	}
    ben bu sorunu nasıl çözebilirim yada farklı bir yöntemle nasıl yapabilirim...
  • 19-02-2015, 23:45:58
    #2
    eğer seçimli bir program yapmak istiyorsanız Switch-case ile çok kolay bir şekilde yapabilirsiniz. Eğer daha görmediyseniz o konuyu kodun tamamını yazın yardımcı olmaya çalışıyım.
  • 19-02-2015, 23:50:35
    #3
    mcfearcombat adlı üyeden alıntı: mesajı görüntüle
    eğer seçimli bir program yapmak istiyorsanız Switch-case ile çok kolay bir şekilde yapabilirsiniz. Eğer daha görmediyseniz o konuyu kodun tamamını yazın yardımcı olmaya çalışıyım.
    Görmesine gördüm hocam ama hocamız if yapısı ile yapmamızı istedi yoksa switch case ile yapacaktım.

    yazdığım kod şu şekilde

    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    
    int main(void)
    {
    	int secim;
    	double taban, yukseklik, pi, yaricap, tavan, alan, kenar1, kenar2;
    	pi = 3.14;
    	printf("1-ucgen\n2-Daire\n3-Dikdortgen\n4-Yamuk\n");
    	scanf("%d",&secim);
    	if(secim == 1){
    		printf("Tabani giriniz \n");
    		scanf("%lf",&taban);
    		printf("Yukseklik giriniz \n");
    		scanf("%lf",&yukseklik);
    		alan = taban * yukseklik / 2;
    	}
    	if(secim == 2){
    		printf("Yaricap giriniz \n");
    		scanf("%lf",&yaricap);
    		alan = pi * yaricap * yaricap;
    	}
    	if(secim == 3){
    		printf("Birinci kenari giriniz \n");
    		scanf("%lf",&kenar1);
    		printf("ikinci kenari giriniz \n");
    		scanf("%lf",&kenar2);
    		alan = kenar1 * kenar2;
    	}
    	if(secim == 4){
    		printf("Tabani giriniz \n");
    		scanf("%lf",&taban);
    		printf("Tavani giriniz \n");
    		scanf("%lf",&tavan);
    		printf("Yukseklik giriniz \n");
    		scanf("%lf",&yukseklik);
    		alan = (taban + tavan) * yukseklik / 2;
    	}
    	printf("Yapmis oldugunuz secimde alan %f olarak bulunmustur. \n",alan);
    	printf("Yeni islem icin 5, cikmak icin 6 \n");
    	scanf("%d",&secim);
    	if(secim == 5){
    		printf("Basarili");
    	}else{
    		printf("Cikis yapiliyor\n");
    		//exit(0);
    	}
    }
  • 20-02-2015, 00:04:45
    #4
    Bende derleyici yüklü değil şuan, şu şekilde bi düzenleme yaptım. 1'i seçerlerse if le döngü yapıcaz diğerlerinde else if ile bi düzenlediğim kodu derleyip deneyebilirmisiniz...
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    
    int main(void)
    {
    	int secim;
    	double taban, yukseklik, pi, yaricap, tavan, alan, kenar1, kenar2;
    	pi = 3.14;
    	printf("1-ucgen\n2-Daire\n3-Dikdortgen\n4-Yamuk\n");
    	scanf("%d",&secim);
    	if(secim == 1){
    		printf("Tabani giriniz \n");
    		scanf("%lf",&taban);
    		printf("Yukseklik giriniz \n");
    		scanf("%lf",&yukseklik);
    		alan = taban * yukseklik / 2;
    	}
    	else if(secim == 2){
    		printf("Yaricap giriniz \n");
    		scanf("%lf",&yaricap);
    		alan = pi * yaricap * yaricap;
    	}
    	else if(secim == 3){
    		printf("Birinci kenari giriniz \n");
    		scanf("%lf",&kenar1);
    		printf("ikinci kenari giriniz \n");
    		scanf("%lf",&kenar2);
    		alan = kenar1 * kenar2;
    	}
    	else if(secim == 4){
    		printf("Tabani giriniz \n");
    		scanf("%lf",&taban);
    		printf("Tavani giriniz \n");
    		scanf("%lf",&tavan);
    		printf("Yukseklik giriniz \n");
    		scanf("%lf",&yukseklik);
    		alan = (taban + tavan) * yukseklik / 2;
    	}
    	printf("Yapmis oldugunuz secimde alan %f olarak bulunmustur. \n",alan);
    	printf("Yeni islem icin 5, cikmak icin 6 \n");
    	scanf("%d",&secim);
    	if(secim == 5){
    		printf("Basarili");
    	}else{
    		printf("Cikis yapiliyor\n");
    		//exit(0);
    	}
    }
    ek olarak şu çıkış kısmı mantıksal olarak hatalı gibi geldi bana. orayı da sadece else ile yapmak gerekir. ama şu gönderdiğim kod işine yaramazsa tekrar deneriz...
  • 20-02-2015, 00:22:58
    #5
    kadir58 adlı üyeden alıntı: mesajı görüntüle
    Görmesine gördüm hocam ama hocamız if yapısı ile yapmamızı istedi yoksa switch case ile yapacaktım.

    yazdığım kod şu şekilde

    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    
    int main(void)
    {
    	int secim;
    	double taban, yukseklik, pi, yaricap, tavan, alan, kenar1, kenar2;
    	pi = 3.14;
    	printf("1-ucgen\n2-Daire\n3-Dikdortgen\n4-Yamuk\n");
    	scanf("%d",&secim);
    	if(secim == 1){
    		printf("Tabani giriniz \n");
    		scanf("%lf",&taban);
    		printf("Yukseklik giriniz \n");
    		scanf("%lf",&yukseklik);
    		alan = taban * yukseklik / 2;
    	}
    	if(secim == 2){
    		printf("Yaricap giriniz \n");
    		scanf("%lf",&yaricap);
    		alan = pi * yaricap * yaricap;
    	}
    	if(secim == 3){
    		printf("Birinci kenari giriniz \n");
    		scanf("%lf",&kenar1);
    		printf("ikinci kenari giriniz \n");
    		scanf("%lf",&kenar2);
    		alan = kenar1 * kenar2;
    	}
    	if(secim == 4){
    		printf("Tabani giriniz \n");
    		scanf("%lf",&taban);
    		printf("Tavani giriniz \n");
    		scanf("%lf",&tavan);
    		printf("Yukseklik giriniz \n");
    		scanf("%lf",&yukseklik);
    		alan = (taban + tavan) * yukseklik / 2;
    	}
    	printf("Yapmis oldugunuz secimde alan %f olarak bulunmustur. \n",alan);
    	printf("Yeni islem icin 5, cikmak icin 6 \n");
    	scanf("%d",&secim);
    	if(secim == 5){
    		printf("Basarili");
    	}else{
    		printf("Cikis yapiliyor\n");
    		//exit(0);
    	}
    }
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    int main(void)
    {
    	int secim = 0;
    	double taban, yukseklik, pi, yaricap, tavan, alan, kenar1, kenar2;
    	pi = 3.14;
    	
    	while( secim != 6 ){
    		
    		printf("1-ucgen\n2-Daire\n3-Dikdortgen\n4-Yamuk\n");
    		scanf("%d",&secim);
    		if(secim == 1){
    			printf("Tabani giriniz \n");
    			scanf("%lf",&taban);
    			printf("Yukseklik giriniz \n");
    			scanf("%lf",&yukseklik);
    			alan = taban * yukseklik / 2;
    		}
    		else if(secim == 2){
    			printf("Yaricap giriniz \n");
    			scanf("%lf",&yaricap);
    			alan = pi * yaricap * yaricap;
    		}
    		else if(secim == 3){
    			printf("Birinci kenari giriniz \n");
    			scanf("%lf",&kenar1);
    			printf("ikinci kenari giriniz \n");
    			scanf("%lf",&kenar2);
    			alan = kenar1 * kenar2;
    		}
    		else if(secim == 4){
    			printf("Tabani giriniz \n");
    			scanf("%lf",&taban);
    			printf("Tavani giriniz \n");
    			scanf("%lf",&tavan);
    			printf("Yukseklik giriniz \n");
    			scanf("%lf",&yukseklik);
    			alan = (taban + tavan) * yukseklik / 2;
    		}
    		printf("Yapmis oldugunuz secimde alan %f olarak bulunmustur. \n",alan);
    		printf("Yeni islem icin 5, cikmak icin 6 \n");
    		scanf("%d",&secim);
    		if(secim == 6){
    			printf("Cikis yapiliyor\n");
    			exit(0);
    		}
    	}
    }
    Hocam demek istediğinizi bu şekilde anladım, umarım doğru anlamışımdır
  • 20-02-2015, 00:26:37
    #6
    Hocam teşekkür ederim.O şekilde bir düzenleme ile sorun ortadan kalktı aşağıdaki secim mantığını ise ne şekilde yapabilirim normalde banada saçma geldi böyle yapmam ama daha farklı bir yöntem bulamadım.Döngü tekrarlanıyor 5 e bastığında tekrar seçim kısmına geçiyoruz.6 dada çıkıyor ama kod kalabalığı yaptığımı düşünmüyorda değilim...
  • 20-02-2015, 00:30:41
    #7
    kadir58 adlı üyeden alıntı: mesajı görüntüle
    Hocam teşekkür ederim.O şekilde bir düzenleme ile sorun ortadan kalktı aşağıdaki secim mantığını ise ne şekilde yapabilirim normalde banada saçma geldi böyle yapmam ama daha farklı bir yöntem bulamadım.Döngü tekrarlanıyor 5 e bastığında tekrar seçim kısmına geçiyoruz.6 dada çıkıyor ama kod kalabalığı yaptığımı düşünmüyorda değilim...
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    int main(void)
    {
    	int secim = 0;
    	double taban, yukseklik, pi, yaricap, tavan, alan, kenar1, kenar2;
    	pi = 3.14;
    	
    	while( secim != 5 ){
    		
    		printf("1-Ucgen\n2-Daire\n3-Dikdortgen\n4-Yamuk\n5-Cikis\n");
    		scanf("%d",&secim);
    		if(secim == 1){
    			printf("Tabani giriniz \n");
    			scanf("%lf",&taban);
    			printf("Yukseklik giriniz \n");
    			scanf("%lf",&yukseklik);
    			alan = taban * yukseklik / 2;
    		}
    		else if(secim == 2){
    			printf("Yaricap giriniz \n");
    			scanf("%lf",&yaricap);
    			alan = pi * yaricap * yaricap;
    		}
    		else if(secim == 3){
    			printf("Birinci kenari giriniz \n");
    			scanf("%lf",&kenar1);
    			printf("ikinci kenari giriniz \n");
    			scanf("%lf",&kenar2);
    			alan = kenar1 * kenar2;
    		}
    		else if(secim == 4){
    			printf("Tabani giriniz \n");
    			scanf("%lf",&taban);
    			printf("Tavani giriniz \n");
    			scanf("%lf",&tavan);
    			printf("Yukseklik giriniz \n");
    			scanf("%lf",&yukseklik);
    			alan = (taban + tavan) * yukseklik / 2;
    		}
    		if(secim != 5) printf("Yapmis oldugunuz secimde alan %f olarak bulunmustur. \n",alan);
    	}
    	
    	return 0;
    }
    Hocam belki bu daha iyi olabilir.
  • 20-02-2015, 00:31:43
    #8
    inspectorrr adlı üyeden alıntı: mesajı görüntüle
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    int main(void)
    {
    	int secim = 0;
    	double taban, yukseklik, pi, yaricap, tavan, alan, kenar1, kenar2;
    	pi = 3.14;
    	
    	while( secim != 6 ){
    		
    		printf("1-ucgen\n2-Daire\n3-Dikdortgen\n4-Yamuk\n");
    		scanf("%d",&secim);
    		if(secim == 1){
    			printf("Tabani giriniz \n");
    			scanf("%lf",&taban);
    			printf("Yukseklik giriniz \n");
    			scanf("%lf",&yukseklik);
    			alan = taban * yukseklik / 2;
    		}
    		else if(secim == 2){
    			printf("Yaricap giriniz \n");
    			scanf("%lf",&yaricap);
    			alan = pi * yaricap * yaricap;
    		}
    		else if(secim == 3){
    			printf("Birinci kenari giriniz \n");
    			scanf("%lf",&kenar1);
    			printf("ikinci kenari giriniz \n");
    			scanf("%lf",&kenar2);
    			alan = kenar1 * kenar2;
    		}
    		else if(secim == 4){
    			printf("Tabani giriniz \n");
    			scanf("%lf",&taban);
    			printf("Tavani giriniz \n");
    			scanf("%lf",&tavan);
    			printf("Yukseklik giriniz \n");
    			scanf("%lf",&yukseklik);
    			alan = (taban + tavan) * yukseklik / 2;
    		}
    		printf("Yapmis oldugunuz secimde alan %f olarak bulunmustur. \n",alan);
    		printf("Yeni islem icin 5, cikmak icin 6 \n");
    		scanf("%d",&secim);
    		if(secim == 6){
    			printf("Cikis yapiliyor\n");
    			exit(0);
    		}
    	}
    }
    Hocam demek istediğinizi bu şekilde anladım, umarım doğru anlamışımdır
    Doğru anlamışsınız hocam teşekkür ederim.Bu şekildede yapabileceğimi öğrenmiş oldum...
  • 20-02-2015, 23:06:50
    #9
    kadir58 adlı üyeden alıntı: mesajı görüntüle
    Hocam teşekkür ederim.O şekilde bir düzenleme ile sorun ortadan kalktı aşağıdaki secim mantığını ise ne şekilde yapabilirim normalde banada saçma geldi böyle yapmam ama daha farklı bir yöntem bulamadım.Döngü tekrarlanıyor 5 e bastığında tekrar seçim kısmına geçiyoruz.6 dada çıkıyor ama kod kalabalığı yaptığımı düşünmüyorda değilim...
    Sorununuz çözüldüyse ne mutlu hocam. Ancak tam olarak inspectorrr hocamın yazdığı kodu anlatmak istemiştim. Diğer sorunuza gelince tabi ki if ile seçim yaptırmak kod kalabalığı oluyor. Ben genelde seçim yapılması gerekiyorsa switch-case ile yapıyorum ancak ödeviniz if ile olduğu için en uygun bu şekilde yapılabilir