Ripped
Serçe Development
Kimlik Onayı
-
Üyelik
20.10.2013
-
Yaş/Cinsiyet
27 / E
-
Meslek
SEO & Software
-
Konum
Adana
-
Ad Soyad
A** K**
-
Mesajlar
372
-
Beğeniler
94 / 94
-
Ticaret
11, (%100)
Merhaba arkadaşlar,bilgisayar mühendisliği birinci sınıf öğrencisiyim ve ödevlerden birini yaparken çok zorlandım.Yardımcı olabilirseniz sevinirim...
Ödev;
Kullanıcıdan 5 adet karakter girmesini istiyor.
Eğer karakterlerin hepsi sayı ise asal olup olmadığına bakıyor ve yazdırıyor.
Eğer karakterlerin hepsi alfabetik ise hepsini büyük harf yapıyor ve yazdırıyor.
Eğer karakterler alphanumeric ise tersini yazdırıyor.
Hoca aşağıdaki kodu verip bunu tamamlayın dedi.
#include
int a1,a2,a3,a4,a5;
void get5char()
{
a1 = getchar();
a2 = getchar();
a3 = getchar();
a4 = getchar();
a5 = getchar();
}
// Check if c is in Alphabet
int isAlphabet(int c)
{
return 0; // True
}
//Check if c is a digital number
int isDigit(int c)
{
return 0; //True
}
// Check to see if all parameters are alphabetic
int isAlphabetic(int a1, int a2,int a3,int a4, int a5)
{
return 0; //True
}
// Check to see if all parameters are numeric
int isNumeric(int a1,int a2, int a3,int a4,int a5)
{
return 0; //True
}
// Check to see if all parameters are alpha-numeric
int isAlphaNumeric(int a1, int a2,int a3,int a4,int a5)
{
return 0; //True
}
// convert all parameters
int charTonumber(int a1, int a2, int a3, int a4, int a5)
{
return 0; //True
}
// Check to see if n is a prime number
int isPrime(int n)
{
return 0;
}
// convert a1, a2, a3,a4, a5 to uppercase
void lowerToupper()
{
}
int main()
{
get5char();
}
-
Üyelik
16.03.2016
-
Yaş/Cinsiyet
28 / E
-
Meslek
öğrenci
-
Konum
İstanbul Avrupa
-
Ad Soyad
E** K**
-
Mesajlar
451
-
Beğeniler
38 / 78
-
Ticaret
7, (%100)
Kodunu yazacak zamanım yok ama algoritma taktikleri verebilirim. Öncelikle bütün karakterlerin ascii tablosundaki değerlerini bul. String tipindeki bir karakterin int tipindeki değeri onun ascii tabloundaki değeridir. Örnek olarak:
0-9 arası rakamlar ascii de (50,40] arasına denk geliyorsa mesela
if(a1<50 && a1>=40) {
// a1 rakamdır sonucuna ulaşırız.
}
Sonra asal kontrolü için sayının yarısından itibaren birer azaltarak bölmeye başlarız. Bu arada her tam bölündüğünde sayaç tutarız. Sayaç 1 ise yani sadece 1 e tam bolunuyorsa asaldır.
Aynı şekilde küçük harf ve büyük harf durumunda ascii tablosunda aralarında sabit bir sayı vardır. Örnek olarak a ile A arasında 30 varsa b ile B arasında da 30 vardır. Karakterin harf olduğunu bulunca ascii değerine +30 ekleyip basıyorsun ekrana.
Alfanümerik kısmını pek anlayamadım. Bu kadar yardım edebildim dostum. Yazdıklarım üzerinde düşünürsen birazda araştırırsan yaparsın.
http://www.pubtekno.com
-
Üyelik
18.08.2016
-
Yaş/Cinsiyet
29 / E
-
Meslek
Bilgisayar Mühendisliği
-
Konum
İstanbul Avrupa
-
Ad Soyad
E** S**
-
Mesajlar
79
-
Beğeniler
4 / 36
-
Ticaret
1, (%100)
ennrh adlı üyeden alıntı
Kodunu yazacak zamanım yok ama algoritma taktikleri verebilirim. Öncelikle bütün karakterlerin ascii tablosundaki değerlerini bul. String tipindeki bir karakterin int tipindeki değeri onun ascii tabloundaki değeridir. Örnek olarak:
0-9 arası rakamlar ascii de (50,40] arasına denk geliyorsa mesela
if(a1<50 && a1>=40) {
// a1 rakamdır sonucuna ulaşırız.
}
Sonra asal kontrolü için sayının yarısından itibaren birer azaltarak bölmeye başlarız. Bu arada her tam bölündüğünde sayaç tutarız. Sayaç 1 ise yani sadece 1 e tam bolunuyorsa asaldır.
Aynı şekilde küçük harf ve büyük harf durumunda ascii tablosunda aralarında sabit bir sayı vardır. Örnek olarak a ile A arasında 30 varsa b ile B arasında da 30 vardır. Karakterin harf olduğunu bulunca ascii değerine +30 ekleyip basıyorsun ekrana.
Alfanümerik kısmını pek anlayamadım. Bu kadar yardım edebildim dostum. Yazdıklarım üzerinde düşünürsen birazda araştırırsan yaparsın.
Burada bir ekleme yapmak istiyorum. Performans açısından, asal kontrolü yaparken sayının yarısına değil, kareköküne kadar bakmak daha hızlı olacaktır. Çünkü bir sayının asal bölenleri, o sayının karekökünden büyük olamaz.
Onun dışında aslında asal sayı bulmak için daha iyi algoritmalar var, fermat eular ve modüler aritmatik kullanılarak. Örneğin miller-rabin algoritmasını araştırabilirsiniz.
Gerçi hocanızın sorduğu soru için kareköküne kadar hesaplamanız yeterli.
php, java, python - django, nodejs, vuejs, reactjs, angularjs, c# asp.net mvc...
Ripped
Serçe Development
Kimlik Onayı
-
Üyelik
20.10.2013
-
Yaş/Cinsiyet
27 / E
-
Meslek
SEO & Software
-
Konum
Adana
-
Ad Soyad
A** K**
-
Mesajlar
372
-
Beğeniler
94 / 94
-
Ticaret
11, (%100)
Herkese teşekkürler,şu an bayağı yol kat etti hoca. Pong game ve dropdown menü yaptırıyor. Zorlanıyoruz ama yapıcaz inşallah :)
Tapatalk kullanarak iPhone aracılığıyla gönderildi
-
Üyelik
31.08.2016
-
Yaş/Cinsiyet
29 / E
-
Meslek
öğrenci
-
Konum
Konya
-
Ad Soyad
M** A**
-
Mesajlar
21
-
Beğeniler
1 / 3
-
Ticaret
0, (%0)
öncelikle if yaparsın asal sayı için
if else yaparsın karakter için
if else dersin nümeik için
bunlar harince girerse else der bititrsin
-
Üyelik
18.08.2016
-
Yaş/Cinsiyet
29 / E
-
Meslek
Bilgisayar Mühendisliği
-
Konum
İstanbul Avrupa
-
Ad Soyad
E** S**
-
Mesajlar
79
-
Beğeniler
4 / 36
-
Ticaret
1, (%100)
ennrh adlı üyeden alıntı
Bir sayı karekökünden daha büyük sayıya bölünebilir hocam. 16 nın karekökü 4 ama 8 e bölünüyor mesela. Asal sayı ile ilgili o algoritmaları bilmiyordum teşekkürler onun için.
Pardon, yanlış ifade etmişim, orada demek istediğim bir sayının asal bölenleri, o sayının karekökünden büyük olamaz. Yani kareköke kadar bakılması yeterlidir.
php, java, python - django, nodejs, vuejs, reactjs, angularjs, c# asp.net mvc...