C dizi içerisinde arama

Mr-Fakoo

Hectopat
Katılım
11 Mayıs 2019
Mesajlar
167
Çözümler
4
C:
int main(int argc, char *argv[]) {
int dizi[6] = {80,25,5,10,12,80};
int y, aranansayi,x,i;
y = 0;
x = 0;
for(i=0;i<6;i++)
{
printf("%d, ",dizi[I]);
}
printf("<= Dizide Bulunan Sayilar\n");
printf("Dizide Aramak istediginiz sayiyi giriniz:");
scanf("%d",&aranansayi);
for(i=0;i<6;i++)
{
if(aranansayi==dizi[I])
{
y=1;
x=i;
break;
}
}
if(y==1)
{
printf("y!! Dizinin %d. elemani:%d", x + 1, aranansayi);
}
else.
{
printf("Aradiginiz Deger Dizide Bulunmuyor\nBaska Bir Deger Girerek Tekrar Deneyiniz");
}
scanf("%d",&y);
return 0;
}

Bu dizide 2 tane aynı degerden var ama bu kod için bulduğu degerlerden sadece birini yazdırıyor 2.değeri yazdırması için ne yapabilirim? [/I][/I]
 
Son düzenleyen: Moderatör:
Öncelikle biraz daha boşluklu, girdili-çıkıltılı kod yaz ki anlaşılsın.
I ile i aynı harf değil. Dizi indexi olarak I kullanmışsın.

Bulunan değerleri diziye atayıp sonrasında dizi elemanlarını yazdırarak yapabilirsin.

Kod:
#include <stdio.h>

int main() {
  
    int dizi[] = {80, 25, 5, 10, 12, 80};
    int aranansayi;

    for(int i = 0; i < sizeof(dizi)/sizeof(int); ++i){
        printf("%d, ", dizi[i]);
    }
  
    printf("\b\b <= Dizide Bulunan Sayilar\n");
    printf("Dizide Aramak istediginiz sayiyi giriniz: ");
    scanf("%d", &aranansayi);
  
    int arr[sizeof(dizi)/sizeof(int)];
    int index = 0;
    int flag = 0;
  
    for (int i = 0; i < sizeof(dizi)/sizeof(int); ++i){
        if (aranansayi == dizi[i]){
            arr[index++] = i;
            ++flag;
        }
    }
  
    printf("\n");
  
    if(0 < flag){
        for (int i = 0; i < index; ++i){
            printf("Dizinin %d. elemani: %d\n", arr[i] + 1, aranansayi);
        }
    }

    return 0;
}
 
Son düzenleme:
sizeof(dizi)/sizeof(int) Bunun kullanımı tam olarak nasıl oluyor orayı anlamadımda ?
 
Dizinin boyutunu alıyorsunuz. Sizeof metodu ile alırsınız. Ama sorun şu ki sizeof(dizi) dediğinizde size byte cinsinden tüm dizinin boyutunu verir. Size ise dizideki eleman sayısı lazım. Bu yüzden bir int ne kadar yer tutuyorsa ona bölüyorsunuz. Genelde 4'tür. Yani 24/4 işlemini yapıyor orada.
Genel kullanımdır. Dizinin boyutu değişse de orayı değiştirmenize gerek kalmıyor bu sayede.
 
sizeof() dediğiniz zaman bütün dizinin boyutunu alırsınız.
Örn: 10 elemanlı 32bitlik Integer tutan bir dizimiz olsun. (bkz: int arr[10])
sizeof(arr) denildiği zaman 40 sonucu dönecektir. Çünkü 4 bytelık 10 tane eleman var. Eleman sayısını bulmak için toplam boyutu içerisinde tutulan elemanın boyutuna böleriz. 40 / 4 = 10;
 

Indentation kurallarına uymak, kod okunabilirliğini arttıran özelliklerdendir.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…