Merhaba, kullanıcı tarafından girilen sayıların kaç tanesinin birbirinine eşit olduğunu gösteren bir kod yazmak istiyorum fakat bir türlü doğru kodu yazamadım. Bu yazmış olduğum hatali kod. Nerede yanlış yapıyorum?
#include <iostream>
#define MAX 50
using namespace std;
int main()
{
int x, i, arr[MAX], j, z=0;
cin >> x;
for (i=0; i<x; i++){
cin >> arr[i];
}
for (i=0; i<x; i++){
for (j=0; j<x; j++) {
if (arr[j]==arr[j+1]){
z++;
}
}
}
cout << z;
}
#include <iostream>
#define MAX 50
using namespace std;
int main()
{
int x, i, arr[MAX], j, z=0;
cin >> x;
for (i=0; i<x; i++){
cin >> arr[i];
}
for (i=0; i<x; i++){
for (j=0; j<x; j++) {
if (arr[j]==arr[j+1]){
z++;
}
}
}
cout << z;
}

bu kodu duzeltmeek istiyorsan dongu soyle olmali
for (i=0; i<x; i++){
for (j=i+1; j<x; j++) {
if (arr[i]==arr[j]){
z++;
}
}
ama daha efektif olarak sayilari okurken key okudugun sayilari bir set'e atabilirrsin, yeni sayi okudukca eger sette bu sayi varsa z'yi artirirsin. boylece okuma bittiginde sonucu da hesaplamis olusun. complexity O(n^2)'den O(1)'e dusmus olur
crucio

1