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

http://imgim.com/3083incib1564366.jpg

alışveriş sepeti yapıcam ama pek bi bilgim yok yardım edebilirsen sevinirim kardeş para karşılıda olur.



K
13 yıl
Yüzbaşı

http://imgim.com/3083incib1564366.jpg

alışveriş sepeti yapıcam ben bağlantıları oluşturmaya çalıştım orda bile hata verdi tam anlamıyla yapamadım yardım edersen sevinirim para karşılıda olabilir. son gün pazar



K
13 yıl
Yüzbaşı

http://imgim.com/3083incib1564366.jpg

alış veriş sepeti yapıcam bağlantıları oluşturdum ama hata veriyo yardım edersen sevinirim para karşılıda olur songün pazar



K
13 yıl
Yüzbaşı

ödev var beyler paralı parasız yapmak isteyen haber versin hayrına uplayana suku

kısaca anlatim

http://imgim.com/3083incib1564366.jpg

resimde görüldiğü gibi yapıcak olduğum 1. uygulama alışveriş sitelerinde ki alışveriş sepeti yapmak ama bunu yaparken xml kullanılıcak ve sonuçu acces veri tabanına kaydedicek

2. uygulama ise hava durumu burda sadece xml kullanılıcak. orneğin ankarayı seçtik nem oranını sıcaklığı göstericek bide durum olucak mesela durum güneşliyse picturebox a güneş resmi koyucak. sıcaklık nem durum bilgilerini xml dosyasından alıcak.

olay bu ikisinden ibaret



G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: aalbatros

Projemı Hazırladım Herşeyi Bitirdim Build Ettim Debug Dosyasıdan Dosyalarımı Aldım Exe Dosyamda ve .config Dosyamı Not Defterine Attım Ve ne Var ne Yok herşeyi Görebiliyorum Sql Server Baglantı Bilgileri Vs.. Bunları Nasıl Gizlemem Gerekiyor Yanlıs Bişimi Yaptım Acaba yardımcı olucak Varmı ?

Aşağıdaki linke bakabilirsin.

http://weblogs.asp.net/jgalloway/archive/2008/04/13/encrypting-passwords-in-a-net-app-config-file.aspx


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

quote:

Orijinalden alıntı: strahd_von_zarovich

quote:

Orijinalden alıntı: Roxy.

quote:

Orijinalden alıntı: strahd_von_zarovich

Biraz garip olacak ama long int ile int niye aynı kapasitede sayı tutuyor . Ve unsigned int e mesela -2 verdiğimde değeri neden +4,294,967,294 oluyor ?

adından da anlaşılacağı gibi unsigned, yani işaretsiz, sadece işaretsiz değerler girilebilir. yine de işaretli değer girilebilir, eğer işaretli bir değer girilirse derleyici bu değeri alır ve belirli bir kurala göre başka bir değer aktarır. derleyiciden derleyiciye farklılık gösterebilir.

İnt in değeri derleyiciden derleyiciye farklılık gösterebiliyor ama , - nin işlenmesi aynı anladığım kadarıyla. int kaç bitlikse bende mesela 32 bit -3 gibi bir değer verildiğinde 2^32-3 değerini alıyor ama nedenini çözemedim.


unsigned int niye int in yaklaşık 2 katı pozitif değer alır diye düşünmekle başla. Data Type Ranges

int 32 bit tanımlanır. Negatif ve Pozitiflik MSB(Most Significant Bit) -yani 32. bit diyebiliriz - bitinde tutulur.

8 bitlik bi sayı ile anlatıyım. Memoryde aşağıdaki gibi tutulduklarını düşün.
00000011 = signed 3 = unsigned 3
11111101 = signed -3 = unsigned 253

Şimdi sen -3 diyince unsigned int değişkene 11111101 değerini atıyorsun. unsigned int için bu değer 253 demek. Eğerki biz 11111101 memory bloğuna bu aslında int deseydik bilgisayar bu sayıyı int olarak ele alıcak. Bakıcak MSB 1 yani bu sayı negatif. Üstinde 2's complement uyguluycak (1's complement +1) bu sayının negatif değerini bulmak için. Sonuç 00000010 + 1 = 00000011 = 3 ama negatif yani -3.
Daha fazla açıklama için 2's complement wiki sayfası --> Two's Complement

Neden böyle bir yöntem ile sayıların memory üzerinde tutulduğunu soruyorsan Wiki sayfasında da belirtilmiş. Çoğu matematik işlem üzerlerinde direk uygulanabiliniyor.

Örnek :

-3 + 5 = 11111101 + 00000101 = 100000010 (9.bit 8bit memory üstünde işlem yaptığımızdan Carry Bit olarak algılanacak.) Elimizde 8 bit olarak memoryde 00000010 var. Sonuç : 2.
-3 + 2 = 11111101 + 00000010 = 11111111 (Sonuç 8 bit. Carry Bit taşması yok.) Sonuç : MSB'e bakıyoruz 1 yani sonuç negatif. 11111111 -> (2's complement) -> 00000000 + 1 = 00000001. Yani -1.





< Bu mesaj bu kişi tarafından değiştirildi garui -- 11 Kasım 2012; 20:24:11 >
Bu mesaja 1 cevap geldi.
G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: mertov

Celcius, Fahrenheit ve kelvin derecelerini birbirlerine çeviren program yazmaya çalışıyorum şunu yazdım ama çalışmadı yardımcı olabilecek olan var mı?

#include<stdio.h> 
#include<conio.h>
int main (void)
{
char code;
float value,cel,fah,kel;
scanf("%c%f",&code,&value);
{
switch (code)
case 'C':
case 'c':
value=cel;
fah=cel*1.8+32;
kel=cel+273;
printf(" F %f \n K %f ",fah,kel);
break;
switch (code)
case 'K':
case 'k':
value=kel;
cel=kel-273;
fah=cel*1.8+32;
printf(" C %f \n F %f",cel,fah);
break;
switch (code)
case 'F':
case 'f':
value=fah;
cel=(fah-32)*10/18;
kel=cel-273;
printf(" C %f \n K %f",cel,kel);
break;
}
getch();
return(0);
}


http://codepad.org/4zZALvUe

Sadece C kısmını ve switchleri düzelttim. Scanf de biraz garip gibi. Yanayana istiyorsun.


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

quote:

Orijinalden alıntı: garui

quote:

Orijinalden alıntı: mertov

Celcius, Fahrenheit ve kelvin derecelerini birbirlerine çeviren program yazmaya çalışıyorum şunu yazdım ama çalışmadı yardımcı olabilecek olan var mı?

#include<stdio.h> 
#include<conio.h>
int main (void)
{
char code;
float value,cel,fah,kel;
scanf("%c%f",&code,&value);
{
switch (code)
case 'C':
case 'c':
value=cel;
fah=cel*1.8+32;
kel=cel+273;
printf(" F %f \n K %f ",fah,kel);
break;
switch (code)
case 'K':
case 'k':
value=kel;
cel=kel-273;
fah=cel*1.8+32;
printf(" C %f \n F %f",cel,fah);
break;
switch (code)
case 'F':
case 'f':
value=fah;
cel=(fah-32)*10/18;
kel=cel-273;
printf(" C %f \n K %f",cel,kel);
break;
}
getch();
return(0);
}


http://codepad.org/4zZALvUe

Sadece C kısmını ve switchleri düzelttim. Scanf de biraz garip gibi. Yanayana istiyorsun.

Cevap için teşekkürler yalnız dev c++ sizin yazdığınız program da hata veriyor 40. satırda bi de 8. satırda yazdığınız value=32.0f; ne işe yarıyor onu anlamadım açıkçası


scanf'te girdileri hep yan yana istiyo bizim hocalar ondan öyle yazıyorum





< Bu mesaj bu kişi tarafından değiştirildi mertov -- 11 Kasım 2012; 19:46:49 >
Bu mesaja 1 cevap geldi.
G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: mertov

quote:

Orijinalden alıntı: garui

quote:

Orijinalden alıntı: mertov

Celcius, Fahrenheit ve kelvin derecelerini birbirlerine çeviren program yazmaya çalışıyorum şunu yazdım ama çalışmadı yardımcı olabilecek olan var mı?

#include<stdio.h> 
#include<conio.h>
int main (void)
{
char code;
float value,cel,fah,kel;
scanf("%c%f",&code,&value);
{
switch (code)
case 'C':
case 'c':
value=cel;
fah=cel*1.8+32;
kel=cel+273;
printf(" F %f \n K %f ",fah,kel);
break;
switch (code)
case 'K':
case 'k':
value=kel;
cel=kel-273;
fah=cel*1.8+32;
printf(" C %f \n F %f",cel,fah);
break;
switch (code)
case 'F':
case 'f':
value=fah;
cel=(fah-32)*10/18;
kel=cel-273;
printf(" C %f \n K %f",cel,kel);
break;
}
getch();
return(0);
}


http://codepad.org/4zZALvUe

Sadece C kısmını ve switchleri düzelttim. Scanf de biraz garip gibi. Yanayana istiyorsun.

Cevap için teşekkürler yalnız dev c++ sizin yazdığınız program da hata veriyor 40. satırda bi de 8. satırda yazdığınız value=32.0f; ne işe yarıyor onu anlamadım açıkçası


scanf'te girdileri hep yan yana istiyo bizim hocalar ondan öyle yazıyorum

Alıntıları Göster
quote:


quote:


http://codepad.org/4zZALvUe

Sadece C kısmını ve switchleri düzelttim. Scanf de biraz garip gibi. Yanayana istiyorsun.

Cevap için teşekkürler yalnız dev c++ sizin yazdığınız program da hata veriyor 40. satırda bi de 8. satırda yazdığınız value=32.0f; ne işe yarıyor onu anlamadım açıkçası

32.0 veya 32 yaz. Ben 32.0 tercih ederdim. Hatta o satırı kaldır. Ben o satırı codepad.org sayfasında sonuç bastırabilmek için girdim. Sen kendi scanf satırını kullanacaksın.
#include <conio.h> da o sayfada hata verdiğinden kaldırdım. Sen sadece switch kısmına ve ilk case 'c' case 'C' kısmına odaklan.





< Bu mesaj bu kişi tarafından değiştirildi garui -- 11 Kasım 2012; 19:56:05 >
Bu mesaja 1 cevap geldi.
M
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: garui

quote:


quote:


http://codepad.org/4zZALvUe

Sadece C kısmını ve switchleri düzelttim. Scanf de biraz garip gibi. Yanayana istiyorsun.

Cevap için teşekkürler yalnız dev c++ sizin yazdığınız program da hata veriyor 40. satırda bi de 8. satırda yazdığınız value=32.0f; ne işe yarıyor onu anlamadım açıkçası

32.0 veya 32 yaz. Ben 32.0 tercih ederdim. Hatta o satırı kaldır. Ben o satırı codepad.org sayfasında sonuç bastırabilmek için girdim. Sen kendi scanf satırını kullanacaksın.


Son olarak şunu yazdım büyük oranda doğru çalışıyor yalnız fahrenheit girince girdiye hatalı sonuç veriyo neden olduğunu anlıyamadım son kod şu

#include<stdio.h> 
#include<conio.h>
int main (void)
{
char code;
float value,cel,fah,kel;
scanf("%c%f",&code,&value);
switch (code) {

case 'C':
case 'c':
value=cel;
fah=cel*1.8+32;
kel=cel+273;
printf(" F %f \n K %f ",fah,kel);
break;

case 'K':
case 'k':
value=kel;
cel=kel-273;
fah=cel*1.8+32;
printf(" C %f \n F %f",cel,fah);
break;

case 'F':
case 'f':
value=fah;
cel=(fah-32)*10/18;
kel=cel+273;
printf(" C %f \n K %f",cel,kel);
break;

default:
printf("Wrong code (%c) !\n",code);
break;
}
getch();
return(0);
}



hatalı kısım ise şurası

case 'F': 
case 'f':
value=fah;
cel=(fah-32)*10/18;
kel=cel+273;
printf(" C %f \n K %f",cel,kel);
break;


F 212 olarak girdiğimde bana (212-32)*10/18'den celcius için 100 derece kelvin için de 273+100'den 373 vermesi lazım ama sırayla -17'ye 255 veriyor


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

quote:

Orijinalden alıntı: garui

quote:

Orijinalden alıntı: strahd_von_zarovich

quote:

Orijinalden alıntı: Roxy.

quote:

Orijinalden alıntı: strahd_von_zarovich

Biraz garip olacak ama long int ile int niye aynı kapasitede sayı tutuyor . Ve unsigned int e mesela -2 verdiğimde değeri neden +4,294,967,294 oluyor ?

adından da anlaşılacağı gibi unsigned, yani işaretsiz, sadece işaretsiz değerler girilebilir. yine de işaretli değer girilebilir, eğer işaretli bir değer girilirse derleyici bu değeri alır ve belirli bir kurala göre başka bir değer aktarır. derleyiciden derleyiciye farklılık gösterebilir.

İnt in değeri derleyiciden derleyiciye farklılık gösterebiliyor ama , - nin işlenmesi aynı anladığım kadarıyla. int kaç bitlikse bende mesela 32 bit -3 gibi bir değer verildiğinde 2^32-3 değerini alıyor ama nedenini çözemedim.


unsigned int niye int in yaklaşık 2 katı pozitif değer alır diye düşünmekle başla. Data Type Ranges

int 32 bit tanımlanır. Negatif ve Pozitiflik MSB(Most Significant Bit) -yani 32. bit diyebiliriz - bitinde tutulur.

8 bitlik bi sayı ile anlatıyım. Memoryde aşağıdaki gibi tutulduklarını düşün.
00000011 = signed 3 = unsigned 3
11111101 = signed -3 = unsigned 253

Şimdi sen -3 diyince unsigned int değişkene 11111101 değerini atıyorsun. unsigned int için bu değer 253 demek. Eğerki biz 11111101 memory bloğuna bu aslında int deseydik bilgisayar bu sayıyı int olarak ele alıcak. Bakıcak MSB 1 yani bu sayı negatif. Üstinde 2's complement uyguluycak (1's complement +1) bu sayının negatif değerini bulmak için. Sonuç 00000010 + 1 = 00000011 = 3 ama negatif yani -3.
Daha fazla açıklama için 2's complement wiki sayfası --> Two's Complement

Neden böyle bir yöntem ile sayıların memory üzerinde tutulduğunu soruyorsan Wiki sayfasında da belirtilmiş. Çoğu matematik işlem üzerlerinde direk uygulanabiliniyor.

Örnek :

-3 + 5 = 11111101 + 00000101 = 100000010 (9.bit 8bit memory üstünde işlem yaptığımızdan Carry Bit olarak algılanacak.) Elimizde 8 bit olarak memoryde 00000010 var. Sonuç : 2.
-3 + 2 = 11111101 + 00000010 = 11111111 (Sonuç 8 bit. Carry Bit taşması yok.) Sonuç : MSB'e bakıyoruz 1 yani sonuç negatif. 11111111 -> (2's complement) -> 00000000 + 1 = 00000001. Yani -1.

Basit olarak şöyle diyebiliriz. Sayıların bellekteki görünümleri aynı olsa bile işaretli ve işaretsiz olarak yorumlanmaları farklıdır. Mesela 1111 1110 verisine signed char üzerinden erişirsek -2, unsigned char üzerinden erişirsek 254 sonucunu alırız.

union {
char a;
unsigned char b;
};
b = 200;

printf("b = %d\n", b); // 200
printf("a = %d\n", a); // -56
İki sayıda binary olarak aynı olsada yorumlanmaları farklı. Bir diğer konu da pointerlar.

char* bptr = (char*) &b;
printf("b = %d\n", *bptr); // -56

b içindeki veriye signed (char) olarak erişildiğinden -56 elde edildi.



G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: jervis

merhabalar ben h.tepede 1. sınıftayım hocamız bize kendi kütüphanenizi oluşturun dedi ben codeblcks kullanıyorum
program hakkında bilginiz var mı bir de kütüphaneyi nasıl oluşturacağım?

Hocan sadece bu kadar dediyse,

http://stackoverflow.com/questions/42770/writing-using-c-libraries

içine bir de,

#ifndef __myCuteLibrary
#define __myCuteLibrary
.
.
.
.
.
.
#endif

yaparsın tamamdır.

Bir de buna benzer class için yaparsın. C++ olur.

http://en.wikipedia.org/wiki/Library_(computing) --> Static linking, dynamic linking vs...





< Bu mesaj bu kişi tarafından değiştirildi garui -- 12 Kasım 2012; 0:46:42 >
Bu mesaja 1 cevap geldi.
J
13 yıl
Binbaşı

quote:

Orijinalden alıntı: garui

quote:

Orijinalden alıntı: jervis

merhabalar ben h.tepede 1. sınıftayım hocamız bize kendi kütüphanenizi oluşturun dedi ben codeblcks kullanıyorum
program hakkında bilginiz var mı bir de kütüphaneyi nasıl oluşturacağım?

Hocan sadece bu kadar dediyse,

http://stackoverflow.com/questions/42770/writing-using-c-libraries

içine bir de,

#ifndef __myCuteLibrary
#define __myCuteLibrary
.
.
.
.
.
.
#endif

yaparsın tamamdır.

Bir de buna benzer class için yaparsın. C++ olur.

http://en.wikipedia.org/wiki/Library_(computing) --> Static linking, dynamic linking vs...

teşekkür ederim..


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

quote:

Orijinalden alıntı: uykusu gelen adam

merhaba arkadaşlar, sorum şu;
rastgele değerler alacak 10 elamanlı dizide tek sayıları başa çift sayıları sona yazacak programı c++ta yapacağım. rastgele 10 sayıyı yazdırabiliyorum ama bunların tek olanları başa çift olanları sona yazdıramıyorum.

kodun son hali bu şekilde;

#include<stdio.h> 
#include<stdlib.h>
#include<time.h>
int main()
{
int a[10];

srand(time(0));
for(int i=0;i<10;i++)
a[i] =rand()%100;


for(int i=0;i<10;i++)
{
printf("%d\n",a[i]);
}

printf("\n\n\n");

for(int i=0;i<10;i++)
{

if(a[i]%2!=0)
printf("%d\n" ,a[i]);

else
????????

}





system("pause");


}


Istersen bundan yararlanabilirsin. QuickSort Modifikasyonu. Ben biraz modifiye ettim hesaplamalarin ustunde fazla durmadan. Cok daha kolay olara bu is yapilir mi ? Evet tabiki yapilir. Ama bilgi olur sana.

QuickSort -->http://login2win.blogspot.com/2011/06/what-is-quick-sort-algorithm-how-to.html

 
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define INPUT_SIZE 10

void print(int *input)
{
for ( int i = 0; i < INPUT_SIZE; i++ )
printf("%d ", input[i]);
printf("\n");
}

// The partition function
int partition(int* input, int p, int r)
{
while (p < r)
{
while ( input[p]%2 == 0 )
p++;

while ( input[r]%2 != 0 )
r--;

if( p < r)
{
int tmp = input[p];
input[p] = input[r];
input[r] = tmp;
}
}

return r;
}

// The quicksort recursive function modification for odd even
void quicksort(int* input, int p, int r)
{
if ( p < r )
{
int j = partition(input, p, r);
if( j > p) {
quicksort(input, p, j-1);
quicksort(input, j+1, r);
}
}
}

int main()
{
int myInput[INPUT_SIZE];

srand(time(0));
for(int i=0;i<INPUT_SIZE;i++)
myInput[i] =rand()%100;

print(myInput);

quicksort(myInput, 0,(INPUT_SIZE -1));

print(myInput);

system("pause");
return 0;
}


Output: #define INPUT_SIZE 10

91 22 45 94 93 48 74 20 67 64
64 22 20 94 74 48 93 45 67 91

Output: #define INPUT_SIZE 30

74 6 46 20 16 93 19 80 69 16 19 31 48 21 27 63 2 80 74 2 6 42 17 58 98 50 13 40 4 73
74 6 46 20 16 4 40 80 50 16 98 58 48 42 6 2 2 80 74 63 27 21 17 31 19 69 13 19 93 73





< Bu mesaj bu kişi tarafından değiştirildi garui -- 13 Kasım 2012; 15:38:46 >
Bu mesaja 1 cevap geldi.
G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: Naples

C# da kullanıcı 5a+6b gibi bir değer girdiğinde buradaki değerleri nasıl ayrıştabilirim?
Örneğin a kısmı = 5 gibi

Regex isini gorur gibi geliyor.

http://oreilly.com/windows/archive/csharp-regular-expressions.html


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

quote:

Orijinalden alıntı: Naples

Arkadaşlar C# Math trigonometri fonksiyonlarında yardım gerekiyor.

Öncelikle tan 1/kök3=60 derece bunu biliyoruz. Ben bu bölme işlemini yaptırdığımda 1.7320508075688774 bu sonucu buluyorum ve program 1.7320508075688 buraya kadar yazdırıyor.

Math.Tan fonksiyonuyla tan60ı bulmaya çalışınca 1.7320508075688767 bu sonuç çıkıyor ve yine 1.7320508075688 buraya kadar yazdırıyor.
Programımda eğer bu derece bulmaya çalışınca bunlar eşit olmuyor haliyle...
Şimdi bu iki şey yanlış mı? Bize mi yanlış öğretildi ben mi yanlış yapıyorum?

Teşekkürler

Hem doğru hem yanlış yapıyorsun. Kodu görmedim ama sorunun kayar nokta aritmetiği (floating point arithmetic) olduğunu söyleyebilirim. Bunların karşılaştırması == ile ancak değerler üzerinde işlem yapılmadıysa mümnkündür. Herhangi bir aritmetik işlem uygulandığı anda ortalık karışır :) (1.0/10.0 == 0.1)(false) diyebiliriz ama (0.1 == 0.1)(true) dur..

http://www.codeproject.com/Articles/16646/Reliable-Floating-Point-Equality-Comparison

http://csharp.2000things.com/tag/epsilon/

İşin içinde daha fazlası var diyebilirim. Hesaplamalardan gelecek değerlere göre mesela 2. linkteki EPILSON değeri işe yaramayabilir.


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

quote:

Orijinalden alıntı: garui

quote:

Orijinalden alıntı: Naples

Arkadaşlar C# Math trigonometri fonksiyonlarında yardım gerekiyor.

Öncelikle tan 1/kök3=60 derece bunu biliyoruz. Ben bu bölme işlemini yaptırdığımda 1.7320508075688774 bu sonucu buluyorum ve program 1.7320508075688 buraya kadar yazdırıyor.

Math.Tan fonksiyonuyla tan60ı bulmaya çalışınca 1.7320508075688767 bu sonuç çıkıyor ve yine 1.7320508075688 buraya kadar yazdırıyor.
Programımda eğer bu derece bulmaya çalışınca bunlar eşit olmuyor haliyle...
Şimdi bu iki şey yanlış mı? Bize mi yanlış öğretildi ben mi yanlış yapıyorum?

Teşekkürler

Hem doğru hem yanlış yapıyorsun. Kodu görmedim ama sorunun kayar nokta aritmetiği (floating point arithmetic) olduğunu söyleyebilirim. Bunların karşılaştırması == ile ancak değerler üzerinde işlem yapılmadıysa mümnkündür. Herhangi bir aritmetik işlem uygulandığı anda ortalık karışır :) (1.0/10.0 == 0.1)(false) diyebiliriz ama (0.1 == 0.1)(true) dur..

http://www.codeproject.com/Articles/16646/Reliable-Floating-Point-Equality-Comparison

http://csharp.2000things.com/tag/epsilon/

İşin içinde daha fazlası var diyebilirim. Hesaplamalardan gelecek değerlere göre mesela 2. linkteki EPILSON değeri işe yaramayabilir.






2.linkteki işime yarıyor. Ancak kullanıcı 60 derece girerse örneğin1,2345678 çıkıyorsa 61 girince 1,2346678 çıkıyor. Yani buradan ancak belirli şeyleri çıkarmaya yarar. Yardımınız için teşekkürler.
Ancak neden böyle sonuçlar çıkıyor? Yani bunların eşit olması gerekmez miydi?


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

quote:

Orijinalden alıntı: Naples

quote:

Orijinalden alıntı: garui

quote:

Orijinalden alıntı: Naples

Arkadaşlar C# Math trigonometri fonksiyonlarında yardım gerekiyor.

Öncelikle tan 1/kök3=60 derece bunu biliyoruz. Ben bu bölme işlemini yaptırdığımda 1.7320508075688774 bu sonucu buluyorum ve program 1.7320508075688 buraya kadar yazdırıyor.

Math.Tan fonksiyonuyla tan60ı bulmaya çalışınca 1.7320508075688767 bu sonuç çıkıyor ve yine 1.7320508075688 buraya kadar yazdırıyor.
Programımda eğer bu derece bulmaya çalışınca bunlar eşit olmuyor haliyle...
Şimdi bu iki şey yanlış mı? Bize mi yanlış öğretildi ben mi yanlış yapıyorum?

Teşekkürler

Hem doğru hem yanlış yapıyorsun. Kodu görmedim ama sorunun kayar nokta aritmetiği (floating point arithmetic) olduğunu söyleyebilirim. Bunların karşılaştırması == ile ancak değerler üzerinde işlem yapılmadıysa mümnkündür. Herhangi bir aritmetik işlem uygulandığı anda ortalık karışır :) (1.0/10.0 == 0.1)(false) diyebiliriz ama (0.1 == 0.1)(true) dur..

http://www.codeproject.com/Articles/16646/Reliable-Floating-Point-Equality-Comparison

http://csharp.2000things.com/tag/epsilon/

İşin içinde daha fazlası var diyebilirim. Hesaplamalardan gelecek değerlere göre mesela 2. linkteki EPILSON değeri işe yaramayabilir.






2.linkteki işime yarıyor. Ancak kullanıcı 60 derece girerse örneğin1,2345678 çıkıyorsa 61 girince 1,2346678 çıkıyor. Yani buradan ancak belirli şeyleri çıkarmaya yarar. Yardımınız için teşekkürler.
Ancak neden böyle sonuçlar çıkıyor? Yani bunların eşit olması gerekmez miydi?

float ve double sayılar senin düşündüğün şekilde gösterilmediğinden eşit çıkmıyor.

http://www.binaryconvert.com/result_float.html?decimal=048046049

http://www.math.grinnell.edu/~stone/courses/fundamentals/IEEE-reals.html

Yukarıdaki örnekte anlatmaya çalıştığını sanırım yeni anladım. Eğer EPSILON 0.00001 aldıysan 60(1,2345678 + 0.00001 = 1,2345778 ve 1,2345678 - 0.00001 = 1,2345578) ve 61 (1,2346678) farklı çıkması doğal. Zaten 60 ve 61 farklı olduğundan bu EPSILON değeri bu değerler için mantıklı görünüyor.





< Bu mesaj bu kişi tarafından değiştirildi garui -- 17 Kasım 2012; 15:43:16 >
Bu mesaja 1 cevap geldi.
-
13 yıl
Yüzbaşı

Beyler C++ bilenler lütfen yardım etsin.
Vizeye eklenicekmiş Adam hiçbişiyi doğru dürüst anlatmadı Bende anlayamadım.


http://iibf.bartin.edu.tr/ybs/files/dersnotlari/59_VYS%20%C3%96vev1.pdf

Nasıl yapılacağı hakkında hiçbir fikrim yok yapabilen arkadaşlar varsa pastebin'e kodu atıp linkini verirlerse çok sevinirim.

Edit:

DEV C++ ile çalıştırılacak.





< Bu mesaj bu kişi tarafından değiştirildi -Apeiron- -- 17 Kasım 2012; 14:32:09 >
Bu mesaja 2 cevap geldi.
G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: darrenjonas

Beyler C++ bilenler lütfen yardım etsin.
Vizeye eklenicekmiş Adam hiçbişiyi doğru dürüst anlatmadı Bende anlayamadım.


http://iibf.bartin.edu.tr/ybs/files/dersnotlari/59_VYS%20%C3%96vev1.pdf

Nasıl yapılacağı hakkında hiçbir fikrim yok yapabilen arkadaşlar varsa pastebin'e kodu atıp linkini verirlerse çok sevinirim.

Edit:

DEV C++ ile çalıştırılacak.

Bunu yapamıyorsan vizede nasıl yapıcaksın ?

Google veya buraya bunları yaz bulursun.
C++

for
while
% operator
scanf veya cin
printf veya cout
fibonacci için (belki recursive function)

Hocanız bunlarıda anlatmadıysa belki sen yanlış derse girdin ve yanlış ödevi aldın.

Ekleme : Hocan hiç anlatmadı diyelim. Daha size #include bile göstermedi mesela kendin öğren. Vizede de buraya acil bu soruyu çözün mü diyeceksin ?
Linkteki dökümanın ilk 52 sayfası recursive function dahil öğrenirsin. Hatta sana ilk 40 sayfa bile yetebilir. Okuman iki saati bulmaz. Genel tanımlamaları gör satır satır okuma. Kodu yazarken dönüp bakarsın.

http://www.cplusplus.com/files/tutorial.pdf





< Bu mesaj bu kişi tarafından değiştirildi garui -- 17 Kasım 2012; 15:24:09 >
Bu mesaja 1 cevap geldi.