Задача с использованием массива в С++

Рейтинг: -4Ответов: 1Опубликовано: 08.03.2023

Подскажите пожалуйста, почему у меня не работает код должный образом. Задание такое:(Учет товаров) Вводишь № магазина, сколько позиций будет вводиться, вводишь название товара, количество данного товара и его цену. И по завершении спрашивает "Продолжить или нет y/n?" Если да, то продолжаем набивать базу в массив, а если нет, то выводим отчет ПО УКАЗАНОМУ МАГАЗИНУ [1..50]. Что-то не то я с массивами делаю. Откликнитесь пожалуйста кто ни будь. введите сюда описание изображения

   #include <iostream>
#include <string>
using namespace std;
std::string user_input;
int main() {
  
    cout << "Добро пожаловать в магазин." << endl;
    cout << "Регистрация товара1" << endl;
tryAgain:

    int numMagaz;
    cout << "Введите номер магазина, в которых вы хотите записать товар: ";
    cin >>numMagaz;
  
    char NamesProduct[numMagaz][50];
    char pcs[numMagaz][50];
    float price[numMagaz];

    for (int i = 0; i < numMagaz; i++) {
        cout << "введите название товара: " << "№"<< i+1 << ": ";
        cin >> NamesProduct[numMagaz];
        cout << "введите кол-во штук: " ;//<< i+1 << ": "
        cin >> pcs[numMagaz];
        cout << "введите цену товара: " ;//<< i+1 << ": "
        cin >> price[numMagaz];
    }
  cout << "Продолжить ввод данных: Y/N? " << endl;
  cin >>user_input;
            if(user_input[0] == 'Y' || user_input[0] == 'y') 
{
              goto tryAgain;
              
    cout << "Отчет: " << endl;
    cout << "Выберите № магазина: " << endl;
    cin >>numMagaz;
  numMagaz=numMagaz-1;

        cout << "Название товара: "<< NamesProduct[numMagaz] <<"\t"<< "Кол-во штук: " << pcs[numMagaz] <<"\t" <<" Цена товара: "<< price[numMagaz] << endl;
              }
    return 0;
}

Пришел к выводу, что мне нужно использовать трех мерный массив, только как правильно записывать в конкретную ячейку массива не знаю. подскажите пожалуйста. Надо как-то так: введите сюда описание изображения

Вот код, только есть проблемы с синтаксисом((

    #include <iostream>
#include <string>
using namespace std;
std::string user_input;

int main() {
  int numMagaz=0;
  int inputPCS=0;
  char Names;
  char pcs; 
  
  cout << "Добро пожаловать в магазин." << endl;
  cout << "Регистрация товара1" << endl;
tryAgain:
  
  cout << "Введите номер магазина, в которых вы хотите записать товар: ";
  cin >>numMagaz;
  cout << "Сколько позиций вы хотите записать? : ";
  cin >>inputPCS;
  
char Product[numMagaz][50][50];
//char pcs[numMagaz][50][50];
float atribute[numMagaz][50];

    for (int i = 0; i < inputPCS; i++) {
        cout << "введите название товара: " << i+1 << ": ";
        cin >> Product[numMagaz][inputPCS][i];
        cout << "введите кол-во штук: " << i+1 << ": ";
        cin >> pcs[numMagaz][inputPCS][i];
        cout << "введите цену товара: " << i+1 << ": ";
        cin >> atribute[numMagaz][i];
      inputPCS=+1;
    }
  cout << "Продолжить ввод данных: Y/N? " << endl;
  cin >>user_input;

            if(user_input[0] == 'Y' || user_input[0] == 'y') {

              goto tryAgain;
              }
        else {

        }
    cout << "Отчет: " << endl;
    cout << "Выберите № магазина: " << endl;
    cin >>numMagaz;
  numMagaz=numMagaz-1;
  
        cout << "Название товара: "<< Product[numMagaz] <<"\t"<< "Кол-во штук: " << pcs[numMagaz] <<"\t" <<" Цена товара: "<< atribute[numMagaz] << endl;
    
    return 0;
}

Ругается на вот это: введите сюда описание изображения

Ответы

▲ 1

Что вы хотите?

if(user_input[0] == 'Y' || user_input[0] == 'y') 
{
    goto tryAgain;
          
    cout << "Отчет: " << endl;
    cout << "Выберите № магазина: " << endl;
    cin >>numMagaz;
    numMagaz=numMagaz-1;

    cout << "Название товара: "<< NamesProduct[numMagaz] <<"\t"<< "Кол-во штук: " << pcs[numMagaz] <<"\t" <<" Цена товара: "<< price[numMagaz] << endl;
}
return 0;

Т.е. если вы вводите Y, то выполняется goto, весь остальной код игнорируется. Если N — то просто не попадаете в ветку.

И только попробуйте спросить "как мне это исправить?"!!!