ABA


"תרגיל: כתוב אלגוריתם למציאת שורש ריבועי ב c#"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #21204 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 21204
Battousai 
חבר מתאריך 4.8.06
1725 הודעות
   19:13   21.04.15   
אל הפורום  
  תרגיל: כתוב אלגוריתם למציאת שורש ריבועי ב c#  
 
   ערכתי לאחרונה בתאריך 21.04.15 בשעה 19:23 בברכה, Battousai
 
שלום חברים. אני חדש כאן בפורום תיכנות.
התחלתי ללמוד c# ופתרתי את התרגיל הבא . אשמח לקבל את חוות דעתכם על הקוד , אם אפשר לייעל ( ביצועית ואסטתית). כמו כן התחלתי ללמוד במכללה, אני בשיעור 3.
להלן הקוד:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication3
{
class Program
{
static void Main(string args)
{
while (true)
{

for (int i = 0; i < 3; i++) { Console.WriteLine(""); }



Console.WriteLine("Enter a positive number to calculate it's square root");
double number = double.Parse(Console.ReadLine());
double DiyukFactor= 0.000000001, Answer, CalcShoresh,Memutza = 0, numBIG = 0, numSMALL = number / 2 +1; // הוספת 1 מאפשרת לפתור את השורש למספר 2

CalcShoresh = numSMALL * numSMALL;

if (CalcShoresh != number)
{
while (CalcShoresh > number) // מוצא את המספרים שיהוו את הקצוות הראשונים (לדוגמא: אם נרצה למצוא שורש ריבועי של 25 אז הקצוות יהיו: 3.125 ו 6.25
{
numBIG = numSMALL;
numSMALL = numSMALL / 2;
CalcShoresh = numSMALL * numSMALL;
}

while ((CalcShoresh - number >= DiyukFactor) && (CalcShoresh - number >= 0) || (CalcShoresh - number <= DiyukFactor) && (CalcShoresh - number <= 0)) // בודק שהמרווח בערך מוחלט מהחישוב למספר הנקלט הוא פחות מ או שווה ל: DiyukFactor
{
if ((numSMALL + numBIG) / 2 * (numSMALL + numBIG) / 2 < number)
numSMALL = (numSMALL + numBIG) / 2;

else if ((numSMALL + numBIG) / 2 * (numSMALL + numBIG) / 2 > number)
numBIG = (numSMALL + numBIG) / 2;

Memutza = (numSMALL + numBIG) / 2;
CalcShoresh = Memutza * Memutza;
}
}

Answer=Memutza<numSMALL?numSMALL:Memutza;
Console.WriteLine("SQRT of " + number + " is: " + Answer );
}
}
}
}


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  נורא קשה לקרוא קוד ככה. ShocKi  21.04.15 19:26 1
  תקרא קצת כאן VeNom  21.04.15 20:17 2
  הקוד הבא פותר אצ הבעיה בקלות tzahevet1 21.04.15 21:04 3
     חחחחחחח אני די בטוח שביקשו מהם לא להשתמש בפונקציה מוכנה חחחחחחחחחח Ice Cold  21.04.15 23:01 5
  צילום מסך Battousai  21.04.15 21:17 4
     בעקרון נראה בסדר גמור simond15  22.04.15 00:40 6
         תגובה לתגובה :-) Battousai  22.04.15 11:44 7
             גם ב-4 זה עדיין ייכנס ל- if simond15  22.04.15 12:05 8
                 וואלה צודק . Battousai  22.04.15 12:26 9

       
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   19:26   21.04.15   
אל הפורום  
  1. נורא קשה לקרוא קוד ככה.  
בתגובה להודעה מספר 0
 
   שים את זה בתבנית קוד או שתעלה צילום מסך מהויזואל סטודיו שיש בו הזחות והכל מופיע בצורה ברורה.


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   20:17   21.04.15   
אל הפורום  
  2. תקרא קצת כאן  
בתגובה להודעה מספר 0
 
   http://www.codeproject.com/Articles/69941/Best-Square-Root-Method-Algorithm-Function-Precisi


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
tzahevet1
חבר מתאריך 21.4.15
1 הודעות
   21:04   21.04.15   
אל הפורום  
  3. הקוד הבא פותר אצ הבעיה בקלות  
בתגובה להודעה מספר 0
 
   הוספתי קובץ שבו זה נראה טוב. צילמתי את זה מה-Visual Studio שלי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק
   23:01   21.04.15   
אל הפורום  
  5. חחחחחחח אני די בטוח שביקשו מהם לא להשתמש בפונקציה מוכנה חחחחחחחחחח  
בתגובה להודעה מספר 3
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Battousai 
חבר מתאריך 4.8.06
1725 הודעות
   21:17   21.04.15   
אל הפורום  
  4. צילום מסך  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
simond15  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 21.8.10
1144 הודעות, 3 פידבק
   00:40   22.04.15   
אל הפורום  
  6. בעקרון נראה בסדר גמור  
בתגובה להודעה מספר 4
 
   ערכתי לאחרונה בתאריך 22.04.15 בשעה 00:49 בברכה, simond15
 
קצת הערות אסתטיות:
*קודם כל, לעולם אל תרשום הערות בעברית, זה נראה מכוער בטירוף.
(מה גם שהן לא נכונות, הקצוות של 25 אמור להיות 3.375 ו- 6.75 לפי דעתי)

*כשאתה משתמש בהזחות, אז הסוגריים המסולסלות צריכות להיות באותו קו עם ה- while/if וכל שאר הקוד מוזח ימינה.
*בנוסף, גם אם יש לך if ובתוכו רק שורה אחת, עדיין מומלץ מאוד תמיד להשתמש בסוגריים מסולסלות
(לדוגמה, במקרה ותרצה מסיבה כלשהי להוסיף עוד שורה ב- if אז יש סיכוי טוב שתשכח להוסיף את הסוגריים ויהיה קשה למצוא את הבאג).
זה צריך להראות בערך ככה:

*אתה לא עושה בדיקת קלט, אם המשתמש מכניס 0 או סתם אות/מילה אז התכנית נופלת.
תשתמש בפונקציה tryParse

*האמת שלא כל כך הבנתי את ה-if הראשון, מתי calcShoresh יכול להיות שווה ל- number?

*ובשורה הלפני אחרונה, כמובן שצריך רווחים בין כל האופרנדים.

אבל כמו שאמרתי בהתחלה, בסך הכל נראה בסדר גמור



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Battousai 
חבר מתאריך 4.8.06
1725 הודעות
   11:44   22.04.15   
אל הפורום  
  7. תגובה לתגובה :-)  
בתגובה להודעה מספר 6
 
   לגבי הקצוות באמת צדקת מה שרשמתי לא נכון.

לגבי בדיקת קלט - אמת :-) , לגבי 0 ידעתי שזה תוקע אבל סתם השארתי את זה ככה בלי סיבה מיוחדת..

לגבי ה if הראשון : CalcShoresh שווה בדיוק ל number כאשר המספר הנקלט הוא 4 => כי אז יש חישוב של 2*2 וכבר יש תשובה, ככה אפשר לדלג על איטרציות מיותרות למספר 4 ( לא שזה באמת חשוב בתכלס... אולי אמחק את זה באמת)
לגבי TryParse אין לי מושג מה זה . השתמשתי בכל הידע שלמדתי עד שיעור 3 ...

לגבי ההזחה - סידרתי.

וכמובן תודה רבה על ההערות והארות !


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
simond15  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 21.8.10
1144 הודעות, 3 פידבק
   12:05   22.04.15   
אל הפורום  
  8. גם ב-4 זה עדיין ייכנס ל- if  
בתגובה להודעה מספר 7
 
   כי אתה הרי עושה numSmall = number /2 + 1
אז ה- numSmall יהיה שווה 3 וה- calc יהיה שווה 9.
אז בהחלט נראה לי כמו if מיותר שאפשר לוותר עליו...



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Battousai 
חבר מתאריך 4.8.06
1725 הודעות
   12:26   22.04.15   
אל הפורום  
  9. וואלה צודק .  
בתגובה להודעה מספר 8
 
   ערכתי לאחרונה בתאריך 22.04.15 בשעה 12:32 בברכה, Battousai
 
זה היה לפני שהוספתי את האחד והשארתי את זה . זה באמת מיותר...

* אגב למה במספרים גבוהים זה לפעמים פותר מהר ולפעמים נתקע ?
למשל הכנסתי את המספר 2,436,578.
פעם אחת זה פתר בשנייה פעם אחרת זה נתקע


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net