Şimdi Ara

C de en buyuk iki sayi bulma???

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
9
Cevap
1
Favori
6.835
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaslar deitel in kitabından calısıyorumda.Şöyle bir soru var.Kullanıcıdan rastgele 10 sayı girmesini isteyen bir program yazın.Sonra bu sayıların en buyuk 2 tanesini ekrana yazdırın.Her sayı farklı olcak.
    Bu programı sadece stdio.h kullanarak bide while,if/else kullanıp if/else dede or ve and kullanmadan nasıl yazarım ???



  • 1- En büyük sayıyı bul
    2- bulduğun en büyük sayıyı listedeki tüm elemanlarla karşılaştır, eğer aynı olan varsa en küçük negatif sayıyı ata onlara.
    3- Oluşan listedeki en büyük sayıyı bul.

    buldugun 2 sayıyı ekrana yazdır ve bitti.
  • Bu algoritmayı bende kurdum zaten.Bu arada 4 degişken kullanman gerekiyor.Bunu kod olarak yazar mısın ?
  • Aynı kitabı ben de okuyorum (sanırım aynı kitap yani ) biraz bişiler yaptım. Maksimum sayıyı alma fonksiyonu kitapta biraz önlerdeydi ama 10 tane farklı değişken kullanmak şahsen bana saçma geldi ve dizilerle yaptım:

     

    #include <stdio.h>

    int maksimum(int[]);

    int main()
    {

    int sayilar[10] = {0}; // İlk değeri '0' yapıyoruz ki dizideki diğer değerlerde otomatik olarak 0 olsun.
    printf("10 tamsayı giriniz:\n");

    for (int i=0; i<10; i++) // Döngü...
    {
    printf("%d:",i+1);
    scanf("%d",&sayilar[i]);
    }

    // İlk çağırmamızda, fonksiyon en büyük sayıyı bulacaktır.
    // İkinci kez çağırırken sayıların farklı olması gereği yüzünden
    // En büyük değer ile 2. en büyük değerin farklı olmasını istiyoruz.
    int a = maksimum(sayilar),b;
    do
    {
    b=maksimum(sayilar);
    } while(a==b);
    printf("En büyük 2 sayi: %d ve %d dir.",a,b);
    return 0;
    }

    int maksimum(int x[])
    {
    int enbuyuk=-1; // ilk değerler
    int n = 0;

    for (int i=0; i<10; i++)
    {
    if(x[i]>enbuyuk) // eğer eleman enbuyuk değişkeninden büyükse
    {
    enbuyuk=x[i]; // enbuyuk değişkenini değiştiriyoruz
    n=i; //daha sonra en büyük değişkeni listeden çıkaracağız
    }
    }
    x[n]=-1; // aslında tam listeden çıkarma olmadı ama -1 yeterince küçük bir sayı :)
    return enbuyuk;
    }



    4 değişken gerekiyor demişsiniz, ben biraz fazla kullandım galiba Mutlaka daha iyi bir yolu vardır C'ye yeniyim ama en azından kod çalışıyor



    < Bu mesaj bu kişi tarafından değiştirildi PythEch -- 9 Aralık 2011; 22:36:44 >




  • int main()
    {
    int max1=0, max2=0;
    for(int i=0;i<10;i++){
    int sayi; cin >> sayi;
    if(sayi>max1){
    max2 = max1;
    max1 = sayi;
    }else
    if(sayi>max2) max2 = sayi;
    }

    cout << max1 << " " << max2 << endl;
    return 0;
    }


    4 değişkenli ...

    matık çok basit

    eğer sayı büyükse max1 sayıya eşit oluyor , eğer değilse max 2 e eşit oluyor. yani en büyük sayı max1 sonraki büyük sayı max2 ...
  • quote:

    Orijinalden alıntı: cinobilly

    int main()
    {
    int max1=0, max2=0;
    for(int i=0;i<10;i++){
    int sayi; cin >> sayi;
    if(sayi>max1){
    max2 = max1;
    max1 = sayi;
    }else
    if(sayi>max2) max2 = sayi;
    }

    cout << max1 << " " << max2 << endl;
    return 0;
    }


    4 değişkenli ...

    matık çok basit

    eğer sayı büyükse max1 sayıya eşit oluyor , eğer değilse max 2 e eşit oluyor. yani en büyük sayı max1 sonraki büyük sayı max2 ...

    harbi ha :D
  •  
    int main()
    {
    int sayi,sayici = 1,enBuyuk1 = 0,enBuyuk2 =0;

    printf("\nSayıları Giriniz :\n");

    while( sayici <= 10){

    scanf("%d",&sayi);

    if( sayi > enBuyuk2 ){

    enBuyuk2 = sayi;

    if( sayi > enBuyuk1){

    enBuyuk2 = enBuyuk1;
    enBuyuk1 = sayi;
    }
    }
    sayici++;
    }

    printf("\nEn Büyük Birinci Sayı : %d\n",enBuyuk1);
    printf("\nEn Büyük İkinci Sayı : %d\n",enBuyuk2);

    return 0;


    }


    Konu çok eski de kalmış ama sanırım aynı kitapta ki(deitel,soru-3.27) soruya bende denk geldim.Kitabın istediği gibi yapmaya çalıştım.
  • #include<stdio.h> 
    int main()
    {
    int sayilar[10], i = 0, a = 1, temp;
    printf("10 sayi girin:\n");
    while (i < 10)
    {
    scanf("%d", &sayilar[i]);
    i++;
    }
    i = 0;
    while (i < 10)
    {
    if (sayilar[i] < sayilar[a])
    {
    temp = sayilar[i];
    sayilar[i] = sayilar[a];
    sayilar[a] = temp;
    a++;
    }
    else
    a++;
    if (a >10)
    {
    i++;
    a = i + 1;
    }
    }
    i = 0;
    while (i<10)
    {
    printf("%d ", sayilar[i]);
    i++;
    }
    }
  • Bir turnuvada 2. olan takim, finalde sampiyona yenilen takimdir. Bu bakis acisiyla dizayn edin algoritmayi. Listede 1 tur atayim, en buyugunu cikarayim yeniden yapayim ile problemi cozersiniz ama guzel algoritma tasarlamis olmazsiniz. Zaten bu sorunun ogretmeye calistigi sey de bu.

    < Bu ileti tablet sürüm kullanılarak atıldı >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.