C Egzersizleri

Whistle

Ruhsuz :/
Kurucu
Geliştirici
Yardımsever Üye
Mesaj
11.941
Çözümler
567
Beğeni
13.659
Puan
5.915
Ticaret Puanı
2
Merhaba arkadaşlar,
Uzun süredir videolu olarak anlatmayı planladığım şeyler vardı ancak şu sıralar videolar ile uğraşmak istemediğim için yazılı birkaç konu hazırlamak istedim. Eğer katılım sağlanırsa beraber yeni egzersiz soruları türetip bunları kodlara dökebiliriz.

Bu egzersizlerin amacı programlamaya merak salan kişiler için yeni çalışma soruları ortaya koymak ve bunların örneklerini göstermek.
Bilmeyenler vardır belki. Bir programı yazmanın birden farklı yolu vardır. Şuan için önceliğiniz mümkün olabildiğinde soruların sizden istediği şeyi tam olarak karşılayıp karşılamadığını kontrol etmek. Zaman içerisinde tecrübe kazandıkça yazdığınız kodları daha iyi hale getirebileceğinizi fark edeceksiniz.

Konularda örnek kodları spoiler içerisine aldım böylelikle soruları kendisi yapmak isteyenler kodları göremeyecektir. Yaptığınız çalışmaları ilgili egzersizlerin altına yorum atabilirsiniz, anlamadığınız yerleri vs sorabilirsiniz. Bu konu ise toplu halde listeli durmasını sağlamak için. Bu konu altından da yeni sorular sorabilirsiniz. İçinden mantıklı bulduklarımı uygulayıp paylaşabilirim.

Konu başlıkları her ne kadar c egzersizleri olsa da sorularda istenilen şeyleri diğer programlama dilleri ile de yazabilirsiniz. C biraz daha zorlayıcı olduğu için bunu seçtim.

Şu ana kadar benim paylaştığım egzersizlerin listesi;
  1. C Egzersizleri 1: Klavyeden Girilen İki Sayının Toplamını Bulma
  2. C Egzersizleri 2: Klavyeden Girilen İki Sayının Çarpımını Bulma
  3. C Egzersizleri 3: 1'den 1000'e kadar olan sayıların toplamını bulan program
  4. C Egzersizleri 4: Klavyeden Girilen N Tane Sayının Toplamı
  5. C Egzersizleri 5: 1'den Klavye İle Girilen N Sayısına Kadar Olan Çift Sayıların Karesini Listeleyen Program
  6. C Egzersizleri 6: Klavyeden Girilen 15 Tane Sayının Ortalamasını Bulan Program
  7. C Egzersizleri 7: Çocuk Psikiyatri Kliniğinde Tedavi Gören Gören Çocukları Belirli Yaşlara Göre Gruplandırın
 
Mükemmel bir konu olmuş. Ben de o zaman derslerde çözdüğümüz soru örneklerini paylaşayım. Cevaplarını isteyenler olursa onları da bir daha çözerek atarım.

Örnek Listesi :
  • Kullanıcıdan alınan iki sayının aralarında asal olup olamadığını bulan program
  • Kullanıcıdan alınan iki sayının tam bölenlerinin toplamının birbirlerine eşit olup olmaması (kardeş sayılar)
  • Kullanıcıdan alınan bir sayının faktöriyelini hesaplama
  • Kullanıcıdan alınan bir n sayısı için şu işlemi gerçekleştirecek program : 1/2-2/3+3/4-4/5+5/6.....+n/n+1
  • Kullanıcıdan alınan bir sayının %(mod) operatörü kullanmadan kalanını bulma
  • Rastgele üretilen (0-9) arası sayılar ile mini işlem oyunu yapıp 5 soru sonunda doğruları ve yanlışları söyleyen, Yanlış ise kullanıcının verdiği cevap + olması gereken cevabı söyleyen programı yazmak
  • Basit hesap makinesi yapımı (Toplama,Çıkarma,Çarpma,Bölme,Mod Alma)
  • Çarpım Tablosunu yazdıran program
  • 1 den n'e kadar olan sayıların karelerini yazdıran program (n kullanıcıdan alınan sayı demektir)
  • 21 elemanlı bir dizi oluşturunuz. Oluşturulan dizinin uzunluğunu,(baş,orta,son)'da bulunan elemanları yazdırınız
  • İki sayının EBOB ve EKOK'unu bulan program
  • Kullanıcıdan alınan 2 sayının arasındaki sayıların toplamını yazdıran program
  • Kullanıcıdan alınan matematik-fen-türkçe notlarına göre Sayısal,Eşit-Ağırlık veya Sözel tercih etmesini söyleyen program
  • Kullanıcıdan alınan sayının Birler,Onlar,Yüzler,Binler basamağını bulan program
  • Kullanıcıdan alınan sayının hangi ay olduğunu söyleyen program // Örneğin 12.ay = Aralık
  • Aşağıda şekli verilen programı yazma (Resim Olarak Eklendi)
12222.PNG

Yaptığım Bazı Çözümler (Yorum satırları ile ayrılmış haldedir) :
C#:
Genişlet Daralt Kopyala
// İki sayının aralarında asal olup olmamalarını bulma
            /*
                Console.WriteLine("Birinci sayıyı giriniz :");
                int sayi1 = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("İkinci sayıyı giriniz :");
                int sayi2 = Convert.ToInt32(Console.ReadLine());

                if(sayi1 % sayi2 ==0)
                    Console.WriteLine("Bu sayılar aralarında ASAL DEĞİLDİR");
                else
                    Console.WriteLine("Bu sayıalr aralarında ASALDIR");
            */
            // Kullanıcıdan alınan iki sayının tam bölenlerinin toplamının birbirlerine eşit olup olmaması (kardeş sayılar)
            /*
            Console.WriteLine("Birinci sayıyı giriniz :");
            int sayi3 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("İkinci sayıyı giriniz :");
            int sayi4 = Convert.ToInt32(Console.ReadLine());
            int b_sayi3=0, b_sayi4=0;
            for(int i=1; i<sayi3; i++)
            {
                if (sayi3 % i == 0)
                    b_sayi3 += i;

            }

            for(int x=1; x<sayi4; x++)
            {
                if (sayi4 % x == 0)
                    b_sayi4 += x;
            }

            if(b_sayi3 == sayi4 && b_sayi4 == sayi3)
                Console.WriteLine("Bu sayılar arkadaş sayıdır");
            else
                Console.WriteLine("Bu sayılar arkadaş sayı değildir");
            */
            // Kullanıcıdan alınan bir sayının faktöriyelini hesaplama
            /*
            Console.WriteLine("Bir sayı giriniz : ");
            int sayi5 = Convert.ToInt32(Console.ReadLine());
            int cevap = 1;
            if (sayi5 == 0)
                Console.WriteLine(cevap);
            else
            {
                for (int x = 1; x <= sayi5; x++)
                {
                    cevap *= x;
                }
                Console.WriteLine(cevap);
            }
            */
            // Kullanıcıdan alınan bir n sayısı için şu işlemi gerçekleştirecek program : 1/2-2/3+3/4-4/5+5/6.....+n/n+1
            /*
            Console.WriteLine("Bir sayı giriniz : ");
            int sayi6 = Convert.ToInt32(Console.ReadLine());
            double cevap2=0;
            sbyte isaret = -1;

            for(int x=1; x<=sayi6; x++)
            {
                if (x % 2 == 0)
                    cevap2 += isaret * (x / (double)(x + 1));
                else
                    cevap2 += x / (double)(x + 1);
                
            }

            Console.WriteLine(cevap2);
            */
            // Kullanıcıdan alınan bir sayının %(mod) operatörü kullanmadan kalanını bulma
            /*
            Console.WriteLine("Sayıyı giriniz : ");
            int sayi7 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Böleni giriniz : ");
            int bolen = Convert.ToInt32(Console.ReadLine());
            if(bolen==1)
                Console.WriteLine("Kalan yok zaten bolen bir sürekli kendisine eşit olur :)");
            else
            while (sayi7 - bolen >=0)
            {
                sayi7 = sayi7 - bolen;
            }
            if(sayi7 == 0)
                Console.WriteLine("Kalan 0");
            else
            {
                Console.WriteLine("Kalan "+sayi7);
            }
            */
            // Rastgele üretilen (0-9) arası sayılar ile mini işlem oyunu yapıp 5 soru sonunda doğruları ve yanlışları söyleyen, Yanlış ise kullanıcının verdiği cevap + olması gereken cevabı söyleyen programı yazmak
            /*
            Random uret = new Random();
            int sayi8, sayi9,cevap;
            string program="";
            for(int i=0; i<5; i++)
            {
                sayi8 = uret.Next(9);
                sayi9 = uret.Next(9);
                if (sayi8 < sayi9) // 2 10
                {
                    sayi8 += sayi9;
                    sayi9 = sayi8 - sayi9;
                    sayi8 -= sayi9;
                }

                Console.Write(sayi8+" - "+sayi9+" =");
                cevap = Convert.ToInt32(Console.ReadLine());
                if(sayi8-sayi9 ==cevap)
                    program +="Soru :"+sayi8 + " - " + sayi9 + "\n Cevap : " + cevap + "\n Cevap DOĞRU\n";
                else
                    program += "Soru :" + sayi8 + " - " + sayi9 + "\n Cevap : " + cevap + "\n Cevap YANLIŞ \n"+"Doğru Cevap "+(sayi8-sayi9)+" olamalı idi";

            }

            Console.WriteLine(program);
            */
            // Çarpım Tablosunu yazdıran program
            /*
            for(int x=1; x<10; x++)// basamaklar
            {
                for(int y=0; y<10; y++)// işlemler
                {
                    Console.WriteLine(x+"*"+y+"="+(x*y));
                }
                Console.WriteLine("*******************************");
            }
            */
            // 1 den n'e kadar olan sayıların karelerini yazdıran program (n kullanıcıdan alınan sayı demektir)
            /*
            Console.WriteLine("Bir Sayı Giriniz :");
            int sayi10 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("***********************");
            for(int x=1; x<sayi10; x++)
                Console.WriteLine(x*x);
            */
            // 21 elemanlı bir dizi oluşturunuz. Oluşturulan dizinin uzunluğunu,(baş,orta,son)'da bulunan elemanları yazdırınız
            /*
            Random uret2 = new Random();
            int[] sayi_dizisi = new int[21];
            for(int x=0; x<sayi_dizisi.Length; x++)
            {
                sayi_dizisi[x] = uret2.Next(9);
                Console.Write(sayi_dizisi[x]+" ");
            }
            int ilk_d = sayi_dizisi[0];
            int son_d = sayi_dizisi[sayi_dizisi.Length-1];
            int orta_d = sayi_dizisi[((sayi_dizisi.Length-1) / 2)];

            Console.WriteLine("\nİlk Terim : "+ilk_d);
            Console.WriteLine("Son Terim : " + son_d);
            Console.WriteLine("Orta Terim : " + orta_d);
            */
            // İki sayının EBOB ve EKOK'unu bulan program
            // Kullanıcıdan alınan 2 sayının arasındaki sayıların toplamını yazdıran program
            // Kullanıcıdan alınan matematik-fen-türkçe notlarına göre Sayısal,Eşit-Ağırlık veya Sözel tercih etmesini söyleyen program
            // Kullanıcıdan alınan sayının Birler,Onlar,Yüzler,Binler basamağını bulan program
            // Kullanıcıdan alınan sayının hangi ay olduğunu söyleyen program // Örneğin 12.ay = Aralık
            // Aşağıda şekli verilen programı yazma (Resim Olarak Eklendi)
 
Son düzenleme:
Merhabalar,
Konu başlıkları her ne kadar c egzersizleri olsa da sorularda istenilen şeyleri diğer programlama dilleri ile de yazabilirsiniz.
O halde ben Python ile yazdığım çözümleri buraya bırakmak istiyorum :)



Kod:
Genişlet Daralt Kopyala
# + Operatoru yerine * Operatorunu kullanirsaniz 2 sayinin carpimini elde edersiniz.
def main():
    try:
        sayi1 = int(input("1. Sayi: "))
        sayi2 = int(input("2. Sayi: "))
        print("Sayilarin toplami: ", sayi1+sayi2)
    except ValueError:
        print("Yalnizca sayi giriniz.\n")

main()

if __name__ == "__main__":
    main()
Kod:
Genişlet Daralt Kopyala
def main():
    toplam = 0
    for x in range(1, 1001):
        try:
            toplam += int(x)
        except ValueError:
            print(f"{x} tam sayiya donusturulemedigi icin devam edilemiyor!")
    print("Toplam: ", toplam)

if __name__ == "__main__":
    main()
Kod:
Genişlet Daralt Kopyala
def main():
    toplam = 0
    try:
        secim = int(input("Kac tane sayi gireceksiniz? \n>>> "))
        for x in range(1, secim+1):
            try:
                sayiGirdisi = int(input(f"{x}. Sayi: "))
                toplam += sayiGirdisi
            except ValueError:
                break
                print("Toplam: ", toplam)
        print("Toplam: ", toplam)
    except ValueError:
        print("Yalnizca sayi girerek belirtin. \n")

if __name__ == "__main__":
    main()
Kod:
Genişlet Daralt Kopyala
def main():
    print("1'den Klavye İle Girilen N Sayısına Kadar Olan Çift Sayıların Karesini Listeleyin\n")
    try:
        n = int(input("Max Sayi: "))
    except ValueError:
        print("Yalnizca sayi girin.")
        pass
    karesiAlindi = {}
    for x in range(1, n):
        if x%2 == 0:
            karesiAlindi[x] = x**2
        else:
            pass
    for anahtar,deger in karesiAlindi.items():
        print(f"{anahtar} Sayisinin Karesi: {deger}")

if __name__ == "__main__":
    main()
Kod:
Genişlet Daralt Kopyala
def main():
    toplam = 0
    for x in range(1, 16):
        try:
            sayiGirdisi = int(input(f"{x}. Sayi: "))
            toplam = toplam+sayiGirdisi
        except ValueError:
            pass
    print("\nGirilen Sayilarin Ortalamasi: ", toplam/15)

if __name__ == "__main__":
    main()
Kod:
Genişlet Daralt Kopyala
import os

def main():
    hastalar = {}
    menu = """
        1- Hastalari listele
        2- Yeni hasta kaydi yap
        3- Hastalarin isimleri
        4- Hastalarin yaslari
        5- Ekrani Temizle
        q = Cikis"""
    print(menu)
    while True:
        girdi = input(">>>")
        if girdi == '5':
            os.system("cls||clear")
            print(menu)
        if girdi != 'q':
            if girdi == '1':
                if hastalar:
                    for k,v in sorted(hastalar.items()):
                        print(f"Yas: {k}, Hastalar: {v}")
                else:
                    print("Suan klinikte hic hastamiz yok.")
            if girdi == '2':
                hastaYasi = input("Hastanin Yasi: ")
                if hastaYasi.isdigit():
                    if int(hastaYasi) in hastalar.keys():
                        pass
                    else:
                        hastalar[int(hastaYasi)] = []
                    try:
                        hastaIsmi = input("Hastanin Ismi: ")
                        hastalar[int(hastaYasi)].append(hastaIsmi)
                    except ValueError:
                        print("Hastanin Ismi Sadece Harflerden Olusabilir")
                        pass
                else:
                    print("Hastanin Yasi Sadece Sayilardan Olusabilir.")
            if girdi == '3':
                if hastalar:
                    for x in hastalar.values():
                        print(x)
                else:
                    print("Suan klinikte hic hastamiz yok.")
            if girdi == '4':
                if hastalar:
                    for x in hastalar.keys():
                        print(x)
                else:
                    print("Suan klinikte hic hastamiz yok.")
        else:
            print("Cikis Yapiliyor...")
            exit()
if __name__ == "__main__":
    main()
 
Geri
Üst