Tam Sürümünü Görmek İçin : Distance yapısını aktarmak
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
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
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
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:
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 .
ubuntu , var ya abi sen bu c++ yi çözene kadar avrupa birliğine girecez he :)
ubuntu , var ya abi sen bu c++ yi çözene kadar avrupa birliğine girecez he :)
Cidden öyle olacak gibi görünüyor :D
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.