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

Нахождение k в квадратной матрице

08.04.2012, 05:24. Показов 934. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Добрые люди, требуется ваша помощь!
Итак, задали мне задачку которую решить я не могу, ну вообще не понимаю как... Но очень надо.

Вот собственно с этой задачей у меня и проблема:

Для заданной квадратной матрицы найти такие k, что k-я строка матрицы совпадает с k-м столбцом.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2012, 05:24
Ответы с готовыми решениями:

в квадратной матрице....
помогите плз кто разбираеться!!!!!!! 1)В данной действительной квадратной матрице порядка п найти...

Указатели в квадратной матрице
Не понимаю, почему первую строчку выводит нормально, а остальные со странными значениями (45...

Чётные строки в квадратной матрице
Вычислить произведение отрицательных элементов массива, расположенных в четных строках. ...

В квадратной матрице 5 на 5 поменять местами
В квадратной матрице 5 на 5 поменять местами столбец, который имеет наибольшей элемент со столбцом,...

13
7 / 6 / 6
Регистрация: 07.04.2012
Сообщений: 51
08.04.2012, 08:12 2
Компилятор Borland C++ 3.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
#include <stdio.h>
#include <conio.h>
#define m 3
 
void main()
{
int A[m][m]={1,2,3,2,4,6,3,9,0};
int i,j,k;
for(i=0; i < m; i++)
{
for(j=0; j < m; j++)
printf("%d\t",A[i][j]);
printf("\n");
}
for(i=0;i<m;++i)
{
k=0;
    for(j=0;j<m;++j)
    {
        if(A[i][j]==A[j][i])
        k++;
    }
    if(k==m) printf("k=%d\n",i); //Первый столбец нулевой
}
}
1
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.04.2012, 08:22 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 <boost/numeric/ublas/matrix.hpp>
#include <cstdlib>
#include <random>
#include <iomanip>
#include <algorithm>
 
int main()
{
    using namespace boost::numeric::ublas;
 
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> uid(-1, 0);
    const std::size_t size = 10;
    matrix<int> m(size, size);
    for(auto row = m.begin1(); row != m.end1(); ++row)
    {
        for(auto& elem: row)
        {
            elem = uid(gen);
            std::cout << std::setw(4) << elem;
        }
        std::cout << std::endl;
    }
 
    auto col = m.begin2();
    for(auto row = m.begin1(); row != m.end1(); ++row, ++col)
        if(std::equal(row.begin(), row.end(), col.begin()))
            std::cout << row - m.begin1() << " ";
    std::cout << std::endl;
    return 0;
}
1
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 15
08.04.2012, 09:18  [ТС] 4
Цитата Сообщение от Mogost Посмотреть сообщение
Компилятор Borland C++ 3.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
#include <stdio.h>
#include <conio.h>
#define m 3
 
void main()
{
int A[m][m]={1,2,3,2,4,6,3,9,0};
int i,j,k;
for(i=0; i < m; i++)
{
for(j=0; j < m; j++)
printf("%d\t",A[i][j]);
printf("\n");
}
for(i=0;i<m;++i)
{
k=0;
    for(j=0;j<m;++j)
    {
        if(A[i][j]==A[j][i])
        k++;
    }
    if(k==m) printf("k=%d\n",i); //Первый столбец нулевой
}
}
Может быть я чего-то не понимаю, но здесь я не вижу совпадения строки и столбца. И почему именно k должно быть равным 0?
0
7 / 6 / 6
Регистрация: 07.04.2012
Сообщений: 51
08.04.2012, 12:39 5
Цитата Сообщение от Concelvin Посмотреть сообщение
Может быть я чего-то не понимаю, но здесь я не вижу совпадения строки и столбца. И почему именно k должно быть равным 0?
1 2 3
2 4 6
3 9 0

k=0
k строка 123
k столбец 123
Они поэлементно равны...
Не обязательно 0, зависит от заданных чисел
0
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 15
08.04.2012, 14:09  [ТС] 6
Цитата Сообщение от Mogost Посмотреть сообщение
зависит от заданных чисел
Следовательно, данные мы вводим в саму программу. Но могли бы вы предложить вариант программы, где идёт ввод с клавиатуры?
0
7 / 6 / 6
Регистрация: 07.04.2012
Сообщений: 51
08.04.2012, 14:30 7
Цитата Сообщение от Concelvin Посмотреть сообщение
Следовательно, данные мы вводим в саму программу. Но могли бы вы предложить вариант программы, где идёт ввод с клавиатуры?
Размер матрицы заранее знаем или нет?
0
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 15
08.04.2012, 14:37  [ТС] 8
Цитата Сообщение от Mogost Посмотреть сообщение
Размер матрицы заранее знаем или нет?
Нет не известен, размер матрицы может быть любым.
0
7 / 6 / 6
Регистрация: 07.04.2012
Сообщений: 51
08.04.2012, 14:51 9
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 <stdio.h>
#include <conio.h>
#include <alloc.h> 
int main()
{
int **A;
int i,j,k,m;
printf("Vvedite razmer=");scanf("%d",&m);
 
A=(int**)calloc(m,sizeof(int*));
if(A == NULL)
{
printf("Out of memory\n");
getch();
return 0;
}
for(i = 0; i < m; i++)
{
A[i] = (int*)calloc(m,sizeof(int));
if(A[i] == NULL)
{
getch();
return 0;
}
}   
 
for(i=0;i<m;++i)
{
    for(j=0;j<m;++j)
    {
    printf("vvedi A[%d][%d]=",i,j);scanf("%d",&A[i][j]);
    }
}
 
 
for(i=0; i < m; i++)
{
for(j=0; j < m; j++)
printf("%d\t",A[i][j]);
printf("\n");
}
for(i=0;i<m;++i)
{
k=0;
    for(j=0;j<m;++j)
    {
        if(A[i][j]==A[j][i])
        k++;
    }
    if(k==m) printf("k=%d\n",i); //Первый столбец нулевой
}
getch();
}
Может где и накосячил.... но вроде работает
0
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
08.04.2012, 14:59 10
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 <cstdio>
#include <conio.h>
int main()
{
 int size,i,j;
 bool same;
 int **a;
 printf("Size: ");
 scanf("%d",&size);
 a=new int*[size];
 for (i=0;i<size;i++)
  {
   a[i]=new int[size];
   for (j=0;j<size;j++)
    {
     printf("a[%d][%d]=",i,j);
     scanf("%d",&a[i][j]);
    }
  }
 printf("Matrix:\n");
 for (i=0;i<size;i++)
  {
   for (j=0;j<size;j++)
    printf("%d ",a[i][j]);
   printf("\n");
  }
 printf("k=");
 for (i=0;i<size;i++)
  {
   same=true;
   for (j=0;j<size;j++)
    if (a[i][j]!=a[j][i]) { same=false; break; }
   if (same) { printf("%d ",i); getch(); return 0; }
  } 
 printf("not found");
 getch();
 return 0;
}
очистку памяти не сделал, но в данной проге, думаю, некритично
1
7 / 6 / 6
Регистрация: 07.04.2012
Сообщений: 51
08.04.2012, 15:05 11
Тут кстати зависит от того на каком языке писать. Если чистый С, то вариант Nekto не подходит. Т.к. new оператор С++, а не С.
Так что, надо заранее указывать язык, когда просите помощь.
0
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 15
08.04.2012, 15:10  [ТС] 12
Цитата Сообщение от Mogost Посмотреть сообщение
Тут кстати зависит от того на каком языке писать. Если чистый С, то вариант Nekto не подходит. Т.к. new оператор С++, а не С.
Так что, надо заранее указывать язык, когда просите помощь.
Но мне как раз и нужна была программа на C++ Просто в теме забыл написать. Ну вот и всё, я думаю проблема решена, спасибо всем кто отозвался на помощь! Всем добра)
0
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
08.04.2012, 15:11 13
Цитата Сообщение от Concelvin Посмотреть сообщение
Но мне как раз и нужна была программа на C++ Просто в теме забыл написать. Ну вот и всё, я думаю проблема решена, спасибо всем кто отозвался на помощь! Всем добра)
то, что было предложено на чистом С в этой теме, будет работать и на С++
0
7 / 6 / 6
Регистрация: 07.04.2012
Сообщений: 51
08.04.2012, 15:28 14
Цитата Сообщение от Nekto Посмотреть сообщение
то, что было предложено на чистом С в этой теме, будет работать и на С++
Кстати да. В С++ не регламентировано применение malloc\new. Но для С чистого это играет роль.
0
08.04.2012, 15:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2012, 15:28
Помогаю со студенческими работами здесь

Поиск элементов в квадратной матрице
Найти минимальный элемент в матрице ниже главной и побочной диагонали (диагонали включить в...

В квадратной матрице поменять диагонали
В квадратной матрице поменять диагонали

В квадратной матрице поменять местами элементы
В квадратной матрице поменять местами элементы, симметричные относительно главной диагонали.

Найти максимальное значение в квадратной матрице
Дана квадратная матрица Е. Напишите, пожалуйста, программу поиска макс. значения в этой матрице


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

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