Eksik yazmışım aslında, şöyle yapalım. Önce stdint.h başlığını ekle (#include <stdint.h>). faktoryel fonksiyonundaki int leri uintmax_t ile değiştir yani ( uintmax_t faktoriyel(uintmax_t a ...) printf lerdeki %d leri %llu ile değiştir ve derle. Eğer uintmax_t tanımsız gibi bir hata verirse stdint.h başlığını silip yerine typedef unsigned long long uintmax_t; yaz. Yine de bunlar standart değil, windows ta çalışmasının garantisi yok. garui benden önce yazmış. ![]() |
garui 45 faktoryel 64 bitin sınırlarını fazlasıyla aşıyor, yanlış olmuş o 20! den sonra tökezliyor. İşte 45! = 119622220865480194561963161495657715064383733760000000000. Aha bu da 100! = 933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862 53697920827223758251185210916864000000000000000000000000. ![]() Merak edenler için gmp kodu.
|
Hıı. Bana aşmaz gibi gelmişti. Sonuç da 0 çıkmayınca dedim 64 bit yetti heralde ![]() |
Bu kütüphaneyi ayrıca kurmak gerekli. Önceki mesajımda verdiğim bağlantığı takip edersen nasıl olacağını anlattım. |
çok teşekkür ederim ![]() |
Merhaba arkadaşlar; C++ ile ilgili giriş seviyesinden başlayarak basit ve yalın bir anlatım sunan bir kitap var mı acaba? Ayrıca Windows 7 Ultimalte 64 Bit üzerinde çalıştırabileceğim bir C++ derleyici var mıdır? Teşekkürler.. |
merhaba yapmak istediğim --------------- public class ebat { public int _x; public int _y; } ebat dizi[] = new ebat(); private void Form1_Load(object sender, EventArgs e) { dizi[1]._x=5; dizi[2]._y=4; } kısacası dizide kalıtımı kullanmak istiyorum ama ebat dizi[]=new ebat(); derken [] kısmında hata veriyor yardımcı olurmusunuz. |
new ebat() sadece 1 adet ebat objesi oluşturuyor. Sizin istediğiniz array oluşturmak. c# pek bilmiyorum ancak muhtemelen şöyle birşey olmalı: ebat dizi[] = new ebat[x]; x yerine kaç elemanlı array oluşturacaksanız o gelecek. |
sağol dostum ama olmadı |
const int array_kapasite = 10; ebat[] dizi = new ebat[array_kapasite]; Kalıtım ile de pek alakalı bir konu değil bu. |
tesekkürler dostum ![]() |
arkadaşlar ödev şu Task 2: Write a program that reads two positive integers corresponding to two year values, ensures that the first year value is less than the second, and then determines and outputs all year values for leap years. A leap year is a year that can be evenly divided by 4, unless it is a centennial, in which case it must be evenly divided by 400. For example, 1600 and 1992 are leap years, whereas 1700 and 1998 are not (because 1700 even if it can be evenly divided by 4, it can not be evenly divided by 400). ben ise şöle yaptım ama olmadı olamadı #include<stdio.h> #include<conio.h> int main() { int year1,year2,a,b,c; printf("Enter year 1: \n"); scanf("%d",&year1); printf("Now year 2 please: \n"); scanf("%d",&year2); if(year2>year1) { while(year1<=year2) { year1++; year1%4==a; year1%400==b; year1%100==c; if((a==0)&&(b==0)&&(c!=0)) printf("%d",year1); } } getch(); return 0; } nasıl yapmam gerekir? |
http://support.microsoft.com/kb/214019/en-us
Şimdi koda gelirsek; " year1%4==a; "--> Bu bir eşitlik testi. Eğer bölümü a'ya atamak istiyorsan " a=year1%4; " olacak. Direk kontrol etmek istersen " if(year1%4==9) " yazabilirsin. Sonra o kısım düzeldi diyelim. " if((a==0)&&(b==0)&&(c!=0)) " Burada yıl 4 ve 400'e tam bölünmüş ama 100'e bölünmemiş mi diye kontrol etmişsin. 400'e bölünüp 100'e bölünemeyen bir sayı yok diyebiliriz. { 4'e bölünüyor mu? {Hayır : Next; }:{Evet : 100'e bölünüyor mu? { Hayır: Ekrana bas; Next;}:{Evet: 400'e bölünüyor mu ? { Evet : Ekrana bas; Next; }:{Hayır: Next;}}}} yapman lazım. Kodu direk düzeltsem çok daha kolay olacaktı sanki :) |
artık yıl olayında o 100 her şeyi bozuyo zaten bi yapamadım gitti yani ekrana bastıramamamif yüzünden mi |
http://codepad.org/gRmV2GIp Yukarıda örnekledim. Kodunda hem if yanlış hem diğer % işlemleride yanlış. |
teşekkür ederim çok mu olacak bilmiyorum ama en başta bi if var ya if(year1<year2) olan onu sağlamazsa en başa dönmesini nasıl yapabilirim |
Önce kodun son halini yaz. Ondan sonra bir bakalım. |
arkadaslar soru su: Klavyeden eleman sayısı gırılen bır ıntegerdızının elemanlarını buyukten kucuge dogru sıralayan c++ kodunu yazınız. ben henuz sıralamaya gelemedim uykusuzlukdan mıdır nedir anlamadım diziyi alıp yazdırmayı bı turlu beceremedım ve nerde yanlıs yaptıgmı fark edemiyorum. int n; //kullanıcı dızının kac elemanlı olcagını bu degıskene gırıcek. cin>>n; //eleman sayısını degıskene atadım. int dizi[n]; //kullanıcının gırdıgı eleman sayısına gore dizi olusturdum.(zannediyorumki sıkıntı burada cıkıyo?) for(int i=0;i=n;i++) //i degiskeni n'e esıt olana kadar donucek ve dizinın son elemanına kadar kullanıcı degerlerı yazıcak. { cin>>dizi(i); //i yi koseli paranteze aldıgımda forum italik olarak algılıyor o yuzden normal parantez yazdım buraya. } for(i=0;i=n;i++) //aynı dongu bu sefer kullanıcını deger atadıgı dızıyı ekrana yazdırıcak { cout<<dizi(i)<<endl; //i yi koseli paranteze aldıgımda forum italik olarak algılıyor o yuzden normal parantez yazdım buraya. } Bu neden calısmıyor arkadasalar.Bakın vurgulayarak soyluyorum bunun yukarıdakı sorunun cevabı olmadıgını bılıyorum benım yapmak ıstedıgım once n elemanlı dızı olusturup bu dızıye tek tek deger atayıp daha sonra for yardımıyla ekrana yazdırmak. Buyukten kucuge sıralama ısını sonra dusunucem. Simdiden tesekkurler. |
int dizi[n]; <- Bu satır çalışsa bile yine de yanlış, derleyicinin bir kıyağı sadece. Hocan işi biliyorsa bunu kabul etmez. Doğrusu: int* dizi = new int[n]; for da sıkıntın var. i=n değil i == n olacak ama yapmak istediğin işleme göre o da yanlış. i == n demek "i n'ye eşit olduğu sürece döngüyü işlet" demek. Halbuki i'nin n'ye eşit olması dizi sınırlarını aştığı anlamına geliyor. Doğrusu: for(i = 0; i < n; ++i) yani "i n'den küçük olduğu sürece döngüyü işlet". Bir not: İlk problemin çözümü aslında sizin açınızdan başlı başına bir problem. Çok büyük ihtimalle daha pointer görmemişsinizdir fakat size pointer kullanılması gereken bir ödev veriliyor. Hocanın hangi cevabı doğru kabul edeceği belirsiz. Size tavsiyem hoca pointer lı cevabı beğenmezse kodu visual c++ veya borland da derlemeyi deneyin ve hocaya neden çalışmadığını sorun. Cevap veremezse foruma yöndendirin biz ona anlatırız. Böyle şeyler sinirlerimi bozuyor kusura bakmayın. Bu ülkeden neden adam akıllı mühendis çıkmadığı bu ayrıntılarda gizli. ![]() |
Mesela
45 sayisinin faktoriyeli :
9649395409222631424
Bu mesaja 2 cevap geldi. Cevapları Gizle