wmaraci reklam
lidertakipci

c++ nerde hata yapıyorum anlamadım

4 Mesajlar 933 Okunma
advertseo
wmaraci reklam

onuraysu onuraysu WM Aracı Kullanıcı
  • Üyelik 02.05.2012
  • Yaş/Cinsiyet 29 / E
  • Meslek web yazılım
  • Konum
  • Ad Soyad O** A**
  • Mesajlar 393
  • Beğeniler 71 / 73
  • Ticaret 6, (%100)
arkadaşlar algoritmalarına calışacağım ancak mantığını çözdüğümle sonuc bir çıkmıyor kod aşağıdaki gibi ekrana a - b ve c yi yzdıracak x yazdırılmayacak

int main()
{
int a=8,b=-96,c=24,x=498;
if(a>b){a=b;b=x;x=a;}
if(b>c){x=b;b=c;c=x;}
std::cout< system("pause");
return 0;
}


mantıken
1. a>b kısmı

a=-96
b=498
c=24
x=8
olması lazım

2. b>c kısmı

a=-96
b=24
c=8
x=498
olur

konsolda çıkan sonuc -96 24 498
benim kağıt üzerinde sonucum -96 24 8

mantığını çözemedim yardımcı olursanız sevinirim arkadaşlar :( kağıt üzerinde sınavlar olunca hatalarımız çok olacak sanırım mantığı anlarsak yapabilirim
 

 

wmaraci
reklam

Referee Referee Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 04.10.2013
  • Yaş/Cinsiyet 31 / E
  • Meslek Bilgisayar Mühendisi
  • Konum Ankara
  • Ad Soyad Ö** A**
  • Mesajlar 504
  • Beğeniler 20 / 127
  • Ticaret 44, (%98)
Güzel bir dikkat problemi diyebiliriz :)

Hemen detaya girelim;


int main()
{
int a=8,b=-96,c=24,x=498;
if(a>b){a=b;b=x;x=a;}
if(b>c){x=b;b=c;c=x;}
std::cout<system("pause");
return 0;
}


Yukarıdaki senin kodun


int main()
{
int a=8,b=-96,c=24,x=498;
if(a>b){a=b;b=x;x=a;}
std::cout<if(b>c){x=b;b=c;c=x;}
std::cout<system("pause");
return 0;
}


Buda benim kodum dikkat et sadece değişimi görmek için ara işlemi yazdırarak neyin ne olduğunu görmek istiyorum. İlk if sonucunda program bize

-96 498 24

Çıktısını veriyor.

2. İf'e girince (b>c) karşılaştırmasını yapıyor ve b nin c den büyük olduğunu buluyor. Tekrar 1. if ile elde ettiğimiz

-96 498 24

rakamları için 2. İf içeriğini gerçekleştiriyor. Dahada açmak gerekirse 498>24 olduğu için;

if(b>c){x=b;b=c;c=x;}

Bölümünü gerçekleştiriyor. Sonuç olarak:

-96 24 498 Çıktısını veriyor. Umarım açıklayabilmişimdir. Kaçırdığın nokta ilk if sayesinde rakamlarının değiştiğidir.
onuraysu

kişi bu mesajı beğendi.

kacak41 kacak41 A Little Bit Silence Kullanıcı
  • Üyelik 02.01.2014
  • Yaş/Cinsiyet 31 / E
  • Meslek Öğrenci
  • Konum Kocaeli
  • Ad Soyad M** Ö**
  • Mesajlar 73
  • Beğeniler 10 / 22
  • Ticaret 0, (%0)
if(b>c){
x=b;
b=c;
c=x;
}

kaçırdığın nokta tam olarak burası

işlemler yukarıdan aşağı doğru gerçekleşecektir.
ilk önce x e b yi atayacaktır yani x in 498 olacaktır.
bu if in içinde c ye x i atadığından c değişkeninde 498 olacaktır. Çünkü o satıra gelindiğinde x değişkeninin değeri 498 dir.
onuraysu

kişi bu mesajı beğendi.

Mesajlarımı alıntı yaparak cevaplarsanız daha çabuk cevap verebilirim.
kodplus.com

onuraysu onuraysu WM Aracı Kullanıcı
  • Üyelik 02.05.2012
  • Yaş/Cinsiyet 29 / E
  • Meslek web yazılım
  • Konum
  • Ad Soyad O** A**
  • Mesajlar 393
  • Beğeniler 71 / 73
  • Ticaret 6, (%100)
mantığı söktüm hocam sağolun kağıt üzerinde sınav oluyoruz normaldir sonra neden yazılımcı sayımız az :( teşekkürler hocam ellerinize sağlık
 

 

wmaraci
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al