C++ Dan Anlayan Müritler
-
Öncelikle bir sayını ondalık kısmı
sayi-abs(sayi)
olmalıdırTam olarak hangi hatayı veriyor?
-
arkadaşlar mesela sayı
75,65
bu sayıyı en yakın tam sayıya çevircek
76 olcak sayı
76 'ya en yakın tam kare sayı
8x8=64 --- 9x9=81
81 'e daha yakın olduğu için onu seççek ve aradaki farkı bulcak
81-76 = 5
adam negatif bi değer girse bile iplemicek onu pozitif gibi görüp devam etcek
şu an geldiğimiz seviye fabs lara kadar.
yani bu seviyeye göre bunun c++ kodu nedir ?
:/
-
Arkadaşlar daha detaylı anlatılmak gerekirse;
Sayı=3,12 olsun
sayının tam kısmı olan 3 yukarı yuvarlanıp 4
ve sayı aşağı yuvarlanıp 3 bulunacak
3=32=9 =|9-12|=3
4=42=16=|16-12|=4
9 daha yakın diyecek
-
kerim bunu yazdı:
-----------------------------
arkadaşlar mesela sayı
75,65
bu sayıyı en yakın tam sayıya çevircek
76 olcak sayı
76 'ya en yakın tam kare sayı
8x8=64 --- 9x9=81
81 'e daha yakın olduğu için onu seççek ve aradaki farkı bulcak
81-76 = 5
adam negatif bi değer girse bile iplemicek onu pozitif gibi görüp devam etcek
şu an geldiğimiz seviye fabs lara kadar.
yani bu seviyeye göre bunun c++ kodu nedir ?
:/
-----------------------------kerim'in arkadaşı da bunu yazdı:
Ondalıklı kısmı 2 haneli olan Pozitif bir rasyonel sayının ondalıklı kısmının tam sayı değerinin en yakın tam kare sayıya olan uzaklığı bulan C programı
----------------------------
Biri tam kısmından bahsediyor diğeri ondalıklı kısmından.
Edit: bir üstteki mesajda da kerim'in arkadaşı tam kısımdan bahsediyor.
Hangisine göre yapılacak?
-
hüsonun dedikleri doğru g**ümden algıladım ödevi :|
ondalıklı kısmı alcak
sayı = 3,12
ondalığı = 0,12
virgülden kurtar = 0,12x100 =12
12 > 9 (3ün karesi) 'amı yakın 16 (4ün karesi) 'yamı yakın
onu bulcak 9 a daha yakın
9-12 = -3
ama bu pozitif şekilde yazcak.
uğraşan arkadaşlara teşekkürler. :$
-
abs çalışmadı nedense o yüzden double type cast ile biraz karışık görünüyor ama sanırım istediğin işi yapıyor.
#include <iostream> #include <math.h> using namespace std; int ondalikBul (double d) { return (int)((d - ((int) d)) * 100); } int enYakinTamKareyiBul (int n) { int dizi[] = {0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100}; int i, enKucukFark=100, enKucukFarkIndeks=0; for (i=0; i<11; i++) { if (fabs ((double) (n - dizi[i])) < enKucukFark) { enKucukFark = fabs ((double) (n - dizi[i])); enKucukFarkIndeks = i; } } return dizi [enKucukFarkIndeks]; } int main () { int ondalik, enYakin, fark; double sayi; cout << "Sayiyi gir: "; cin >> sayi; sayi = fabs ((double)(sayi)); ondalik = ondalikBul(sayi); enYakin = enYakinTamKareyiBul (ondalik); fark = fabs ((double)(ondalik - enYakin)); cout << "Ondalik kisim: " << ondalik << endl; cout << "En yakin tamkare: " << enYakin <<endl; cout << "Fark: " << fark << endl; system ("pause"); return 0; } -
JPriest
teşekkür ederiz öpüldün :)
♥ ❤
-
hocam çok sağol :) ellerine sağlık
-
Önemli değil. Ama anlamadığınız bir yer varsa vermeyin ödevi, yoksa ödevin pek anlamı kalmaz.
-
Araştırdığım kadarıyla Bazı derleyiclerde mat fonksiyonları için farklı duyarlık seviyesi isteyebiliyormuş .. o çeşit bir problem olabilir yani... yani fabs () double falan olabilir... fakat devc++ da bu ayarlamalar otomatik olduğundan problem olmaz da deniyor... Bir de DEVC++ ile deneyin...
ama diğer yandan zaten pozitif bir sayı için abs=int dir..( düzeltme : değildir tabi ki ya kafamı karıştırdınız abs bir sayıyı negatifse pozitif yapar o kadar ) Yani girdi değişken zaten int olarak tanımlanırsa girdi değişken zaten mutlak değere de eşit olur..
Bir de denemek için sadece bir sayının mutlak değerini alan bir program yazın ki sorun fabs'den mi yoksa başka bir yerden mi geliyor.. Derleyici mutlaka bir hata kodu veriyordur .. Aceba hata kodunu derleyici mi veriyor yoksa program çalışma sırasınsda mı veriyor?
