תיקון קוד ב-WIN APP

sליאורה

New member
תיקון קוד ב-WIN APP

בקשה קטנה לפני שהגאונים יפתרו(אני רק בקורס הראשון של תכנות), זה מה שאני יודעת , אני מנסה להבין טעויות, ולא דברים חדשים שיסבכו אותי יותר. המטרה: יש לכתובת תוכנית הקולטת מהמשתמש מספר בין 1 ל- 100. התוכנית מייצרת סדרה של "הגרלות" מספרים בין 1 לבין 100 וסופרת כמה הגרלות כאלו היו עד שעלה בגורל המספר שהמשתמש הכניס (הספירה כוללת גם את ההגרלה האחרונה שבה כאמור יצא המספר הנדרש). לדוגמה אם המשתמש הקיש את הערך 2 וההגרלות היו: 99,40,11,3,2 אזי התוכנית תודיע – 5. הקוד:
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace hw5_1 { /// <summary> /// Summary description for Form1. /// </summary> public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.Button btn; private System.Windows.Forms.TextBox txtnum; private System.Windows.Forms.Label lblround; /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.Container components = null; public Form1() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.btn = new System.Windows.Forms.Button(); this.txtnum = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.lblround = new System.Windows.Forms.Label(); this.SuspendLayout(); // // btn // this.btn.Font = new System.Drawing.Font("Microsoft Sans Serif", 14F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(177))); this.btn.Location = new System.Drawing.Point(232, 112); this.btn.Name = "btn"; this.btn.Size = new System.Drawing.Size(232, 48); this.btn.TabIndex = 0; this.btn.Text = "לחץ לבדיקת מספר הסיבובים עד הזכיה"; this.btn.Click += new System.EventHandler(this.btn_Click); // // txtnum // this.txtnum.Location = new System.Drawing.Point(272, 64); this.txtnum.Name = "txtnum"; this.txtnum.TabIndex = 1; this.txtnum.Text = ""; this.txtnum.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; // // label1 // this.label1.Location = new System.Drawing.Point(376, 64); this.label1.Name = "label1"; this.label1.RightToLeft = System.Windows.Forms.RightToLeft​
 

Zeliran

New member
~>

קודם כל קיימת הגבלה למספר התוים שניתן לרשום בהודעה אחת, לכן לא רואים את כל הקוד ובמקרים כאלו לרוב מוסיפים אותו בקובץ txt נפרד בכל אופן, השאלה שלך היא יותר קשורה לאלגוריתם מאשר לתכנות עצמו, מה שאת אמורה לעשות זה משהו כזה: את קולטת את הערך שהכניס המשתמש לתוך משתנה כלשהו, בנוסף לכך את צריכה ליצור משתנה נוסף שהוא יהיה "הצובר" שבעצם יספור כמה מופעים של המספר שבחר המשתמשים היו, אחרי זה את רצה עם לולאה מספר פעמים (מספר הפעמים = מספר ההגרלות) וכל פעם בלולאה את מקבלת מספר רנדומלי (כמו שהודעתך האחרונה), את בודקת אם המספר הרנדומלי שווה למספר שבחר המשתמש, אם הוא לא שווה את מעלה את המשתנה הצובר ב 1 וממשיכה בלולאה, אם המספר שווה את מעלה את הצובר ב 1 ומשתמשת בפקודה
continue​
כדי לצאת מהלולאה, אחרי זה את יכולה כבר להדפיס כמה הגרלות עברו את שהתקבל המספר שהמשתמש בחר (נמצא במשתנה הצובר) יש עוד כמה דרכים לעשות את זה.. למשל להשתמש בערך של i (בלולאה..) במקום להעלות כל פעם ב 1 את המשתנה הצובר...
 
עדיף לכתוב את האלגוריתם

עדיף שתכתבי את האלגוריתם במילים למשל בהנחה שהבנתי את התרגיל אז האלגוריתם יכול להיות כזה: 1. בניית מערך של N איברים עם מספרים שלמים ואקראיים ( מן הסתם בלולאה עד N) הערה: N יכול להיות מספר קבוע, או קליטת מספר N הגרלות מהמשתמש, או קליטה עד מספר\תו שהוגדר כמסיים- סתם לדוגמה נניח קליטת 0 הוא מספר שמסיים(וזה אומר שאחריו אין יותר קליטת הגרלות). 2. קליטת מספר מהמשתמש 2.1 עוברים על מערך ההגרלות ובודקים אם המספר הנקלט קיים בו 2.1.1 קיים הדפסת מיקומו יהיה מספר ההגרלות עד אליו 2.1.2 לא קיים חזרה ל 2.(קליטה חוזרת) 3. סוף ונשאר רק לממש את זה בתיכנות.
 
תיקון

בעיקרון רשמתי את האלגוריתם בצורה לא ממש תקינה, אז הבהרה הקיים והלא קיים,הוא מתייחס באופן כללי אם נמצא בכול המערך, ולא בדיקה באיבר מסויים.
 
למעלה