2015-03-04 6 views
0

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

#include <iostream> 
#include <string> 
#include <fstream> 

using namespace std; 

struct shopList { 
    double pluCode; 
    string product; 
    int saleType; // 0 = per unit, 1 = per pound 
    double price; 
    double inventory; 


}; 

int main(){ 

    char line[255]; 
    const int items = 0; 
    int n; 

    ofstream outfile; 
    outfile.open("products.txt"); 

    cout << "How many items in your checkout: "; 
    cin >> items; 

    shopList shop[items]; 

    for (n = 0; n < items; n++) { 
     cout << "Enter the PLU code: "; 
     cin >> shop.pluCode; 
     outfile << shop.pluCode << " "; 

     cout << "Enter product name: "; 
     cin >> shop.product; 
     outfile << shop.product << " "; 

     cout << "Enter the price type (0 for per unit, 1 for per pound): "; 
     cin >> shop.saleType; 
     outfile << shop.saleType << " "; 

     cout << "Enter the price of the product: "; 
     cin >> shop.price; 
     outfile << shop.price << " "; 

     cout << "How much will you purchase: "; 
     cin >> shop.inventory; 
     outfile << shop.inventory << " " << "\n"; 

    } 



    outfile.close(); 

    ifstream infile; 
    infile.open("products.txt"); 
    infile.getline(line, 255); 
    cout << line << endl; 
} 
+1

Вы не можете сделать это в стандартном C++. Используйте 'std :: vector' (или, возможно, выделите с помощью' new') –

+0

Не используйте 'char [255]'. Вместо этого используйте 'std :: string'. –

+0

@MatsPetersson Я совершенно уверен, что «невозможно сделать это в стандартном C++» _ false. Вы сказали, почему в своем собственном комментарии. –

ответ

1

Возможно, вам просто нужно изменить свое заявление таким образом;

int items = 0; cin >> items;

shopList *shop = new shopList [items]; 
+0

Он будет работать как ваш обычный массив. – 01axel01christian

+0

Не забудьте использовать 'delete [] shop;' для освобождения массива. –

+0

@sexobert Как я могу изменить «cin >> shop.pluCode;» настроить? Это дает мне «Ошибка: выражение должно иметь тип класса». –

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