Şimdi Ara

C, Alfabetik sıralama yapmak isterken hata

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
5
Cevap
0
Favori
1.008
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba,

    Kullanıcıdan kelimeleri alıp bunları alfebatik olarak sıralamak istiyorum ama programım hata vermeden konsola geçiş yapıyor ama konsolda ekranıma bişey gelmiyor. Yardımcı olabilir misiniz?

    Edit: Kullanıcıdan veri istemek yerine char s[5][20] yaparak verileri sisteme kayıt edince problem yapmadan hesaplıyor. İlk satırlardan kaynaklı bir sorun olduğunu düşünüyorum.

    #include <stdio.h> 
    #include <string.h>
    int main()
    {
    /*amaç alfabetik sıralamaya göre bişeyler yazma */

    /* strcmp= kıyaslama
    strcpy= kopyalama
    strcat= birleştirme
    */
    int n,i,j;
    char s[n][20];
    printf("Kac adet sayi gireceksiniz? "); scanf("%d",n);
    for(i=1;i<=n;i++)
    {
    printf("Isimleri giriniz. \n "); scanf("%s",&s[i]);
    }
    char t[20];

    /* elemanlarımızı ayarladık */

    for(i=0;i<5;i++)
    {
    for(j=0;j<5-i;j++) /* programın hızının artması için 5-i yaptık */
    {
    if(strcmp(s[i],s[j])<0)
    {
    strcpy(t,s[i]);
    strcpy(s[i],s[j]);
    strcpy(s[j],t);
    }
    }
    }

    /* yukardaki işlem ile kelimeleri alfebatik sıraladık. */

    for(i=0;i<5;i++)
    {
    printf("%s \n",s[i]);
    }


    }



    < Bu mesaj bu kişi tarafından değiştirildi rumman -- 1 Ağustos 2016; 23:44:15 >







  • n e scanf le değer atanmadan önce n dizi tanımında kullanılıyor. dizi tanımlama scanf den sonraya alınmalı.

    bu şekilde yapılsa bile bazı derleyicilerde çalışmayabilir.dizi boyutu için constant değer isteyebilir.
  • teşekkür ederim
  • Bence :
    Kelimeleri alıyorsun ya. Onların ilk hafrifini al. Mesela :
    Kelimeler[] = alınan kelimeler
    Kelime[] = kelimeler deki bir kelime
    Kelime[0] = kelimenin ilk harfi.
    Daha sonra ascii tablosunu kullanabilirsin.
    Kelime[0] 'yi decimal a çevir çıkarma işlemiyle. Bu şekilde ünt döner ve sizde büyüktür küçüktür ile karşılaştırabilirsin. Sayıları bulduktan sonra sayfamda sıralama algoritmaları var onları kullanabilir siniz : ardamavi.com
    Google için anahtar kelime = Char to Int ya da char to decimal gibi gibi

    İyi çalışmalar.
    Biraz hızlı yazdım umarım anlaşılıyordur.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Girilen isimleri ayrı bir değişkene alıp sonra diziye kopyalamak daha mantıklı; aksi takdirde segmentasyon hatası gibi C'de rastlanan hatalardan alabilirsin (GCC ile yaptığım derlemede ben aldım)
     
    char s[n][20];
    char girilen[20];

    for(i=0;i<=n;i++)
    {
    printf("Isimleri giriniz. \n ");

    scanf("%s" ,&girilen);
    strcpy(s[i],girilen);
    }


    Bir de sıralama algoritması hem okunması zor hem de tam doğru calışmıyor; nitekim başka biryerden kopyalayıp yapıştırılmış .)



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 2 Ağustos 2016; 23:34:12 >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.