Dizi sıralamada kod hatası

Başlatan robikod, 16 Nisan 2016, 14:11:37

robikod

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;
	
	
}

}

erpay

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ı.

robikod

#2
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;
	
		}
				
	
}

}

mehmet

#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;
}
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

fatal16

#4
@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


robikod