פורסם 2007 בפברואר 1718 שנים שלום לכולםקיבלתי משימה לבנות תוכנית "מכולת" שתקבל מהמשתמש מידע על הפריטים השונים בחנות ותעבד איתם מידע אחרי זה.. מכיוון שהחמצתי את השיעור הזה אשמח לקבל את עזרכתם.הינה מה שהתוכנית (++C) אמורה לעשות:המשתמש מכניס שם< של פריט כמות< של אותו פריט מחיר קנייה< של אותו פריט ומחיר מכירה< של אותו פריט.כל מה שסימנתי ב < צריך להיכנס לתוך "מבנה" Struct שיכיל את הפרטים האלה שהמשתמש יכניס (שם הפריט, כמות, מחיר קנייה, מחיר מכירה.)ואז לפי הפרטים שהמשתמש מכניס התוכנית צריכה להחזיר את התוצאות הבאות:- לסדר אותם מהמחיר הגדול לקטן.- לסדר אותם לפי סדר הא' ב'... לפי השמות שלהם.- לחשב את המחיר הסופי של כל המוצרים יחד.הינה קצת קוד לתמיכה\דוגמה://Super-Market#include <iostream.h>#include <string.h>#include <iomanip.h>typedef struct {int Name, Amount, Buyp, Sellp;} data;char str10[10];void start( &a) {cout<<"enter name:"; cin>>?? cout<<"text:"; cin>>a.datr.Name>>a.datr.amount>>a.datr.Buyp>>a.datr.Sellp;void main(){ cout<<"enter the how many items you have:";קריאות לכמה פונקציות...ואולי עוד כמה..}אשמח מאד לעזרתכם !
פורסם 2007 בפברואר 1718 שנים למדת טמפלייטים ומחלקות? אם כן, תשתמש בהם כדי למיין(תנאי המיון).אם לא, תשתמש בצביעים לפונ.
פורסם 2007 בפברואר 1718 שנים פוינטרים לפונ מאפשרות לך לשמור כתובת לפונ בעלת חתימה מסויימת וערך החזרה.למשל, אם אתה רוצה למיין, פעם לפי שם ופעם לפי מחיר, אתה יוצר פונ שתשווה בין מה שאתה צריך(אם זה השם אז בין השמות ואם זה בין המחיר אז בין המחירים). אתה שולח לפונ את הSTRUCT שלך והיא כבר משווה ומחזירה לך מה גדול יותר.מה כבר רשמת?
פורסם 2007 בפברואר 1718 שנים מחבר לצערי, בינתיים כל מה שרשמתי זה הקטע קוד למעלה... אני אנסה לשפר את זה עד שאני ירדם למוות (1-2 בערך) תודה על ההכוונה
פורסם 2007 בפברואר 1718 שנים דוגמא חלקית לשימוש עם STL:#include <iostream>#include <sstream>#include <vector>using namespace std;typedef struct { string name; int amount; int buyPrice; int sellPrice;} entry;vector<entry> data;bool OrderByBuyPrice(entry x, entry y){ if (x.buyPrice > y.buyPrice) return false; else return true;}bool OrderByName(entry x, entry y){ if (x.name > y.name) return false; else return true;}int main(void){ while (1) { entry input; cout << "Enter item name (0 to finish):"; cin >> input.name; if (input.name == "0") break; cout << "Enter amount:"; cout << "Enter buy price:"; cin >> input.buyPrice; cout << "Enter sell price:"; cin >> input.sellPrice; data.push_back(input); } sort(data.begin(), data.end(), OrderByBuyPrice);// show it sort(data.begin(), data.end(), OrderByName);// show it int buy_sum = 0, sell_sum = 0; vector<entry>::iterator it; for (it = data.begin(); it != data.end(); ++it) { buy_sum += (*it).buyPrice; sell_sum += (*it).sellPrice; } return 0;}
פורסם 2007 בפברואר 1818 שנים אם לא נתנו לך הגדרה של מקסימום של פריטים תצתרך להשתמש בStandard Template Library או לעשות אימפלמטציה של מערכים דינמיים בעצמך (להשתמש ברשימות מקושרות גם אופציה אבל יקח נצח לגשת אליהם ולמיין אותן).בכל מקרה התוכנית שהציאו פה היא לא רעה חוץ מזה : if if (input.name == "0")יכול להיות שזה חוקי אם מוגדר operator== עם פרמטר char * שעושה strcmp ומחזיר 1 אם התוצעה 0 .בשביל הסדר אפשר התחלה תמיד להכניס את המידע מסודר לפי השם או מה שאתה רוצה(אפשר לעשות את זה בthread נפרד אבל זה כבר לקורס יותר מתקדם ) . אחר כך אפשר לעשות מיון מחדש או שאפשר לעשות את זה בכמה מערכים שאחד שומר את הערכים והאחרים שומרים את הסדר בעזרת מצביעים . את הסיכום אפשר לעשות בזמן שמכניסים את המידע כי זה גם יחסוך איטרציות.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.