Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
jekmut
0 / 0 / 1
Регистрация: 30.12.2012
Сообщений: 88
#1

Ошибка при вводе двумерного массива - C++

28.10.2013, 16:50. Просмотров 334. Ответов 6
Метки нет (Все метки)

Здравствуйте! Нужно:
1. Написать программу с использованием двумерного массива для сохраниния
данных о месячных продажах книжек (количество книжек, не деньги) за 3 года.
2. Требуется выдать общую сумму (к-во книжек) продаж за каждый год и за все годы вместе.

Последнего я не сделал да и программа выдает ошибку под конец ввода.

Вот сама программа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <conio.h>
 
using namespace std;
 
const int m = 12;
const int years = 3;
 
const char * mounth[m] =
{
  "January",
  "Fabruary",
  "March",
  "April",
  "May",
  "June",
  "July",
  "August",
  "September",
  "October",
  "November",
  "December"
};
 
int main()
{
  int n = 12;
  int books[years][n];
  
  for(int i = 1; i <= years; i++)
  {
    cout << i << " year:" << endl << endl;
    
    for(int mon = 0, j = 0; mon < m, j < n; mon++, j++)
    {
      cout << mounth[mon] << " - ";
      cin >> books[i][j];
      cout << endl;
    }
    cout << endl;
  }
  
  getch();
  return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2013, 16:50
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка при вводе двумерного массива (C++):

Как сделать, чтобы при вводе двумерного массива он сразу отображался в виде таблицы?
Желательно использовать оператор setw().

Ошибка при вводе многомерного массива
Подскажите пожалуйста. Задача заключается в следующем. Дан двумерный...

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

Ошибка при записи двумерного массива в файл
Добрый вечер. Написал следующий код в Visual Studio: #include &quot;stdafx.h&quot;...

Ошибка памяти при иниц. двумерного массива
делаю программу, вычитающие коды Хэмминга(цикл.). Встретился с одной...

Ошибка при сортировке двумерного массива по возрастанию
По убыванию сортировка работает полноценно,а по возрастанию первое число НЕ...

6
jekmut
0 / 0 / 1
Регистрация: 30.12.2012
Сообщений: 88
30.10.2013, 14:45  [ТС] #2
Всем привет! Немного переделал код, ошибка исчезла. Как мне сделать вторую часть задания? В цикле, где вводятся значения, я создал переменную sum. В нее будут суммироваться вводимые значения каждого года. После выхода из цикла переменная sum обнуляется для суммы проданных книжек для следующего года... Как сделать так, чтобы переменная sum записывалася в массив. Так как у меня три года, то и массив должен быть из трех элементов. Как я хочу видеть готовое задание: ввожу количество проданных книжек по месяцам и так за три года; в самом конце должна вывестись информация в виде: За первый год - 1545шт. За второй год - 2000шт. За третий год - 2500шт. За все годы вместе - 6045шт. Помогите, пожалуйста, разобраться в этом!

Переделанный код программы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <conio.h>
 
using namespace std;
 
const int Mounths = 12;
const int Years = 3;
 
int main()
{
  const char * mounths[Mounths] =
  {
    "January",
    "Fabruary",
    "March",
    "April",
    "May",
    "June",
    "July",
    "August",
    "September",
    "October",
    "November",
    "December"
  };
 
  int b = 12;
  int Books[Years][b];
  
  int sum;
  for(int year = 1; year <= Years; year++)
  {
    cout << "Year " << year << ":" << endl << endl;
    for(int mounth = 0, book = 0; mounth < Mounths, book < b; mounth++, book++)
    {
      cout << mounths[mounth] << " - ";
      cin >> Books[year][book];
      sum += Books[year][book];
    }
    sum = 0;
    cout << endl << endl;
  }
  
  getch();
  return 0;
}
0
jekmut
0 / 0 / 1
Регистрация: 30.12.2012
Сообщений: 88
31.10.2013, 15:41  [ТС] #3
Ребята, помогите кто-нибудь!!!
0
Rivory
146 / 112 / 21
Регистрация: 15.01.2013
Сообщений: 266
31.10.2013, 15:54 #4
Ммм... я не понимаю в чем проблема, Вы же сами написали что сделать. Создать массив из 3х элементов и записывать туда значение sum каждый год.
0
jekmut
0 / 0 / 1
Регистрация: 30.12.2012
Сообщений: 88
31.10.2013, 15:58  [ТС] #5
Я не знаю как реализовать это... либо выводятся три одинаковых числа, либо какой-то мусор... Вот и застрял на месте.
0
Rivory
146 / 112 / 21
Регистрация: 15.01.2013
Сообщений: 266
31.10.2013, 16:17 #6
Ладно. Начнем с начала.
Во-первых
C++
1
2
3
4
5
6
7
int b = 12;
...
...
for(int mounth = 0, book = 0; mounth < Mounths, book < b; mounth++, book++)
{
    ....
}
Не понятно, зачем нужны переменные book и b. Они равны количеству месяцев, изменяются так же как количество месяцев. Так зачем они нужны, если можно вместо них использовать количество месяцев?
C++
1
2
3
4
int sum;
...
...
sum += Books[year][book];
Что, по вашему записалось в sum при первом проходе цикла? Переменным надо задавать значения, прежде чем их использовать.

C++
1
int year = 1
Почему? Нумерация массивов в С++ начинается с нуля.

Ну и готовый вариант, где я поправил ошибки и добавил массив.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <conio.h>
 
using namespace std;
 
const int Mounths = 12;
const int Years = 3;
 
int main(int argc, char** argv)
{
 
    const char * mounths[Mounths] =
    {
        "January",
        "Fabruary",
        "March",
        "April",
        "May",
        "June",
        "July",
        "August",
        "September",
        "October",
        "November",
        "December"
    };
 
    int Books[Years][Mounths];
 
    int sum = 0;
    int sum_array[3];   //Массив для хранения кол-ва книг каждый год
    for(int year = 0; year < Years; year++)
    {
        cout << "Year " << year+1 << ":" << endl << endl;
        for(int mounth = 0; mounth < Mounths; mounth++)
        {
            cout << mounths[mounth] << " - ";
            cin >> Books[year][mounth];
            sum += Books[year][mounth];
        }
        sum_array[year] = sum;
        sum = 0;
        cout << endl << endl;
    }
 
    for(int i = 0; i < 3; ++i)
    {
        cout << "За " << i+1 << " год было продано " << sum_array[i] << " книг." << endl;
    }
 
    system("pause");
    return 0;
}
И да, забыл добавить, месяц по-английски - это, все таки month, а не mounth.
1
jekmut
0 / 0 / 1
Регистрация: 30.12.2012
Сообщений: 88
31.10.2013, 16:28  [ТС] #7
Спасибо, работает отлично!
0
31.10.2013, 16:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2013, 16:28
Привет! Вот еще темы с решениями:

Ошибка при удалением двумерного динамического массива
Задача состоит в том, чтобы загрузить массив из файла 17 0 0.40 10 0.3 20...

Ошибка при передаче двумерного массива в функцию
cannot convert 'int (*)' to 'int**' for argument '1' to 'void func(int**, int,...

Ошибка при создании динамического двумерного массива
Ткните пальцем, что не так. Только учусь, делаю лабы, камнями не забрасывайте....

Ошибка при компиляции двумерного динамического массива указателей
Нужно создать двумерный динамический массив указателей собственного типа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru