Arama butonu
Bu konudaki kullanıcılar: 2 misafir
4171
Cevap
168605
Tıklama
3
Öne Çıkarma
Cevap: C/C++/C# Sorularınız Buraya. . .(GÜNCEL) (44. sayfa)
G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: YouCan_YMK

quote:

Orijinalden alıntı: elektro_gadget

quote:

Orijinalden alıntı: YouCan_YMK

Fonksiyon kullanarak faktoriyel hesaplaması kurmam gerkli ama yazdığım kod , ilk 11 - 13 sayıyı doğru yazıyo .. nerede hata var bakabilir misiniz ?

Sorun faktoryel sonucunun int sınırlarını aşması. int i "long long" ile değiştirirsen bu sınır biraz daha genişler. Daha da geniş (teorik olarak sınırsız) sayılar için açtığım şu konuya bakabilirsiniz.http://forum.donanimhaber.com/m_66567895/tm.htm

Hocam ,C ye yeni başladım , tam anlayamadım dediğinizi (bişeyler yaptım ama olmadı) nerelerde nasıl bir değişiklik yapmalıyım ...

Mesela

45 sayisinin faktoriyeli :
9649395409222631424

 
#include<stdio.h>
typedef unsigned long long int uint64_t;

uint64_t faktoriyel(unsigned int a)
{


if(a > 1)

return (a*faktoriyel(--a));
else
return 1;



}
int main()
{

uint64_t x = 45;

printf("%llu sayisinin faktoriyeli :\n %llu \n", x, faktoriyel(x));

return 0;
}


Bu mesaja 2 cevap geldi.
G
13 yıl
Yarbay

quote:

Orijinalden alıntı: YouCan_YMK

Hocam ,C ye yeni başladım , tam anlayamadım dediğinizi (bişeyler yaptım ama olmadı) nerelerde nasıl bir değişiklik yapmalıyım ...

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ış.





< Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 28 Kasım 2012; 22:33:52 >
Bu mesaja 2 cevap geldi.
G
13 yıl
Yarbay

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.
 
#include <stdio.h>
#include <gmp.h>

int main()
{
unsigned sayi;
mpz_t sonuc;
mpz_init(sonuc);

scanf("%d", &sayi);
mpz_fac_ui(sonuc, sayi);

gmp_printf("Sonuç: %Zd\n", sonuc);
mpz_clear(sonuc);

return 0;
}





< Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 28 Kasım 2012; 23:09:37 >
Bu mesaja 1 cevap geldi.
G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: elektro_gadget

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.
 
#include <stdio.h>
#include <gmp.h>

int main()
{
unsigned sayi;
mpz_t sonuc;
mpz_init(sonuc);

scanf("%d", &sayi);
mpz_fac_ui(sonuc, sayi);

gmp_printf("Sonuç: %Zd\n", sonuc);
mpz_clear(sonuc);

return 0;
}


Hıı. Bana aşmaz gibi gelmişti. Sonuç da 0 çıkmayınca dedim 64 bit yetti heralde



< Bu ileti tablet sürüm kullanılarak atıldı >

G
13 yıl
Yarbay

quote:

Orijinalden alıntı: YouCan_YMK

Bu C için mi hocam .. hata verdi , çalıştıramadım ?

Bu kütüphaneyi ayrıca kurmak gerekli. Önceki mesajımda verdiğim bağlantığı takip edersen nasıl olacağını anlattım.



O
13 yıl
Onbaşı

quote:

Orijinalden alıntı: companjera

quote:

Orijinalden alıntı: OnrAvc56

merhaba programcı arkadaşlarım lise 2 öğrencisiyim bilişim teknolojileri bölümünde okuyorum c# programlama dilini öğreniyoruz ve ben basit bir not hesaplama programı geliştirdim fakat bir sıkıntım var 3 yazılı 1 sözlü notunun ortalmaasını alıp geçti kaldı vs. textboxlara bilgi giriliyor.Ancak şöyle bi sorunum var şimdi 3 yazılı 1 sözlü girilecek şekilde ayarladım ama 4 textboxtan 1 tanesi boş bırakılınca prog. hata veriyor.Yeni olduğum için bu sorunu henüz aşamadım yardımcı olurmusunuz



{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show("Hoş Geldiniz :)");
MessageBox.Show("Bu basit bir not hesaplama programıdır.");
MessageBox.Show("Coding By Onur");

}

private void button1_Click(object sender, EventArgs e)
{
int yazili1 = Convert.ToInt32(textBox1.Text);
int yazili2 = Convert.ToInt32(textBox2.Text);
int yazili3 = Convert.ToInt32(textBox3.Text);
int sozlu = Convert.ToInt32(textBox4.Text);
int ort = (yazili1 + yazili2 + yazili3 + sozlu) / 4;
string durum = (textBox6.Text);
textBox5.Text = ("" + ort);

if (ort >= 0 && ort <= 24)
{
textBox6.Text = ("0 = Kaldı :(");
}
if (ort >= 25 && ort <= 44)
{
textBox6.Text = ("1 = Kaldı :(");
}
if (ort >= 45 && ort <= 54)
{
textBox6.Text = ("2 = Geçti");
}
if (ort >= 55 && ort <= 69)
{
textBox6.Text = ("3 = Orta");
}
if (ort >= 70 && ort <= 84)
{
textBox6.Text = ("4 = İyi");
}
if (ort >= 85 && ort <= 100)
{
textBox6.Text = ("5 = Pekiyi :)");
}

}

if(textbox1.Text==null){int yazili1==0;}

gibi bir koşul koyarsan textbox boşken sıfır alır o değeri ya da başka birşeyde yapabilirsin o değer girilmemişse

çok teşekkür ederim


Bu mesaja 1 cevap geldi.
C
13 yıl
Binbaşı

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..



V
13 yıl
Çavuş

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.


Bu mesaja 2 cevap geldi.
D
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: V4ROL

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.


Bu mesaja 1 cevap geldi.
V
13 yıl
Çavuş

quote:

Orijinalden alıntı: dogauzun

quote:

Orijinalden alıntı: V4ROL

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ı



L
13 yıl
Teğmen

quote:

Orijinalden alıntı: V4ROL

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.

const int array_kapasite = 10;
ebat[] dizi = new ebat[array_kapasite];

Kalıtım ile de pek alakalı bir konu değil bu.


Bu mesaja 2 cevap geldi.
V
13 yıl
Çavuş

quote:

Orijinalden alıntı: leventg

quote:

Orijinalden alıntı: V4ROL

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.

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


Bu mesaja 1 cevap geldi.
U
13 yıl
Çavuş

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?


Bu mesaja 1 cevap geldi.
G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: umt2593

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

quote:


1.If the year is evenly divisible by 4, go to step 2. Otherwise, go to step 5.
2.If the year is evenly divisible by 100, go to step 3. Otherwise, go to step 4.
3.If the year is evenly divisible by 400, go to step 4. Otherwise, go to step 5.
4.The year is a leap year (it has 366 days).
5.The year is not a leap year (it has 365 days).


Ş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 :)





< Bu mesaj bu kişi tarafından değiştirildi garui -- 29 Kasım 2012; 23:21:32 >
Bu mesaja 1 cevap geldi.
U
13 yıl
Çavuş

artık yıl olayında o 100 her şeyi bozuyo zaten bi yapamadım gitti yani ekrana bastıramamamif yüzünden mi


Bu mesaja 1 cevap geldi.
G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: umt2593

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ış.





< Bu mesaj bu kişi tarafından değiştirildi garui -- 30 Kasım 2012; 0:09:11 >
Bu mesaja 1 cevap geldi.
U
13 yıl
Çavuş

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


Bu mesaja 1 cevap geldi.
G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: umt2593

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.



B
13 yıl
Teğmen

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.





< Bu mesaj bu kişi tarafından değiştirildi basaran747 -- 30 Kasım 2012; 2:20:22 >
Bu mesaja 1 cevap geldi.
G
13 yıl
Yarbay

quote:

Orijinalden alıntı: basaran747

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.


Bu mesaja 2 cevap geldi.