Şimdi Ara

C/C++/C# Sorularınız Buraya. . .(GÜNCEL) (17. sayfa)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
4.172
Cevap
118
Favori
167.406
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
3 oy
Öne Çıkar
Sayfa: önceki 1516171819
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • C++ da 2dk da yazardın şunu. Amma ince nokta varmış C'De
  • quote:

    Orijinalden alıntı: mertov

    quote:

    Orijinalden alıntı: strahd_von_zarovich

    quote:

    Orijinalden alıntı: mertov

    http://www.gidnetwork.com/b-59.html , alan,; yapmışsın , hali icin alan girdikten sonra entera basınca kod \n alıyor büyük ihtimalle. Halı tipini üstte alırsan düzelir.

    #include <stdio.h> 
    #include <conio.h>


    int main ()
    {
    char kod;
    float alan;

    printf("Hali Tipini Seciniz:");
    scanf("%c",&kod);
    printf("kac metrekare hali dosenecek:");
    scanf("%f",&alan);

    if (kod=='T')
    printf("Odenmesi gereken ucret: %f", alan*18.80);
    else if(kod=='B')
    printf("odenmesi gereken ucret: %f", alan*17.80);
    else if(kod=='S')
    printf("odenmesi gereken ucret: %f", alan*19.20);
    else
    printf("yanlis kod girdiniz");

    getch();
    return(0);
    }


    Hocam ilk halı tipini üste aldım hata verdi neden hata verdi bilmiyorum. Sormak istediğim soru şu ben scanf ile bi karakter tanıttım diyelim araya başka scanf fonksiyonu girdiğinde (örnek olarak kaç metrekare halı falan filan) en başta tanıttığım karaktere göre if fonksiyonlarını dizersem program karakteri aklında tutup işlem yapar dimi? Anlatabildim mi bilmiyorum

    Tabiyki yapar , farklı yerlere atıyorsan tabi . Yani scanf("%d",&a); yaptığında a yı sonradan değiştirmezsen program bitene kadar a aynı kalır.




  • quote:

    Orijinalden alıntı: strahd_von_zarovich

    quote:

    Orijinalden alıntı: mertov

    quote:

    Orijinalden alıntı: strahd_von_zarovich

    quote:

    Orijinalden alıntı: mertov

    http://www.gidnetwork.com/b-59.html , alan,; yapmışsın , hali icin alan girdikten sonra entera basınca kod \n alıyor büyük ihtimalle. Halı tipini üstte alırsan düzelir.

    #include <stdio.h> 
    #include <conio.h>


    int main ()
    {
    char kod;
    float alan;

    printf("Hali Tipini Seciniz:");
    scanf("%c",&kod);
    printf("kac metrekare hali dosenecek:");
    scanf("%f",&alan);

    if (kod=='T')
    printf("Odenmesi gereken ucret: %f", alan*18.80);
    else if(kod=='B')
    printf("odenmesi gereken ucret: %f", alan*17.80);
    else if(kod=='S')
    printf("odenmesi gereken ucret: %f", alan*19.20);
    else
    printf("yanlis kod girdiniz");

    getch();
    return(0);
    }


    Hocam ilk halı tipini üste aldım hata verdi neden hata verdi bilmiyorum. Sormak istediğim soru şu ben scanf ile bi karakter tanıttım diyelim araya başka scanf fonksiyonu girdiğinde (örnek olarak kaç metrekare halı falan filan) en başta tanıttığım karaktere göre if fonksiyonlarını dizersem program karakteri aklında tutup işlem yapar dimi? Anlatabildim mi bilmiyorum

    Tabiyki yapar , farklı yerlere atıyorsan tabi . Yani scanf("%d",&a); yaptığında a yı sonradan değiştirmezsen program bitene kadar a aynı kalır.

    Hocam aslında demek istediğim

    1 printf("Hali Tipini Seciniz:");
    scanf("%c",&kod);
    printf("kac metrekare hali dosenecek:");
    scanf("%f",&alan);


    2 printf("kac metrekare hali dosenecek:");
    scanf("%f",&alan);
    printf("Hali Tipini Seciniz:");
    scanf("%c",&kod);

    Şu ikisinin arasında bi fark var mı. Yani 1.de halı tipini seçiyorum ondan sonra scanf'te bi float okutuyorum ya. İlk scanf'te okuttuğum karaktere göre (T,S,B) ifleri gidip dizdiğimde bi problem çıkar mı. Yani ifleri bağlıyacağım scanf hemen iflerin üstündemi olmalı 2. kod gibi? yoksa 1. koddaki gibi olursa bişey olmaz mı?




  • quote:

    Orijinalden alıntı: mertov

    İkisi arasında normalde hiç bir fark yok , çok ufak bir fark var oda senin programının çalışmamasına neden oluyor .

    scanf("%d",&sayi);
    scanf("%c",&a); Bu şekilde dediğimizi farz edelim , sen sayi için 2 girdin entera bastın , senin a için karakter girmeni beklemeyecek . Sen entera bastığında a ya \n değeri de biz istemeden atanmış olacak.


    scanf("%c",&a);
    scanf("%d",&sayi); Bu şekilde dersek ilk karakteri bekleyecek çünkü a ya giden bir veri yok , a yı girip entera bastığımızda int değerine \n değeri gidemediğinden sorun çıkmıyor.

    Aşağıdaki kodu çalıştırarak daha net anlarsın . Normalde yıldızlar nerede olmalıydı nereye gittiler.

    #include <stdio.h> 
    #include <stdlib.h>

    int main()
    {
    int a;
    char b;

    printf("sayi girin");
    scanf("%d",&a);
    printf("karakter girin");
    scanf("%c",&b);

    printf("a sayisi = %d , karakter:%c *****",a,b);


    system("PAUSE");
    return 0;
    }



    < Bu mesaj bu kişi tarafından değiştirildi strahd_von_zarovich -- 9 Eylül 2012; 22:34:30 >




  • quote:

    Orijinalden alıntı: strahd_von_zarovich

    quote:

    Orijinalden alıntı: crshr

    Öncelikle teşekkürler hocam , aynen scanf nin yukarısına çıkardım sorun kalmadı . Anlamadığım şey getchar ı neden böyle yapmışlar farklı bir şey için mi kullanılıyor ? Uzun bir program da scanf ile getcharı birlikte kullanmak eziyet olur heralde.

    Sorun getchar dan değil scanf den kaynaklanıyor. getchar oldukça basit ve ne yapıcağı kestirilebilen bir fonksiyon. Ancak scanf öyle değil. Mesela scanf int beklerken kullanıcı float girerse program sonsuz döngüye giriyor. Mümkün olduğunca scanf ve gets gibi fonksiyonlardan uzak durmak lazım.

    Edit: scanf in yaptığı her şeyi getchar la da yapabilirsiniz.



    < Bu mesaj bu kişi tarafından değiştirildi crshr -- 9 Eylül 2012; 22:51:35 >




  • quote:

    Orijinalden alıntı: strahd_von_zarovich

    quote:

    Orijinalden alıntı: mertov

    İkisi arasında normalde hiç bir fark yok , çok ufak bir fark var oda senin programının çalışmamasına neden oluyor .

    scanf("%d",&sayi);
    scanf("%c",&a); Bu şekilde dediğimizi farz edelim , sen sayi için 2 girdin entera bastın , senin a için karakter girmeni beklemeyecek . Sen entera bastığında a ya \n değeri de biz istemeden atanmış olacak.


    scanf("%c",&a);
    scanf("%d",&sayi); Bu şekilde dersek ilk karakteri bekleyecek çünkü a ya giden bir veri yok , a yı girip entera bastığımızda int değerine \n değeri gidemediğinden sorun çıkmıyor.

    Aşağıdaki kodu çalıştırarak daha net anlarsın . Normalde yıldızlar nerede olmalıydı nereye gittiler.

    #include <stdio.h> 
    #include <stdlib.h>

    int main()
    {
    int a;
    char b;

    printf("sayi girin");
    scanf("%d",&a);
    printf("karakter girin");
    scanf("%c",&b);

    printf("a sayisi = %d , karakter:%c *****",a,b);


    system("PAUSE");
    return 0;
    }


    İki şekilde de programı çalıştırdım dediğiniz gibi 1.de beklemiyor aynı benim halı programında yaşadığım sorun gibi. Ancak \n değeri neden otomatik atanıyor neden beklemiyor program onu bi türlü anlayamadım




  • quote:

    Orijinalden alıntı: crshr

    quote:

    Orijinalden alıntı: strahd_von_zarovich

    quote:

    Orijinalden alıntı: crshr

    Öncelikle teşekkürler hocam , aynen scanf nin yukarısına çıkardım sorun kalmadı . Anlamadığım şey getchar ı neden böyle yapmışlar farklı bir şey için mi kullanılıyor ? Uzun bir program da scanf ile getcharı birlikte kullanmak eziyet olur heralde.

    Sorun getchar dan değil scanf den kaynaklanıyor. getchar oldukça basit ve ne yapıcağı kestirilebilen bir fonksiyon. Ancak scanf öyle değil. Mesela scanf int beklerken kullanıcı float girerse program sonsuz döngüye giriyor. Mümkün olduğunca scanf ve gets gibi fonksiyonlardan uzak durmak lazım.

    Edit: scanf in yaptığı her şeyi getchar la da yapabilirsiniz.

    Ben getchar'ı program kapanmasın diye yazıyorum farklı bi kullanımı varsa bilmiyorum.




  • quote:

    Orijinalden alıntı: mertov

    quote:

    Orijinalden alıntı: strahd_von_zarovich

    quote:

    Orijinalden alıntı: mertov

    quote:

    Orijinalden alıntı: strahd_von_zarovich

    quote:

    Orijinalden alıntı: mertov

    http://www.gidnetwork.com/b-59.html , alan,; yapmışsın , hali icin alan girdikten sonra entera basınca kod \n alıyor büyük ihtimalle. Halı tipini üstte alırsan düzelir.

    #include <stdio.h> 
    #include <conio.h>


    int main ()
    {
    char kod;
    float alan;

    printf("Hali Tipini Seciniz:");
    scanf("%c",&kod);
    printf("kac metrekare hali dosenecek:");
    scanf("%f",&alan);

    if (kod=='T')
    printf("Odenmesi gereken ucret: %f", alan*18.80);
    else if(kod=='B')
    printf("odenmesi gereken ucret: %f", alan*17.80);
    else if(kod=='S')
    printf("odenmesi gereken ucret: %f", alan*19.20);
    else
    printf("yanlis kod girdiniz");

    getch();
    return(0);
    }


    Hocam ilk halı tipini üste aldım hata verdi neden hata verdi bilmiyorum. Sormak istediğim soru şu ben scanf ile bi karakter tanıttım diyelim araya başka scanf fonksiyonu girdiğinde (örnek olarak kaç metrekare halı falan filan) en başta tanıttığım karaktere göre if fonksiyonlarını dizersem program karakteri aklında tutup işlem yapar dimi? Anlatabildim mi bilmiyorum

    Tabiyki yapar , farklı yerlere atıyorsan tabi . Yani scanf("%d",&a); yaptığında a yı sonradan değiştirmezsen program bitene kadar a aynı kalır.

    Hocam aslında demek istediğim

    1 printf("Hali Tipini Seciniz:");
    scanf("%c",&kod);
    printf("kac metrekare hali dosenecek:");
    scanf("%f",&alan);


    2 printf("kac metrekare hali dosenecek:");
    scanf("%f",&alan);
    printf("Hali Tipini Seciniz:");
    scanf("%c",&kod);

    Şu ikisinin arasında bi fark var mı. Yani 1.de halı tipini seçiyorum ondan sonra scanf'te bi float okutuyorum ya. İlk scanf'te okuttuğum karaktere göre (T,S,B) ifleri gidip dizdiğimde bi problem çıkar mı. Yani ifleri bağlıyacağım scanf hemen iflerin üstündemi olmalı 2. kod gibi? yoksa 1. koddaki gibi olursa bişey olmaz mı?

    Yok 2si arasında fark yok. Sonuçta tanımladığın değişken türlerin ve kullanıcıdan alınan verilerde değişikli olmuyor.




  • Benim de bir sorum var c ++ için.

    Elimizde dynamic bir array var. Bu arraydan bir elemanı silmek istiyorum. Bunu delete komutunu kullanarak nasıl yapıcam ?

    Aklımda şöyle bir yol var: geçici bir dynamic array açıp o elemana kadar kopyalamak, o elemanı pas geçmek ve geri kalanını kopyalamaya devam etmek. Yani 2 tane for kullanarak. Başka ve kısa yolu yok mudur bunun?
  • delete kullanırsan arrayın o sildiğin kısmı boş(0) kalır, array küçülmez.

    Eğer o kısmı silerek arrayı küçültmek istiyorsan array tanımlamak yerine std list veya vector kullanabilirsin. Mesela vector kullanırsan silme işlemini şunla yapacaksın;
    cplusplus.com
    vector::erase - C++ Reference
    http://cplusplus.com/vector::erase



    < Bu mesaj bu kişi tarafından değiştirildi erorcun -- 10 Eylül 2012; 3:03:50 >
  • vector konteyner'ı asm'de yazılmış ve hızlı. Tabiki taşıma söz konusu olduğunda yavaş kalıyo list ve deque'ye göre fakat hız sizin için aşırı derecede(**** repliği oldu) önemli değilse vector'ü kullanabilirsin.
  • quote:

    Orijinalden alıntı: Kırmızı Pervane

    Benim de bir sorum var c ++ için.

    Elimizde dynamic bir array var. Bu arraydan bir elemanı silmek istiyorum. Bunu delete komutunu kullanarak nasıl yapıcam ?

    Aklımda şöyle bir yol var: geçici bir dynamic array açıp o elemana kadar kopyalamak, o elemanı pas geçmek ve geri kalanını kopyalamaya devam etmek. Yani 2 tane for kullanarak. Başka ve kısa yolu yok mudur bunun?

    Şu şekilde yapılabiliyor diye hatırlıyorum. Ama normal dizilerde olmuyor. Normal dizilerde arkadaşların dediklerini kullanabilirsin.

    Örneğin ;

    string *kullanıcı_adi[50];
    ......
    .......
    delete kullanici_adi[kullanıcıdan alınan değer veya silmek istediğin değer];

    ya da internette görmüştüm diyelim baştaki elemanı silmek istiyorsun, diyelim elimizde ABC olsun.
    Şimdi A'yı silmek istiyorsun. Şöyle bir yöntem izleyebilirsin. Normalde A B C 'de A silinince Yeni hali B C şeklinde olacak. Bu olurken şu işlemi gerçekleştirebilirsin, B C C yap. Yani B'yi sola taşı, C'yi sola taşı. Ardından sondan C'yi sil. Bu şeiklde çıktı B C verecek ve A silinmiş olacak.




  • quote:

    Orijinalden alıntı: £XE

    quote:

    Orijinalden alıntı: Kırmızı Pervane

    Benim de bir sorum var c ++ için.

    Elimizde dynamic bir array var. Bu arraydan bir elemanı silmek istiyorum. Bunu delete komutunu kullanarak nasıl yapıcam ?

    Aklımda şöyle bir yol var: geçici bir dynamic array açıp o elemana kadar kopyalamak, o elemanı pas geçmek ve geri kalanını kopyalamaya devam etmek. Yani 2 tane for kullanarak. Başka ve kısa yolu yok mudur bunun?

    Şu şekilde yapılabiliyor diye hatırlıyorum. Ama normal dizilerde olmuyor. Normal dizilerde arkadaşların dediklerini kullanabilirsin.

    Örneğin ;

    string *kullanıcı_adi[50];
    ......
    .......
    delete kullanici_adi[kullanıcıdan alınan değer veya silmek istediğin değer];

    ya da internette görmüştüm diyelim baştaki elemanı silmek istiyorsun, diyelim elimizde ABC olsun.
    Şimdi A'yı silmek istiyorsun. Şöyle bir yöntem izleyebilirsin. Normalde A B C 'de A silinince Yeni hali B C şeklinde olacak. Bu olurken şu işlemi gerçekleştirebilirsin, B C C yap. Yani B'yi sola taşı, C'yi sola taşı. Ardından sondan C'yi sil. Bu şeiklde çıktı B C verecek ve A silinmiş olacak.

    Hocam delete list[index] tarzı yazınca hata veriyor.




  • merhaba arkadaslar.
    asagidaki inline fonksiyonu birisi aciklayabilir mi?

    inline const char * GetBookingData::getBookingDate() const 
    {
    return (*m_bookingDate) ? m_bookingDate : parseBookingDate();
    };


    özellikle return (*m_bookingDate) ? m_bookingDate : parseBookingDate(); ifadesini anlamadim...
  • quote:

    Orijinalden alıntı: beterman

    merhaba arkadaslar.
    asagidaki inline fonksiyonu birisi aciklayabilir mi?

    inline const char * GetBookingData::getBookingDate() const 
    {
    return (*m_bookingDate) ? m_bookingDate : parseBookingDate();
    };


    özellikle return (*m_bookingDate) ? m_bookingDate : parseBookingDate(); ifadesini anlamadim...

    İnline fonksiyonlar programın daha düzenli,hızlı çalışmasını sağlarlar. Tek dezavantajı boyutu arttırmasıdır.. O da abartılacak kadar değil.

    return (*m_bookingDate) ? m_bookingDate : parseBookingDate(); kısmında operatör kullanılmış. ?:(ternary operatörü) Operatörü. İf'in yaptığı görevi yapar

    Bu operatör şu şekilde kullanılır
    koşul ? doğru_ise : yanlış_ise
  • quote:

    Orijinalden alıntı: Kırmızı Pervane

    quote:

    Orijinalden alıntı: £XE

    quote:

    Orijinalden alıntı: Kırmızı Pervane

    Benim de bir sorum var c ++ için.

    Elimizde dynamic bir array var. Bu arraydan bir elemanı silmek istiyorum. Bunu delete komutunu kullanarak nasıl yapıcam ?

    Aklımda şöyle bir yol var: geçici bir dynamic array açıp o elemana kadar kopyalamak, o elemanı pas geçmek ve geri kalanını kopyalamaya devam etmek. Yani 2 tane for kullanarak. Başka ve kısa yolu yok mudur bunun?

    Şu şekilde yapılabiliyor diye hatırlıyorum. Ama normal dizilerde olmuyor. Normal dizilerde arkadaşların dediklerini kullanabilirsin.

    Örneğin ;

    string *kullanıcı_adi[50];
    ......
    .......
    delete kullanici_adi[kullanıcıdan alınan değer veya silmek istediğin değer];

    ya da internette görmüştüm diyelim baştaki elemanı silmek istiyorsun, diyelim elimizde ABC olsun.
    Şimdi A'yı silmek istiyorsun. Şöyle bir yöntem izleyebilirsin. Normalde A B C 'de A silinince Yeni hali B C şeklinde olacak. Bu olurken şu işlemi gerçekleştirebilirsin, B C C yap. Yani B'yi sola taşı, C'yi sola taşı. Ardından sondan C'yi sil. Bu şeiklde çıktı B C verecek ve A silinmiş olacak.

    Hocam delete list[index] tarzı yazınca hata veriyor.

    Dediğim gibi biraz karışık. Anlatmaya kalksam iyice karışacak. En iyisi arkadaşların dediği vektör yöntemini dene.
    Bu arada silmek istediğin değer sayı mı char mı string mi ?




  • quote:

    Orijinalden alıntı: £XE

    İnline fonksiyonlar programın daha düzenli,hızlı çalışmasını sağlarlar. Tek dezavantajı boyutu arttırmasıdır.. O da abartılacak kadar değil.

    return (*m_bookingDate) ? m_bookingDate : parseBookingDate(); kısmında operatör kullanılmış. ?:(ternary operatörü) Operatörü. İf'in yaptığı görevi yapar

    Bu operatör şu şekilde kullanılır
    koşul ? doğru_ise : yanlış_ise

    inline fonksiyonu anladim.tesekkürler
    ?:(ternary operatörü) de biliyordum fakat buradaki kosulu (*m_bookingDate) anlamadim. Bu nasil bir kosul ve kosul yanlis ise parseBookingDate() fonksiyonu cagrilcak fakat dogru ise m_bookingDate ile ne yapilmak isteniyor anlamadim
  • Kodun tamamını görmeden pek birşey diyemem. Fonksiyonların içeriğine göre hareket ediyor.
  • quote:

    Orijinalden alıntı: £XE

    quote:

    Orijinalden alıntı: Kırmızı Pervane

    quote:

    Orijinalden alıntı: £XE

    quote:

    Orijinalden alıntı: Kırmızı Pervane

    Benim de bir sorum var c ++ için.

    Elimizde dynamic bir array var. Bu arraydan bir elemanı silmek istiyorum. Bunu delete komutunu kullanarak nasıl yapıcam ?

    Aklımda şöyle bir yol var: geçici bir dynamic array açıp o elemana kadar kopyalamak, o elemanı pas geçmek ve geri kalanını kopyalamaya devam etmek. Yani 2 tane for kullanarak. Başka ve kısa yolu yok mudur bunun?

    Şu şekilde yapılabiliyor diye hatırlıyorum. Ama normal dizilerde olmuyor. Normal dizilerde arkadaşların dediklerini kullanabilirsin.

    Örneğin ;

    string *kullanıcı_adi[50];
    ......
    .......
    delete kullanici_adi[kullanıcıdan alınan değer veya silmek istediğin değer];

    ya da internette görmüştüm diyelim baştaki elemanı silmek istiyorsun, diyelim elimizde ABC olsun.
    Şimdi A'yı silmek istiyorsun. Şöyle bir yöntem izleyebilirsin. Normalde A B C 'de A silinince Yeni hali B C şeklinde olacak. Bu olurken şu işlemi gerçekleştirebilirsin, B C C yap. Yani B'yi sola taşı, C'yi sola taşı. Ardından sondan C'yi sil. Bu şeiklde çıktı B C verecek ve A silinmiş olacak.

    Hocam delete list[index] tarzı yazınca hata veriyor.

    Dediğim gibi biraz karışık. Anlatmaya kalksam iyice karışacak. En iyisi arkadaşların dediği vektör yöntemini dene.
    Bu arada silmek istediğin değer sayı mı char mı string mi ?

    Ben açıkçası pointerlarla yapmaya çalışıyorum, bu durumu daha iyi anlayabilmek için.
    Silmek istediğim şeyde kendi yarattığım Kisi objesi.




  • quote:

    Orijinalden alıntı: Kırmızı Pervane

    Kişi objesi derken, string mi girilecek değer olarak ?
  • 
Sayfa: önceki 1516171819
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.