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

Работа с массивами Visual Studio C++ (консольное приложение)

16.03.2016, 13:11. Показов 2040. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ввести двумерный массив целых чисел 3х4. Найти для каждой строки сумму модулей элементов и сформировать одномерный массив. Отсортировать каждый столбец двумерного массива по возрастанию. Вывести одномерный и двумерный массивы на экран.

Можно использовать потоковый ввод-вывод, функции, указатели.

Добавлено через 1 час 34 минуты
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <iostream>
using namespace std;
void print(int *mtx, int *mtx2, int RowCount, int ColumnCount);
int main()
{ 
    const int RowCount = 3;
    const int ColumnCount = 4;
 
    int mtx[3][4] = {};
 
    for (int rowNum = 0; rowNum < RowCount; rowNum++)
    {
        for (int columnNum = 0; columnNum < ColumnCount; columnNum++)
        {
            cin>>mtx[rowNum][columnNum];
        }
    }   
 
 
    int mtx2[RowCount] = {};
 
    for (int rowNum = 0; rowNum < RowCount; rowNum++)
    {
        int sum=0;
        for (int columnNum = 0; columnNum < ColumnCount; columnNum++)
        {
            sum=sum+abs(mtx[rowNum][columnNum]);            
        }
        mtx2[rowNum]=sum;
    }   
 
    
 
 
 
 
     int temp=0;
     for (int i=0; i<ColumnCount; i++)
     {
         bool NeedToSort=1;
         while (NeedToSort)
         {
            NeedToSort=0;
            //каждый второй столбец проходим n раз
            for (int l=0; l<(RowCount-1); l++)
            {
                //сравнивая каждый элемент со следующим в столбце
                if (mtx[l][i]>mtx[l+1][i])
                {
                    //и если следующий элемент столбца меньше предыдущего, меняем их местами
                    temp=mtx[l][i];
                    mtx[l][i]=mtx[l+1][i];
                    mtx[l+1][i]=temp;
                    NeedToSort=1;
                }
            }
         }
     }
 
 
     print(*mtx,*mtx2,RowCount, ColumnCount);
    
 
    int a;
    cin>>a;
    return 0;
}
 
void print(int *mtx, int *mtx2, int RowCount, int ColumnCount){
     cout<<endl;
     cout<<"One-dimensional matrix:"<<endl;
 
    for (int rowNum = 0; rowNum < RowCount; rowNum++)
    {
        
        cout << (&mtx2)[rowNum] << " ";
 
    }
     cout<<endl;
     cout<<"Two-dimensional matrix:"<<endl;
 
    for (int rowNum = 0; rowNum < RowCount; rowNum++)
    {
        for (int columnNum = 0; columnNum < ColumnCount; columnNum++)
        {
            cout << (&(&mtx)[rowNum])[columnNum] << "  ";
        }
        cout << endl;
    }
    return;
}
Выдаёт ошибку:
1>g:\documents and settings\visual studio projects\1\1\1.cpp(61): error C2664: 'print' : cannot convert parameter 2 from 'int' to 'int *'
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.03.2016, 13:11
Ответы с готовыми решениями:

Visual studio C++ Консольное приложение
Чем отличается консольное приложение CLR от Win32?

Консольное приложение в Visual Studio C++
https://www.cyberforum.ru/attachment.php?attachmentid=481911&amp;stc=1&amp;d=142204455...

Как создать консольное приложение c++ в Visual Studio Community 2015
Файл-&gt;Новый-&gt;Создать проект-&gt;Шаблоны-&gt;Другие языки-&gt;Visual c++ а дальше нет консольного приложения....

Как сделать консольное приложение exe формата в visual studio
Проблема такова. Написал небольшое приложение в формате sln и его надо разослать людям. Но у них...

9
28 / 20 / 97
Регистрация: 22.10.2015
Сообщений: 304
16.03.2016, 13:22 2
Dartanjan2016, почему бы не декларировать функцию как
C++
1
void print(int mtx[][], int mtx2[], int RowCount, int ColumnCount);
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
16.03.2016, 13:48 3
C++
1
2
3
4
5
6
7
    int mtx[3][4] = {};
    int *p1=&mtx[0][0];
 
....
int *p2=&mtx2[0];
...
 print(p1,p2,RowCount, ColumnCount);
0
0 / 0 / 0
Регистрация: 16.03.2016
Сообщений: 5
16.03.2016, 14:15  [ТС] 4
Работа с массивами Visual Studio C++ (консольное приложение)


Вот что я получил, используя
C++
1
2
3
4
5
6
7
    int mtx[3][4] = {};
    int *p1=&mtx[0][0];
 
....
int *p2=&mtx2[0];
...
 print(p1,p2,RowCount, ColumnCount);
Полный код:
Кликните здесь для просмотра всего текста
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
using namespace std;
void print(int *mtx, int *mtx2, int RowCount, int ColumnCount);
int main()
{ 
    const int RowCount = 3;
    const int ColumnCount = 4;
 
    int mtx[3][4] = {};
      int *p1=&mtx[0][0];
 
 
    
 
    for (int rowNum = 0; rowNum < RowCount; rowNum++)
    {
        for (int columnNum = 0; columnNum < ColumnCount; columnNum++)
        {
            cin>>mtx[rowNum][columnNum];
        }
    }   
 
 
    int mtx2[RowCount] = {};
  int *p2=&mtx2[0];
    for (int rowNum = 0; rowNum < RowCount; rowNum++)
    {
        int sum=0;
        for (int columnNum = 0; columnNum < ColumnCount; columnNum++)
        {
            sum=sum+abs(mtx[rowNum][columnNum]);            
        }
        mtx2[rowNum]=sum;
    }   
 
    
 
 
 
 
     int temp=0;
     for (int i=0; i<ColumnCount; i++)
     {
         bool NeedToSort=1;
         while (NeedToSort)
         {
            NeedToSort=0;
            //каждый второй столбец проходим n раз
            for (int l=0; l<(RowCount-1); l++)
            {
                //сравнивая каждый элемент со следующим в столбце
                if (mtx[l][i]>mtx[l+1][i])
                {
                    //и если следующий элемент столбца меньше предыдущего, меняем их местами
                    temp=mtx[l][i];
                    mtx[l][i]=mtx[l+1][i];
                    mtx[l+1][i]=temp;
                    NeedToSort=1;
                }
            }
         }
     }
 
     print(p1,p2,RowCount, ColumnCount);
 
    int a;
    cin>>a;
    return 0;
}
 
void print(int *mtx, int *mtx2, int RowCount, int ColumnCount){
     cout<<endl;
     cout<<"One-dimensional matrix:"<<endl;
 
    for (int rowNum = 0; rowNum < RowCount; rowNum++)
    {
        
        cout << (&mtx2)[rowNum] << " ";
 
    }
     cout<<endl;
     cout<<"Two-dimensional matrix:"<<endl;
 
    for (int rowNum = 0; rowNum < RowCount; rowNum++)
    {
        for (int columnNum = 0; columnNum < ColumnCount; columnNum++)
        {
            cout << (&(&mtx)[rowNum])[columnNum] << "  ";
        }
        cout << endl;
    }
    return;
}
0
0 / 0 / 0
Регистрация: 16.03.2016
Сообщений: 5
16.03.2016, 14:18  [ТС] 5
Цитата Сообщение от dcshowcousa Посмотреть сообщение
Dartanjan2016, почему бы не декларировать функцию как
C++
1
void print(int mtx[][], int mtx2[], int RowCount, int ColumnCount);
А этот вариант не запускается.

Весь код:
Кликните здесь для просмотра всего текста
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <iostream>
using namespace std;
void print(int mtx[][], int mtx2[], int RowCount, int ColumnCount);
int main()
{ 
    const int RowCount = 3;
    const int ColumnCount = 4;
 
    int mtx[3][4] = {};
    
 
    for (int rowNum = 0; rowNum < RowCount; rowNum++)
    {
        for (int columnNum = 0; columnNum < ColumnCount; columnNum++)
        {
            cin>>mtx[rowNum][columnNum];
        }
    }   
 
 
    int mtx2[RowCount] = {};
 
    for (int rowNum = 0; rowNum < RowCount; rowNum++)
    {
        int sum=0;
        for (int columnNum = 0; columnNum < ColumnCount; columnNum++)
        {
            sum=sum+abs(mtx[rowNum][columnNum]);            
        }
        mtx2[rowNum]=sum;
    }   
 
    
 
 
 
 
     int temp=0;
     for (int i=0; i<ColumnCount; i++)
     {
         bool NeedToSort=1;
         while (NeedToSort)
         {
            NeedToSort=0;
            //каждый второй столбец проходим n раз
            for (int l=0; l<(RowCount-1); l++)
            {
                //сравнивая каждый элемент со следующим в столбце
                if (mtx[l][i]>mtx[l+1][i])
                {
                    //и если следующий элемент столбца меньше предыдущего, меняем их местами
                    temp=mtx[l][i];
                    mtx[l][i]=mtx[l+1][i];
                    mtx[l+1][i]=temp;
                    NeedToSort=1;
                }
            }
         }
     }
 
     print(mtx,mtx2,RowCount, ColumnCount);
 
    int a;
    cin>>a;
    return 0;
}
 
void print(int mtx[][], int mtx2[], int RowCount, int ColumnCount){
     cout<<endl;
     cout<<"One-dimensional matrix:"<<endl;
 
    for (int rowNum = 0; rowNum < RowCount; rowNum++)
    {
        
        cout << (&mtx2)[rowNum] << " ";
 
    }
     cout<<endl;
     cout<<"Two-dimensional matrix:"<<endl;
 
    for (int rowNum = 0; rowNum < RowCount; rowNum++)
    {
        for (int columnNum = 0; columnNum < ColumnCount; columnNum++)
        {
            cout << (&(&mtx)[rowNum])[columnNum] << "  ";
        }
        cout << endl;
    }
    return;
}
Ошибки:
1>g:\documents and settings\visual studio projects\1\1\1.cpp(3): error C2087: 'mtx' : missing subscript
1>g:\documents and settings\visual studio projects\1\1\1.cpp(61): error C2664: 'print' : cannot convert parameter 1 from 'int [3][4]' to 'int [][1]'
0
28 / 20 / 97
Регистрация: 22.10.2015
Сообщений: 304
16.03.2016, 14:42 6
Лучший ответ Сообщение было отмечено Dartanjan2016 как решение

Решение

Dartanjan2016,
C++
1
void print(int mtx[][4], int mtx2[], int RowCount, int ColumnCount);
и обращаться к элементам массива как обычно
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
16.03.2016, 14:58 7
строки 78 и 88 тоже надо подправить
78 cout << mtx2[rowNum] << " ";
88 точно не знаю как

Добавлено через 9 минут
88 cout << mtx[rowNum*4+columnNum]
0
28 / 20 / 97
Регистрация: 22.10.2015
Сообщений: 304
16.03.2016, 14:58 8
88
C++
1
cout << mtx[rowNum][columnNum] << "  ";
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
16.03.2016, 15:04 9
88 cout << mtx[rowNum*ColumnCount+columnNum]
0
0 / 0 / 0
Регистрация: 16.03.2016
Сообщений: 5
16.03.2016, 16:15  [ТС] 10
Всё получилось уже, спасибо.
0
16.03.2016, 16:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2016, 16:15
Помогаю со студенческими работами здесь

Консольное приложение в Visual C++
Хочу изучить язык программирования Visual C++. При создании консольного приложения выходит ошибка:...

Visual Prolog 7,5 консольное приложение
Построить модель представления знаний в предметной области «Кинопрокат» (ассортимент и работа с...

Невидимое консольное приложение - Visual Basic 6
Добрый вечер. Подскажите пожалуйста

Консольное приложение: работа со строками 3
Заставьте компьютер случайным образом загадать букву латинского (русского) алфавита. Предложите...


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

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