Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
2 / 0 / 7
Регистрация: 12.05.2012
Сообщений: 173
1

Консольное приложение, функции

10.05.2017, 10:49. Показов 1239. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Создал консольное приложение. Всё работает, но неверно ведётся подсчёт. Помогите пожалуйста разобраться в чём моя ошибка.
Задание: нужно с помощью функции заполнить двумерный массив числами из диапазона [a,b]. Затем нужно вывести числа по количеству.

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <windows.h> 
#include <iostream> 
#include <conio.h> 
#include <stdio.h> 
#include <math.h> 
 
using namespace std; 
void input(int *mass_input, int, int, int, int); 
void output(int *mass_input, int m, int n, int a, int b); 
 
void input(int *mass_input, int m, int n, int a, int b) 
{ 
for (int i = 0; i < m; i++) 
for (int j = 0; j< n; j++) 
{ 
// Заполнение массива и вывод значений его элементов 
mass_input[i, j] = a + rand() % (b+1 - a); // p_darr будет принадлежать диапазону [a, b] 
if (j != m - 1) 
{ 
cout « " m_in" « "[" « i « "," « j « "] = " « mass_input[i, j]; 
} 
else { cout « " m_in " « "[" « i « "," « j « "] = " « mass_input[i, j] « endl; } 
} 
} 
void output(int *mass_input, int m, int n, int a, int b) 
{ 
int *mass_output = new int[b+1]; // Выделение памяти для массива 
for (int k = a; k < b + 1; k++) 
{ 
mass_output[k] = 0; 
} 
for (int i = 0; i < m; i++) 
for (int j = 0; j < n; j++) 
{ 
for (int k = a; k < b+1; k++) 
{ 
if (mass_input[i, j] == k) 
mass_output[k] = mass_output[k] + 1; 
} 
} 
for (int k = a; k < b+1; k++) 
{ 
cout « k«" - " « mass_output[k] « endl; 
} 
delete[] mass_output; // очистка памяти 
} 
 
int main() 
{ 
SetConsoleCP(1251); 
SetConsoleOutputCP(1251); 
int n,m,a,b; // размер массива 
cout « "Введите количество строк m= "; 
cin » m; // получение от пользователя размера массива, 
cout « "введите количество столбцов n= "; 
cin » n; // получение от пользователя размера массива 
cout « "Введите для диапазона случайных чисел"«endl«"[a= "; 
cin » a; // получение от пользователя a 
cout « ",b= "; 
cin » b; // получение от пользователя b 
int *mass_input = new int[m, n]; // Выделение памяти для массива 
input(mass_input,m,n,a,b); 
output(mass_input,m,n,a,b); 
delete[] mass_input; // очистка памяти 
system("pause"); 
return 0; 
}
Консольное приложение, функции
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2017, 10:49
Ответы с готовыми решениями:

Задания на функции (Консольное приложение)
1. Написать функцию, которая принимает число и возвращает: - true - если переданное число...

Консольное приложение. Матрицы.Написать и протестировать функции
Написать и протестировать функции вычитания матриц, изменения знака матрицы, формирования единичной...

Разработать консольное приложение, производящее табулирование заданной функции
Буду признателен за помощь или за ваши возможные варианты решения, не кто не смог правильно решить...

консольное приложение (при запуске приложение открывалось на весь экран)
Как сделать, чтобы при запуске приложение открывалось на весь экран?

7
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
10.05.2017, 10:57 2
Цитата Сообщение от Sanya Black1993 Посмотреть сообщение
cin » a;
Это не скомпилируется. Вместо » должно быть >>. И так по всему коду.
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
10.05.2017, 11:05 3
может быть так?
C++
1
mass_input[i][j] = a + rand() % b;
0
2 / 0 / 7
Регистрация: 12.05.2012
Сообщений: 173
10.05.2017, 11:14  [ТС] 4
likehood, так у меня всё также, как вы говорите.
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <windows.h>
#include <iostream>
#include <conio.h> 
#include <stdio.h> 
#include <math.h>
 
using namespace std;
void input(int *mass_input, int, int, int, int);
void output(int *mass_input, int m, int n, int a, int b);
 
void input(int *mass_input, int m, int n, int a, int b)
{
    for (int i = 0; i < m; i++)
        for (int j = 0; j< n; j++)
        {
            // Заполнение массива и вывод значений его элементов
            mass_input[i, j] = a + rand() % (b+1 - a); // p_darr будет принадлежать диапазону [a, b]
            if (j != m - 1)
            {
                cout << " m_in" << "[" << i << "," << j << "] = " << mass_input[i, j];
            }
            else { cout << " m_in " << "[" << i << "," << j << "] = " << mass_input[i, j] << endl; }
        }
}
void output(int *mass_input, int m, int n, int a, int b)
{
           int *mass_output = new int[b+1]; // Выделение памяти для массива
           for (int k = a; k < b + 1; k++)
           {
               mass_output[k] = 0;
           }
            for (int i = 0; i < m; i++)
                for (int j = 0; j < n; j++)
                {
                    for (int k = a; k < b+1; k++)
                    {
                        if (mass_input[i, j] == k)
                            mass_output[k] = mass_output[k] + 1;
                    }
                }
            for (int k = a; k < b+1; k++)
            {
                cout << k<<" - " << mass_output[k] << endl;
            }
            delete[] mass_output; // очистка памяти
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int n,m,a,b; // размер массива
    cout << "Введите количество строк m= ";
    cin >> m; // получение от пользователя размера массива,
    cout << "введите количество столбцов n= ";
    cin >> n; // получение от пользователя размера массива
    cout << "Введите для диапазона случайных чисел"<<endl<<"[a= ";
    cin >> a; // получение от пользователя a
    cout << ",b= ";
    cin >> b; // получение от пользователя b
    int *mass_input = new int[m, n]; // Выделение памяти для массива
    input(mass_input,m,n,a,b);
    output(mass_input,m,n,a,b);
    delete[] mass_input; // очистка памяти
    system("pause");
    return 0;
}
Добавлено через 8 минут
Antikl , с вами согласен. Так будет более красиво.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void input(int *mass_input, int m, int n, int a, int b)
{
    for (int i = 0; i < m; i++)
        for (int j = 0; j< n; j++)
        {
            // Заполнение массива и вывод значений его элементов
            mass_input[i, j] = a + rand() % b; // p_darr будет принадлежать диапазону [a, b]
            if (j != m - 1)
            {
                cout << " m_in" << "[" << i << "," << j << "] = " << mass_input[i, j];
            }
            else { cout << " m_in " << "[" << i << "," << j << "] = " << mass_input[i, j] << endl; }
        }
}
Но дело в том, что эта функция работала и работает замечательно!
Дело в этой функции.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void output(int *mass_input, int m, int n, int a, int b)
{
           int *mass_output = new int[b+1]; // Выделение памяти для массива
           for (int k = a; k < b + 1; k++)
           {
               mass_output[k] = 0;
           }
            for (int i = 0; i < m; i++)
                for (int j = 0; j < n; j++)
                {
                    for (int k = a; k < b+1; k++)
                    {
                        if (mass_input[i, j] == k)
                            mass_output[k] = mass_output[k] + 1;
                    }
                }
            for (int k = a; k < b+1; k++)
            {
                cout << k<<" - " << mass_output[k] << endl;
            }
            delete[] mass_output; // очистка памяти
}
Подсчёт неверно выполняется.
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
10.05.2017, 11:18 5
Лучший ответ Сообщение было отмечено Sanya Black1993 как решение

Решение

Sanya Black1993,
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <windows.h>
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <math.h>
 
using namespace std;
void input(int **mass_input, int, int, int, int);
void output(int **mass_input, int m, int n, int a, int b);
 
void input(int **mass_input, int m, int n, int a, int b)
{
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j< n; j++)
        {
            // Заполнение массива и вывод значений его элементов
            mass_input[i][j] = a + rand() % (b+1 - a); // p_darr будет принадлежать диапазону [a, b]
            cout << " m_in" << "[" << i << "," << j << "] = " << mass_input[i][j];
        }
        cout << endl;
    }
}
 
void output(int **mass_input, int m, int n, int a, int b)
{
    int *mass_output = new int[b+1]; // Выделение памяти для массива
    for (int k = a; k < b + 1; k++)
    {
        mass_output[k] = 0;
    }
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
        {
            for (int k = a; k < b+1; k++)
            {
                if (mass_input[i][j] == k)
                    mass_output[k] = mass_output[k] + 1;
            }
        }
    cout << endl;
    for (int k = a; k < b+1; k++)
    {
        cout << k << " - " << mass_output[k] << endl;
    }
    delete[] mass_output; // очистка памяти
}
 
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int n,m,a,b; // размер массива
cout << "Введите количество строк m= ";
cin >> m; // получение от пользователя размера массива,
cout << "введите количество столбцов n= ";
cin >> n; // получение от пользователя размера массива
cout << "Введите для диапазона случайных чисел"<<endl<<"[a= ";
cin >> a; // получение от пользователя a
cout << ",b= ";
cin >> b; // получение от пользователя b
int **mass_input = new int*[m]; // Выделение памяти для массива
for(int i=0; i<m; i++)
    mass_input[i] = new int[n];
input(mass_input,m,n,a,b);
output(mass_input,m,n,a,b);
delete[] mass_input; // очистка памяти
system("pause");
return 0;
}
1
2 / 0 / 7
Регистрация: 12.05.2012
Сообщений: 173
10.05.2017, 11:25  [ТС] 6
Даценд, благодарю вас, всё работает!
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
10.05.2017, 11:25 7
Цитата Сообщение от Sanya Black1993 Посмотреть сообщение
likehood, так у меня всё также, как вы говорите.
Посмотрите свой первый пост, который я процитировал. Там именно один символ, а не два.
0
2 / 0 / 7
Регистрация: 12.05.2012
Сообщений: 173
24.05.2017, 13:53  [ТС] 8
Ребят, всё работает. Спасибо всем большое!
Но есть одна проблемка. Когда ввожу диапазон с отрицательными числами, то выбивает ошибку.
Консольное приложение, функции

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <windows.h>
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <math.h>
 
using namespace std;
void input(int **mass_input, int, int, int, int);
void output(int **mass_input, int m, int n, int a, int b);
 
void input(int **mass_input, int m, int n, int a, int b)
{
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j< n; j++)
        {
            // Заполнение массива и вывод значений его элементов
            mass_input[i][j] = a + rand() % (abs(b+1 - a)); // p_darr будет принадлежать диапазону [a, b]
            cout << " m_in" << "[" << i << "," << j << "] = " << mass_input[i][j];
        }
        cout << endl;
    }
}
 
void output(int **mass_input, int m, int n, int a, int b)
{
    int *mass_output = new int[b+1]; // Выделение памяти для массива
    for (int k = a; k < b+1; k++)
    {
        mass_output[k] = 0;
    }
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
        {
            for (int k = a; k < b+1; k++)
            {
                if (mass_input[i][j] == k)
                    mass_output[k] = mass_output[k] + 1;
            }
        }
    cout << endl;
    for (int k = a; k < b+1; k++)
    {
        cout << k << " - " << mass_output[k] << endl;
    }
    delete[] mass_output; // очистка памяти
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int n, m, a, b; // размер массива
    cout << "Введите количество строк m= ";
    cin >> m; // получение от пользователя размера массива,
    cout << "введите количество столбцов n= ";
    cin >> n; // получение от пользователя размера массива
    cout << "Введите [a,b] для диапазона случайных чисел" << endl << "a= ";
    cin >> a; // получение от пользователя a
    cout << "b= ";
    cin >> b;  // получение от пользователя b
    int **mass_input = new int*[m]; // Выделение памяти для массива
    for (int i = 0; i<m; i++)
        mass_input[i] = new int[n];
    input(mass_input, m, n, a, b);
    output(mass_input, m, n, a, b);
    for (int i = 0; i < m; i++)
    delete[] mass_input[i]; // очистка строк памяти
    delete[] mass_input; // очистка памяти
    system("pause");
    return 0;
}
0
24.05.2017, 13:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2017, 13:53
Помогаю со студенческими работами здесь

консольное приложение
Помогите разобраться с задачкой! Написать на С++ код консольного приложения, реализующий в...

Консольное приложение
хочу сделдать обычное консольное приложение в DEV c++ 5.11 (лицинзионный) вылезает вот это...

Консольное приложение
Приветствую. Решил вспомнить азы программирования на C++, путем создания простенькой игры в...

Консольное приложение на С++
Задание такое: 1. Розробити функцію, що повертає абсолютне значення частки від ділення першого ...

Консольное приложение на С++
народ помогите плиз решить проблему написал игру под консоль. типа змейки как добавить функцию...

Консольное приложение
Здравствуйте! Имеется консольное приложение, которое при наборе команды &quot;start&quot; выполняет запуск...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru