2013-11-11 8 views
0

Я пытаюсь сделать программу, которая делает ввод/вывод следующим образом, обратите внимание, что я НЕ ДОЛЖЕН закончить все функции. Мне просто нужно несколько советов о том, как начать работу, потому что я полностью зациклен на том, что делать ... ЛЮБЫЕ подсказки/помощь будут так оценены.Использование функций класса класса практически

Входной следующим образом:

Добавить Alice

Добавить Боба

Обновление Алиса ноутбук 6000 2

Выход Alice

Update Боб DESKTOP 18 000 4

Update Боб tabLet 4600 3

Выход Боб

Добавить Charlie

Вывода ВХОД:

Алиса продавец 1.

Боб продавец 2.

Алиса продано 2 портативных компьютеров в течение 6000 Доллары.

Alice: $ 6000; продано 2 LapTops, 0 DeskTops и 0 Tablets.

Боб продал 4 настольных компьютера на 18000 долларов.

Боб продал 3 планшетных компьютера на 4600 долларов США.

Bob: $ 22600; продано 0 LapTops, 4 DeskTops и 3 таблетки.

Чарли продавец 3.

Я действительно понятия не имею, где начать сейчас ... мне нужно, чтобы иметь возможность ввода команды следуют аргументы для параметров функции член ... но на самом деле не имеют подскажите, как включить это ... это мой второй месяц на C++, поэтому обратите внимание, что я действительно не знаю никаких продвинутых вещей. У меня есть знания до классов ....

Главного вопрос только как использовать этот практически ...

Других важную информацию :::: 1. Добавить - добавить команду. Добавьте продавца с указанным именем (имя продавца) в конец списка, если продавец с таким именем еще не существует и список не заполнен. Имя будет последовательной последовательностью символов небелого пробела. Ваша программа не нуждается в проверке. См. Примеры выходов.

  1. Выход - Выходная команда. Выведите общее количество проданных компьютеров и общее количество компьютеров, проданных для этого продавца. Если продавец не существует, напечатайте соответствующее сообщение. См. Примеры выходов.

  2. Обновление - команда обновления. Обновите продавца с данными продаж и соответствующим количеством компьютеров.Для этой команды: Sellername обозначает имя продавца; typeOfComputer обозначает ноутбук, рабочий стол или планшет; total-Dollars обозначает сумму в долларах, которые были проданы; number-of-Computers-Sold обозначает количество компьютеров такого типа, которые были проданы. Ваша программа должна преобразовать параметр typeOfComputer в нижний регистр, так как вход будет использовать обозначение смешанного случая. [Подсказка, включить, использовать функцию char tolower (char c); // если c - верхний регистр, возвращает его в нижнем регистре Если продавец не существует, распечатайте соответствующее сообщение (и прочитайте и отбросьте данные). См. Примеры выходов.

  3. Quit - команда выхода. Распечатайте список людей, которые продали достаточно, чтобы выиграть сказочный отпуск.


#include <iostream> 
#include <cctype> 
#include <string> 
#include "conio.h" 

using namespace std; 

const int MAX_SELLERS   = 5; 
const int NOT_FOUND   = -1; 
const float GOAL_IN_DOLLARS = 35000.0f; 
const int GOAL_IN_COMPUTERS = 12; 

class Seller 
{ 
private: 
    float salestotal;  // run total of sales in dollars 
    int lapTopSold;  // running total of lap top computers sold 
    int deskTopSold;  // running total of desk top computers sold 
    int tabletSold;  // running total of tablet computers sold 
    string name;   // name of the seller 
public: 
    // default constructor 
    Seller() 
    { 
     name = ""; 
     salestotal = 0.0; 
     lapTopSold = 0; 
     deskTopSold = 0; 
     tabletSold = 0; 
    } 
    // parameterized constructor and member functions 
    // Constructor: 
// Initializes the Seller's name to newname. 
// Initializes the Seller's salestotal to 0 and all integer fields to 0. 
// Params: in 
Seller (string newname); 

// Returns true if the seller's name is the same as nameToSearch; 
// false otherwise. 
// Params: in 
bool SellerHasName (string nameToSearch); 

// Returns true if the seller sold GOAL_IN_COMPUTERS computers 
// or GOAL_IN_DOLLARS sales or more. 
// Params: NONE 
bool WinsPrize (); 

// Adds the money and number of computers to the seller's accumulated 
// sales total and number of computers sold based on the computer type. 
// That is, if the computer type is “DESKTOP” then the desktop field is 
// updated by numComputers, if the computer type is “LAPTOP” then the 
// laptop field is updated by numComputers, if the computer type is 
// “TABLET” then the tablet fields is updated by numComputers. 
// Params: in, in, in 
void UpdateSales (float totalDollars, int numComputers, 
        string computerType); 

// Print the salesperson's name, sales total, and number of 
// computers sold. 
// Params: NONE 
void PrintSales (); 

}; 

Seller::Seller(string newname) 
{ 
    name = newname; 
    salestotal = 0.0; 
    lapTopSold = 0; 
    deskTopSold = 0; 
    tabletSold = 0; 
} 

bool Seller::SellerHasName (string nameToSearch) 
{ 
    if(name == nameToSearch) 
     return true; 
    else 
     return false; 
} 

bool Seller::WinsPrize () 
{ 
    if(salestotal >= GOAL_IN_DOLLARS || (lapTopSold + deskTopSold + 
     tabletSold) >= GOAL_IN_COMPUTERS) 
     return true; 
    else 
     return false; 
} 

void Seller::UpdateSales(float totalDollars, int numComputers, 
        string computerType) 
{ 
    salestotal += totalDollars; 
    if(computerType == "DESKTOP") 
     deskTopSold += numComputers; 
    else if(computerType == "LAPTOP") 
     lapTopSold += numComputers; 
    else if(computerType == "TABLET") 
     tabletSold += numComputers; 
} 

void Seller::PrintSales() 
{ 
    cout << name << " " << salestotal << "; sold " << lapTopSold << 
    "LapTops, " << deskTopSold << " DeskTops, " << "and " << 
    tabletSold << " Tablets." << endl; 
} 
class SellerList 
{ 
private: 
    int num; // current number of salespeople in the list 
    Seller salespeople[MAX_SELLERS]; 
public: 
    // default constructor to make an empty list 
    SellerList() 
    { 
     num = 0; 
    } 
    // member functions 

// If a salesperson with thisname is in the SellerList, this 
// function returns the associated index; otherwise, return NOT_FOUND. 
// Params: in 
int Find (string thisName); 

void Add(Seller sellerName); 

void Output(Seller sellerName); 
}; 

int SellerList::Find(string thisName) 
{ 
    for(int i = 0; i < MAX_SELLERS; i++) 
     if(salespeople[i].SellerHasName(thisName)) 
     return i; 
    return NOT_FOUND; 
} 
// Add a salesperson to the salespeople list IF the list is not full 
// and if the list doesn't already contain the same name. 
void SellerList::Add(Seller sellerName) 
{   

    Seller(sellerName); 
    num++; 
} 
// Output the total value of computers sold and the total number of each 
// type of computer sold for that seller. If the seller does not 
// exist, print an appropriate message 
void SellerList::Output(Seller sellerName) 
{ 

} 

int main() 
{ 
    return 0; 
} 
+0

Вы действительно должны сузить эти вопросы до более коротких. Трудно никому прочитать все это. –

+1

Мне не удалось выяснить, в чем ваш вопрос. –

+0

Дело в том, что у меня нет ИДЕИ, о чем даже спросить. Как и моя цитата из цитаты из цитаты, «я не хочу вам помогать». Я полностью потерян и разочарован из головы. Я не знаю, как уменьшить эти вопросы. Я просто из этого мира разозлился прямо сейчас ... – user2108147

ответ

0

Предполагая, что ваш Seller реализация является правильным и всеобъемлющим (я не проверял) все, что вам нужно сделать, это синтаксический анализ входных данных. Чтобы разобрать ввод, вы должны прочитать его по очереди, интерпретируя каждую строку как некоторую команду. Эта команда состоит из самого имени команды вместе с ее аргументами (если есть).

Есть несколько подходов:

Первых один:

Хотя конец файла не достигнут:

  1. Читать строку (строки от текущей позиции до \n символа)
  2. Разделить его пространствами. Первым элементом результата является команда, остальные - аргументы. Возможно, вам понадобится преобразовать его в соответствующий тип до выполнения метода Seller.

Второй один:

Хотя конец файла не достигнут:

  1. Считывает слово (от текущей позиции до пробельных символов).
  2. Теперь вы знаете команду. Если вы знаете команду, вы знаете, какие аргументы должны быть переданы. Вы можете извлечь их от входа прямо или передать его на какую-либо другую функцию/методу (вы передаете ссылку на входной поток для этой функции и работы с этой ссылкой)

Взгляните на documentation on <iostream>, чтобы увидеть функции-х и имена методов, а также некоторые примеры.

+0

У меня есть два месяца опыта программирования. Образец ввода от меня будет .......Добавить Becky Выход будет ...... Becky является продавцом 1 (или где бы она не была) – user2108147

+0

@ user2108147 так? Задавайте вопросы, мы не будем писать для вас код. –

+0

Как вы могли бы привести пример ваших первых направлений. Я действительно не знаю, как реализовать что-то подобное, так как я никогда не уставал от того, как это реализовать. Не могли бы вы привести очень простой пример того, как использовать это для общих целей. – user2108147

Смежные вопросы