Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

لم أفهم هذا الكود

هذا كود بلغة كوتلن:

fun main(args: Array<String>) {
var n:Int
var s = 0
do
{
print("Enter a number one: ")
n = readLine()!!.toInt()
}
while(n<1 || n%2 == 0)
for (i in 1 .. n/2+1)
{
s++
for (k in 1 until (n/2)-i+2)
{
print(" ")
}
for (j in 1 .. i*2-1)
{
if ( j == 1 || j == s*2-1)
{
print("*")
}
else
{
print(" ")
}
}
println()
}
s = n
for (f in 1 .. n/2)
{
for (k in 1 .. f)
{
print(" ")
}
for (j in 1 until ((n/2)+2-f)*2-2)
{
if(j == 1 || j == s-(f*2))
{
print("*")
}
else
{
print(" ")
}
}
println()
}
}
fun main(args: Array<String>) { var n:Int var s = 0 do { print("Enter a number one: ") n = readLine()!!.toInt() } while(n<1 || n%2 == 0) for (i in 1 .. n/2+1) { s++ for (k in 1 until (n/2)-i+2) { print(" ") } for (j in 1 .. i*2-1) { if ( j == 1 || j == s*2-1) { print("*") } else { print(" ") } } println() } s = n for (f in 1 .. n/2) { for (k in 1 .. f) { print(" ") } for (j in 1 until ((n/2)+2-f)*2-2) { if(j == 1 || j == s-(f*2)) { print("*") } else { print(" ") } } println() } }

لو افترضنا أن المستخدم أدخل قيمة n = 5 ففي السطر 15:

for (k in 1 until (n/2)-i+2)
for (k in 1 until (n/2)-i+2)

نتيجة هذه المعادلة:

(n/2)-i+2
(n/2)-i+2

هو 3.5 على فرض أن قيمة i = 1 و أننا في السطر الأول من نتيجة التشغيل.

و بما أن نتيجة هذه المعادلة هي 3.5 فبالتالي يجب أن يطبع الفراغات ثلاث مرات و لكن البرنامج قام بطباعتها مرتين و ليس ثلاث مرات فأين المشكلة؟


وكذلك بالنسبة لهذا الكود، في السطر 39:

for (j in 1 until ((n/2)+2-f)*2-2)
for (j in 1 until ((n/2)+2-f)*2-2)

نتيجة هذه المعادلة:

((n/2)+2-f)*2-2
((n/2)+2-f)*2-2

هو 5 على فرض أن قيمة f = 1 وأننا في السطر الرابع من نتيجة التشغيل.

و بما أن نتيجة هذه المعادلة هو 5 فبالتالي يجب أن يطبع الفراغات أو النجوم 4 مرات و لكن البرنامج قام بطباعته 3 مرات و ليس 4 مرات فأين المشكلة؟

تعليقات 1

أضف تعليق

يجب تسجيل الدخول حتى تتمكن من إضافة تعليق أو رد.