C#'ta bireysel ve laboratuvar hesap makinesi nasıl yapılır?

Krak3n_0

Decapat
Katılım
4 Kasım 2023
Mesajlar
228
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Merhaba bilgisayar bilimleri okuyorum. Hocamız bizden bireysel ve laboratuvar hesap makinesini C# üzerinden yapmamızı istedi. Daha birinci sınıf öğrencisiyim ve şuana kadar çok birşey görmedim. Bu proje bana ağır geldi, sizcede öylemi? Projenin detayları kilitli bir pdf te var, mesaj olarak atabilirim ama çok uzun olur o yüzden yapay zekadan kısaltmasını istedim. Sizce bu projeyi 4 gün içinde nasıl yapabilirim (anlayarak)?

Projenin Amacı;

C# dilinde bir matematiksel hesaplayıcı programı geliştirmek. Program, kullanıcıya iki ayrı hesaplayıcı sunar:

1. Laboratuvar Hesaplayıcısı (derslerde yapılan temel hesaplamalar)


2. Bireysel Hesaplayıcı (yazarın kendi geliştirdiği hesaplamalar)



Amaç, veri tiplerini, metotları, iteratif ve özyinelemeli algoritmaları kullanarak sayısal hesaplamalar yapabilmek ve C# konsol programları yazma becerilerini geliştirmektir.


---

Programın Yapısı

1. Ana Menü

A → Laboratuvar Hesaplayıcısı

B → Bireysel Hesaplayıcı

X → Programdan çıkış (yazar adı ve tarih gösterilir)


2. Laboratuvar Hesaplayıcısı Fonksiyonları

Toplam, Çarpım, Aritmetik Ortalama

İkinci dereceden denklem kökleri

n-inci dereceden polinom değeri (Horner şeması)

Newton sembolü hesaplama

Onluk → İkilik dönüşümü


3. Bireysel Hesaplayıcı Fonksiyonları

Harmonik Ortalama

Karesel Ortalama

Kuvvet Ortalama (genelleştirilmiş ortalama)

Geometrik Ortalama

Ağırlıklı Ortalama (Yem birimi fiyatı)

p → q taban dönüşümü



---

Özellikler

Kullanıcı girişi yinelenebilir (aynı hesaplamayı tekrar tekrar yapabilir)

Metot ve değişken isimleri yazarın baş harfi ile başlar (xyToplam, xyHarmonikOrtalama)

Tüm hesaplamalar doğru matematiksel formüllere göre yapılır

Program çıktıları konsolda gösterilir, laboratuvar ve bireysel hesaplayıcılar ayrı ayrı çalışır



---

Özetle: Bu proje, matematiksel hesaplamaları yapabilen, modüler ve kullanıcı dostu bir konsol programı geliştirme çalışmasıdır. Hem laboratuvar derslerinde hem de bireysel olarak çalışılabilecek şekilde tasarlanmıştır.
 
Ben sana böyle bir template vereyim, sen devam ettir. Evet proje biraz uzun ama vize için çok büyük bir proje sayılmaz. Anlayarak ilerlemen gerekir:
C#:
private static void Proje()
{
    Console.ForegroundColor = ConsoleColor.DarkGray;
    Console.Write("Labaratuvar hesaplaycı için 1'i,\nbireysel hesaplayıcı için 2'yi\nProgramı kapatmak için 3'ü tuşlayın.\n\nHangisini tercih ederdiniz: ");
    while (true)
    {
        var input = Console.ReadKey().Key;
        if (input is ConsoleKey.D1 or ConsoleKey.NumPad1)
        {
            LabCalculator();
            break;
        }
        else if (input is ConsoleKey.D2 or ConsoleKey.NumPad2)
        {
            PersonalCalculator();
            break;
        }
        else if (input is ConsoleKey.D3 or ConsoleKey.NumPad3)
        {
            Console.ResetColor();
            Console.Write("\nProgram kapatılıyor.");
            Thread.Sleep(321);
            Console.Write(".");
            Thread.Sleep(321);
            Console.Write(".");
            Thread.Sleep(321);
            Environment.Exit(0);
        }
        else
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("\nGeçersiz giriş, lütfen tekrar deneyin.\n");
        }
    }
}
private static void LabCalculator()
{
    Console.Clear();
    Console.Write("|--- Lab Calculator ---|\nToplama için 1'i,\nÇarpım için 2'yi,\nAritmetik Ortalama için 3'ü,\nİkinci dereceden denklemler için 4'ü," +
        "\nn'inci dereceden polinom için 5'i,\nNewton sembolü hesaplama için 6'yı,\nOnluk -> İkili dönüşümü için 7'yi,\nGeri dönmek için 8'i,\nÇıkmak için 9'u tuşlayın.\n\nHangisini tercih ederdiniz: ");
    bool cond = true;
    while (cond)
    {
        var key = Console.ReadKey().Key;
        cond = false;
        Console.WriteLine("\n");
        switch (key)
        {
            case ConsoleKey.D1 or ConsoleKey.NumPad1:
                Addition();
                break;
            case ConsoleKey.D2 or ConsoleKey.NumPad2:
                break;
            case ConsoleKey.D3 or ConsoleKey.NumPad3:
                break;
            case ConsoleKey.D4 or ConsoleKey.NumPad4:
                break;
            case ConsoleKey.D5 or ConsoleKey.NumPad5:
                break;
            case ConsoleKey.D6 or ConsoleKey.NumPad6:
                break;
            case ConsoleKey.D7 or ConsoleKey.NumPad7:
                break;
            case ConsoleKey.D8 or ConsoleKey.NumPad8:
                Console.Clear();
                Proje();
                break;
            case ConsoleKey.D9 or ConsoleKey.NumPad9:
                EnviromentExit();
                break;
            default:
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("\nGeçersiz giriş, lütfen tekrar deneyin.\n");
                break;
        }
    }
}
private static void Addition()
{
    double total = 0;
    while (true)
    {
        try
        {
            Console.ResetColor();
            Console.Write("Sayıları yazın (Örn: 1+2+3+4+5): ");
            var trim = Console.ReadLine()!.Split('+');
            for (int i = 0; i < trim.Length; i++)
                total += Convert.ToDouble(trim[i]);
            Console.ForegroundColor = ConsoleColor.Green;
            Console.Write($"\n\nToplam sonuç: {total}");
            Console.ResetColor();
            break;
        }
        catch
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("\nHatalı giriş yaptınız. Tekrar deneyin.");
        }
    }
}
private static void Multiplication(double[] numbers)
{
    double total = 0;
    foreach (var item in numbers)
        total *= item;
    Console.WriteLine($"\nSonuç: {total}\n");
}
private static void ArithmeticMean(double[] numbers)
{
    double sum = 0;
    foreach (var number in numbers)
        sum += number;
    double mean = sum / numbers.Length;
    Console.WriteLine($"\nSonuç: Aritmetik Ortalama = {mean}\n");
}
private static void QuadraticEquation(double a, double b, double c)
{
    double discriminant = b * b - 4 * a * c;
    if (discriminant > 0)
    {
        double root1 = (-b + Math.Sqrt(discriminant)) / (2 * a);
        double root2 = (-b - Math.Sqrt(discriminant)) / (2 * a);
        Console.WriteLine($"\nSonuç: İki gerçek kök var: x1 = {root1}, x2 = {root2}\n");
    }
    else if (discriminant == 0)
    {
        double root = -b / (2 * a);
        Console.WriteLine($"\nSonuç: Çift katlı kök var: x = {root}\n");
    }
    else
        Console.WriteLine("\nSonuç: Gerçek kök yok.\n");
}
private static void PersonalCalculator()
{
    // Blabla...
}
 

Technopat Haberler

Yeni konular

Geri
Yukarı