Giter Site home page Giter Site logo

cppex3's Introduction

מחשבון מטריצות - שלב א

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

הגדירו מחלקה בשם Matrix עם הפעולות הבאות (ראו בקובץ המצורף Demo.cpp):

  • שישה אופרטורים חשבוניים: חיבור (+) הוספה (+=) פלוס אונרי (+), ושלושת האופרטורים המקבילים לחיסור (-). כאמור, חיבור/חיסור של שתי מטריצות מוגדר רק על מטריצות מאותו סדר גודל nXm. ניסיון לחבר/לחסר שתי מטריצות שלא מקיימות תנאי זה יגרום לזריקת שגיאה.

  • שישה אופרטורי השוואה: גדול, גדול-או-שווה, קטן, קטן-או-שווה, שווה, לא-שווה. לשם מטלה זו כללי השוואת מטריצות הם כדלקמן:

    1. מטריצות יקראו שוות אם ורק אם כל האיברים בהן שווים.
    2. מטריצה A גדולה ממטריצה B אם ורק אם סכום איברי A גדול מסכום איברי B.

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

  • הגדלה ב-1 (++) והקטנה ב-1 (--) לפני ואחרי המספר. פעולה זו תגדיל או תקטין ב-1 את כל אברי המטריצה.

  • הכפלה בסקלר ממשי (double) באופן הטבעי והמוכר לכם מאלגברה לינארית.

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

  • אופרטור קלט ואופרטור פלט.

הערות לגבי קלט ופלט:

  • פורמט הפלט של מטריצה הוא: סוגריים מרובעים עבור כל שורה במטריצה, אברי השורה מופרדים בינהם ברווח יחיד. השורות מופרדות בינהן ע"י שבירת שורה (התו 'n\').
  • פורמט הקלט הוא דומה אבל השורות מופרדות בינהן בפסיק ורווח בודד.

בשלב א עליכם לכתוב:

  • קובץ כותרת הכולל את כל הפונקציות הדרושות (ללא מימוש). שימו לב: הכותרות צריכות להיות נכונות בהתאם למה שנלמד בהרצאות - מומלץ לחזור על החומר לפני שמתחילים לכתוב.
  • בדיקות מקיפות לכל הפונקציות הדרושות.

כיתבו את כל הקבצים הדרושים כך שהפקודות הבאות יעבדו ללא שגיאות:

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

מומלץ גם להריץ make tidy.

אין לשנות את הקבצים הנתונים, אלא רק להוסיף קבצים חדשים.

יש לפתור את המטלה באופן עצמאי.

  • מותר להתייעץ עם סטודנטים אחרים או לחפש מידע באינטרנט; אסור להעתיק קטעי-קוד שלמים מסטודנטים אחרים או מהאינטרנט.
  • יש לדווח על כל עזרה שקיבלתם, מסטודנטים אחרים או מהאינטרנט, בהתאם לתקנון היושר של המחלקה.

cppex3's People

Contributors

erelsgl avatar yannnyan avatar talzich avatar jeremylzn avatar

Stargazers

 avatar

Watchers

 avatar

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.