C++ yeniyim

Başlatan KillerB, 16 Aralık 2010 - 21:24:15

« önceki - sonraki »

0 Üyeler ve 4 Ziyaretçi konuyu incelemekte.

bahadirhtp

eline sağlık tek tek yazmışsın lakin ilk alıntı hariç diğer herşey hocama aitti
yani hocamı yalanlamış oldun, şimdi sen söyle, ben yeni başladım C++'a ki bir iki şeyde sana katılıyorum buna rağmen hangi tarafı seçmeliyim
üstelik hoca visiul stdio'da çalıştırdığı programı ben linux uzerıdne calıstıramıyorum(iosterm'i falan bu yuzden bulunduruyorum)
ne yapmalıyım???
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

Erdem

#26
Bu program bu haliyle Visual Studio'da da çalışmaması lazım  ;) Visual Studio'nun int main () yerine void main () yazsak da kabul eder. Ben de lisanslı olarak Visual Studio sahibiyim ama uzun süre önce Linux altında kodlamak daha kolay olduğu için Linux'a geçiş yaptım  :D Yanlış anlaşılmasın Visual Studio'nun yeni versiyonlarının C++ gerçekleştirmeleri de çok iyidir. Başında C++ gurularından Herb Sutter var.

#include <iostream>

kısmı için ben şunu demek istemiştim. Genellikle gerekmiyorsa bunları header (başlık) dosyalarına değil de kaynak dosyalarına (cxx) uzantılı dosyalara ekleriz.

Orada açıklaması eksik kalan kısımları da eklemek istiyorum.
(1)

char dizi [] = { 'a', 'b' };

    char * g = &dizi [0];
    // g dizinin ilk nesnesini gösteriyor

    ++g;
    // g dizinin ikinci nesnesini gösteriyor

   
    ++g;
    // g artık olmayan hayali bir nesneyi gösteriyor


Örneğin bir char* göstergemiz olsun yukarıdaki göstergeyi arttırdığımız zaman artık olmayan hayali bir nesneyi gösteriyor. Eğer bu göstergeye en son durumda erişir ve değerini değiştirirsek bir hata alırız. Bu tür gösterge ile ilgili hatalar çok görülür. Bu yüzden C++ için std::string sınıfını tercih etmeliyiz.

Ayrıca 

dizi

ifadesinin tam açılışı

*(dizi + i)

dir.

İşte yukarda bahsettiğim değişiklikleri yaptıktan sonra örnek bir öğrenci sınıfı:


#include <iostream>
#include <string>
#include <sstream>

using namespace std;


class Ogrenci
{
public:
    Ogrenci (string const & ad, short numara)
        : ad_ (ad), numara_ (numara)
    {}
    // (3) burada sınıf kurucusunda bu değerleri ilklendirdiğimiz için artık set işlevlerinden
   // kurtulmuş olduk
    int NumaraOgren () const;   
   
private:
    friend ostream & operator<< (ostream &, Ogrenci const &);
    friend istream & operator>> (istream &, Ogrenci &);
   
    string ad_;
    short numara_;
};

int Ogrenci::NumaraOgren () const { return numara_; }

Ogrenci OgrenciOku (istream & giris)
{
    short numara;
    giris >> numara;
    string ad;
    giris >> ad;
    return Ogrenci (ad, numara);
}

   
istream & operator>> (istream & giris, Ogrenci & ogrenci)
{
    ogrenci = OgrenciOku (giris);
    return giris;
}

ostream & operator<< (ostream & cikis, Ogrenci const & ogrenci)
{
    cikis << ogrenci.numara_ << ' ' << ogrenci.ad_;
    return cikis;
}


int main ()
{
    Ogrenci erdem ("Erdem ÖNCEL", 28);
    Ogrenci const ali ("Ali ÜNLÜ", 25);
    cout << erdem << '\n' << ali << '\n';
}


Ben geliştirme ortamı olarak Ubuntu Natty Narwall altında Unity masaüstünde Emacs kullanıyorum  :D

Linux altında emacs kullanımı için bu belgeyi okuyabilirsiniz.



Kendini geliştirmek açısından sadece derslere bağlı kalma.  ACCU'nun kitap tavsiyeleri bölümü çok iyidir. Buradan gözü kapalı tavsiye edilen her C++ kitabını alabilirsin.

http://accu.org/index.php?module=bookreviews&func=search

C++ başlangıç kitabı olarak ben Accelerated C++'yi tavsiye edebilirim. Anlatım olarak çok iyi bir kitap çünkü kitabın yazarları yıllardır farklı yöntemlerle üniversitede C++ öğretiyorlar.

http://www.acceleratedcpp.com

Ben 1,5 yıldır C++ öğrenmeyi bıraktım. C++ konusunda çözemediğin sorular olduğunda ceviz net'in C++ forumlarını kullanabilirsin.

http://forum.ceviz.net/c-c/

Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

bahadirhtp

class tnaımlamayla ilgili bir google taraması ve kutuphane'den kitap taraması yaptıktan sonra gerı donucem
cunku konu uzerınde eksık olmam sorunu daha da buyutuyor ilk defa bı cozum uretmısken uygulasam ıyı olacak
sonrasında hatalarım uzerıdne tavsıyelerını ısteyecegım (:
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

bahadirhtp

#include<iostream>

using namespace std;

int main()
{
char ch;int id,i=0,total=0;

cout<<"please enter your id\t";
while (ch="\n")
  cin>>id; total+=id;
{
switch (ch)
{}}

id=id/8; cout<<"entered value's average is "<<id<<endl;


cout<<"Good bye\n"<<endl;


}


10ncu satırı nasıl degıstırmelıyım?
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

Erdem

Alıntı yapılan: bahadirhtp - 30 Mart 2011 - 21:42:55

cout << "please enter your id\t";

    while (ch = '\n') // burası da while (true) demekle aynı şey
        cin>>id; // sadece burası döngüye girer

    total += id;  // burası işletilmez
   
    {
        // bu parantezler while döngüsüne ait sanırım :)
    }


10ncu satırı nasıl degıstırmelıyım?

Burada dikkat edersen bazı hatalar var. Programı çalıştırdığında sonsuz bir döngüye girer. Bunun nedeni while döngüsünde parantezleri koymamış olman:

while (ifade == true) {

        // şunları yap
       
    }


Parantez olmadığı için sadece ilk ifade işletilir. 

Ayrıca char tek satırlık karakter tutan bir değişkendir. Buna dizgilerde olduğu gibi birden fazla karakter atayamayız. Bu yüzden programın en azından derlenebilmesi için ch='\n' şeklinde değiştirmen gerekiyor,

Bir de while döngüsünde bir karakter atadığın için sürekli döngüde dur while (true) demek gibi bir şey.  Bunun yerine
while (cin >> girilen) şeklinde kullanabilirsin böylece girişten okuma devam ettiği sürece döngü devam eder.

Önceden benim yazdığım örnek bir program:

#include <iostream>
#include <string>
#include <ios>
#include <iomanip>

using std::cin;         using std::setprecision;
using std::cout;        using std::string;
using std::endl;        using std::streamsize;

int main ()
{
    cout << "Lutfen isminizi giriniz: ";
    string isim;
    getline (cin, isim);

    cout << "Lutfen ara sinav ve final notlarini giriniz: ";
    double arasinav, final;
    cin >> arasinav >> final;
   
    if (!cin)
    {
        cout << "Notlarinizi girmelisiniz\n";
        return 1;
    }
   
       
       
    cout << "Tum odev notlarini giriniz, girisi sonlandirmak icin\n"
        "Linux'ta CTRL-D tusuna basiniz: ";
   
    int sayac = 0;
    double toplam = 0;   
   
    double girilen;
   
    while (cin >> girilen)
    {
        ++sayac;
        toplam += girilen;
       
    }

    if (!cin)
    {
        cout << "Ödevlerinizi girmelisiniz\n";
        return 1;
    }
   
           
    // ondalik basamak sayisini ogren
    streamsize basamak = cout.precision ();
    cout << "Final notunuz " << setprecision (3)
         << 0.2 * arasinav + 0.4 * final + 0.4 * toplam / sayac
         // eski haline getir
         << setprecision (basamak) << endl;
    return 0;   
   
}




Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

bahadirhtp

#30
#include<iostream>

using namespace std;

int main()
{
char ch;double id,i=0,total=0;

cout<<"please enter your id\t";
while(cin>>id) {


id=id/8; cout<<"entered value's average is "<<id<<endl;

}
if (!cin)
    {
        cout << "Are U idiot!!\n";
        return 1;
    }
cout<<"Good bye\n"<<endl;


}

please enter your id 41
entered value's average is 5.125
.
.
.
.
Good bye


boyle gıdıyor, yani sayı girilmezse bitirmiyor.. sadece harf girilince duruyor
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

Erdem

Ben senin burada tam olarak ne yapmaya çalıştığını anlayamadım. Biraz daha açarmısın. Programın ne yapmasını istiyoruz?

Değişken isimleri de pek açıklayıcı olmamış açıkçası. Örneğin id (identifier) kimlik demek. Daha sonra bunların ortalamasını almaya çalışmışız.
Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

bahadirhtp

#32
valla hoca id gir ve onların ortalmasını al demıs, onların dedıgı ıcın gırılen bır cok id olarak dusundum bu yuzden while kullandım. id ise kimlik kartı bilgileri yani ogrencı ıcın okul numarası.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 31 Mart 2011 - 19:20:27

yanı suanda eksık olan tek sey sayı gırılmezde sadece enter'a basıldıgında progtamın sonlanması
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

Erdem

Ben aslında  ödev çözülmesine karşıyım  :D Ama programın çalışma mantığını izah edebilirim:

while (cin >> id) {
        ++count;
        sum += id;
    }


Bir yerlerde kaç tane sayı girildiğini gösteren sayaç (count) ve toplam (sum) diye iki değişken tanımlamalıyız.  Bu sayaç örneğin ilk başta 0 olsun.

sum += id (girilen sayıyı toplama ekle)

sum = sum  + id


nin aynısıdır. Kullanıcı örneğin 5 girmişse daha sonra toplam  0 iken toplam 5 olacak.  Yani döngü ilk çalıştığında  değişkenler şu değerleri alacak.

count = 1
id = 5
sum = 5


Ama burada dikkat edersen id'yi double olarak tanımlamıştık. Yani id sadece bir tane kesirli sayı tutabilir. Ama kullanıcı girişten başka bir sayı girdiğinde örneğin 7 giriş akımı bu değeri okur ve id'ye atar.

cin >> id

ifadesi.  Yani id 7 olur. Bir sonraki satırda sayaç gene 1 artar. Ve okuduğumuz değeri gene toplama ilave ederiz. Döngünün ikinci çalışmasında değişkenler şu değerleri alır.

count = 2
id = 7
sum = 12


Burada kullanıcının kaç tane sayı girdiği bilgisini sayaç içinde tuttuk. Girilen rakamların toplamını biliyoruz. O yüzden basitçe bunların ortalamasını hesaplayabiliriz.

Burada değişik gelebilecek bir ifade şu while koşulu:

while (cin >> x) {  /* ... */ }

Burada bir giriş akımını while döngüsünün bir parçası olarak kullanıyoruz. Bu ifadenin yaptığı aslında giriş akımından okumaya çalışmaktır. Eğer giriş başarılı olursa x okuduğumuz değişkenin değerini tutar.  Yani basitçe eğer okuma başarılı olduysa cin >> x true bir değer döndürür, eğer olmadıysa false döndürür. Böylelikle döngü işletilmez diye düşünebiliriz.

Burada senin de dikkat ettiğin gibi giriş akımı dosya sonu sinyalini görünceye kadar devam eder. Bu yüzden yukarıdaki örnekte benim yaptığım gibi kullanıcıya Linux ortamında Ctrl -d Windows ortamında Ctrl-z ile girişi sonlandırabileceğine dair bir bilgi mesajı vermeliyiz.

'hold down the control key and press z (for Windows)  or d (for computers running the Unix or Linux systems'

gibi bir şeyler  ;)
Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

bahadirhtp

#34
Alıntı yapılan: Erdem - 31 Mart 2011 - 19:32:52
'hold down the control key and press z (for Windows)  or d (for computers running the Unix or Linux systems'

Çaktım (:

#include<iostream>

using namespace std;

int main()
{
double id;
cout<<"when you finished, hold down the control key and press z (for Windows)  or d (for computers running the Unix or Linux systems"<<endl;
cout<<"Please enter your id and press enter \nYour id is \t";
while(cin>>id) {


id=id/8; cout<<"Entered value's average is "<<id<<endl;

}
if (!cin)
    {
        cout << "Did U enter a value!!\n";
        return 1;
    }

cout<<"Good bye\n"<<endl;


}




toplamda zaten ıkı degısıklık yaptım sıte sayesınde yanı genel olarak ben yazdım programı dimi (: ki bu ılk odevdı daha zorları yolda gelıyor ozellıkle class soruları cok canımı sıkıyor cunku hocadan verım alamıyoruz. kendısı azerıdır ve ımkansız bır ıngılızcesı var birde ara ara turkce konusmaya calısıyor ıste ozaman tamamen kopuyoruz (:
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

Erdem

#35
Alıntı yapılan: bahadirhtp - 31 Mart 2011 - 19:39:37


while(cin>>id) {
id=id/8; cout<<"Entered value's average is "<<id<<endl;
}


Yalnız farkediyormusun bilmiyorum ama id  /=  8 ifadesi sadece sayının 1/8'ini alır ve girişten her okumada bu değerin üzerine yazar. Sanırım yaptığın değişikliğin sadece bir kısmını göstermek istedin..

Bir de

if (cin >> x) {  /* ... */ }

ifadesi şu iki ifadenin aynısıdır:


    cin >> x;

    if (cin) {  /* ... */ }


Burada daha sonra kullanıcıdan bir bilgi istemediğimiz için buna bence gerek yok. Üstte verdiğim öğrenci notlarını hesaplayan programa bakabilirsin.

Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

bahadirhtp

bır cumlelık soru verırse bu kadar yanıt alır (:
ayrıca if cin olayını
eger bırsey gırılmezse yazdır gıbı algıladm kı eger dogruysa tesbıtım programada bı sıkıntısı yok demektır
ayrıca yardımın ıcınde teskkurler
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

bahadirhtp

#37
1)sleep komutu tanımlamak ıcın hangı kutuphaneyı gırmem gerekıyor?
2) ve programın ıcınde yıne kucuk bır programı output olarak gostermek ıstıyorum, cout<<"" u kullandım ama ıse yaramadı, tavsıyenızı beklıyorum (:
3)#include<iostream>
using namespace std;

int fnc(int x,int y)
{int k;
k=(y-20000)x; return k;
}

int main()
{ int x,y;
cout<<"Please integer value of id and x for y=(id-20000)x and display result"<<endl;
cin>>y>>x;
x=fnc(x,y);
cout<<"y="<<x<<endl;
}

bu programda da x'i carpan olarak yerlestıremedım...???
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

Erdem

Alıntı yapılan: bahadirhtp - 01 Nisan 2011 - 20:55:06
1)sleep komutu tanımlamak ıcın hangı kutuphaneyı gırmem gerekıyor?

C++'de standart kütüphane'de böyle bir işlev yok ama örneğin POSIX kütüphanesini kullanarak bu işlevi kullanabiliyormuşsun:

Alıntı Yap#include <time.h>

void sleep(unsigned int mseconds)
{
    clock_t goal = mseconds + clock();
    while (goal > clock());
}

$ man sleep komutu da bu işlevin kullanımı hakkında daha fazla bilgi verebilir.

Alıntı yapılan: bahadirhtp - 01 Nisan 2011 - 20:55:06
2) ve programın ıcınde yıne kucuk bır programı output olarak gostermek ıstıyorum, cout<<"" u kullandım ama ıse yaramadı, tavsıyenızı beklıyorum (:

Şunun gibi mi örneğin seninprogramın kaynak.cpp dediğin zaman bunu ekrana yazacak. Bilmiyorum doğru mu anladım acaba  ???

Alıntı yapılan: bahadirhtp - 01 Nisan 2011 - 20:55:06
3)
cin>>y>>x;

bu programda da x'i carpan olarak yerlestıremedım...???

Şu anda bir derleyici kurulu değil o yüzden test edemiyorum ama sanırım bu kısım bu şekilde olacak:

        cin >> y;
        cin >> x;


Bir de herşeyden hangi editörü kullanıyorsun bilmiyorum ama önce yazdığın kaynak kodun okunabilir olmasına dikkat etmelisin. Bu hem senin kodunu inceleyenlerin kodu daha rahat incelemesini sağlar, hem de senin hata yapma riskini azaltır.

Bunun için çeşitli editör ve geliştirme ortamları ile gelen otomatik hizalama, parantez eşleştirme özelliklerinden faydalanabilirsin. Örneğin Emacs bu konuda çok iyidir  :D Bence ilk planda editörü kullanma, programları derleme, kod hizalama gibi konulardan başla ilerde çok rahat edersin:

Emacs Kullanımı

Gene aslında kodun ve kavramların ingilizce olmasının bir sakıncası yok ama o şekilde kod yazabilmek için iyi derecede ingilizce gerekiyor sanırım. Ben hep Türkçe yazarım mesela kodları. Eğer sana da daha kolay geliyorsa Türkçe yaz değişken isimlerini falan sonra onları İngilizce'ye çevirirsin..

Bir de  forum mesajlarının okunabilirliği açısından her farklı konu yeni bir başlık açabilirmiyiz. Böylece inceleyen kişiler aradıklarını daha iyi bulurlar.   
Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

bahadirhtp

#39
bu konudan sonra soz verıyorum konu baslıklarına dıkkat edıcem(bilmemek degıl ogrenmemek ayıptır)
1) program ıcınde tanıtım yapıcagım ıcın
en azından boyle bır dusuncem var
sleep gıbı bırsey kullanmak ıstedım onun yerıne senın verdıgını de kullanabılırım ama once program ıcınde nasıl kullanabıelcegımı bulmam gerekıyor
2)dedıgım gıbı tanıtım ıcerıklı bır program olacagı ıcın
outputta bır tanıtım dusundum
yanı sıyah ekranda bır sure bekleyıp ıste ornegın hello word kısa programının yazılı halı ve ardından cıktısı sonra baska bır programa gecmeden once 15-20 sn kadar beklemesını ve dıgre programa gecmesını sıtedım (:
3)
k=(y-20000)x; return k;
burada x'i yerlestıremedım, yerı bellı etmemem benım hatam olmus.
4)emac yukledım, gercekten kullanıslıya benzıyor ama nedense ctr+c gıbı komutlar bende ve dıger bır gorsellıgınıde begenmedım yanı ana gırıs falan yada ben eskı bır emac yukledım bılemıyorum. gentoo kullanan bır arkadas oncekı yazılarda emac'ın goruntusunu atmıs ama bende cok ılkel (:


5) ıngılızce konusunda bır degısıklık yapamam cunku turkce cevırıler sıcım taban vs seyler cok komık gelıyor o yuzden degıstıremem...
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

Erdem

Alıntı yapılan: bahadirhtp - 01 Nisan 2011 - 23:15:55
3)
k=(y-20000)x; return k;
burada x'i yerlestıremedım, yerı bellı etmemem benım hatam olmus.

Hımm şimdi anladım. O zaman bunlara gerek yok. Tek yapman gerek main içerisinde sleep işlevini çağırmak. Sleep işlevinin parametreleri milisaniye cinsinden değerler alıyor. Bu time.h dosyasını eklemen gerekebilir.

int main {  sleep (5000); }

gibi..

Alıntı yapılan: bahadirhtp - 01 Nisan 2011 - 23:15:55
4)emac yukledım, gercekten kullanıslıya benzıyor ama nedense ctr+c gıbı komutlar bende ve dıger bır gorsellıgınıde begenmedım yanı ana gırıs falan yada ben eskı bır emac yukledım bılemıyorum. gentoo kullanan bır arkadas oncekı yazılarda emac'ın goruntusunu atmıs ama bende cok ılkel (:


Emacs'ın görüntüsünü değiştirmek için:

http://acehreli.org/dot_emacs

adresini aç. Firefox'un karakter kodlamasını UTF-8 olacak şekilde değiştir. Kopyala ->

Ev dizininde .emacs isimli bir dosya oluştur.

$ nano .emacs

Sonra hepsini seçerek orta fare tuşuyla yapıştır. Sonra kaydet ve çık artık Emacs'ın görünümün değiştiğini göreceksin ve satırları parantezleri hizalayan C-modu aktif hale geldi.

Emacs'ın çok kullanışlı bir özelliği M-/ olanağıdır. Yani yazdığın bir metni tamamlayabilir.

Ayrıca tüm kodu hizalamak için C-x h (hepsini seç) ve M-x  indent-region (seçilenlerin tümünü hizala) yaz.

Burada C tuşu çoğu ortamda Control M tuşu ise Alt tuşunun karşılığıdır.

Bunları henüz bende ne derleyici ne de emacs kurulu olmadan yazıyorum. Sabahtan beri Ubuntu'nun buglarıyla uğraşıyordum   ;)

Bir de ben bir taraftan D öğreniyorum. Orada yazılan projelerde de kodlama standartları kullanılıyor.

http://ddili.org/wiki/index.php?title=Kodlama_Standard%C4%B1

Benim de kodlarımı bu standarda pek uydurduğum söylenemez. Ama gittikçe düzeltmeye çalışıyorum :)
Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

bahadirhtp

enguzel pascal'da yazıyordum (:
bu arada bu ıslemı yapamadım

adresini aç. Firefox'un karakter kodlamasını UTF-8 olacak şekilde değiştir. Kopyala ->
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

Erdem

Alıntı yapılan: bahadirhtp - 02 Nisan 2011 - 04:03:19
Firefox'un karakter kodlamasını UTF-8 olacak şekilde değiştir. Kopyala ->

O adresi açtıktan sonra Görünüm->Karakter Kodlaması -> Unicode (UTF8 ) olarak seçmek gerekiyor. Sonra Düzen->Tümünü Seç
Düzen->Kopyala


ile ya da tümünü fare ile seçerek kopyalanabilir.
Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

bahadirhtp

termınale nano .emacs yazınca garıp bısey oldu altta uste bıseyler yazıyor (:
bı sekılde kopyaladım ama kaydet cık olayını nasıl yapcam?
cunku kaydet dedıgımde dırectory ustune yazamassın dıyor
gonderdgı filename'e .emacs dedıgımde
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

sem

Değişikleri yaptıktan sonra ctrl + x kombinasyonu ile çıkabilirsiniz. Size sorular soracaktır, sistem dilinize göre e ya da y tuşlarına basarak kayıtlarınızı değiştirebilirsiniz. Yada uçbirimde doğrudan;

gedit .emacs

komutunu kullanarak dosyayı Gedit ile açabilirsiniz.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

bahadirhtp


File Name to Write:                                                             
^G Get Help         M-D DOS Format      M-A Append          M-B Backup File
^C Cancel           M-M Mac Format      M-P Prepend


isim olarak ne yazmalıyım?


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 02 Nisan 2011 - 17:03:00

Alıntı yapılan: bahadirhtp - 01 Nisan 2011 - 23:15:55

3)
k=(y-20000)x; return k;
burada x'i yerlestıremedım, yerı bellı etmemem benım hatam olmus.


matematıksel bı hata yapıyorumda ben mı farkında degılım???
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

sem

Aynı isimle kayıt etmelisiniz. Yani  bu bölümde aslında .emacs yazması ve sizin de enter tuşuna basarak geçmeniz gerekiyor.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

bahadirhtp


                    [ Error writing .emacs: Is a directory ]
^G Get Help  ^O WriteOut  ^R Read File ^Y Prev Page ^K Cut Text  ^C Cur Pos
^X Exit      ^J Justify   ^W Where Is  ^V Next Page ^U UnCut Text^T To Spell

dıyo kı ben boyle bır dosya acmadım
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'

Erdem

#48
Mac mi kullanıyorsun? Kafam karıştı biraz  ;)

Anladığım kadarıyla .emacs isimli bir dizin varmış o zaman şöyle yap:


$ cd ~/
$ rm -rf .emacs
$ wget http://acehreli.org/dot_emacs
$ mv dot_emacs .emacs





Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 02 Nisan 2011 - 17:53:05

Alıntı yapılan: bahadirhtp - 01 Nisan 2011 - 20:55:06
3)
k=(y-20000) * x; return k;


Burada * işaretini unutmuşsun. Bir de böyle programlarda ne olduğunu sadece bizim bildiğimiz sihirli değişken isimlerinden kaçınmalıyız. Değişkenlere ve fonksiyon isimlerine anlamlı isimler vermeliyiz.  Ğene kodun okunabilirliği açısından..




Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 02 Nisan 2011 - 18:04:42

Alıntı yapılan: Erdem - 31 Mart 2011 - 20:16:56
Bir de

if (cin >> x) {  /* ... */ }

ifadesi şu iki ifadenin aynısıdır:


    cin >> x;

    if (cin) {  /* ... */ }


Burada daha sonra kullanıcıdan bir bilgi istemediğimiz için buna bence gerek yok.

Bir de kendi yaptığım hatayı düzeltiyorum. Yukarıdaki iki ifade birbirinin aynısı ancak tam tersine her zaman kullanıcıdan veri girişi istediğimizde giriş akımının durumunu kontrol etmek daha mantıklı. Yani senin ilk yaptığın doğru  :D

Bunun nedeni cin >> x; ifadesi giriş akımının başarılı olup olmamasına göre şu anda ne olduğunu tam bilmemiz gerekmeyen bir değer döndürür. Eğer giriş başarılı ise değişkene okutur, eğer başarılı değilse akımın geçerli olup olmadığını aşağıda ve senin yaptığın gibi kontrol etmek ve programdan çıkmak en mantıklısı. Yani alttaki ifade üstteki girişin başarılı olup olmadığını kontrol ediyor ve programdan çıkıyor.

    cin >> arasinav >> final;
   
    if (!cin)
    {
        cout << "Notlarinizi girmelisiniz\n";
        return 1;
    }



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 02 Nisan 2011 - 18:07:32

Alıntı yapılan: Erdem - 01 Nisan 2011 - 22:50:40

Alıntı yapılan: bahadirhtp - 01 Nisan 2011 - 20:55:06
3)
cin>>y>>x;

bu programda da x'i carpan olarak yerlestıremedım...???

Şu anda bir derleyici kurulu değil o yüzden test edemiyorum ama sanırım bu kısım bu şekilde olacak:

        cin >> y;
        cin >> x;



Aslında burada da bir hata yok:

    cin >> y >> x;


ifadesi de geçerlidir.
Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

bahadirhtp

sorunu anladım sanırım ama bılenlere de danısmak gerek

#include <string.h>

class Student

{

private:

int id;

char name[20];

float grade;

public:

void setid(int id1);

void setname(char *name1);

void setgrade(float grade1);



int getid();

char *getname();

float getgrade();

};



void Student::setid(int id1)

{ id=id1; }



void Student::setname(char *name1)

{ strncpy(name,name1,19);

name[19]='\0';}



void Student::setgrade(float grade1)

{ grade=grade1; }



int Student::getid()

{ return id ; }



char *Student::getname()

{ return name; }



float Student::getgrade()

{ return grade; }

benim header

#include <iostream>
#include <string>
#include <sstream>
#include "/home/bahadirhtp/Desktop/C++_WORKS/last/Student.h"
using namespace std;

int main()
{
Student St1;
Student St2;
St1.setid(2005);
St2.setid(2006);

cout<<"Studen1:"<<st1.getid()<<endl;
cout<<"Studen2:"<<st2.getid()<<endl;
}

buda programım

Student St1 Student header'ında tanımlanacak ama ne olarak tanımlanacak bunu belırtmedıgım ıcın mı calısmıyor?
st1 nedır char int vs...
student.cpp: In function 'int main()':
student.cpp:17: error: 'st1' was not declared in this scope
student.cpp:18: error: 'st2' was not declared in this scope
GOD'S A KID WITH AN ANT FARM LADY HE'S NOT PLANNING ANYTHIN'