2013-11-26 6 views
1

Я пытаюсь получить это, чтобы распечатать продажи 12 месяцев в течение трех лет с использованием двухмерного массива и вложенного цикла. Я запутался. Может кто-нибудь, пожалуйста, покажите мне, что я делаю неправильно с моим кодом, используя эти методы. Я не хочу альтернативы.двухмерный массив и вложенный цикл

#include "stdafx.h" 
#include <iostream> 
#include <string> 

using namespace std; 
int x = 0; 
int v = 0; 
int y = 0; 
int sum = 0; 
const int year = 3; 
const int month = 12; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    int sales[year][month]; 
    char * date[12] = {"january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"}; 
    for(int z = 0; z < 3; z++) 
    { 
     { 
      cin >> v; 
      sales * year[z] = v; 
     } 

     for(int x = 0; x < 12; x++) 
     { 
      cout << "Please enter the sales for month " << date[x] << ":\n"; 
      cin >> y; 
      sales * month[x] = y; 
      sum += y; 
     } 
    } 
    cout << "There are the sales of the c++ crook: \n"; 

    cout << sales[3][12] << endl; 
    //cout << "Month 1 = " << year[0] << " " << month[0] << endl; 
    //cout << "Month 2 = " << year[0] << " " << month[1] << endl; 
    //cout << "Month 3 = " << year[0] << " " << month[2] << endl; 
    //cout << "Month 4 = " << year[0] << " " << month[3] << endl; 
    //cout << "Month 5 = " << year[0] << " " << month[4] << endl; 
    //cout << "Month 6 = " << year[0] << " " << month[5] << endl; 
    //cout << "Month 7 = " << year[0] << " " << month[6] << endl; 
    //cout << "Month 8 = " << year[0] << " " << month[7] << endl; 
    //cout << "Month 9 = " << year[0] << " " << month[8] << endl; 
    //cout << "Month 10 = " << year[0] << " " << month[9] << endl; 
    //cout << "Month 11 = " << year[0] << " " << month[10] << endl; 
    //cout << "Month 12 = " << year[0] << " " << month[11] << endl; 

    //cout << "Month 1 = " << year[1] << " " << month[0] << endl; 
    //cout << "Month 2 = " << year[1] << " " << month[1] << endl; 
    //cout << "Month 3 = " << year[1] << " " << month[2] << endl; 
    //cout << "Month 4 = " << year[1] << " " << month[3] << endl; 
    //cout << "Month 5 = " << year[1] << " " << month[4] << endl; 
    //cout << "Month 6 = " << year[1] << " " << month[5] << endl; 
    //cout << "Month 7 = " << year[1] << " " << month[6] << endl; 
    //cout << "Month 8 = " << year[1] << " " << month[7] << endl; 
    //cout << "Month 9 = " << year[1] << " " << month[8] << endl; 
    //cout << "Month 10 = " << year[1] << " " << month[9] << endl; 
    //cout << "Month 11 = " << year[1] << " " << month[10] << endl; 
    //cout << "Month 12 = " << year[1] << " " << month[11] << endl; 
    //cout << "The annual sales for c++ crook is: " << sum << " ;]"; 
    cin.get(); 
    cin.get(); 


    return 0; 
} 
+0

Почему вы используете 'operator []' для двух переменных 'const int' (' month' и 'year') ?? А что касается нежелания «альтернативы», вы хотите, чтобы ваш код компилировался или нет? – WhozCraig

+2

Можете ли вы рассказать нам о проблеме, с которой вы сталкиваетесь, или об ошибке, которую вы получаете? – theharshest

+2

'sales * year [z] = v;' ?? – John3136

ответ

2

Пара вещей:

1) Вы хотите, чтобы убедиться, что вещь на левой стороне выражения является допустимым «именующее» - то есть, он переводится в место, где результат оценки RHS может быть сохранен. A линия, подобная

sales *month[x] = v; 

Не соответствует этому.

Еще одна ошибки: при объявлении массива

sales[year][month]; 

вам необходимо убедиться, что оба year и month существуют (объявлены) и имеет действительное значение (может быть 3 и 12?) - у вас есть массив называется date, но вы имеете в виду month в

sales * month[x] = v; 

Как я уже говорил, вы не можете просто умножить на вещи левая часть уравнения. Вы могли бы рассмотреть

sales[year][month] = v; 

В вашем случае, ваш внешний контур z идет от 0 к 2, - это, вероятно, ваш year; и внутренний цикл идет от 0 до 11, поэтому я предполагаю, что это месяц. Тогда вы могли бы сделать

sales[z][x] = y; 

Вполне возможно, что вы на самом деле хотите записать «год, что цифры эти продажи относятся к», в этом случае вам нужно создать массив

salesYears[3]; 

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

std::cout << "Please enter the year of the sales" << std::endl; 

и т.д.

Это лишь некоторые указатели. Ваш код действительно довольно беспорядок. Запомните:

Declare all variables 
Make sure all arrays are the right size 
Prompt for inputs 
Check that inputs are valid 
Address 2D arrays with arrayName[index1][index2] 
Thing on left hand side of equation must be "valid lvalue" 
You might need additional variables to store both the year and the sales 
+0

https://github.com/ GuangchuangYu/CxxPrimerPlus/tree/master/chapter5 Я нашел решение проблемы. Мой код был действительно грязным. Мне кажется, мне нужно рассмотреть последние пять глав и сделать некоторые дополнительные практики. Я только начал изучать C++ из этой книги. Спасибо за вашу помощь. – AEGIS

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