Listede var olmayan indeksleri gösteriyor

#include<iostream>
using namespace std;
int main(){
  int sayi,i; 
  int l = 0;
  cout << "Sayıyı girin: " << endl;
  cin >> sayi;
  int liste[100] = {};
  for( i = 0; i <= sayi; i++) {
    if (sayi % i == 0) {
      liste[l] = i;
      l++;
    }
  }
  for( int a = 0; a <= sayi; a++) {
    if (liste[a] != 0 && liste[a] <= sayi) {cout<<a<<". indeks = "<<liste[a]<<endl;
      }
  }
}

c++ ile bu şekilde bir kodla sayının bölenlerini göstermeye çalışıyorum. bir çok sayıda sorun yok ama 200 yazınca var olmayan indeks numaraları ve değişik sayılar yazdırıyor.
10. indeks = 100
11. indeks = 200
100. indeks = 72704
102. indeks = 59231232
gibi ve 200’e kadar gidiyor

100 elemanlı bir liste tanımlayıp, 200’üncü elamanını istersen, belleğin diğer bölümlerine taşar ve bellekteki rastgele verileri okutursun.

İster listeni;

` int liste[200] = {};`

yap, 200 e kadarkileri listelet.

İster cin>> sayi;

ile aldığın sayı değişkenini, liste boyutundan küçük yada eşit olduğunu kontrol eden bir kod satırından sonra for döngüsünde kullan.

1 Beğeni

Teşekkür ederim. Listeye attığım şeyler bölenler olduğu için mesela 200 sayısı için 11 böleni olduğundan 11 boyutundaki bir liste yeter diye düşünmüştüm. Peki listeyi girdisini aldığım sayı boyutunda nasıl yapabilirim?

vector<int> liste[sayi] = {};

şeklinde yapabileceğimi okudum birçok yerde ama sorun çözülmüyor ve hiç alakasız yerlerde de hata vermeye başlıyor

C ve C++’da Dinamik Dizi Veri Yapısı | by Serbay Özkan | Medium

Dinamik dizler konusuna bakabilirsin.