Giter VIP home page Giter VIP logo

solver-a's Introduction

פותר משוואות - שלב א

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

solve(2*x-4==10);

ולקבל 7.

כדי לראות איך בדיוק המערכת אמורה לעבוד, ראו בקובץ Demo.cpp המצורף. שימו לב: המספרים הרשומים בהערה בצד ימין של כל שורה הם התוצאות המספריות הצפויות; התוצאות לא חייבות להופיע דווקא בפורמט זה (למשל 7 יכול להופיע גם כ 7.0). בבדיקות האוטומטיות, רמת הדיוק להשוואת מספרים ממשיים צריכה להיות 0.0001.

בשלב א עליכם לכתוב את הקבצים הדרושים כך שתוכנית הדוגמה תתקמפל. כמו כן עליכם לכתוב בדיקות-יחידה מקיפות. הפקודות הבאות צריכות לרוץ בלי שגיאות:

make demo && ./demo
make test && ./test

עוד פרטים:

  • המערכת תומכת בשני סוגי משתנים - ממשי ומרוכב. משוואה במשתנה ממשי מחזירה תוצאה מסוג double. משוואה במשתנה מרוכב מחזירה תוצאה מסוג std::complex.
  • במטלה זו מספיק לפתור משוואות בנעלם אחד, ליניאריות או ריבועיות. אין צורך להתייחס למשוואות בשני נעלמים או יותר, או למשוואות במעלה שלישית או יותר, או לאי-שיוויונים. במקרה שמישהו מנסה ליצור משוואה כזאת, יש לזרוק חריגה, אבל אין צורך להתייחס לזה בבדיקות האוטומטיות.
  • מותר לכתוב מחלקות נוספות או לממש אופרטורים נוספים שאינם נזכרים בתוכנית הראשית, אבל אין צורך לכתוב להם בדיקות.
  • אם למשוואה אין פתרון (ממשי או מרוכב לפי סוג המשתנה) יש לזרוק חריגה מתאימה.
  • אם למשוואה יש יותר מפתרון אחד, יש להחזיר אחד מהם שרירותית.
  • בכל עניין נוסף שאינו מוגדר עד הסוף במטלה, יש לכם חופש לממש לפי שיקול דעתכם, ולכן אין צורך להתייחס לזה בבדיקות. הבדיקות שאתם כותבים צריכות להתמקד בדרישות המטלה בלבד.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.