PDA

Tam Sürümünü Görmek İçin : Distance yapısını aktarmak


ubuntu
29/03/2007, 23:35
Distance yapısını aktarmak ile ilgili bir örnekte anlamadığım bir olay var. Ve bir yerde hata veriyor nedenini anlamadım. Programı yazıyorum;


#include <iostream>
using namespace std;

struct Distance
{
int feet;
float inches;
};

void engldisp(Distance);
int main()
{
Distance d1, d2;

cout<<"Enter feet: ";
cin>>d1.feet;
cout<<"Enter inches: ";
cin>>d1.inches;

cout<<"\nEnter feet: ";
cin>>d2.feet;
cout<<"Enter inches: ";
cin>>d2.inches;

cout<<"\nd1 = ";
engldisp(d1);
cout<<"\nd2 = ";
engldisp(d2);
cout<<endl;
return 0;
}

void engldisp(Distance dd)
{
cout<<"dd.feet<<"\'-"<<dd.inches << "\"";
}



Ve şurada bir hata veriyor;


cout<<"dd.feet<<"\'-"<<dd.inches << "\"";


Verdiği hata: error: stray '\' in program.

Anlamadığım bölüm ise şurası;



void engldisp(Distance dd)
{
cout<<"dd.feet<<"\'-"<<dd.inches << "\"";
}


acehreli
29/03/2007, 23:47
Tam da soylendigi gibi, fazladan bir tirnak var :) Soyle olmali:

cout << dd.feet << "\'-" << dd.inches << "\"";

Ali

ubuntu
30/03/2007, 00:00
Hııı evet gözümden kaçmış. Garip olan kitapta o tırnak işareti yok ben uydurmuşum ve bu örneği 4 kere tekrar baştan yazdım, hepsinde koymuşum o işareti :) Neyse onu hallettik program çalıştı ve doğru.

Ama şu bölümü hala anlayamadım. Buradaki mantık ne. Ne yapılmak isteniyor burada.


void engldisp(Distance dd)
{
cout<<dd.feet<<"\'-"<<dd.inches << "\"";
}

acehreli
30/03/2007, 00:10
Verilen bir Distance nesnesini programin standart cikisina (cout) gonderiyor. Bunu, feet'ten sonra '- karakterleri, inches'ten sonra da " karakteri gelecek sekilde yapiyor.

Yani ornegin 5 feet 7 inch'lik bir Distance varsa, cikisa soyle gonderiliyor:

5'-7"

<< isleci, normalde tamsayi tUrlerinin bitlerini sola kaydirmak icin kullanilir. Bu gorevi, C++'ta "cikisa okunur bir sekilde gondermek" anlaminda yuklenmistir (overloaded).

cout << 7;

yazildiginda cikisa "7" yazdirir.

cout << "Merhaba";

yazildiginda cikisa "Merhaba" yazdirir, vs.

Bu islec geleneksel olarak ayni satirda pespese yazdirilabilecek sekilde tanimlanir. Ornegin

cout << 7 << " ve " << 42;

cikisa "7 ve 42" yazdirir.

Senin sordugun satirda da birden fazla nesne cikisa yazdirildiklari sirada gonderilince basta gosterdigim gibi

5'-7"

gibi bir sonuc aliniyor.

Ayrica, bir dizgi icinde kullanilinca \' karakterlerinin tek tirnak karakteri oldugunu, \" karakterlerinin de cift tirnak karakteri oldugunu biliyor musun? Onlar da o cikisi olusturmak icin kullaniliyorlar iste...

Ali

ubuntu
30/03/2007, 00:33
Evet bunları anladım, tekrar anlattığın için teşekkr ederim. Anlamadığım şu dd ler. Girdiğim feet ve inches dd.feet ve dd.inches a nasıl aktarılıyor. Ve çıktıda şununda görülmesi gerekmiyormu?


cout<<"\nd1 = ";
engldisp(d1);
cout<<"\nd2 = ";
engldisp(d2);
Ama bunlar değilde çıktıda şu görülüyor;


void engldisp(Distance dd)
{
cout<<dd.feet<<"\'-"<<dd.inches << "\"";
}

Yani 5 5 5 5 çıktıda şu şekilde olacak;

5'-5"
5'-5" //bu çıktı şu şekilde sağlanıyor => cout<<dd.feet<<"\'-"<<dd.inches << "\"";

Peki şu alttaki kodların çıktısı neden yok?


cout<<"\nd1 = ";
engldisp(d1);
cout<<"\nd2 = ";
engldisp(d2);Karışık oldu farkındayım ama en iyi bu şekilde anlatabildim :)

acehreli
30/03/2007, 00:48
Var iste:

d1 = 1'-2"
d2 = 3'-4"

Sende cikis oyle olmuyor mu?

Sirasiyla 1, 2, 3, 4 girince gosterdigin birinci satir "d1 = " yazdiriyor, engldisp(d1) cagrisi onun karsisina d1'in degerini yazdiriyor.

Ucuncu satir "d2 = " yazdiriyor ve engldisp(d2) cagrisi da d2'nin degerini yazdiriyor.

Ali

ubuntu
30/03/2007, 00:58
Heh tamam şimdi farkettim dediğin gibi oluyor. Peki ben d1 ve d2 yi giriyorum, nasıl oluyorda dd ye aktarıyor girdiğim sayıyı? Yani girdiğim sayıları dd ye gönderen birşey göremiyorum burada :garip:

ubuntu
30/03/2007, 01:01
Tamam tamam şimdi jeton düştü :) Sanırım d1 ve d2 yi şununla gönderiyor;


void engldisp(Distance dd)

İnşallah yanılmıyorumdur .

vbtarık
30/03/2007, 01:14
ubuntu , var ya abi sen bu c++ yi çözene kadar avrupa birliğine girecez he :)

ubuntu
30/03/2007, 01:24
ubuntu , var ya abi sen bu c++ yi çözene kadar avrupa birliğine girecez he :)

Cidden öyle olacak gibi görünüyor :D