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

Создание и обработка матрицы - C++

Восстановить пароль Регистрация
 
Naginata
-65 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 60
02.01.2014, 22:08     Создание и обработка матрицы #1
Здравствуйте, я начинающий в программировании и в С++ в частности, вот столкнулся с проблемой, мне надо задать матрицу, выделить все элементы над главной диагональю и из них выбрать наибольшие по значению, записать их индексы в отдельный массив, где в одной строке будут индексы строк, в другой индесксы столпцов этих элементов. Я не прошу от вас сделать всё за меня, но у меня даже не получается вывести матрицу в консоль, пытался несколькими разными способами, даже ошибок не выдаёт, но делает не то что нужно, к примеру в последнем варианте кода выводит только первую строку матрицы, не знаю почему, а моя просьба состоит в следуйщем: помогите полноценно вывести матрицу, а затем обьясните как оформить остальное, я знаю общие сведения, но как к конктретной задаче подойти не знаю. Надеюсь я не требую слишком много. Зарание спасибо. P.S. Если по каким-либо причинам вы не можете мне обьяснить как подойти к этой конкретной задаче, то хотя бы дайте ссылку на источник где в доступной форме это изложенно.
Создание матрицы:
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
#include "stdafx.h"
#include "math.h"
#include "iostream"
#include "conio.h"
#include "stdlib.h"
 
using namespace std;
int main() 
{
    int i,j,n,m,a[4][4];
    cout<<"n="; cin>>n;
    cout<<"m="; cin>>m;
    cout<<"Input matrix A \n";
    for (i=0; i<n; i++)
    for (j=0; j<m; j++)
    cin>>a[i][j];
    cout<<"matrix A \n";
    for (i=0; i<n; i++)
  { for (j=0; j<m; j++)
    cout<<a[i][j]<<"\t";
    
    system ("pause");
    return 0;}
}
P.S. Библиотек так много, потому что наивно полагал, что это поможет программе работать так, как я хотел.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2014, 22:08     Создание и обработка матрицы
Посмотрите здесь:

C++ Создание и обработка файлов в С
Создание и обработка файлов в С C++
C++ Создание и обработка файлов
Создание и обработка списков C++
C++ Создание и обработка данных в файле
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MicM
 Аватар для MicM
820 / 487 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
02.01.2014, 22:32     Создание и обработка матрицы #2
Цитата Сообщение от Naginata Посмотреть сообщение
помогите полноценно вывести матрицу
C++
1
2
3
4
5
6
for (int i=0; i<n; i++)
{
    for (int j=0; j<m; j++)
        cout <<a[i][j] <<' ';
    cout <<'\n';
}
Добавлено через 3 минуты
Цитата Сообщение от Naginata Посмотреть сообщение
выделить все элементы над главной диагональю
C++
1
2
3
for (int i=0; i<n-1; i++)
    for (int j=i+1; j<m; j++)
        /*...*/
Naginata
-65 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 60
03.01.2014, 01:10  [ТС]     Создание и обработка матрицы #3
Цитата Сообщение от MicM Посмотреть сообщение
C++
1
2
3
4
5
6
for (int i=0; i<n; i++)
{
    for (int j=0; j<m; j++)
        cout <<a[i][j] <<' ';
    cout <<'\n';
}
Добавлено через 3 минуты

C++
1
2
3
for (int i=0; i<n-1; i++)
    for (int j=i+1; j<m; j++)
        /*...*/
Цитата Сообщение от MicM Посмотреть сообщение
C++
1
2
3
4
for (int i=0; i<n; i++) 
{ for (int j=0; j<m; j++) 
cout <<a[i][j] <<' '; 
cout <<'\n'; }
Спасибо это сработало.
Цитата Сообщение от MicM Посмотреть сообщение
C++
1
2
3
for (int i=0; i<n-1; i++) 
for (int j=i+1; j<m; j++) 
/*...*/
А вот это во время выведения в консоль, просто повторяет сообщение "Для продолжения нажмите любую клавишу." P.S. Хотя делает это три раза как количество элементов над главной диагональю, может я не туда вставил кусок кода?
Вот как выглядит код после подставления кусков вашего кода.
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
#include "stdafx.h"
#include "math.h"
#include "iostream"
#include "conio.h"
#include "stdlib.h"
 
    using namespace std;
    int main() 
{   int i,j,n,m,a[4][4];
    cout<<"n="; cin>>n;
    cout<<"m="; cin>>m;
    cout<<"Input matrix A \n";
    for (i=0; i<n; i++)
    for (j=0; j<m; j++)
    cin>>a[i][j];
    for (int i=0; i<n; i++)
{   for (int j=0; j<m; j++)
    cout <<a[i][j] <<' ';
    cout <<'\n';
}   for (int i=0; i<n-1; i++)
    for (int j=i+1; j<m; j++)
        /*...*/
    system ("pause");
    return 0;
}
Ev_Hyper
 Аватар для Ev_Hyper
1808 / 1629 / 435
Регистрация: 15.12.2013
Сообщений: 5,791
03.01.2014, 01:20     Создание и обработка матрицы #4
Цитата Сообщение от Naginata Посмотреть сообщение
А вот это во время выведения в консоль, просто повторяет сообщение "Для продолжения нажмите любую клавишу."
вы все правильно сделали, но вот под этой строчкой:
Цитата Сообщение от Naginata Посмотреть сообщение
/*...*/
имелось ввиду ваша реализация остальной части программы

А "Для продолжения нажмите любую клавишу." появляется потому, что
C++
1
system ("pause");
находится в цикле.
Naginata
-65 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 60
03.01.2014, 10:27  [ТС]     Создание и обработка матрицы #5
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
имелось ввиду ваша реализация остальной части программы
А "Для продолжения нажмите любую клавишу." появляется потому, что
system ("pause");
находится в цикле.
Точно, спасибо, наверное просто устал.

Добавлено через 2 часа 42 минуты
Скажите пожалуйста, как взять индекс полученного элемента и перенести его в другой массив где в одной строке было бы значение строки, а в другой значение столпца, к примеру максимальный элемент 7, координаты этого элемента: вторая строка, первый столбец, так вот, надо что бы в другом массиве на одной строке было только 2-вторая строка, а на другой 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
#include "stdafx.h"
#include "math.h"
#include "iostream"
#include "conio.h"
#include "stdlib.h"
 
    using namespace std;
    int main() 
{   int i,j,n,m,a[4][4],max;
    
    cout<<"n="; cin>>n;
    cout<<"m="; cin>>m;
    cout<<"Input matrix A \n";
    for (i=0; i<n; i++)
    for (j=0; j<m; j++)
    cin>>a[i][j];
    for (int i=0; i<n; i++)
{   for (int j=0; j<m; j++)
    cout <<a[i][j] <<' ';
    cout <<'\n';
}   {for (int i=0; i<n-1; i++)
    for (int j=i+1; j<m; j++)
        /*...*/
    max = a[i][j];
    cout << max << endl;
    }
    system ("pause");
    return 0;
}
Добавлено через 6 часов 19 минут
Немного изменил код, только почему то вместо индекса элемента выдаёт его уникальное имя в двоичной системе как изменить что бы выдавал именно индекс элемента в массиве?
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
#include "stdafx.h"
#include "math.h"
#include "iostream"
#include "conio.h"
#include "stdlib.h"
 
    using namespace std;
    int main() 
{   int e,j,n,m,a[4][4],max;
    
    cout<<"n="; cin>>n;
    cout<<"m="; cin>>m;
    cout<<"Input matrix A \n";
    for (e=0; e<n; e++)
    for (j=0; j<m; j++)
    cin>>a[e][j];
    for (int e=0; e<n; e++)
{   for (int j=0; j<m; j++)
    cout <<a[e][j] <<' ';
    cout <<'\n';
}   {for (int e=0; e<n-1; e++)
    for (int j=e+1; j<m; j++)
        /*...*/
    max = a[e][j];
    cout << max <<endl;}
    {int arr [1][1];
    a[e][j] = arr[1][1];
    cout << arr[e] << endl;
    cout << arr[j] << endl;}
    system ("pause");
    return 0;
}
Ev_Hyper
 Аватар для Ev_Hyper
1808 / 1629 / 435
Регистрация: 15.12.2013
Сообщений: 5,791
03.01.2014, 17:47     Создание и обработка матрицы #6
Для начала у вас скобки в программе поставлены неправильно.

C++
1
int arr [1][1];
вы хотите сюда записать индексы максимума?

C++
1
a[e][j] = arr[1][1];
что вы хотите этим сделать?

PHP
1
2
cout << arr[e] << endl;
 cout << arr[j] << endl;}
а как это понимать?
Naginata
-65 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 60
03.01.2014, 22:28  [ТС]     Создание и обработка матрицы #7
C++
1
int arr [1][1];
Да.
C++
1
a[e][j] = arr[1][1];
Хотел присвоить значение индекса е строке нового массива, а индекс j столпца.
C++
1
2
cout << arr[e] << endl;
 cout << arr[j] << endl;}
Думал вывести в отдельных строках е и j.
Ev_Hyper
 Аватар для Ev_Hyper
1808 / 1629 / 435
Регистрация: 15.12.2013
Сообщений: 5,791
03.01.2014, 22:32     Создание и обработка матрицы #8
Цитата Сообщение от Naginata Посмотреть сообщение
Думал вывести в отдельных строках е и j.
так делать нельзя

Цитата Сообщение от Naginata Посмотреть сообщение
Да.
а зачем вам массив, можно просто две переменные использовать.

Цитата Сообщение от Naginata Посмотреть сообщение
Хотел присвоить значение индекса е строке нового массива, а индекс j столпца.
для этого в цикле сохраняйте e,j
Naginata
-65 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 60
03.01.2014, 22:38  [ТС]     Создание и обработка матрицы #9
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
для этого в цикле сохраняйте e,j
Вот это, не понял, можно на примере?
Ev_Hyper
 Аватар для Ev_Hyper
1808 / 1629 / 435
Регистрация: 15.12.2013
Сообщений: 5,791
03.01.2014, 22:40     Создание и обработка матрицы #10
Примерно вот так:
C++
1
2
3
4
5
6
7
8
9
int str=0,stl=1;
for (int e=0; e<n-1; e++){
for (int j=e+1; j<m; j++)
if(max<a[e][j]){
    max = a[e][j];
    str=e;
    stl=j;
    }
}
Naginata
-65 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 60
03.01.2014, 22:56  [ТС]     Создание и обработка матрицы #11
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Примерно вот так:
C++
1
2
3
4
5
6
7
8
9
int str=0,stl=1;
for (int e=0; e<n-1; e++){
for (int j=e+1; j<m; j++)
if(max<a[e][j]){
 max = a[e][j];
 str=e;
 stl=j;
 }
}
Вставил ваш кусок кода, теперь после выведения максимального элемента, ничего не происходит (не выводится индекс максимального элемента), что я делаю не так?
Ev_Hyper
 Аватар для Ev_Hyper
1808 / 1629 / 435
Регистрация: 15.12.2013
Сообщений: 5,791
04.01.2014, 11:39     Создание и обработка матрицы #12
Naginata, вы наверное где-то ошиблись с выводом, вот так попробуйте:
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
     int main() 
{  
    int e,j,n,m,a[10][10],max;
    
    cout<<"n="; cin>>n;
    cout<<"m="; cin>>m;
    cout<<"Input matrix A \n";
    for (e=0; e<n; e++)
    for (j=0; j<m; j++)
    cin>>a[e][j];
    for (int e=0; e<n; e++){
    for (int j=0; j<m; j++)
    cout <<a[e][j] <<' ';
    cout <<'\n';
    }   
    max=a[0][1];
    int str=0,stl=1;
    for (int e=0; e<n-1; e++){
    for (int j=e+1; j<m; j++)
    if(max<a[e][j]){
        max = a[e][j];
        str=e;
        stl=j;
    }
    }
    cout << max <<" "<<str<<" "<<stl<<endl;
    system ("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2014, 23:40     Создание и обработка матрицы
Еще ссылки по теме:

C++ СОЗДАНИе И ОБРАБОТКа ФАЙЛОВ
C++ Создание и обработка сбалансированного дерева
Создание и обработка файлов C++

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

Или воспользуйтесь поиском по форуму:
Naginata
-65 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 60
08.01.2014, 23:40  [ТС]     Создание и обработка матрицы #13
Спасибо всем, кто участвовал, вышло в итоге с вашей помощью и помощью знакомого вот это.
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
#include "stdafx.h"
#include "math.h"
#include "iostream"
#include "conio.h"
#include "stdlib.h"
 
using namespace std;
 
   int main() 
{  int i,j,n,m,a[4][4],max;
    int mas[2][16];
    cout<<"n="; cin>>n;
    cout<<"m="; cin>>m;
    cout<<"Input matrix A \n";
    for (i=0; i<n; i++)
    for (j=0; j<m; j++)
    cin>>a[i][j];
    for ( i=0; i<n; i++)
{  for ( j=0; j<m; j++)
    cout <<a[i][j] <<' ';
    cout <<'\n';}  
     int k=0;
     max=a[0][1];
     for (i=0; i<n-1;i++) 
{   for (j=i+1; j<m;j++)
{   if (max<a[i][j])
{   max=a[i][j];
     k=0;
     for (int q=0; q<n-1;q++) 
{   for (int w=q+1; w<m;w++)
{   if (max==a[q][w])
{   mas[0][k]=q+1;
     mas[1][k]=w+1;
     k++;
     cout << max << endl;
     }
    }
   }
  }
 }
}
    for (i=0; i<2;i++)
{   for (j=0; j<k;j++)
{   cout << mas[i][j] << " ";
  } cout << endl;
 }  system ("pause");
}
Yandex
Объявления
08.01.2014, 23:40     Создание и обработка матрицы
Ответ Создать тему
Опции темы

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