KralYolu
Kilopat
Daha fazla
- Cinsiyet
- Erkek
Arkadaşlar amacım C dilinde 1-99 arası sayılardan haneleri toplamı tek olan sayıları bulup ekrana yazdırmak. Denemek için skalayı daraltıp kod içinde 99 yerine 5 yazdım. Lakin şöyle bir sorun var benim kafamdaki mantıkta gayet güzel çalıştığını düşündüğüm bu kod sonsuz döngüye giriyor. Ne yapacağımı bulamadım. Sizce bunu nasıl düzeltirim?
Beklediğim çıktı (99 yerine 5 düşünün): "Haneleri toplami tek: 1 Haneleri toplami tek: 3"
Edit: Neden sonsuz döngüye giriyor?
Öğrendiklerimi benim gibi yeni yeni bu işlere başlayan arkadaşlar için aktarmak istiyorum. Aşağıda @Vavien. 'in yaptığı çözüme bakabilirsiniz. Peki çözümde olup benim kodlarda olmayan ne?
Şimdi ben i adlı değişken ile for döngüsü oluşturuyorum ve aşağıda while döngüsüne'de i ile giriyorum. While döngüsü içinde i=0 oluyor ve diğer koşula geçiyor. Lakin for döngüsü i'yi artırırken son değeri üzerinden gidiyor. Yani son i=0 olduğundan 1 artırıp i=1 yapıyor. Bu durumda aslında en başa dönmüş oluyoruz. Çünkü for döngüm zaten i=1'den başlamıştı. Bu böyle sonsuz kere tekrar ediyor. Bunu önlemek için i değişkenimi başka bir değişkene atıyoruz ve while döngüsüne o değişken ile giriyoruz. -ki i değerimiz değişmesin. Ve düzenli şekilde artabilsin.
Beklediğim çıktı (99 yerine 5 düşünün): "Haneleri toplami tek: 1 Haneleri toplami tek: 3"
Edit: Neden sonsuz döngüye giriyor?
Öğrendiklerimi benim gibi yeni yeni bu işlere başlayan arkadaşlar için aktarmak istiyorum. Aşağıda @Vavien. 'in yaptığı çözüme bakabilirsiniz. Peki çözümde olup benim kodlarda olmayan ne?
Şimdi ben i adlı değişken ile for döngüsü oluşturuyorum ve aşağıda while döngüsüne'de i ile giriyorum. While döngüsü içinde i=0 oluyor ve diğer koşula geçiyor. Lakin for döngüsü i'yi artırırken son değeri üzerinden gidiyor. Yani son i=0 olduğundan 1 artırıp i=1 yapıyor. Bu durumda aslında en başa dönmüş oluyoruz. Çünkü for döngüm zaten i=1'den başlamıştı. Bu böyle sonsuz kere tekrar ediyor. Bunu önlemek için i değişkenimi başka bir değişkene atıyoruz ve while döngüsüne o değişken ile giriyoruz. -ki i değerimiz değişmesin. Ve düzenli şekilde artabilsin.
int main()
{
int n, m, toplam, temp;
for(int i=1; i<5; i++){
temp = i;
while(i>0){
m = i%10;
toplam += m;
i = i/10;
}
if (toplam %2!=0){
printf("Haneleri toplami tek: %d", temp);
}
}
}
Son düzenleme: