Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
4171
Cevap
169738
Tıklama
3
Öne Çıkarma
Cevap: C/C++/C# Sorularınız Buraya. . .(GÜNCEL) (84. sayfa)
T
12 yıl
Yarbay

quote:

Orijinalden alıntı: El nino9

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.





< Bu mesaj bu kişi tarafından değiştirildi ThisisaNightmare -- 24 Haziran 2013; 1:13:43 >
Bu mesaja 1 cevap geldi.
E
12 yıl
Binbaşı

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> 
#include<conio.h>
main(){

unsigned long long a,sayi=1,toplam=1;

printf("Faktoriyel icin sayi giriniz. \n");
scanf("%d",&a);
while(sayi<=a)
{
toplam=toplam*sayi;
sayi=sayi+1;
}
printf("Sonuc= %llu",toplam);



getch();

return 0;
}


Şu şekilde nesi yanlış acaba bu sefer ?


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @ThisisaNightmare
T
12 yıl
Yarbay

quote:

Orijinalden alıntı: El nino9

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> 
#include<conio.h>
main(){

unsigned long long a,sayi=1,toplam=1;

printf("Faktoriyel icin sayi giriniz. \n");
scanf("%d",&a);
while(sayi<=a)
{
toplam=toplam*sayi;
sayi=sayi+1;
}
printf("Sonuc= %llu",toplam);



getch();

return 0;
}


Şu şekilde nesi yanlış acaba bu sefer ?

Problemi kesin soylemeyeyim onu kendin bul fakat bir ipucu vereyim. Problem, scanf de...


Bu mesaja 1 cevap geldi.
E
12 yıl
Binbaşı

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


Bu mesaja 2 cevap geldi.

Bu mesajda bahsedilenler: @ThisisaNightmare
A
12 yıl
Onbaşı

 


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;

namespace _Capture_Mania
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

Bitmap resim;
Graphics grafik;

public void ScreenshotAl()
{
Bitmap resim = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);

Graphics grafik = Graphics.FromImage(resim);

grafik.CopyFromScreen(0, 0, 0, 0, new Size(resim.Width, resim.Height));

string Yol = "C:\\Screenshot.png"; //Kaydedilecek dizin

resim.Save(Yol, ImageFormat.Png); // Kaydet
}

[DllImport("user32.dll", CharSet = CharSet.Ansi)]
public static extern int GetAsyncKeyState(long Tus); // GetAsyncKeyState windows apisi gönderilen tuşa basılıp basılmadığını kontrol eder (ister uygulama için ister uygulama dışı farketmez.)

public static bool TusKontrol(byte Kod) // Windows apisini kullanarak tuş kontrolü yapar
{
if (GetAsyncKeyState((long)Kod) == System.Int16.MinValue + 1) // İşte burada çalıştırdığında hata geliyor.. Ne yapacağız? buraya kadar geldim her şey bitmek üzere sadece bu kaldı..
return true;
else
return false;
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void timer1_Tick(object sender, EventArgs e)
{
if (TusKontrol((byte)Keys.Multiply))
ScreenshotAl();
}


}
}






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?



T
12 yıl
Yarbay

quote:

Orijinalden alıntı: El nino9

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

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


Bu mesaja 1 cevap geldi.
E
12 yıl
Binbaşı

Çok farklı sanırım bu c den pek bir şey anlamadım :). Peki hocam kendimi geliştirmek için ne yapabilirim. C derslerini izliyorum netten ama onları pekiştirmek için önerin var mı ?


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @ThisisaNightmare
A
12 yıl
Er

#include <iostream>
using std::cout;
using std::cin;


main() {

int x,y,z;

cout <<"1.Sayiyi giriniz:" ;
cin >> x;

cout <<"2.Sayiyi giriniz:" ;
cin >> y;

cout <<"3.Sayiyi giriniz:" ;
cin >>z;


cout << x+y+z;
cin >> x;







}


Bu program basit ama benim sorum şu. Bunun üzerinden gidersek nasıl başa döndürcez? Yani sonucu hesaplattıktan sonra tekrar programı baştan açmadan başka bir toplama işlemine nasıl geçicez?


Bu mesaja 2 cevap geldi.
E
12 yıl
Binbaşı

Bende merak ediyorum bu sorunun cevabını işe yarar bilgi



1
12 yıl
Yüzbaşı

quote:

Orijinalden alıntı: asdsaz61

#include <iostream>
using std::cout;
using std::cin;


main() {

int x,y,z;

cout <<"1.Sayiyi giriniz:" ;
cin >> x;

cout <<"2.Sayiyi giriniz:" ;
cin >> y;

cout <<"3.Sayiyi giriniz:" ;
cin >>z;


cout << x+y+z;
cin >> x;







}


Bu program basit ama benim sorum şu. Bunun üzerinden gidersek nasıl başa döndürcez? Yani sonucu hesaplattıktan sonra tekrar programı baştan açmadan başka bir toplama işlemine nasıl geçicez?

#include <iostream>
#include <conio.h>
using std::cout;
using std::cin;
main() {
basadon:
int x,y,z;
cout <<"1.Sayiyi giriniz:" ;
cin >> x;
cout <<"2.Sayiyi giriniz:" ;
cin >> y;
cout <<"3.Sayiyi giriniz:" ;
cin >>z;
cout << x+y+z;
cin >> x;
goto basadon;
}


Bu mesaja 1 cevap geldi.
A
12 yıl
Yüzbaşı

< Resime gitmek için tıklayın >
ben bunu textboxda yapmak istiyorum ama sorun çıkıyor (daha bugün başladım (dalga kaynağı olmamak dileğiyle))

< Resime gitmek için tıklayın >
OLMUYOR!


Bu mesaja 1 cevap geldi.
G
12 yıl
Binbaşı

quote:

Orijinalden alıntı: kralonur1998

< Resime gitmek için tıklayın >
ben bunu textboxda yapmak istiyorum ama sorun çıkıyor (daha bugün başladım (dalga kaynağı olmamak dileğiyle))

< Resime gitmek için tıklayın >
OLMUYOR!


Hocam bakın şimdi

int i = 0;
dediğinizde butona her tıklayışta tekrardan yeni bir int tanımlayıp onu sıfıra eşitler yani şu şekidle yapmanız lazım;
int sayaç=0;
buttonclick()
{
sayaç++;
textBox1.Text = sayaç.ToString();
}
bu arada sana önerim youtubeden muhammed mastar ve sina5an adlı kullanıcıların c# videolarını seyret. Temeli kavrarsın sonra herkes için c# 4.0 pdfsi dolaşıyor nette onu indir ondan çalış projelerde çalış vs kendini geliştirirsin.


Bu mesaja 1 cevap geldi.
M
12 yıl
Binbaşı

Sanırım buton yerine TextBox'a tıklamak istiyorsun.
Ayrıca değişkenin gerçek değeri vermesi için içeride tanımlamamalısın nedeni ise her tıkladığında 0'dan başlayacak ve yanlış sayı verecektir Private Void üzerinde tanımlaman gerekmekte.
private void textBox1_Click(object sender, EventArgs e)
{
i++;
MessageBox.Show(i + "defa");
}

edit:Sonucu TextBox'da yazdırmak istiyorsan yukarıdaki arkadaşın dediğini uygulayabilirsin.TextBox'da yapmak istiyorum diyince dedim herhalde TextBox'a tıklamak istiyor





< Bu mesaj bu kişi tarafından değiştirildi Mr. Management -- 25 Haziran 2013; 0:19:21 >
Bu mesaja 2 cevap geldi.

Bu mesajda bahsedilenler: @kralonur1998
L
12 yıl
Yarbay

ld.exe||cannot find C:\MinGW\lib: Permission denied|

şöyle bir hata alıyorum.
IDE:Code::Blocks
OS:Win8 32 bit
Compiler:g++
reinstall compiler/ide, yönetici oalrak çalıştırma vs denedim. siz ne öenrirsiniz?



T
12 yıl
Yarbay

quote:

Orijinalden alıntı: El nino9

Çok farklı sanırım bu c den pek bir şey anlamadım :). Peki hocam kendimi geliştirmek için ne yapabilirim. C derslerini izliyorum netten ama onları pekiştirmek için önerin var mı ?

Hic farkli degil C++, C nin bir extension dilidir. Yani C++, C yi de kapsiyor.
Bu ne demek dersen:
http://codepad.org/QJL7Jx6g

Burda oldugu gibi "stdio.h" dosyasini ekleyip printf kullanabiliyorum.

Eger C ye cevirirsek farki bu olur:

http://codepad.org/UmqWpWWH

Her iki dilde calissin istiyorsak, long long yerine long kullanabiliriz ama daha once dedigim gibi 13! uzeri calismaz bunda.

Bu C
http://codepad.org/xraZPqCN

Bu da C++
http://codepad.org/MezOMbve

Gordugun gibi ayni kod C ve C++ ta calismakta.


Tavisye olarak video ile baya zor ogrenilir. Cunku tekrar ederek sana mantik kazandirmaz. Maalesef kurs, universite vs oneririm. Genellikle mantigini oturtmaya calisirlar...


Bu mesaja 1 cevap geldi.
E
12 yıl
Binbaşı

quote:

Orijinalden alıntı: ThisisaNightmare

quote:

Orijinalden alıntı: El nino9

Çok farklı sanırım bu c den pek bir şey anlamadım :). Peki hocam kendimi geliştirmek için ne yapabilirim. C derslerini izliyorum netten ama onları pekiştirmek için önerin var mı ?

Hic farkli degil C++, C nin bir extension dilidir. Yani C++, C yi de kapsiyor.
Bu ne demek dersen:
http://codepad.org/QJL7Jx6g

Burda oldugu gibi "stdio.h" dosyasini ekleyip printf kullanabiliyorum.

Eger C ye cevirirsek farki bu olur:

http://codepad.org/UmqWpWWH

Her iki dilde calissin istiyorsak, long long yerine long kullanabiliriz ama daha once dedigim gibi 13! uzeri calismaz bunda.

Bu C
http://codepad.org/xraZPqCN

Bu da C++
http://codepad.org/MezOMbve

Gordugun gibi ayni kod C ve C++ ta calismakta.


Tavisye olarak video ile baya zor ogrenilir. Cunku tekrar ederek sana mantik kazandirmaz. Maalesef kurs, universite vs oneririm. Genellikle mantigini oturtmaya calisirlar...

Hocam zaten önümüzdeki yıl bilgisayar mühendisliği 1. sınıf olacağım ve kurslara gideceğim bölümde okurken. Benim amacım yazın bölüme geçmeden önce boş gitmeyeyim bir şeyler öğrenip gideyim seneye daha rahat anlarım diye Bu arada yardımlarınız için teşekkürler size bir şey daha soracağım. Bu c# için ms visual studio gerekliymiş. Burada c kodları da çalışıyormuş. Ben bunu indirip c kodlarını burada yazmayı düşünüyorum sonra c# geçince zorlanmamak için. Dün bir yerlere baktım fakat deneme sürümlerini buldum hep. Siz biliyorsanız nereden indireceğimi söyler misiniz ?


Bu mesaja 2 cevap geldi.
T
12 yıl
Yarbay

quote:

Orijinalden alıntı: El nino9

quote:

Orijinalden alıntı: ThisisaNightmare

quote:

Orijinalden alıntı: El nino9

Çok farklı sanırım bu c den pek bir şey anlamadım :). Peki hocam kendimi geliştirmek için ne yapabilirim. C derslerini izliyorum netten ama onları pekiştirmek için önerin var mı ?

Hic farkli degil C++, C nin bir extension dilidir. Yani C++, C yi de kapsiyor.
Bu ne demek dersen:
http://codepad.org/QJL7Jx6g

Burda oldugu gibi "stdio.h" dosyasini ekleyip printf kullanabiliyorum.

Eger C ye cevirirsek farki bu olur:

http://codepad.org/UmqWpWWH

Her iki dilde calissin istiyorsak, long long yerine long kullanabiliriz ama daha once dedigim gibi 13! uzeri calismaz bunda.

Bu C
http://codepad.org/xraZPqCN

Bu da C++
http://codepad.org/MezOMbve

Gordugun gibi ayni kod C ve C++ ta calismakta.


Tavisye olarak video ile baya zor ogrenilir. Cunku tekrar ederek sana mantik kazandirmaz. Maalesef kurs, universite vs oneririm. Genellikle mantigini oturtmaya calisirlar...

Hocam zaten önümüzdeki yıl bilgisayar mühendisliği 1. sınıf olacağım ve kurslara gideceğim bölümde okurken. Benim amacım yazın bölüme geçmeden önce boş gitmeyeyim bir şeyler öğrenip gideyim seneye daha rahat anlarım diye Bu arada yardımlarınız için teşekkürler size bir şey daha soracağım. Bu c# için ms visual studio gerekliymiş. Burada c kodları da çalışıyormuş. Ben bunu indirip c kodlarını burada yazmayı düşünüyorum sonra c# geçince zorlanmamak için. Dün bir yerlere baktım fakat deneme sürümlerini buldum hep. Siz biliyorsanız nereden indireceğimi söyler misiniz ?

Visual studio da standard c yok. O yuzden tavsiye etmem...



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
E
12 yıl
Binbaşı

c kodları da orada çalışıyormuş ya öyle dedi bir arkadaş o yüzden onu kurmuştum.




Bu mesajda bahsedilenler: @ThisisaNightmare
A
12 yıl
Yüzbaşı

quote:

Orijinalden alıntı: greencraft

quote:

Orijinalden alıntı: kralonur1998

< Resime gitmek için tıklayın >
ben bunu textboxda yapmak istiyorum ama sorun çıkıyor (daha bugün başladım (dalga kaynağı olmamak dileğiyle))

< Resime gitmek için tıklayın >
OLMUYOR!


Hocam bakın şimdi

int i = 0;
dediğinizde butona her tıklayışta tekrardan yeni bir int tanımlayıp onu sıfıra eşitler yani şu şekidle yapmanız lazım;
int sayaç=0;
buttonclick()
{
sayaç++;
textBox1.Text = sayaç.ToString();
}
bu arada sana önerim youtubeden muhammed mastar ve sina5an adlı kullanıcıların c# videolarını seyret. Temeli kavrarsın sonra herkes için c# 4.0 pdfsi dolaşıyor nette onu indir ondan çalış projelerde çalış vs kendini geliştirirsin.

teşekkürler hocam volkan aktaşın her yönüyle c#5.0 kitabını aldım ordan bakıyorum



G
12 yıl
Binbaşı

quote:

Orijinalden alıntı: El nino9

quote:

Orijinalden alıntı: ThisisaNightmare

quote:

Orijinalden alıntı: El nino9

Çok farklı sanırım bu c den pek bir şey anlamadım :). Peki hocam kendimi geliştirmek için ne yapabilirim. C derslerini izliyorum netten ama onları pekiştirmek için önerin var mı ?

Hic farkli degil C++, C nin bir extension dilidir. Yani C++, C yi de kapsiyor.
Bu ne demek dersen:
http://codepad.org/QJL7Jx6g

Burda oldugu gibi "stdio.h" dosyasini ekleyip printf kullanabiliyorum.

Eger C ye cevirirsek farki bu olur:

http://codepad.org/UmqWpWWH

Her iki dilde calissin istiyorsak, long long yerine long kullanabiliriz ama daha once dedigim gibi 13! uzeri calismaz bunda.

Bu C
http://codepad.org/xraZPqCN

Bu da C++
http://codepad.org/MezOMbve

Gordugun gibi ayni kod C ve C++ ta calismakta.


Tavisye olarak video ile baya zor ogrenilir. Cunku tekrar ederek sana mantik kazandirmaz. Maalesef kurs, universite vs oneririm. Genellikle mantigini oturtmaya calisirlar...

Hocam zaten önümüzdeki yıl bilgisayar mühendisliği 1. sınıf olacağım ve kurslara gideceğim bölümde okurken. Benim amacım yazın bölüme geçmeden önce boş gitmeyeyim bir şeyler öğrenip gideyim seneye daha rahat anlarım diye Bu arada yardımlarınız için teşekkürler size bir şey daha soracağım. Bu c# için ms visual studio gerekliymiş. Burada c kodları da çalışıyormuş. Ben bunu indirip c kodlarını burada yazmayı düşünüyorum sonra c# geçince zorlanmamak için. Dün bir yerlere baktım fakat deneme sürümlerini buldum hep. Siz biliyorsanız nereden indireceğimi söyler misiniz ?

Visual studioda c yok diye biliyorum. Programlama programlamadır dil fark etmez.
Deneme sürümü olayına gelince express zaten yeterince kapsamlı sizin için ultimate ile express arasında bir fark olmayacakatır microsoftun kendi sitesinden indirebilirsiniz.


Bu mesaja 3 cevap geldi.