Şimdi Ara

uğraşıp çözemediğim problem

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
10
Cevap
0
Favori
880
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar çalıştığım kitapdaki bu problemi çözemedim bikaç yol denedim ama program durduruldu hatası aldım örneğin döngünün içinde herseferinde yeni bir değer almayı bile beceremedim
     
    for(i=0; i<20; i++)
    {
    printf("deger giriniz");
    scanf("%d",sayi[i]);
    }


    yalnızca bunda bile hata alıyorum nerede yanlış yapıyorum

    ayrıca problemde aşağıda direk copy-past yaptım yardımlarınızı bekliyorum

    Tek belirteçli bir dizi kullanarak şu problemi çözün: Kullanıcı 10’la 100 arasında 20 sayı girsin. Her sayı klavyeden alındığında, eğer daha önce aynı sayı girilmediyse bu sayı ekrana yazdırılsın. Programınız, en kötü ihtimalle 20 farklı sayı girilme ihtimalini de desteklesin ve mümkün olan en küçük diziyi kullanın.







  • kaiserstudents kullanıcısına yanıt
    Tüm kodunuzu atmanız mümkün mü? Çünkü hata almanızın birçok sebebi olabilir.

    i sayısını tanımlamamış olabilirsiniz veya benim gördüğüm hata scanf kullanırken değişkenin adres değerini almamanız. Yani scanf("%d",sayi); değil scanf("%d", &sayi); kullanmalısınız :)
  • GorunmezBKZ kullanıcısına yanıt
    aa hocam çok sagol scanf içinde & kullanınca düzeldi bu parça teşekkür ederim nasılda unutmuşum Allahım ya :)
    neyse ben biraz daha uğraşayım çözemezsem yine size başvururum.
  • GorunmezBKZ kullanıcısına yanıt
     
    #include <stdio.h>

    main()
    {

    int dizi[20],kopya[20];
    int i,j,k;


    for(i=0; i<=20; i++)
    {

    printf("%d. degeri giriniz :",i+1);
    scanf("%d",&dizi[i]);

    dizi[i] = kopya[i];

    for(k=0; k<=i; k++)
    {
    for(j=0; j<=k; j++)
    {

    if(dizi[k+1]==kopya[j])

    printf("girdiginiz deger dizide zaten var");

    else
    printf("%d\n",dizi[i]);
    }

    }

    }


    }

    hocam benim sinirlerim bozulmaya başladı bi el at nolursun :) getirebildiğim en son üst taraftaki kodlar
  • Mobil olduğum için tam bakamadım ama dizi = kopya kısmı sıkıntılı gibi. Önce dizi ye scanf ile değer atıyorsun sonra içinde ne olduğu bilinmeyen kopya yi ona atayarak okuduğun degeri kaybediyorsun.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  •  
    #include <stdio.h>

    main()
    {

    int dizi[20],kopya[20];
    int i,j,k;


    for(i=0; i<=20; i++)
    {

    printf("\n\n%d. degeri giriniz :",i+1);
    scanf("%d",&dizi[i]);


    for(j=0; j<=i-1; j++)

    {

    if(dizi[i]==dizi[j])

    printf("\n\ngirdiginiz deger dizide zaten var\n");

    }

    printf("\n ---->>> girdiginiz deger = %d",dizi[i]);



    }
    }

    Tam istediğim gibi olmasada bu kodlar hiç yoktan iyidir önerileriniz varsa dikkate alırım mesajlarınız için teşekkürler :)
  • kaiserstudents kullanıcısına yanıt
    dizi[20]

    dizi 20 elemanlı olarak tanımlanmış


    for(i=0; i<=20; i++) 
    scanf("%d",&dizi[i]);

    i=20 olduğunda dizi[20]'ye erişilmeye çalışıyor. c'de saymaya 0'dan başlanır. dizinin ilk elemanı dizi[0], son elemanı dizi[19]'dur. dizi[20] ye erişmeye çalışırsan patlar.

    if(dizi[k+1]==kopya[j]) 

    burada da k'nın değeri 20'ye kadar gidiyor. yani dizi[20] ve dizi[21]'e erişilmeye çalışılıyor. az önce dediğim gibi dizinin son elemanı dizi[19]. dolayısıyla bu işlem de yanlış.

    çözüm: genel olarak for döngülerinin içerisindeki "<=" leri "<" ile değiştirirsen sanırım sağlıklı çalışır.
  • kirmik K kullanıcısına yanıt
    teşekkürler
  • Şu konu deneyebilir misin istediğin gibi mi?

    #include <stdio.h> 

    main()
    {

    int dizi[20],kopya[20];
    int i,j,k;
    int index = 0 ;


    for(i=0; i<=19; i++)
    {

    printf("\n\n%d. degeri giriniz :",i+1);
    scanf("%d",&dizi[i]);


    for(j=0; i>0 && j<i; j++)
    {

    if(dizi[i]==kopya[j]){

    printf("\n\ngirdiginiz deger dizide zaten var\n");
    printf("\n\n%d. degeri giriniz :",i+1);
    scanf("%d",&dizi[i]);
    j = -1;
    }

    }


    kopya[i] = dizi[i];
    printf("\n ---->>> girdiginiz deger = %d",dizi[i]);


    }
    }
  • yokedici_destroyer kullanıcısına yanıt
    evet gerçekten iyi iş çıkarmışsın program sorunsuz :)
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.