BİR ŞİRKETTE SATIŞ ELEMANLARININ PERFORMANSINI TAKİP EDEN BİR PROGRAM YAZILACAKTIR.HER SATIŞ ELEMANININ ADI,SOYADI VE SATIŞ MİKTARI (TL OLARAK) BİLGİLERİ KULLANICI TARAFINDAN GİRİLECEKTİR.TOPLAM 10 SATIŞ ELEMANI var.PROGRAM ORTALAMA SATIŞ MİKTARINI HESAPLAYACAK VE EKRANA YAZACAK.BUNUN YANINDA ORTALAMANIN ALTINDA KALAN VE ÜSTÜNDE KALAN SATICILARIN AD VE SOYADLARINI EKRANA YAZACAK.PROGRAMI DİZİLER YA DA STRUCTURE KULLANARAK YAPABİLİRSİNİZ. şu soru için yardımcı olabilir misiniz |
struct Elemanlar{ string isim; string soyisim; int satisMiktari; }; Bu şekilde elemanları structda tutabilirsin. Main içinde Elemanlar elemanlar[10]; diyerek de tanımlarsın. Sonra bir for döngüsü yaparak cin >> elemanlar[donguSayac].isim diyerek kullanıcıda isim soyisim ve satış miktarını alırsın. Sonra satis miktarlarının ortalamasını bulursun. Sonra yine bir for için de if yapısını kullanarak elemanlar[donguSayac].satisMiktari < ortalamaSatisMiktarı oldugu zamanda ekrana yazdırırsın. Direk kodu vermiyorum. Bu anlattıklarımla yazabiliyor olman lazım. |
tmmdır anlasılmıstır cok tesekkür ederim |
Beyler c# ile ilgileniyorum bu aralar bana bir program önerin yapayım ![]() ![]() |
C# ile nasıl ekran görüntüsü alabilirim? |
Split loop refactoring |
C de bir soru vardı,hatırladığım kadarıyla yazıyorum. MyFunction (char *s ,char *t) karekterlerin ascii tabloda decimal karşılıkları için şu tablo verilmişti: < Resime gitmek için tıklayın > Edit: sınavda doğru çözmüşüm,cevap -7 :) |
#include<stdio.h> Arkadaşlar bunla faktoriyel hesapladım fakat 33 ten sonrasını hesaplamıyor. Nedeni nedir acaba bunun bu arada çok yeniyim bilmediğim çok şey vardır ona göre yorumlarsanız ![]() |
ödev için proje yapıyorum da sosyal paylaşım sitesi benzeri birşey. facebookta olduğu gibi durum paylaşımı yaptırmaya çalışıyorum dinamik tabloyla. textbox içeriğini butonla tablo satırına aktarcam ama her seferinde silip yenisini aynı satıra yazıyor. sürekli alt satıra ekletmeyi nasıl yapabilirim? yani sayfa her açıldığında tablo satırında önceki paylaşımlar görüntülenecek ve yeni paylaşımlar eklenecek. aşağıdaki kodda mesela, textbox a yazdığım metni 10 defa yazdırıyor. eksikliklerim nedir hangi komponentlerle ne şekilde yapabilirim? veri tabanı bağlantısı yapıp gridView ile denedim o da başarısız bir deneme oldu.. yardımcı olursanız çok sevinirim.. şimdiden çok teşekkürler < Resime gitmek için tıklayın > |
unsigned int a,sayi=1,toplam=1; olarak denermisin. |
denedim fakat sonuç aynı hocam 35! yapınca 0 cevabını veriyor. |
https://en.wikipedia.org/wiki/Integer_(computer_science) Gunumuzdeki cogu compilerda integer 32 bittir. int yaklasik - 2 trilyon ile + 2 trilyon, unsigned int ise 0 ila +4 trilyon arasinda sayi gosterir. Unsigned tipine cevirince, print ederken %d yerine %u kullanmalisin. http://en.wikipedia.org/wiki/Factorial Burdan kontrol edecegin uzere 30 aslinda dogru sonucu vermiyor.Yani mevcut kodunda 12 den sonrasini hesaplayamazsin. Fazlasini hesaplaman icin 64 bitlik bir deger kullanmalisin mesela unsigned long long 2^64 − 1 e kadar gider, buda bu listeden 20! e kadar print edebilecegini gosterir. unsigned long long u print etmek icin llu kullanmalisin. referans icin: http://codepad.org/BItRUiKy Fazlasini print etmek istiyorsan binary number representation konusunu arastirip fixed point arithmetic virgullu sayilarin nasil integerden cevirildigini gosteriyor, yani benzer mantikla yapabilirsin. Eger ugrasmam dersen, GNU nun The GNU Multiple Precision Arithmetic Library sine bakmani tavsiye ederimhttp://gmplib.org/ |
Tamam hocam teşekkürler. Dediğiniz kodu yazıp baktım 20! i hesapladım fakat dediklerinizi tam anlamadım çünkü daha çok başındayım olayın 2 saatlik dersle bunları öğrendim anca yeni yeni çalışıyorum. İleride artık iyice öğrenip yapmaya çalışırım. |
Bilgisayarlarda veriler 1lerle 0 larda saklanir her bir tanesine bit deriz. int yazdigimiz zaman cogu bilgisayar sistemi bize 32 bitlik(32 tane 0 ila 1) saklanan bir variable yaratir. Basitce ornek vermek gerekirse 2 bitlik bir sistem 00, 01, 10 ve 11 seklinde girebilir yani buda 4 farkli veri temsil edebiliriz. Unsigned dedigimiz data tipleri sadece pozitif sayilardir(0 dahil), unsigned 2 bitlik bir degisken, 0, 1, 2 ve 3 degerlerini alabilir. 4 degerini alamaz. Peki 4 degerini nasil alabilir? Bu degiskenin bit sayisini arttiririz, 3 bitlik bir sistem yapariz bu da 000, 001, 010, 011, 100, 101, 110, 111 seklinde 8 tane deger alir. Farkettiysen bu degerleri 2 uzeri bit sayisi seklinde (2^3) hesaplayabiliriz. Iste daha once 00 = 0, 01 = 1, 10 = 2 ve 11 = 3 diye tanimladigimiz numara tipinde artik 8 tane numara saklayabiliriz, bu durumda 000 = 0, 001 = 1, 010 = 2, 011 = 3, 100 = 4 ... diye gider. Yani istedigimiz buyuklukte sayiyi eger mevcut variable da depolayamiyorsak, o variablenin boyutunu arttiririz. Iste daha once yazdigim gibi unsigned int ve int cogu sistemde 32 bittir. Yani unsigned int olarak dersek 2 uzeri 32 tane sayi temsil edilebilir. Bu da yaklasik 4 milyara esittir. Yani 0 dan 4 milyara kadar sayiyi unsigned int yazarak temsil edebiliriz. Fakat 4 milyardan fazlasini temsil etmek istedigimizde(yani 13! uzeri 4 milyarin ustu yapiyor) o zaman 32 bitlik bu degiskenin boyutunu arttirarak yapabiliriz. Bunun icinde "long long" kullanmalisin. "long long" tipi sana 64 bitlik degisken sunar yani 2 uzeri 64 adet temsil edebilecegin sayi. Iste bu nedenden oturu int yerine long long kullaniyorsun. Fakat ne yazikki C dilinde 64 bit maksimum boyut. Daha fazlasi mumkun degil. Fakat 2 uzeri 64 bitten fazla sayiyi temsil etmek mumkun. Bununla ilgili bilim dalina Arbitrary-precision arithmetic (http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic ) deniliyor. Bazi dillerde (Java gibi) BigInteger denilen data tipi bu hesaplama yoluyla teoride sonsuza kadar giden pozitif ve negatif sayilar temsil edebilir. C de ise bu ancak extended library lerle mumkundur bunlardan bitanesi ustte yazdigim GNU'nun Multiple Precision Arithmetic Librarysi var bu library ile 2 uzeri 64 ten daha fazla sayi temsil etmek mumkun... Ek olarak su bilgiyide vereyim istiyorum: Peki unsigned yazmadigimizda ne oluyor? O zaman o degiskene signed variable diyoruz. Peki nasil calisiyor dersen, ornek 2 bitlik bir sistemde 4 tane temsil edebilecegimiz bir sayi var. 00 her zaman 0 a esittir, en soldaki 1 bitinden itibaren sayi negatife donusturulur ve sagindaki bitler cikartilir. Yani 00 = 0, 01= 1, 10 = -2, 11 = (-2 +1 =) 1 Eger 3 biltik sistemde sorarsan, 000 = 0, 001 = 1, 010 = 2, 011 = 3, 100 = -4, 101 = -3, 110 = -2, 111 = -1 seklindedir. Bu yuzden variable tanimlarken eger negatif sayi kullanmayacaksak onune unsigned yazarak temsil edecegimiz pozitif sayiyi ikiye katlamis oluruz. |
Programın çalışma mantığı kafamda oluştu şu an anlattıklarınızla. Fakat dediğiniz gibi "unsigned long long" diyerek tanımladım ve en son sonuç gösteren printf kısmındaki (%d) yerine (%llu) yazarak değiştirdim. Şimdi sayıyı yazıyorum 2 yazsam bile sonuç vermiyor sadece boşluk bırakıyor alta. #include<stdio.h> Şu şekilde nesi yanlış acaba bu sefer ? |
Problemi kesin soylemeyeyim onu kendin bul fakat bir ipucu vereyim. Problem, scanf de... |
Tamamdır hocam scanf olan kısmada llu yazdım ve yaptım oldu. Fakat yine dediğiniz gibi daha yüksekleri bulmuyor ama bu kadarını öğrendim teşekkürler yardımınız için ![]() |
Kodundaki if (GetAsyncKeyState((long)Kod) == System.Int16.MinValue + 1) Kısmında hata bulan visual studio şunları diyor: A call to PInvoke function '_IsteBudur!_IsteBudur.Form1::GetAsyncKeyState' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature. Ne yapmam gerektiğini bilen varsa yardımcı olabilir mi? |
Su aralar is gorusmelerine calisiyorum, pascal ucgeni sorusunu cozmeye kalkmistim, dil c++ o yuzden long long a izin verilmiyor, onun yerine int64_t kullaniyorum fakat ayni islem... Cozumumu incelemek istersen: http://codepad.org/H5Snlrbx |
Hocam Bilişim Teknolojileri aratırsan megep modüllerinden temeli anltan güzel örnekler mevcut.
Bu mesaja 1 cevap geldi. Cevapları Gizle