Форум программистов, компьютерный форум CyberForum.ru

Циклы и двумерные массивы - C++

Восстановить пароль Регистрация
 
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
25.08.2013, 11:41     Циклы и двумерные массивы #1
Решенная задача:

Вы продаете книгу "Язык С++ для чайников". Напишите программу, которая позволит ввести помесячные объемы продаж в течении года (в количестве книг, а не в деньгах). Программа должна использовать цикл, в котором выводится приглашения с названием месяца, применяя массив указателей на char (или массив объектов string), инициализированный строками - названиями месяцев, и сохраняя введенные значения в массиве int. Затем программа должна найти сумму содержимого массива и выдать общий объем продаж за год.

Следующая задача:

Выполните упражнение выше, но используя двумерный массив для сохранения данных о месячных продажах за 3 года. Выдайте сумму продаж за каждый год, и за 3 года вместе.


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

Вот мое решение первого задания:

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
#include <iostream>
#include <Windows.h>
#include <string>
 
using namespace std;
 
#define rus SetConsoleCP(1251);SetConsoleOutputCP(1251);
 
void main()
{
    rus;
    
    int value[12]; // продажи
    char* name[12] = 
    
    {"январь", "февраль", "март",
    "апрель", "май", "июнь",
    "июль", "август", "сентябрь",
    "октябрь", "ноябрь", "декабрь"};
 
    int summ = 0;
 
    for (int i = 0; i < 12; i++)
    {
        cout << "Введите кол-во проданных книг за " << name[i] << endl;
        cin >> value[i];
        summ += value[i];
    }
    
    cout << endl << endl << "Сумма - " << summ << endl;
    
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2013, 11:41     Циклы и двумерные массивы
Посмотрите здесь:

двумерные массивы C++
C++ Двумерные массивы
Двумерные массивы C++
Двумерные массивы C++
C++ Циклы и двумерные массивы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hugra
 Аватар для Hugra
47 / 47 / 1
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
25.08.2013, 11:48     Циклы и двумерные массивы #2
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Решенная задача:

Вы продаете книгу "Язык С++ для чайников". Напишите программу, которая позволит ввести помесячные объемы продаж в течении года (в количестве книг, а не в деньгах). Программа должна использовать цикл, в котором выводится приглашения с названием месяца, применяя массив указателей на char (или массив объектов string), инициализированный строками - названиями месяцев, и сохраняя введенные значения в массиве int. Затем программа должна найти сумму содержимого массива и выдать общий объем продаж за год.

Следующая задача:

Выполните упражнение выше, но используя двумерный массив для сохранения данных о месячных продажах за 3 года. Выдайте сумму продаж за каждый год, и за 3 года вместе.


Не могу понять как цикл составить с двумерными массивами. Подскажите пожалуйста.
вот мое решение
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
#include <iostream>
using namespace std;
 
int main()
{
    system("chcp 1251");
    system("title Ch.5 Ex.5-6");
 
    const char * months[] = 
    {
        "Январь",
        "Февраль",
        "Март",
        "Апрель",
        "Май",
        "Июнь",
        "Июль",
        "Август",
        "Сентябрь",
        "Октябрь",
        "Ноябрь",
        "Декабрь"
    };
        
    cout << "Введите объем продаж для каждого месяца: " << endl;
 
    int value[3][12] ={0};
    int sum = 0;
    int sumOfYears = 0;
    for(int j = 0; j < 3; ++j)
    {
        sum = 0;
        cout << j+1 << "-й год продаж." << endl;
        for(int i = 0; i < 12; ++i)
        {
            cout << months[i] << ": ";
            cin >> value[j][i];
            sum += value[j][i];
        }
        cout << "Объем продаж за "<< j+1 <<"-й год составил: " << sum << endl;
        sumOfYears += sum;
    }
    
    cout << "Объем продаж за все года: " << sumOfYears << endl;
 
    system("PAUSE");
    return 0;
}
loktionov272
8 / 8 / 1
Регистрация: 10.08.2013
Сообщений: 22
25.08.2013, 12:11     Циклы и двумерные массивы #3
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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char** argv) {
    
    string months[12] = {
                            "Jan", "Feb", "Mar", "Apr",
                            "May", "Jun", "Jul", "Aug",
                            "Sep", "Okt", "Nov", "Dec"
                        };
    int amount[12];
    int sum[3] = {0,0,0};
 
    for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 12; j++) {
 
            cout << "Введите количество продаж за год#"
                 << (i + 1) << "("
                 << months[j] << "): ";
            cin  >> amount[j];
 
            sum[i] += amount[j];
        }
    }
 
    for(int i = 0; i < 3; i++) {
        cout << "Общий объем продаж за год#"
             << (i + 1) << ": " << sum[i] << endl;
    }
    
    cout << "Общий объем продаж за 3 года: "
         << (sum[0] + sum[1] + sum [2]) << endl;
    
    return 0;
}
результат:
Кликните здесь для просмотра всего текста
Введите количество продаж за год#1(Jan): 1
Введите количество продаж за год#1(Feb): 1
Введите количество продаж за год#1(Mar): 1
Введите количество продаж за год#1(Apr): 1
Введите количество продаж за год#1(May): 1
Введите количество продаж за год#1(Jun): 1
Введите количество продаж за год#1(Jul): 1
Введите количество продаж за год#1(Aug): 1
Введите количество продаж за год#1(Sep): 1
Введите количество продаж за год#1(Okt): 1
Введите количество продаж за год#1(Nov): 1
Введите количество продаж за год#1(Dec): 1
Введите количество продаж за год#2(Jan): 2
Введите количество продаж за год#2(Feb): 2
Введите количество продаж за год#2(Mar): 2
Введите количество продаж за год#2(Apr): 2
Введите количество продаж за год#2(May): 2
Введите количество продаж за год#2(Jun): 2
Введите количество продаж за год#2(Jul): 2
Введите количество продаж за год#2(Aug): 2
Введите количество продаж за год#2(Sep): 2
Введите количество продаж за год#2(Okt): 2
Введите количество продаж за год#2(Nov): 2
Введите количество продаж за год#2(Dec): 2
Введите количество продаж за год#3(Jan): 3
Введите количество продаж за год#3(Feb): 3
Введите количество продаж за год#3(Mar): 3
Введите количество продаж за год#3(Apr): 3
Введите количество продаж за год#3(May): 3
Введите количество продаж за год#3(Jun): 3
Введите количество продаж за год#3(Jul): 3
Введите количество продаж за год#3(Aug): 3
Введите количество продаж за год#3(Sep): 3
Введите количество продаж за год#3(Okt): 3
Введите количество продаж за год#3(Nov): 3
Введите количество продаж за год#3(Dec): 3
Общий объем продаж за год#1: 12
Общий объем продаж за год#2: 24
Общий объем продаж за год#3: 36
Общий объем продаж за 3 года: 72
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
25.08.2013, 12:28  [ТС]     Циклы и двумерные массивы #4
Цитата Сообщение от loktionov272 Посмотреть сообщение
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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char** argv) {
    
    string months[12] = {
                            "Jan", "Feb", "Mar", "Apr",
                            "May", "Jun", "Jul", "Aug",
                            "Sep", "Okt", "Nov", "Dec"
                        };
    int amount[12];
    int sum[3] = {0,0,0};
 
    for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 12; j++) {
 
            cout << "Введите количество продаж за год#"
                 << (i + 1) << "("
                 << months[j] << "): ";
            cin  >> amount[j];
 
            sum[i] += amount[j];
        }
    }
 
    for(int i = 0; i < 3; i++) {
        cout << "Общий объем продаж за год#"
             << (i + 1) << ": " << sum[i] << endl;
    }
    
    cout << "Общий объем продаж за 3 года: "
         << (sum[0] + sum[1] + sum [2]) << endl;
    
    return 0;
}
результат:
Кликните здесь для просмотра всего текста
Введите количество продаж за год#1(Jan): 1
Введите количество продаж за год#1(Feb): 1
Введите количество продаж за год#1(Mar): 1
Введите количество продаж за год#1(Apr): 1
Введите количество продаж за год#1(May): 1
Введите количество продаж за год#1(Jun): 1
Введите количество продаж за год#1(Jul): 1
Введите количество продаж за год#1(Aug): 1
Введите количество продаж за год#1(Sep): 1
Введите количество продаж за год#1(Okt): 1
Введите количество продаж за год#1(Nov): 1
Введите количество продаж за год#1(Dec): 1
Введите количество продаж за год#2(Jan): 2
Введите количество продаж за год#2(Feb): 2
Введите количество продаж за год#2(Mar): 2
Введите количество продаж за год#2(Apr): 2
Введите количество продаж за год#2(May): 2
Введите количество продаж за год#2(Jun): 2
Введите количество продаж за год#2(Jul): 2
Введите количество продаж за год#2(Aug): 2
Введите количество продаж за год#2(Sep): 2
Введите количество продаж за год#2(Okt): 2
Введите количество продаж за год#2(Nov): 2
Введите количество продаж за год#2(Dec): 2
Введите количество продаж за год#3(Jan): 3
Введите количество продаж за год#3(Feb): 3
Введите количество продаж за год#3(Mar): 3
Введите количество продаж за год#3(Apr): 3
Введите количество продаж за год#3(May): 3
Введите количество продаж за год#3(Jun): 3
Введите количество продаж за год#3(Jul): 3
Введите количество продаж за год#3(Aug): 3
Введите количество продаж за год#3(Sep): 3
Введите количество продаж за год#3(Okt): 3
Введите количество продаж за год#3(Nov): 3
Введите количество продаж за год#3(Dec): 3
Общий объем продаж за год#1: 12
Общий объем продаж за год#2: 24
Общий объем продаж за год#3: 36
Общий объем продаж за 3 года: 72
Спасибо всем, я решил немного по своему, но такая проблема - результат за 3 год показывается неверно - большое отрицательное значение. С первыми двумя все правильно. Как так?

Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <Windows.h>
#include <string>
 
using namespace std;
 
#define rus SetConsoleCP(1251);SetConsoleOutputCP(1251);
 
void main()
{
    rus;
    char* month[12] = 
    
    {"январь", "февраль", "март",
    "апрель", "май", "июнь",
    "июль", "август", "сентябрь",
    "октябрь", "ноябрь", "декабрь"};
 
    int year[3] = {2011, 2012, 2013};
    int value[12]; // месяцы
    int summ[3] = {0};
 
    for (int y = 0; y < 3; y++)
    {   
        cout << endl << endl << year[y] << "год\n\n";
        for (int i = 0; i < 12; i++)
        { 
            cout << "Введите кол-во проданных книг за " << month[i] << endl;
            cin >> value[i];
            summ[y] += value[i];
        }
    }
    
    cout << "\n\nСумма за " << year[0] << " г - " << summ[1];
    cout << "\nСумма за " << year[1] << " г - " << summ[2];
    cout << "\nСумма за " << year[2]  << " г - " << summ[3];
    cout << "\nСумма за все года - " << year[0]+year[1]+year[2];
    system("pause");


UPD: Ах точно, я же сделал с одномерным массивом. Сейчас переделаю.
Hugra
 Аватар для Hugra
47 / 47 / 1
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
25.08.2013, 12:38     Циклы и двумерные массивы #5
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
я решил немного по своему
Неправильный подход к изучению материала. Если сказано двумерный массив, значит надо делать с двумерным и использовать только те средства, которые изучили.
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
25.08.2013, 12:39  [ТС]     Циклы и двумерные массивы #6
Цитата Сообщение от Hugra Посмотреть сообщение
Неправильный подход к изучению материала. Если сказано двумерный массив, значит надо делать с двумерным и использовать только те средства, которые изучили.
Вот решение с двумерным:

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
#include <iostream>
#include <Windows.h>
#include <string>
 
using namespace std;
 
#define rus SetConsoleCP(1251);SetConsoleOutputCP(1251);
 
void main()
{
    rus;
    char* month[12] = 
    
    {"январь", "февраль", "март",
    "апрель", "май", "июнь",
    "июль", "август", "сентябрь",
    "октябрь", "ноябрь", "декабрь"};
 
    int value[3][12]; // месяцы
    int summ[3] = {0};
    int y, i;
 
    for (y = 0; y < 3; y++)
    {   
        cout << endl << endl << y+1 << " год\n\n";
        for (i = 0; i < 12; i++)
        { 
            cout << "Введите кол-во проданных книг за " << month[i] << endl;
            cin >> value[y][i];
            summ[y] += value[y][i];
        }
    }
    cout << "\n\nСумма за " << y-2 << " г - " << summ[1];
    cout << "\nСумма за " <<  y-1 << " г - " << summ[2];
    cout << "\nСумма за " << y  << " г - " << summ[3];
    cout << "\nСумма за все года - " << summ[1]+summ[2];
    system("pause");
}
Все равно сумма за 3 год отрицательная.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2013, 12:42     Циклы и двумерные массивы
Еще ссылки по теме:

C++ двумерные массивы
C++ Двумерные массивы
C++ Двумерные массивы

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

Или воспользуйтесь поиском по форуму:
loktionov272
8 / 8 / 1
Регистрация: 10.08.2013
Сообщений: 22
25.08.2013, 12:42     Циклы и двумерные массивы #7
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
результат за 3 год показывается неверно - большое отрицательное значение. С первыми двумя все правильно. Как так?
индексирование должно начинаться с 0, а не с 1

Добавлено через 1 минуту
1 элемент - array[0]
2 элемент - array[1]
3 элемент - array[2]
Yandex
Объявления
25.08.2013, 12:42     Циклы и двумерные массивы
Ответ Создать тему
Опции темы

Текущее время: 15:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru