Giter VIP home page Giter VIP logo

---ALGORİTMA ÖDEVİ:AÇIK ARTIRMA UYGULAMASI --- Bu program bir açık artırma uygulamasıdır.

Bu program katılımcılardan teklif girmesini isteycektir.Programın amacı girilen değerler arasında en yüksek olanı seçmektir.

C programlama dilinde, struct (yapı), bir bellek bloğunda tek bir ad altında fiziksel olarak gruplandırılmış değişkenler listesini tanımlayan ve farklı değişkenlere tek bir işaretçi (pointer) aracılığıyla erişilmesine izin veren bileşik bir veri türüdür. Struct veri tipi, başka veri türlerini içerebilir. Typedef ise ifadesini kullanarak, standart veri türlerinini (int, char, float, vs.) veya kullanıcı tanımlı yapıları farklı isimlerle tanımlayabiliriz.

Mevcut Dosya Üzerinden İşlem seçeneği seçildiği surette "input.txt" adlı dosya baz alınacak ve işlemler bu dosya üzerinden yürütülecektir. Yeni Dosya Oluşturma seçeneği seçildiği surette program size özel bir "input.txt" dosyası oluşturacaktır. Bunun haricinde kullanıcı, takviye olarak yeni bir dosya oluşturmak isterse "exe." dosyasının klasörüne yeni bir "txt." dosyası oluşturabilir ve kod içine yeni oluşturulan dosyanın adını entegre edebilir.

*PROGRAMIN MANTIĞI Program ilk önce kaç tane katılımcı oldugunun belirlenmesini isteyecektir.Örneğin katılımcı 5 ise hepsi bir teklif verecektir.Program hangisinin teklifi en yüksekse onu seçecekktir ve kazananı belirleyecektir. Programda sonsuz bi döngü olacak şekilde etaplar vardır.İlk etap böylece bitecektir ardından eger katılımcılardan bazıları ya da hepsi daha yüksek bir teklif vermek isterlerse ikinci etaba gecilebilir. Bir etaptan diğerine gecmek için "e" harfine basarsanız diğer etaba gecebilirsiniz eger "h" ye basarsanız program duracaktır.

PROGRAMIN KODU*

#include <stdio.h>

#define MAX_KATILIMCI 100

// Açık artırma için bir yapı (struct) tanımlanıyor typedef struct AcikArtirma { double odeme; // Toplam ödeme miktarı

int kazanan_no;             // Kazanan katılımcının numarası

double en_yuksek_teklif;    // En yüksek teklif miktarı
int katilimci_sayisi;       // Katılan katılımcı sayısı
double teklifler[MAX_KATILIMCI];  // Katılımcıların teklifleri

} AçıkArtırma; // typedef ile yapıyı AçıkArtırma adı altında tanımlıyoruz

// Kazananın bilgilerini ekrana yazdırmak için bir fonksiyon tanımlanıyor

void goster_kazanan(int kazanan_no, double teklif) { printf("Kazanan katilimci: %d, Teklif: %.2f\n", kazanan_no + 1, teklif); }

// Şu an kullanılmayan ödeme hesaplama fonksiyonu

double hesapla_odeme(AcikArtirma *a, int kazanan_no) { return a->odeme; // Açık artırma yapısı içindeki ödeme miktarını geri döndürür }

// Toplam ödeme miktarını ekrana yazdırmak için bir fonksiyon tanımlanıyor void goster_odeme(double odeme) { printf("Toplam odeme: %.2f\n", odeme); }

int main() {

// Açık artırma yapısı oluşturuluyor ve başlangıç değerleri atanıyor

struct AcikArtirma a = {0.0, -1, -1.0, 0, {0}};

int kisi_sayisi;  // Kullanıcıdan alınacak katılımcı sayısını tutacak değişken

char devam;  // Kullanıcının devam etmek isteyip istemediğini tutacak değişken

while (1) { // Sonsuz bir döngü başlatılıyor
    printf("Kac kisi katilacak: ");
    scanf("%d", &kisi_sayisi); // Kullanıcıdan katılımcı sayısını alıyor

    printf("Katilimcilarin tekliflerini girin:\n");
    int i;
    for (i = 0; i < kisi_sayisi; ++i) {
        printf("Katilimci %d'in teklifi: ", i + 1);
        scanf("%lf", &a.teklifler[i]); // Her bir katılımcının teklifini alıyor

        if (a.teklifler[i] > a.en_yuksek_teklif) {
            a.en_yuksek_teklif = a.teklifler[i]; // En yüksek teklifi güncelliyor
            a.kazanan_no = i; // Kazanan katılımcı numarasını güncelliyor
        }
    }

    a.katilimci_sayisi = kisi_sayisi; // Katılımcı sayısını güncelliyor

    goster_kazanan(a.kazanan_no, a.teklifler[a.kazanan_no]); // Kazananı ve teklifi ekrana yazdırıyor

    printf("Devam etmek istiyor musunuz? (e/h): ");
    scanf(" %c", &devam); // Kullanıcıdan devam etmek isteyip istemediğini alıyor

    if (devam == 'h' || devam == 'H') { // Eğer devam etmek istemiyorsa döngüden çıkıyor
        break;
    }
}

return 0; // Programın başarıyla sonlandığını belirtiyor

}

betulyıldırım's Projects

git101_book icon git101_book

Yeni başlayanlar için Git (Versiyon Kontrol Sistemi) kitabı

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.