برنامه چاپ یک لوزی از اعداد در ویژوال بیسیک

iceboy67

Member
برنامه ای بنویسید که خروجی زیر را نمایش دهد.

1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 3 2 1
1 2 3 2 1
1 2 1
1​
 

armin_mx

Member
بازم از این سوالا داشتی بگو...
Private Sub Command1_Click()
Spacee = (Me.ScaleWidth \ 140)
Print Spc(s);
For i = 0 To 5
Spacee = Spacee - 2
Print Spc(Spacee);
For j = 1 To i
Print j;
Next
For n = i - 1 To 1 Step -1
Print n;
Next
Print
Next
'mosalase dovom
Spacee = Spacee + 2
Print Spc(Spacee);
For j = i - 2 To 1 Step -1
For n = 1 To j
Print n;
Next
For d = j - 1 To 1 Step -1
Print d;
Next
Print
Spacee = Spacee + 2
Print Spc(Spacee);
Next
End Sub
 

Ultra_PRG

Member
لوزی اعداد

اینم یه مثال دیگه :





Tr.JPG


مشاهده پیوست Tr.zip
 

Milad_ATM

New Member
چجوری در vb اینو چاپ کنم ؟

من یه برنامه می خوام که اینو چاپ کنه ؟(منظورم روی فرم)

*
* * *
* * * * *
* * *
*​


یه زحمت بکشید همراه با توضیح جواب بدید که درکم از حلش بیشتر بشه.متشکرم . . .
 

Milad_ATM

New Member
میشه یه خورده توی اینجور مسائل ریز بشید که درکمون از حلقه هایی که مثلث نشون میدن بالاتر بره.
 

the_king

مدیرکل انجمن
من یه برنامه می خوام که اینو چاپ کنه ؟(منظورم روی فرم)

*
* * *
* * * * *
* * *
*​


یه زحمت بکشید همراه با توضیح جواب بدید که درکم از حلش بیشتر بشه.متشکرم . . .

کد:
Private Sub Form_Load()
    Dim I As Long
    AutoRedraw = True
    Font.Name = "Courier New"
    For I = 1 To 5
        Print Space(Abs(3 - I)) & String((2 - Abs(3 - I)) * 2 + 1, "*")
    Next
End Sub

و تحلیل کد برنامه :

تابع اولیه برنامه برای رویداد فراخوانی فرم :
کد:
Private Sub Form_Load()

تعریف یک متغیر I که برای حلقه سطر ها بکار رود.
کد:
    Dim I As Long

مشخصه AutoRedraw فرم را True می کنیم تا نوشته های Print شده روی فرم پاک نشوند و ثابت بمانند.
کد:
    AutoRedraw = True

فونت بکار رفته برای چاپ ستاره ها را روی فرم قلم Courier New تنظیم می کنیم. خوبی قلم Courier New این است
که طول کاراکتر های آن (مثلا فاصله و ستاره) یکسان است و ستاره ها مرتب و زیر هم قرار می گیرند.
کد:
    Font.Name = "Courier New"

حلقه ای که به ازای هر یک از 5 سطر لوزی یکبار اجرا شود (سطر 1، سطر 2، ... و سطر 5)
کد:
    For I = 1 To 5

حال ابتدا تصویر زیر را ببینید :

2rxbdab.gif


برای آنکه ستاره ها در هر سطری در جای درستی چاپ شوند بایستی کاراکتر های فاصله را در قبل از ستاره ها
چاپ کرد.
حالا باید فرمولی بسازیم که به ازای هر سطر I (مقدار 1 الی 5) تعداد فاصله مناسب را پیش از ستاره ها چاپ کند،
سطر اول 2 فاصله، سطر دوم 1 فاصله، سطر سوم 0 فاصله و سطر چهارم 1 فاصله و سطر پنجم 2 فاصله

فرمول (Abs(3 - I چنین پاسخی را دارد، ( Abs تابع قدر مطلق است)
تابع Space هم به تعداد پارامتر ورودی فاصله بر می گرداند مثلا (Space(3 برابر با سه کاراکتر فاصله است.

برای چاپ ستاره هم باید فرمولی بنویسیم که برای سطر اول (I = 1) یک ستاره، و برای سطر دوم (I = 2) سه ستاره
و برای سطر سوم پنج ستاره و برای سطر چهارم 3 ستاره و برای سطر پنجم 1 ستاره در نظر بگیرد.

فرمول زیر چنین حالتی را دارد :

کد:
(2 - Abs(3 - I)) * 2 + 1

تابع String یک کاراکتر را به تعداد مشخصی تکرار می کند، مثلا رشته ("*", String(3 رشته *** را بر می گرداند.

حاصل ترکیب این دو فرمول چنین خواهد بود :
کد:
        Print Space(Abs(3 - I)) & String((2 - Abs(3 - I)) * 2 + 1, "*")
 

amin_00

New Member
سلام دوستان خسته نباشید اگه ممکنه یکی کمکم کنه خیلی فوریه برنامه ای میخوام که اندازه لوزی قابل تغیر باشد لوزی را بتوانیم جابه جا کنیم و تعداد لوزی چاپ کنم به زبان ویژوال استدیو

*
* * *
* * * * *
* * *
*
 

amin_00

New Member
بعد دوستان یه سوال درمورد برنامه ویژوال استدیو دارم برنامه هایی که در کامپیوتر دانشگامون مینویسیم مشکلی نداره ولی توی خونه مثلا شکل بالا رو به صورت کامل نمیاره باید اینتر بزنم تا خط بعدی رو چاپ کنه ولی بقیه برنامه ها اینجور نییس یعنی مشکل از برناممه یا نه؟
 

جدیدترین ارسال ها

بالا