Sayının tek mi çift mi olduğunu anlamak için bir program yazdım, değişken için int kullandım. Mesela kullanıcı '40' yazmak yerine 'kırk' yazarsa bunu nasıl '40' olarak alabilirim?
C:
#include <stdlib.h>
#include <stdio.h>
int main()
{
int sayi = 0;
printf(" sayıyı girin\n");
scanf("%d",& sayi);
sayi=sayi%2;
if (sayi == 0){
printf("çift");
}else{
printf("tek"); }
}
Input'u string olarak alıp, stringteki karakterlerin numeric olup olmadığına bakarsın. Numeric olmayan karakter varsa sayı girin dersin, aksi halde atoi kullanıp sayiya dönüştürürsün. Yapamadım dersen örnek kod atarım elimin boş zamanında.
Tek çift kontrolünü biliyorsun zaten, ayrı fonksiyona aldım sadece;
C:
int iseven(int num) {
return num % 2 == 0;
}
Sonraki aşamada verilen stringin tamamen numeric olup olmadığına bakmak var;
Hem bildiğim kadarıyla hem de yapay zekadan öğrendiğim kadarıyla her "kırk" gibi metinsel ifadelerin sayısal karşılığını tanımlamanız gerekir. Bu da sınırlı sayıda yapılabilir.
Dillerin çoğunda sayılar belli bir patterni takip eder. Buna göre bir parse mekanizması yazabilirsin. Sözlük olusturursun bu sayılara karşılık gelenleri eklersin. Örneğin Türkçe'de, 11 sayısı on bir şeklinde yazılır. Bu da aslında 10 + 1. Doğru ayarlarsan milyonlara kadar parse edebilmelisin.
Bir'den on'a kadar tüm sayıları, on'dan yüz'e kadar onar onar ara sayıları ve bir kere de yüzü tanimlasan, ilk 999 sayıyı tanımlamış olursun. "Dokuz yüz doksan dokuz". Rahatça parse edilebilir. Tabii amele işi olur biraz. Bir de kullanıcının bunları doğru yazması var.
Veya Python'da except ile yaptığımız gibi halledebilir miyiz? Örneğin: "sayi" değişkeninin rakamlarla yazılmadığını anladığında "sayi girin" yaz, gibi.
Input'u string olarak alıp, stringteki karakterlerin numeric olup olmadığına bakarsın. Numeric olmayan karakter varsa sayı girin dersin, aksi halde atoi kullanıp sayiya dönüştürürsün. Yapamadım dersen örnek kod atarım elimin boş zamanında.
Tek çift kontrolünü biliyorsun zaten, ayrı fonksiyona aldım sadece;
C:
int iseven(int num) {
return num % 2 == 0;
}
Sonraki aşamada verilen stringin tamamen numeric olup olmadığına bakmak var;
Turkce sayilari ifade etmek icin cok sistematik ve guzel bir dil oldugu icin ( Oktay Sinanoglu'nu buradan rahmetle yad ediyoruz ) aslinda bunu Turkce icin yapmak gorece kolay, fakat basli basina bir kutuphane cikar bundan.
Finansal islerde de bolca kullanilir. ( Yalniz yetmis iki bin on uc Turk lirasi vs )
Girilen string'i 3 lu gruplara ayirip onlari takip eden (ya da etmeyen) substring uzerinden decimal noktasina ulasabilirsin.
Kabaca
yuz on uc milyon ile basliyorsa 113 * 1m;
yuz on uc bin ile basliyorsa 113 * 1k;
yuz on uc ile bitiyorsa <onceki_parse> + 113 gibi.
Input'u string olarak alıp, stringteki karakterlerin numeric olup olmadığına bakarsın. Numeric olmayan karakter varsa sayı girin dersin, aksi halde atoi kullanıp sayiya dönüştürürsün. Yapamadım dersen örnek kod atarım elimin boş zamanında.
Tek çift kontrolünü biliyorsun zaten, ayrı fonksiyona aldım sadece;
C:
int iseven(int num) {
return num % 2 == 0;
}
Sonraki aşamada verilen stringin tamamen numeric olup olmadığına bakmak var;