Yazılım | Programlama C dili hata aldım

bil4derim

Üye
9 Tem 2020
105
0
İzmir
Kod:
printf("ilk sayiyyi girin= "); scanf("%f",&a);
printf("ikinci sayiyi girin= "); scanf("%f",&b);

printf("isleminizi secin = +,-,*,/  ="); clk=getch();
        
if(clk == '+'){
    y=a+b;
}
else if(clk=='-'){
    y=a-b;
}
else if(clk=='*'){
    y=a*b;
}    
else if(clk=='/'){
    y=a/b;
}

printf("%f %c %f = %.2f",a,clk,b,y);
merhaba bu kodlar düzgün çalışıyor fakat mesela 1. sayıyı harf girince 2.sayıyı boş geçip karakter girmemi bekliyor.
neden 2. sayıyı boş geçiyor? sebebi nedir?

yok mu C dilini derin bilen birisi çok değişik sorularım var.
 
Moderatör tarafında düzenlendi:

AquieLL

Kıdemli Üye
1 Tem 2014
4,034
16
aquu.php
scanf olarak okut gelen sayıları ve scanf'den önce bir boşluk bırak ki enter gibi ifadeleri almasın.Örnek olarak bir benzerini senin için yazdım.


Kod:
#include <stdio.h>

int main () {
	
	float ilk_sayi;
	float ikinci_sayi;
	float toplam,cikar,carp,bol;
	char secim;
	
	printf("ilk Sayiyi giriniz:");
	scanf("%f",&ilk_sayi);
	printf("islem Operatorunuzu secin (+,-,*,/):");
	scanf(" %c",&secim);
	printf("ikinci Sayiyi giriniz:");
	scanf("%f",&ikinci_sayi);

	
	if (secim == '+') {
		toplam = ilk_sayi + ikinci_sayi;
		printf("%.2f + %.2f = %.2f",ilk_sayi,ikinci_sayi,toplam);
	}
	else if (secim == '-') {
		cikar = ilk_sayi - ikinci_sayi;
		printf("%.2f - %.2f = %.2f",ilk_sayi,ikinci_sayi,cikar);
	}
	else if (secim == '*') {
		carp = ilk_sayi * ikinci_sayi;
		printf("%.2f * %.2f = %.2f",ilk_sayi,ikinci_sayi,carp);
	}
	else if (secim == '/') {
		bol = ilk_sayi / ikinci_sayi;
		printf("%.2f / %.2f = %.2f",ilk_sayi,ikinci_sayi,bol);
	} 
	
	return 0;
}


 

bil4derim

Üye
9 Tem 2020
105
0
İzmir
scanf olarak okut gelen sayıları ve scanf'den önce bir boşluk bırak ki enter gibi ifadeleri almasın.Örnek olarak bir benzerini senin için yazdım.


Kod:
#include <stdio.h>

int main () {
	
	float ilk_sayi;
	float ikinci_sayi;
	float toplam,cikar,carp,bol;
	char secim;
	
	printf("ilk Sayiyi giriniz:");
	scanf("%f",&ilk_sayi);
	printf("islem Operatorunuzu secin (+,-,*,/):");
	scanf(" %c",&secim);
	printf("ikinci Sayiyi giriniz:");
	scanf("%f",&ikinci_sayi);

	
	if (secim == '+') {
		toplam = ilk_sayi + ikinci_sayi;
		printf("%.2f + %.2f = %.2f",ilk_sayi,ikinci_sayi,toplam);
	}
	else if (secim == '-') {
		cikar = ilk_sayi - ikinci_sayi;
		printf("%.2f - %.2f = %.2f",ilk_sayi,ikinci_sayi,cikar);
	}
	else if (secim == '*') {
		carp = ilk_sayi * ikinci_sayi;
		printf("%.2f * %.2f = %.2f",ilk_sayi,ikinci_sayi,carp);
	}
	else if (secim == '/') {
		bol = ilk_sayi / ikinci_sayi;
		printf("%.2f / %.2f = %.2f",ilk_sayi,ikinci_sayi,bol);
	} 
	
	return 0;
}




hocam kod için teşekkür ederim. mesela bu kodu çalıştırın ilk sayıya 'a' stringini girin ve enter'a basın. direkt olarak operatörü seçmeden 2. sayıyı istiyor. bunun sebebi nedir acaba onu soruyorum

benim sorduğum soru çok saçma ve gereksiz olabilir fakat takıntım var kusura bakmayın
 

AquieLL

Kıdemli Üye
1 Tem 2014
4,034
16
aquu.php
hocam kod için teşekkür ederim. mesela bu kodu çalıştırın ilk sayıya 'a' stringini girin ve enter'a basın. direkt olarak operatörü seçmeden 2. sayıyı istiyor. bunun sebebi nedir acaba onu soruyorum

benim sorduğum soru çok saçma ve gereksiz olabilir fakat takıntım var kusura bakmayın

Yani bu soruyu çok düşünmedim açıkçası bilen biri mutlaka vardır.Ama şöyle olabilir mi bilmiyorum.Yanlışsa düzeltebilirsiniz.

Float ilksayi olarak tanımladığımız ilk sayıya a girdiğimizde herhangi bir değer atamıyor çünkü veri tipi uygun değil.a'yı char secime atıyor çünkü uygun veri tipi orası olduğu için operator gir kısmına atıyor a verisini.Anlatabildim mi bilmiyorum.Böyle olduğunu düşünüyorum.
 

bil4derim

Üye
9 Tem 2020
105
0
İzmir
Yani bu soruyu çok düşünmedim açıkçası bilen biri mutlaka vardır.Ama şöyle olabilir mi bilmiyorum.Yanlışsa düzeltebilirsiniz.

Float ilksayi olarak tanımladığımız ilk sayıya a girdiğimizde herhangi bir değer atamıyor çünkü veri tipi uygun değil.a'yı char secime atıyor çünkü uygun veri tipi orası olduğu için operator gir kısmına atıyor a verisini.Anlatabildim mi bilmiyorum.Böyle olduğunu düşünüyorum.

aynen de öyleymiş

Kod:
	else if (secim == 'a') {
	
		printf("yanlış karakter");
	}

yeni bir else if ekledim. 'a' ya bastım ve yanlış karakter dedi

Teşekkür Ederim Konu Çözülmüştür
 

uzaylgen

Katılımcı Üye
12 Mar 2019
758
2
173
Linux
Kod:
printf("ilk sayiyyi girin= "); scanf("%f",&a);
printf("ikinci sayiyi girin= "); scanf("%f",&b);

printf("isleminizi secin = +,-,*,/  ="); clk=getch();
        
if(clk == '+'){
    y=a+b;
}
else if(clk=='-'){
    y=a-b;
}
else if(clk=='*'){
    y=a*b;
}    
else if(clk=='/'){
    y=a/b;
}

printf("%f %c %f = %.2f",a,clk,b,y);
merhaba bu kodlar düzgün çalışıyor fakat mesela 1. sayıyı harf girince 2.sayıyı boş geçip karakter girmemi bekliyor.
neden 2. sayıyı boş geçiyor? sebebi nedir?

yok mu C dilini derin bilen birisi çok değişik sorularım var.


bizde aynı şeyi gördük derste bize verilen örnek kodları atıym ordan yola çıkarak yaparsın

PDF'ten kopyaladım tırnaklara dikkat et hata verebilir


Kod:
#include<stdio.h>
#include<conio.h>
float x,y,sonuc;
char islem;
**** main()
{
printf("ilk sayıyı giriniz:"); scanf("%f",&x);
printf("ikinci sayıyı giriniz:"); scanf("%f",&y);
printf("islemi giriniz(+,-,/,*):\n"); islem=getch();
if (islem == ‘+’)
 sonuc=x+y;
else if (islem == ’-‘)
 sonuc=x-y;
else if (islem == ‘/’)
 sonuc=(float) x/y;
else if (islem == ‘*’)
 sonuc=x*y;
else
 printf("islemi yanlıs girdiniz!");

 printf("%c isleminin sonucu:%.2f",islem,sonuc);
}
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.