Bildirim
C'de sonsuz döngüde ne hata var bulamadım
Daha Fazla 
Bu Konudaki Kullanıcılar:
Daha Az 

2 Misafir - 2 Masaüstü

Giriş
Mesaj
-
-
int toplam=1; satırını buraya doğru yazdıysan dediğin gibi olması için bir neden göremedim ben _____________________________ -
quote:
Orijinalden alıntı: ibrahim_sancakli43
#include<stdio.h>
#include<conio.h>
int main(){
int toplam=1;
while (true){
toplam=toplam*2;
printf("%d\n", toplam);
}
getch();
return 0;
}
2,4,8,16,32,64... diye alt alta sürmesini istiyoprum ama sonuç 0,0,0,0,0,0,0..... diye gidiyo.
slm bence int değişkeninin boyutu yetmiyo,senin kodlarını kopyaladım ilk önce işlem yapıp 0 ile devam ediyo long olarakta fazla uzun sürmez 0 a dönmesi_____________________________ -
Anladım sanırım nedenini, sonsuz olduğu için döngün sınırı aşıyor anladığım kadarıyla, ilk başlarda yazıyo 2 4 8 16 diye daha sonra 0 oluyor. _____________________________ -
Şöyle çözdüm;
#include <stdio.h>
#include <conio.h>
using namespace System;
int main(){
int toplam=1;
while (toplam<(2147483647-1)/2){
toplam=toplam*2;
printf("%d\n", toplam);
}
getch();
return 0;
}_____________________________ -
-
quote:
Orijinalden alıntı: ibrahim_sancakli43
c++ bilmiyorum daha :) sadece C. Döngü sınırı derken anlamadım pek?
her veri tipinin bir max değeri vardır,int 2 milyar küsür den fazla değer aldığında döngü sınırını aşmış olur :D_____________________________ -
quote:
Orijinalden alıntı: ibrahim_sancakli43
c++ bilmiyorum daha :) sadece C. Döngü sınırı derken anlamadım pek?
Senin programın sonu yok, yani sonsuza kadar çalışmasını istemişsin, problem orada. getch() koymuşsun ama o getch hiçbir zaman çalışmayacak.
Çözüm ise döngüne kaç kere çalışması gerektiğini söylemen. Dur ben pratik bir çözüm vereyim.
int toplam = 1;
while(toplam != 0) {
... -
Evet bilerek sonsuz döngü yaptım. 5-10sn sonra kapatıyorum. Benim anlamadığım neden 0 oluyor. İşlemcimi yetmiyo ram mi yetmiyo İstediğim mantık bu
Bir cevabı okumamışım. Peki bu max değerleri artarmı? Ama ben açar açmaz 0 dan başlıyo
< Bu mesaj bu kişi tarafından değiştirildi ibrahim_sancakli43 -- 17 Şubat 2012; 23:48:18 >_____________________________ -
quote:
Orijinalden alıntı: ibrahim_sancakli43
Evet bilerek sonsuz döngü yaptım. 5-10sn sonra kapatıyorum. Benim anlamadığım neden 0 oluyor. İşlemcimi yetmiyo ram mi yetmiyoİstediğim mantık bu
Bir cevabı okumamışım. Peki bu max değerleri artarmı? Ama ben açar açmaz 0 dan başlıyo
işlemcide ram de yetiyo sen "int toplam=1" dediğinde ram de "toplam" adında "int" cinsinde bir veri tanımlıyosun ve bu verinin içine 1 atıyosun başlangıçta int toplam=1
1,2,4,8,16... diye gidiyor en son 2.147.483.647 ye geldiğinde "int" değişkeninin gücü yetmiyo ve döngü sınırı aşıyo 0 basmaya başlıyo printf_____________________________
-
int tipi şu aralıktaki sayıları kapsar: -2147483648 ve 2147483647
Bu aralıklar aşıldığı zaman tekrar başa döner. toplam = toplam * 2; ifadesi bir süre sonra toplamı 2147483648 yapar, ama yapamaz.
En büyük pozitif tam sayıdan sonra 0 olur. O yüzden de toplam = 0 * 2; devamlı 0 eder. -
max değerleri arttıramazsın diye biliyorum _____________________________ -
quote:
Orijinalden alıntı: elektro_gadget
quote:
Orijinalden alıntı: ibrahim_sancakli43
c++ bilmiyorum daha :) sadece C. Döngü sınırı derken anlamadım pek?
Senin programın sonu yok, yani sonsuza kadar çalışmasını istemişsin, problem orada. getch() koymuşsun ama o getch hiçbir zaman çalışmayacak.
Çözüm ise döngüne kaç kere çalışması gerektiğini söylemen. Dur ben pratik bir çözüm vereyim.
int toplam = 1;
while(toplam != 0) {
...
Bana ilginç geldi ikiside sonsuz döngü aslında. while döngüsüne şart olarak senin önerdiğini (toplam != 0) uyguladım ve sonlandı2,4,8,16,32,64,....,-2147483648,0 olarak dizdi alt alta. Anlamadım ne fark olduğunu_____________________________
-
-
while(toplam!=0) ile sonlu döngü oldu :D _____________________________
Sayfa:
1
Ip işlemleri
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X