[ASP/PHP] Matematik İşlem Sorusu
-
Rastgele matematik işlemi ve sonucu oluşturmaya çalışıyorum. Yapmak istediğim olay şu şekilde;
(random sayı - 99999) [random işlem] (random sayı - 999) [random işlem] (random sayı - 99) = [sonuç]
buraya kadar bir sıkıntı yok ancak sıkıntı random işlemlerde bölmeye ya da çarpmaya denk gelirsem sayılara göre ondalık sayılar veriyor.. Benim tam ve pozitif sayı verecek şekilde işlemler oluşturmam lazım
Matematikle aram yoktur ortaokuldan üniye kadar hep matematikten kalmışımdır. Sonuçtan yola çıkarak sadece 2 işlemde sıfırı bulma ya da ilk sayıdan yola çıkarak sonucun hep pozitif tam sayı olmasını sağlayacak bir fikir lazım ya da ASP/PHP alanında böyle bir kod varsa paylaşılması lazım. Çok şey lazım evet ama yapmam lazım :|
-
hocam asp'de cint ve ya int parantezine al çıkan sonucu.
edit: dur bi uğraşayım bakalım pek anlamadım istediğini ama şu işlemleri yazdığın satır gibi bişe yapam.
by_Tet tarafından 03/Ağu/12 22:43 tarihinde düzenlenmiştir -
pozitif sayi için abs();
yuvarlama için de floor(); kullanabilirsin.
round(); -> 3.5 'i 4 yapar.
floor(); -> 3.9 bile 3 alır.
pSkpt tarafından 03/Ağu/12 22:43 tarihinde düzenlenmiştir -
amacım yuvarlamak değil. matematik işlemini insanların kafadan yapabileceği şekilde basitçe otomatik hazırlayıp soru olarak sormam.. yani adam kafasından çözerken bu ondalık çıkıyor ya da sonucu negatif çıkıyor dememesi lazım. bana saf ve temiz pozitif tam sayı çıkaracak işlemler hazırlamak için bir yol lazım
pesimistzombie tarafından 03/Ağu/12 22:44 tarihinde düzenlenmiştir -
pesimistzombie bunu yazdı
hocam amacım yuvarlamak değil. matematik işlemini insanların kafadan yapabileceği şekilde basitçe otomatik hazırlayıp soru olarak sormam.. yani adam kafasından çözerken bu ondalık çıkıyor ya da sonucu negatif çıkıyor dememesi lazım. bana saf ve temiz pozitif tam sayı çıkaracak işlemler hazırlamak için bir yol lazım
sen çözümü değil soruyu istiyorsun?
-
Şimdi biraz daha basitçe anlatayım mantık bahsettiğim gibi bu;
(random sayı - 99999) [random işlem] (random sayı - 999) [random işlem] (random sayı - 99) = [sonuç]
script hem soruyu oluşturacak hem de çözümü bulup saklayacak insanlar da sadece soruyu görüp sonucu tahmin edecek..
İnsanlar bu işlemleri kafadan yapacak atıyorum script 122 *15 / 21 = 87.14.... oluşturdu adam kafadan çözerken bakacak ne biçim soru bu lan 87.14 çıkıyor sonuç demeyecek .. 20 / 4 * 2 = 10 gibi tam ve net sorular ve cevaplar oluşturmak zorundayım
-
cevabın tam sayı olmasını istiyosun yani. eveleme geveleme olmadan direk 3-5-7 neyse o olcak cevap.
edit. abi şey yap. mesela fonksiyonu yazdın. cevap kesirli ise fonksiyonu tekrar çalıştırt. tam sonuç çıkana kadar çalışsın. bu tabi performanslı olmaz ama iş görür. 3-4 denemedede bulabilir 10-20 dede :D
FOXXLY tarafından 03/Ağu/12 22:56 tarihinde düzenlenmiştir -
canlı örnek: http://pesimistzombie.com/bul.asp
@föxcüm dolandırdıkça dolandırırım o sorun değil de matematikte vardır bunun formülleri ip uçları hileleri diye şey ediyorum :v ondalıklı ve negatif sonuçlar canımı sıkıyor
-
Al hocam elimden geldiğince nacizhane :)
<% function sayiuret() sayilar1 = Array(10,20,30,40,50,60,70,80,90) sayilar2 = Array(1,2,3,4,6,9) sayilar3 = Array(3,6,9,12,15,30,60,90,45) islemler = Array("+","-","*","/") randomize() sayi1 = cint(rnd * 8) sayi2 = cint(rnd * 5) sayi3 = cint(rnd * 8) islem1 = cint(rnd * 3) islem2 = cint(rnd * 3) yazdir = "uret = ("&sayilar1(sayi1)&islemler(islem1)&sayilar2(sayi2)&islemler(islem2)&sayilar3(sayi3)&")" executeglobal yazdir if uret < 0 or instr(uret,",") then sayiuret else soru = replace(yazdir,"uret = ","",1,-1,1) response.write "İşlem: "&soru&"<br>" response.write "Sonuç: "&uret end if end function response.write sayiuret %> -
by_Tet bunu yazdı
Al hocam elimden geldiğince nacizhane :)
<% function sayiuret() sayilar1 = Array(10,20,30,40,50,60,70,80,90) sayilar2 = Array(1,2,3,4,6,9) sayilar3 = Array(3,6,9,12,15,30,60,90,45) islemler = Array("+","-","*","/") randomize() sayi1 = cint(rnd * 8) sayi2 = cint(rnd * 5) sayi3 = cint(rnd * 8) islem1 = cint(rnd * 3) islem2 = cint(rnd * 3) yazdir = "uret = ("&sayilar1(sayi1)&islemler(islem1)&sayilar2(sayi2)&islemler(islem2)&sayilar3(sayi3)&")" executeglobal yazdir if uret < 0 or instr(uret,",") then sayiuret else soru = replace(yazdir,"uret = ","",1,-1,1) response.write "İşlem: "&soru&"
" response.write "Sonuç: "&uret end if end function response.write sayiuret %>Düzenlerkene editörün kafası karıştığından alıntı yaparak anlatıyım dedim :)
Arraydaki sayılara göre işlem yapar bunu artırabilirsin. Ama ben en mantıklı haliyle yapayım dedim. Yine de 10 tanede 1 de olsa virgüllü sayı çıkıyordu. İnstr ile "," arattım tekrar yaptırdım. Eğer 0'dan küçükse de aynı şekilde. Ayrıca dikkat etmen gereken bir nokta da executeglobal yapıp işlemleri ekrana yazdırabilmen. Sonracıma bir de randomizeleri arraydaki toplam veriden 1 eksik yapman.
edit: istersen önizleme için şurdan: iyibu.org/rand.asp
by_Tet tarafından 03/Ağu/12 23:20 tarihinde düzenlenmiştir -
@by_Tet eyvallah hazır sayılarla yapmak daha mantıklı gibi şuan işkence çekmektense.. bir diğer yol olarak da asla bölme yaptırmamayı uygun buldum :v ya vardır bunun ufak bi püf noktası da işte keşke matematiğim iyi olsaymış :D
