@source şimdi şöyle karışık bi durum var, bize direk c++ anlattılar ve sınıfta java görmeyenler olarak çok az bi bölümüz sürekli java üzerinden anlatılıyor neredeyse biz de arap gibi bakıyoruz. daha önce hiç alakadar da olmadım bu programlama işiyle o yüzden zorluk çekiyorum. çok çok teşekkür ederim, ne desem az :) |
Rica ederim işine yaradıysa ne mutlu bana. C++ zaten OOP bir dildir. Ben daha hiç java görmedim bunun java ile alakası yok zaten. |
Merhabalar benim de kücük bir sorunum var
sorularıma gelelim burada kullanılan %4s %21s falan bunlar ne işe yarıyor mesela %.2f şeklinde yazımların floatta virgülden sonra iki basamak göster şeklinde oldugunu biliyorum da s ve başında sayı olan d lerin ne işe yaradığını bilmiyorum şunları bi acıklayabilecek var mı ? |
Boşluk bırakmayı sağlar, iki değişkenin yazımı arasına boşluk bırakıp tablo oluşturmanızı sağlar. Yazılan karakter kadar boşluk bırakır. |
Örneğin d[10]={1,2,3,4,5,6,6,7,8,9,0} gibi bir dizimiz olsa program her başladığında dizideki elemanların sıralarının değişmesini nasıl sağlarız (yani rastgele dağılacak dizi kend içinde) ? d={0,6,6,3,9,1,2,8,4,5} gibi başlayacak mesela her açılışta random atanıcak elemanların yerleri . Biraz araştırdım shuffle fonksiyonu olacakmış fakat benim istediğimde dizideki elemanlar belli ve random oluşturulmayacaklar sadece yerleri değişecek . |
İlk yeni bir dizi oluştur. Sonra rastgele bir sayı üret ve o sayıyı yeni olusturduğun dizinin indexi olarak tut. Sonra o indexin olduğu yere dizinin ilk elemanını at. Ayrıca bu rastgele çıkan indexleri de ayrı bir dizide çıkıp çıkmadığını tut.
|
Klavyeden girilen bir N sayısına gore, 1’den başlayıp N sayısına kadar olan sayıların karesini ve karekökünü bulan bir MATLAB programı yazınız? x karesi karekoku _______________________ 1 1 1.0000 bu programın çıktısını bu sekilde yanyana naıl alabilirim |
Yukarıdaki gibi dönüşüm belirteçlerinde noktadan önce bırakılacak boşluk miktarı kadar rakam girin. %13.4f gibi. |
arkadaslar bir sorum var. c de ; bir şirkette calısanlara 3 tip hediye dagıtılacaktır,her calısan 3 tip urundende istedigi kadar alabilmektedir. 1.tip 2tl 2.tip3tl 3.tip 4tl adet bası maliyetlidir. komut satırından sırası ile calısanların ; isim soyisim, hediye tipi(1 2 3) ,aldıkları mıktarlar giriliyor. a)buna gore her tipten dagıtılan hediye maliyetlerini b)2. türden en cok hediye alan calısanın ismini ve kac adet hediye aldıgını, c)toplam dagıtılan hediye sayısını main fonksiyonuna parametre aktarımı ile bulduran c programı yazınız....not(alınan hediyenin turu 1 2 3 olarak komut satırında veriliyor) sınav sorumdu, argsay argvek ile yapılıyor soru.sıkıntı orda yok. sıkıntı surda arkadaslar, argsay[1] de 1. kişinin ismi soy ismi argsay[2] aldıgı hediyenin turu, 1 mi 2 mi 3 mü veriliyor argsay[3] te kac adet aldıgı veriliyor diye dusundum.ancak sunu atladıgımı sonra farkettim,argsay 3 te tip bilgisi 1,2veya3, ama her tipten alabiliyor calısan,diyelim argsay3 te (2) olsun,bu durumda 1. ve 3. tipten kacar hediye aldıgını bulduramıyorum.yani mantıgı bir turlu kuramadım. direk argvek3 te 1.tpten kac tane aldıgı argvek4 te 2. tipten kac tane aldıgı argvek5 te de 3. tipten kac tane aldıdıgı ni kabul edip cozsem istenenden farklı cozmus oluyorum. elimden geldigince anlatmaya calsıtım ama baya karısık oldu sanırım,yardımcı olabilecek varsa cok sevinirim.anlamadıgınız yeri sorarsanız yine tekrar anlatırım,isteyen ozelden mesaj atabilir,gerekirse arıyım telde anlatıyım :D o kadar sinir bozdu bende :D |
inputu anlamadim isim soyisim, hediye tipi(1 2 3) ,aldıkları mıktarlar seklinde mi yani ornek mehmet yilmaz,1, 5 Bir kac tane input ornegi yazarsan daha acik olur anlatmaya calistigin. |
Benim bu sorudan anladığım program çalışırken çalışanların isim soyisim, hediye tipi ve aldıkları miktarları girmen gerektiği. Ve bunları bir dosyaya kaydetmen gerektiği. Sonra programa parametre vererek a,b ve c şıklarını hesaplaman gerektiğini düşünüyorum. Program açıkken scanf ile normal bir şekilde kullanıcı ismini hediye tipini felan alıcaksın bunu da bir dosyaya kaydedeceksin. Dosyaya kaydetme sebebin ise sen programı kapatacaksın ve tekrar parametre vererek çalıştıracaksın. Program kapatınca aldığın veriler silinecek bu yüzden dosyaya kaydediyoruz. a,b ve c şıklarındaki işlemleri yapman için programı şu şekilde çalıştırman lazım.
ve ya hepsini tek seferde de alabilirsin.
Bu şekilde çağırıp sonra dosyadan tekrar o verileri alırsın sonra gerekli işlemi yaparsın. |
hocam sunun gibi; /*SORU 2 : Bir benzin istasyonunda satılan akaryakıt ürünlerinin fiyatları aşağıdaki gibidir: Süper benzin: 2.5 TL/Lt Normal benzin: 2.4 TL/Lt Motorin :1.3 TL/Lt Benzin istasyonuna gelen her bir aracın sahibinin adı, aldığı akaryakıt tü ve ödediği ücret (TL olarak) girildiğine göre, a) Her bir akaryakıt türünden kaç litre satıldığını ve her bir akaryakıt türünden elde edilen toplam geliri, b) En çok satılan akaryakıt türünü, c) En çok akaryakıtı ( ucret olarak ) alan müşterinin kaçıncı müşteri olduğu, adı soyadı ve ödediği miktarı, bulup yazdıran bir programı main fonksiyonuna parametre aktarım yazınız */ // super = 1 , normal = 2 , motorin = 3 girerek belirtilsin.. çözümü de şu şekilde; #include <stdio.h> #include <stdlib.h> void main (int argc, char *argv[]){ float super_satilan=0; float normal_satilan=0; float motorin_satilan=0; float enb; int tur; int super_gelir=0; int normal_gelir=0; int motorin_gelir=0; int enb_yakit_mik=0; int kim = 0; int kacinci = 0; for (int i=3; i<argc; i=i+4) { kacinci = kacinci + 1; if ((atoi(argv)) == 1){ // (odenen para /birim fiyat) = kac lt super_satilan+=atoi(argv[i+1])/((float super_gelir+=atoi(argv[i+1]); } // (odenen para /birim fiyat) = kac lt satildigini verir. if ((atoi(argv)) == 2){ normal_satilan+=atoi(argv[i+1])/((float)2.4); normal_gelir+=atoi(argv[i+1]); } // (odenen para /birim fiyat) = kac lt satildigini verir. if ((atoi(argv)) == 3){ motorin_satilan+=atoi(argv[i+1])/((float)1.3); motorin_gelir+=atoi(argv[i+1]); } if ((atoi(argv[i+1])) > enb_yakit_mik){ enb_yakit_mik = (atoi(argv[i+1])); kim = kacinci; } } printf ("Super benzinden satilan miktar : %f \n", super_satilan); printf ("Normal benzinden satilan miktar : %f \n", normal_satilan); printf ("Motorinden satilan miktar : %f \n", motorin_satilan); printf ("Super benzinden elde edilen gelir : %d \n", super_gelir); printf ("Normal benzinden elde edilen gelir : %d \n", normal_gelir); printf ("Motorinden elde edilen gelir : %d \n", motorin_gelir); // en cok satilan tur hangisidir bulunur ve ekrana yazilir.. enb = super_satilan; tur = 1; if (normal_satilan > enb){ enb = normal_satilan; tur = 2; } if (motorin_satilan > enb){ enb = motorin_satilan; tur = 3; } switch (tur){ case 1 : printf ("en cok super benzin satildi\n"); break; case 2 : printf ("en cok normal benzin satildi\n"); break; case 3 : printf ("en cok motorin satildi\n"); break; } printf("En cok yakiti alan müsteri : %d. musteridir. \nAdi - Soyadi : %s %s \nOdedigi Ucret : %d ' dir.", kim, argv[(kim-1)*4+1],argv[(kim-1)*4+2], atoi(argv[kim*4]) ); } |
C dilini çok iyi bir şekilde öğrenmek istiyorum diğer güncel dilleri de tabi ki.Şimdi C'den başladım.Elimde eski bir kitap vardı Murat Taşbaşı'nın.Onunla az çok bir temel oluşturduğumu düşünüyorum.Ama bana biraz yetersiz kaldığını hissediyorum.Kitap önerebilir misiniz acaba ? |
burada sıkıntı şu hocam; verdigim ornekte 1 kişi geliyor,bir benzin tipinden alıyor,ve ucretini oduyor gidiyor. cozumundede ; if ((atoi(argv)) == 1){ // (odenen para /birim fiyat) = kac lt satildigini verir super_satilan+=atoi(argv[i+1])/((float)2.5); super_gelir+=atoi(argv[i+1]); } // (odenen para /birim fiyat) = kac lt satildigini verir. if ((atoi(argv)) == 2){ normal_satilan+=atoi(argv[i+1])/((float)2.4); normal_gelir+=atoi(argv[i+1]); } // (odenen para /birim fiyat) = kac lt satildigini verir. if ((atoi(argv)) == 3){ motorin_satilan+=atoi(argv[i+1])/((float)1.3); motorin_gelir+=atoi(argv[i+1]); } if ((atoi(argv[i+1])) > enb_yakit_mik){ enb_yakit_mik = (atoi(argv[i+1])); kim = kacinci; } İF YAPISI İLE HANGİ TURDEN ALDI İSE COZUM YAPILIYOR....BURADA SORUN YOK. ANCAK SİZE SORMAK İSTEDİGİM ,İLK VERDİGİM SORUDA 1 KİŞİ GELİYOR,3 TİP HEDİYE VAR,VE HER TİPTEN HEDİYE ALABİLİYOR. YANİ BİR MANTIK HATASI VAR GİBİ,ALDIGI HEDİYE TİPİ 1 2 3 OLARAK VERİLSİN DEMİŞ SORUDA,AMA 3 TİPTENDE ALABİLİYOR,COK İNCE BİR FARKLILIK VAR,BENZİN SORUSUNDA SADECE 1 TİP BENZİN SECEBİLİRKEN,HEDİYE SORUSUNDA HEM ALDGİ TİP 1 2 3 OLARAK VERİLECEK DİYOR,HEMDE HER TİPTEN İSTEDİGİ KADAR ALABİLİR DİYOR. BEN SU SEKİLDE YAPMISTIM; ARGVEK[1] İSİM SOYİSİM ARGVEK[2] 1. TİPTEN ALDIGI HEDİYE SAYISI ARGVEK[3] 2.TPTEN ARGVEK[4] 3. TİPTEN ALDIGI HEDİYE SAYISINI VERSİN DİYEREK OLUSTURDUM PROGRAMI. EKSİGİM SU, TİPİ BENZİN SORUSUNDAKİ GİBİ İF YAPISI İLE SORGULATMADIM... ANLATABİLDİYSEM NE MUTLU,HİKAYE YAZDIM RESMEN AMA KUSURA BAKMAYIN,İLGİNİZ İÇİNDE TEŞEKKÜR EDERİM :) |
merhaba C'ye yeni başladım.Turbo c++ ile derliyorum
kayan noktalı sayı ancak şöyle bir sorunum var.12345678 yazarsam sorunsuz gösteriyor.123456789 yazıp yani birde 9 eklersem sapıtıyor. Son basamaklarda başka sayılar çıkıyor bunun nedeni nedir ? |
Bende yeni başladım aşağıdaki kaynakları kullanıyorum. http://www.cagataycebi.com/programming/index.html Kitap olarak şerafettin arıkan-c programlama dili |
float tip yanlış bilmiyorsam belirli sayıda rakam gösteriyordu. esasında 16bit(yani 2byte) yazılımlarda 6 rakam gösterir diye hatırlıyorum, 32 bit olanlarda ise 10 rakam olması gerekir(yanlış olabilir). ama float bir tip +-(3.4e38) gibi bir sayıyı hafızada tutmanıza yarar. tipi double yaptığınızda daha 9 da görülecektir diye düşünüyorum. |
http://www.learncpp.com/cpp-tutorial/25-floating-point-numbers/ Bu sayfa yardımcı olacaktır. |
teşekkürler soru beni cevabımı aldım diğer arkadaş fazla takılmıyorum zaten bazı sorulara neyle yapabiliyosam yapıyorum |
Sınıf oluşturmak kolay aslında 2-3 saat neye, nereye baktın da anlamadın şaşırdım.
class HesapMakinesi
{
public:
int topla(int ilkDeger, int ikinciDeger) { return (ilkDeger + ikinciDeger);}
int cikart(int ilkDeger, int ikinciDeger) { return (ilkDeger - ikinciDeger);}
int carp(int ilkDeger, int ikinciDeger) { return (ilkDeger * ikinciDeger);}
int bol(int ilkDeger, int ikinciDeger) { return ikiciDeger == 0 ? -1 : (ilkDeger / ikinciDeger);} // ikinciDeger 0 ise -1 dönderir.
};
Bunu main'in üstüne yazacan. Sonra aşağıda ki kodu main içine senin if li yeri benim yazdığımla değiştir.
int secim = 0;
cout<<"Islem Turunu Giriniz : ";
cin>>secim;
HesapMakinesi *hMakinesi = new HesapMakinesi; // Sınıftan yeni nesne oluşturuyorum.
switch(secim)
{
case 1:
cout << hMakinesi->topla(x,y) << endl;
break;
case 2:
cout << hMakinesi->cikart(x,y) << endl;
break;
case 3:
cout << hMakinesi->carp(x,y) << endl;
break;
case 4:
cout << hMakinesi->bol(x,y) << endl;
break;
default:
cout << "Yanlis bir deger girdiniz!\n";
}
Bu mesaja 1 cevap geldi. Cevapları Gizle