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. |
Arkadaşlar C'de (n!)/(2n+1)! n sonsuza giderken bir main function ve bir function yapmam gerek. Do while ile olması zorunlu ve bir epsilion aralığında (1E-06 and 1E-12.) yapmam gerekiyor. Algoritma hakkında biraz yardımcı olabilir misiniz acaba? |
Oteki func da n! hesapla. func a (int tipinde olsun bu) int asd = 1 tanimla for loop n sifirdan buyuk olma sartiyla asd = asd x n decrement n end loop return asd Eger C/C++ icin sorduysan asd yi burda tanimlamak yerine main functionda tanimlayip bu fonksiyona pass et pointer ile. Degerini degistirip geri gonder. C# icin sanirim buna benzer bir yol vardi. main loopta da gerisini yapabilirsin, unutma condition while da olup, while a ulasmadan yapiliyor. Eger odev vs degilse, do while kullanimini tavsiye etmem. |
Ne yazıkki ödev. Do while olması gayet sıkıntı oldu zaten. |
speclerde yaziyor mu diger function ne icermeli diye? |
Within the FUNCTION: . In a do-while loop: . Continue adding up the terms until |Sn+1 - Sn| < EPSILON. . Sn is the sum of the first n-terms. . Sn+1 is the sum of the first (n+1)-terms. When the desired accuracy EPSILON is reached print the SUM and the number of TERMS added to the sum. İterasyon olarakta S1, S2 değişimi yapıp fonksiyonu devam ettirmek gerekecek galiba. |
İ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. |
C++ kodlarını C'ye çevirebilecek bir eklenti gibi birşey var mıdır acaba? #include <iostream> Bunu C kodu olarak çalıştıramıyorum. Printf ve scanf leri düzeltip attığımda forlarda hata alıyorum. |
iyi akşamlar key.preview ne işe yarar??? |
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. |
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> |
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 |
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. |
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> hatalı kısım ise şurası case 'F': 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 |
Dikkatini toplamamışsın :) value=cel; scanf ile value değerini alıyorsun. cel daha değer almamış. Memoryde o an orada ne yazıldıysa onun değerini value'ya aktarıyorsun. Senin cel=value; kel=value; fah=value; yazman gerek. İlk seferde farketmen için özellikle sadece Celcius için düzeltmiştim. Altta hepsini düzeltmiş bulundum böylece. ( %.2f , sayının basamaktan sonra son iki hanesini bas demek. Biraz yuvarlama yapmış olduk böylece) #include<stdio.h> |
Ya aslında o aklıma geldi de sonra dedim ki kelvin ve celcius için doğru değer veriyor fahrenheit için neden vermesin? Dediğiniz gibi yaptım şimdi tamamen düzgün çalışıyor teşekkürler ![]() |
Rica ederim :) Yukarıda basamaktan sonra iki hanesi yazmışım. Pardon. Noktadan sonra iki hane olacaktı. Yanlış yazmışım. |
Hocam bu value=fah ile fah=value olayı kafama tam yatmadı ![]() |
Bu mesaja 1 cevap geldi. Cevapları Gizle