Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => C/C++ => Konuyu başlatan: robikod - 16 Nisan 2016, 14:11:37

Başlık: Dizi sıralamada kod hatası
Gönderen: robikod - 16 Nisan 2016, 14:11:37
Yazdığım bu koda göre tekrar eden elemanları bulmak istiyorum ancak program mantık hatası veriyor nerede hata var göremedim yardımcı olabilir misiniz ?
#include<stdio.h>
main()
{
int tahmin[]={5,3,7,7,8,9,11,5};
int say[]={0,1,2,3,4,5,6,7,8,9,10};
int sayac=0;
for(int i=0; i<8; i++)
{
for(int j=0; j<11; j++)
{
if(tahmin[i]==say[j])
sayac++;



}

printf("%d sayisi %d kez tekrar ediyor\n ",tahmin[i],sayac);
sayac=0;


}

}
Başlık: Ynt: Dizi sıralama da kod hatası
Gönderen: erpay - 16 Nisan 2016, 14:54:17
Bu koda bakınca şöyle birşey anladım ben :

tahmin dizisi içindeki sayıları tarayıp, say dizisinde de varsa sayaç artırılıyor bu durumda sadece 11 olmadığı için sayaç 7 çıkacaktır.

Bence sayac'ın kendiside dizi olsun, mesela tahmin içinde 5 rakamını gördüyse sayac dizininde 5. numaralı indeksi 1 artırsın. Tabi ki sayac dizisi elemanları başlangıçta 0 olmalı.
Başlık: Ynt: Dizi sıralama da kod hatası
Gönderen: robikod - 16 Nisan 2016, 18:02:17
Bu koda göre tahmin dizisi içindeki rakamları saydırmış olmuyor muyum ?
şöyle olduğunu varsayalım mesela burada ilk döngü tahmin dizisinin ilk elemanı için dönmüş oluyor ve say dizisindeki elemanları tarıyor bulduğu zaman sayaç 1 artıyor bu şekilde tahmin dizisindeki kaç tekrar var onu saymış olmaz mıyım nerede mantık hatası var tam olarak ?
#include<stdio.h>

main()
{
int tahmin[]={5,3,7,7,8,9,5,5};
int say[]={0,1,2,3,4,5,6,7,8,9,10};
int sayac=0;
for(int i=0; i<8; i++)
{
for(int j=0; j<11; j++)
{
if(tahmin[i]==say[j])
sayac++;


}

printf("%d sayisi %d kez tekrar ediyor\n ",tahmin[i],sayac);
sayac=0;

}


}

}
Başlık: Ynt: Dizi sıralamada kod hatası
Gönderen: mehmet - 16 Nisan 2016, 18:37:11

#include <stdio.h>

int main()
{
int dizi1 = 8;
int dizi2 = 12;
int tahmin[] = {5, 3, 7, 7, 8, 9, 11, 5};
    int say[]    = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
    int sayac[dizi2];
   
int m = 0;

for(int i = 0; i < dizi2; i++) sayac[i] = 0;   

while(m < dizi1)
{
for(int z = 0; z < dizi2; z++)
{
if(say[z] == tahmin[m])
{
sayac[z]++;
}
}
m++;
}

for(int i = 0; i < dizi2; i++)
{
if(sayac[i] > 0)
printf("%d sayisi %d kez tekrar ediyor\n ", i, sayac[i]);
    }

return 0;
}
Başlık: Ynt: Dizi sıralamada kod hatası
Gönderen: fatal16 - 16 Nisan 2016, 20:24:33
@robikod sizin kodunuzda sayi (i) == tahmin (i)  olarak değiştirip i ve j sayılarını değiştirirseniz çalışması lazım.

Normal Parantez kullandım köşeli parantez gözükmedi telefondan kaynaklı sanırım

Başlık: Ynt: Dizi sıralamada kod hatası
Gönderen: robikod - 17 Nisan 2016, 15:25:46
Teşekkürler herkese :)