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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Concelvin
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 15
#1

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

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

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

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

Для заданной квадратной матрицы найти такие k, что k-я строка матрицы совпадает с k-м столбцом.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2012, 05:24     Нахождение k в квадратной матрице
Посмотрите здесь:

C++ В квадратной матрице поменять местами элементы
в квадратной матрице.... C++
В квадратной матрице A[N][N] определить номер столбца... C++
В квадратной матрице найти максимальный элемент C++
Найти наибольший элемент в квадратной матрице C++
Чётные строки в квадратной матрице C++
C++ Генерация неповторяющихся чисел в квадратной матрице
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mogost
7 / 7 / 1
Регистрация: 07.04.2012
Сообщений: 51
08.04.2012, 08:12     Нахождение k в квадратной матрице #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); //Первый столбец нулевой
}
}
soon
2537 / 1302 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.04.2012, 08:22     Нахождение k в квадратной матрице #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;
}
Concelvin
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 15
08.04.2012, 09:18  [ТС]     Нахождение k в квадратной матрице #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?
Mogost
7 / 7 / 1
Регистрация: 07.04.2012
Сообщений: 51
08.04.2012, 12:39     Нахождение k в квадратной матрице #5
Цитата Сообщение от Concelvin Посмотреть сообщение
Может быть я чего-то не понимаю, но здесь я не вижу совпадения строки и столбца. И почему именно k должно быть равным 0?
1 2 3
2 4 6
3 9 0

k=0
k строка 123
k столбец 123
Они поэлементно равны...
Не обязательно 0, зависит от заданных чисел
Concelvin
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 15
08.04.2012, 14:09  [ТС]     Нахождение k в квадратной матрице #6
Цитата Сообщение от Mogost Посмотреть сообщение
зависит от заданных чисел
Следовательно, данные мы вводим в саму программу. Но могли бы вы предложить вариант программы, где идёт ввод с клавиатуры?
Mogost
7 / 7 / 1
Регистрация: 07.04.2012
Сообщений: 51
08.04.2012, 14:30     Нахождение k в квадратной матрице #7
Цитата Сообщение от Concelvin Посмотреть сообщение
Следовательно, данные мы вводим в саму программу. Но могли бы вы предложить вариант программы, где идёт ввод с клавиатуры?
Размер матрицы заранее знаем или нет?
Concelvin
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 15
08.04.2012, 14:37  [ТС]     Нахождение k в квадратной матрице #8
Цитата Сообщение от Mogost Посмотреть сообщение
Размер матрицы заранее знаем или нет?
Нет не известен, размер матрицы может быть любым.
Mogost
7 / 7 / 1
Регистрация: 07.04.2012
Сообщений: 51
08.04.2012, 14:51     Нахождение k в квадратной матрице #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();
}
Может где и накосячил.... но вроде работает
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
08.04.2012, 14:59     Нахождение k в квадратной матрице #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;
}
очистку памяти не сделал, но в данной проге, думаю, некритично
Mogost
7 / 7 / 1
Регистрация: 07.04.2012
Сообщений: 51
08.04.2012, 15:05     Нахождение k в квадратной матрице #11
Тут кстати зависит от того на каком языке писать. Если чистый С, то вариант Nekto не подходит. Т.к. new оператор С++, а не С.
Так что, надо заранее указывать язык, когда просите помощь.
Concelvin
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 15
08.04.2012, 15:10  [ТС]     Нахождение k в квадратной матрице #12
Цитата Сообщение от Mogost Посмотреть сообщение
Тут кстати зависит от того на каком языке писать. Если чистый С, то вариант Nekto не подходит. Т.к. new оператор С++, а не С.
Так что, надо заранее указывать язык, когда просите помощь.
Но мне как раз и нужна была программа на C++ Просто в теме забыл написать. Ну вот и всё, я думаю проблема решена, спасибо всем кто отозвался на помощь! Всем добра)
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
08.04.2012, 15:11     Нахождение k в квадратной матрице #13
Цитата Сообщение от Concelvin Посмотреть сообщение
Но мне как раз и нужна была программа на C++ Просто в теме забыл написать. Ну вот и всё, я думаю проблема решена, спасибо всем кто отозвался на помощь! Всем добра)
то, что было предложено на чистом С в этой теме, будет работать и на С++
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2012, 15:28     Нахождение k в квадратной матрице
Еще ссылки по теме:

Указатели в квадратной матрице C++
C++ В квадратной матрице 5 на 5 поменять местами
C++ В квадратной матрице поменять диагонали
Найти максимальное значение в квадратной матрице C++
Подсчитать количество элементов в квадратной матрице C++

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

Или воспользуйтесь поиском по форуму:
Mogost
7 / 7 / 1
Регистрация: 07.04.2012
Сообщений: 51
08.04.2012, 15:28     Нахождение k в квадратной матрице #14
Цитата Сообщение от Nekto Посмотреть сообщение
то, что было предложено на чистом С в этой теме, будет работать и на С++
Кстати да. В С++ не регламентировано применение malloc\new. Но для С чистого это играет роль.
Yandex
Объявления
08.04.2012, 15:28     Нахождение k в квадратной матрице
Ответ Создать тему
Опции темы

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