Arama butonu
Bu konudaki kullanıcılar: 1 misafir
1
Cevap
251
Tıklama
0
Öne Çıkarma
C# Harf kısıtlama yapamıyorum.
O
5 yıl
Binbaşı
Konu Sahibi

Arkadaşlar merhaba.

Ödev olarak C dilinde matematiksel bir yapı oluşturmam gerekiyordu. Onu bir şekilde hallettim. Ama scanf ile giriş aldığımda girilen değer harf olursa tekrar giriş yapmasını istemem gerekiyor. Aslında if döngüsünü oluşturabilsem goto ile dönüş yapacağım ama doğru yaklaşımı bir türlü bulamadım. isalpha ile harf sorgusu yapsam bile onu if ile bir işleme sokamadım.

Not: sadece harf girişi olduğunda uyarı alıp tekrar döndüreceğim. gerçel sayı olmasında sorun yok


#include <stdio.h>
#include <math.h>
#include <locale.h>


int main() {
setlocale(LC_ALL, "Turkish"); // Türkçe harf kullanabilmek için gereken fonksiyon.

float a, b, c, discriminant, x1, x2, r, i;


printf("Lütfen x^2 katsayı değerini giriniz: ");
scanf("%f", &a);


printf("Lütfen x katsayı değerini giriniz: ");
scanf("%f", &b);


printf("Lütfen sabit terim değerini giriniz: ");
scanf("%f", &c);


discriminant = pow(b,2) - 4*a*c; // b sayısının karesini alıyoruz ve b^2 - 4.a.c işlemi ile diskriminantı buluyoruz.


if(discriminant > 0) // Eğer bulunan Diskriminant değeri 0'dan büyükse;
{
x1 = (-b + sqrt(discriminant))/(2*a);
x2 = (-b - sqrt(discriminant))/(2*a);


printf("Kök 1 degeri = %.2f \n", x1);
printf("Kök 2 degeri = %.2f \n", x2);



else if (discriminant == 0) // Eğer bulunan Diskriminant değeri 0'a eşitse;
{
x1 = -b/(2*a);
x2 = -b/(2*a);


printf("Kök 1 degeri = %.2f \n", x1);
printf("Kök 2 degeri = %.2f \n", x2);

else if (discriminant < 0) // Eğer bulunan Diskriminant değeri negatifse yani 0'dan küçükse.
{
r = -b/(2*a);
i = sqrt(-discriminant)/(2*a);
        
printf ("\nBu denklemde reel kök yoktur. Karmaşık sayı kök değeri vardır. \n");
printf("Kök 1 degeri = %.2f +i %.2f \n", r, i);
printf("Kök 2 degeri = %.2f -i %.2f \n", r, i);


}


return 0;
}