Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 77

Найти различные элементы целочисленной квадратной матрицы

01.05.2014, 00:17. Показов 4435. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Никак не найду различные элементы целочисленной квадратной матрицы. Вот объявляю ее. А как дальше поступать, без понятия. Знаю алгоритм нахождения различных элементов одномерного массива, а как для многомерного, нигде не найду. Заранее Спасибо!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#define M 3
#define N 3
 
void Init(int a[M][N],int m, int n) /* тут задаю матрицу*/
{
    int i,j;
    for(i=0;i<m;i++)
    {
        printf("a[%d]= ",i+1);
        scanf("%d",&a[i]);
    }
    for(j=0;j<n;j++)
    {
        printf("a[%d]= ",j+1);
        scanf("%d",&a[j]);
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.05.2014, 00:17
Ответы с готовыми решениями:

Для целочисленной квадратной матрицы найти число элементов, кратных k и наибольший из них
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { int i, j,k,count =...

Удалить строку и столбец целочисленной квадратной матрицы
Дана целочисленная квадратная матрица порядка n. Удалить из нее строку и столбец, на пересечении которых находится максимальный элемент...

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

35
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,874
02.05.2014, 16:21
Студворк — интернет-сервис помощи студентам
расскажи а что ты вводишь?
почему разные циклы?
цикл должен быть вложенный
Цитата Сообщение от Bestear Посмотреть сообщение
scanf("%d",&a[i]);
C++
1
 scanf("%d",&a[i][j]);
1
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 77
02.05.2014, 16:43  [ТС]
ну я так вроде всегда задавал матрицу, нас так учили. а вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void Init(int a[M][N],int m, int n)
{
    int i,j;
    for(i=0;i<m;i++)
    {
        printf("a[%d]= ",i+1);
    scanf("%d",&a[i][j]);
    }
    for(j=0;j<n;j++)
    {
        printf("a[%d]= ",j+1);
    scanf("%d",&a[i][j]);
    }
}
компилятор сразу отвергает и вылетает.
Получается вся проблема в том что я как то не так задаю матрицу?

Добавлено через 7 минут
Вот теперь точно правильно задал массив и все равно не работает. Подскажите пожалуйста в чем дело?
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
#include <stdio.h>
#include <stdlib.h>
#define M 3
#define N 3
 
void Init(int a[M][N],int m, int n) /* тут задаю матрицу*/
{
    int i,j;
    for(i=0;i<m;i++)
    for(j=0;j<n;j++)
    a[i][j]=rand()%100;
}
 
int BOTTAKOEHAZBAHIE(int a[M][N], int m, int n)
{
    int i,j,r,f,k,b[k]; 
    for(i=0; i<m; i++)
    for(j=0; j<n; j++)
    if(a[i][j] != a[r][f]) // если какой то элемент не равен другому элементу двумерного массива
    {
        b[k]=a[i][j];      //то записать этот элемент в массив b
        printf("%d",b[k]); //и распечатать массив b
    }
    return b[k];
}
 
int main(void) /*тут выполняю предыдущие функции, */
{
    int a[M][N];
    Init(a,M,N);
    BOTTAKOEHAZBAHIE(a,M,N);
    printf("%d",BOTTAKOEHAZBAHIE(a,M,N));   
    return 0;
}
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,874
02.05.2014, 17:17
Цитата Сообщение от Bestear Посмотреть сообщение
b[k]
где у тебя индекс k изменяется?
Цитата Сообщение от Bestear Посмотреть сообщение
a[r][f]
а равно индексы [r][f]
Цитата Сообщение от Bestear Посмотреть сообщение
return b[k];
массив так не вернешь

Добавлено через 3 минуты
тебе же rikimaru2013 написал код
разберись с ним
1
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 77
02.05.2014, 17:50  [ТС]
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 <stdio.h>
#include <stdlib.h>
#define M 3
#define N 3
 
void Init(int a[M][N],int m, int n) /* òóò çàäàþ ìàòðèöó*/
{
    int i,j;
    for(i=0;i<m;i++)
    for(j=0;j<n;j++)
    a[i][j]=rand()%100;
}
 
int BOTTAKOEHAZBAHIE(int a[M][N], int m, int n)
{
    int i,j,r,f,k,b[k]; 
    for(i=0; i<m; i++)
    for(j=0; j<n; j++)
    if(a[i][j] != a[r][f]) // åñëè êàêîé òî ýëåìåíò íå ðàâåí äðóãîìó ýëåìåíòó äâóìåðíîãî ìàññèâà
    {
        while(k<M)
        {
            b[k]=a[i][j];      //òî çàïèñàòü ýòîò ýëåìåíò â ìàññèâ b
            k++;
            printf("%d",b[k]); //è ðàñïå÷àòàòü ìàññèâ b           
        }        
    }
    return b[k];
}
 
int main(void) /*òóò âûïîëíÿþ ïðåäûäóùèå ôóíêöèè, */
{
    int a[M][N];
    Init(a,M,N);
    BOTTAKOEHAZBAHIE(a,M,N);
    printf("%d",BOTTAKOEHAZBAHIE(a,M,N));   
    return 0;
}
Теперь вроде должен увеличиваться к до тех пор пока не будет меньше М. Но все равно не работает.


Цитата Сообщение от ValeryS Посмотреть сообщение
return b[k];
массив так не вернешь
А как быть тогда? Мне нужно чтобы функция сделала свое дело и вернула мне массив b, чтобы я его в int main распечатал

Цитата Сообщение от ValeryS Посмотреть сообщение
тебе же rikimaru2013 написал код
разберись с ним
Вроде разобрался, но мы не прошли булевы функции. У нас тема двумерный массив, и все примеры делаются вот примерно как я написал. Только у меня вот не выходит ничего
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
02.05.2014, 19:32
Цитата Сообщение от ValeryS Посмотреть сообщение
грубейшая ошибка
массив объявлен как двумерный
и записью a[6] обращаемся к 7 строчке, которой нет
Совершенно верно. Можно сообщить об этом автору следующего сообщения:
Цитата Сообщение от ValeryS Посмотреть сообщение
и у массива arr[5][5]
можно обратится как arr[6] он укажет на элемент arr[1][5]
Добавлено через 11 минут
Цитата Сообщение от Bestear Посмотреть сообщение
C++
1
2
3
4
int i,j,r,f,k,b[k]; 
 for(i=0; i<m; i++)
 for(j=0; j<n; j++)
 if(a[i][j] != a[r][f]) // если какой то элемент не равен другому элементу двумерного массива
А чему равны здесь r и f ?
2
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,874
02.05.2014, 19:41
Цитата Сообщение от Alex5 Посмотреть сообщение
Можно сообщить об этом автору следующего сообщения:
можно
ну оговорился, бывает
имел то я виду совершенно другое
0
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 77
02.05.2014, 21:26  [ТС]
Цитата Сообщение от Alex5 Посмотреть сообщение
А чему равны здесь r и f ?
А, точно. Вот исправил
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
#include <stdio.h>
#include <stdlib.h>
#define M 3
#define N 3
 
void Init(int a[M][N],int m, int n) /* òóò çàäàþ ìàòðèöó*/
{
    int i,j;
    for(i=0;i<m;i++)
    for(j=0;j<n;j++)
    a[i][j]=rand()%100;
}
 
int BOTTAKOEHAZBAHIE(int a[M][N], int m, int n)
{
    int i,j,r,f,k,b[k]; 
    r=f=0;
    for(i=0; i<m; i++)
    for(j=0; j<n; j++)
     for(r=0; r<n; r++)
      for(f=0; f<m; f++)
    if(a[i][j] != a[r][f]) // åñëè êàêîé òî ýëåìåíò íå ðàâåí äðóãîìó ýëåìåíòó äâóìåðíîãî ìàññèâà
    {
        while(k<M)
        {
            b[k]=a[i][j];      //òî çàïèñàòü ýòîò ýëåìåíò â ìàññèâ b
            k++;
            printf("%d",b[k]); //è ðàñïå÷àòàòü ìàññèâ b           
        }        
    }
    return b[k];
}
 
int main(void) /*òóò âûïîëíÿþ ïðåäûäóùèå ôóíêöèè, */
{
    int a[M][N];
    Init(a,M,N);
    BOTTAKOEHAZBAHIE(a,M,N);
    printf("%d",BOTTAKOEHAZBAHIE(a,M,N));   
    return 0;
}
Добавлено через 1 час 11 минут
но проблема все равно не решилась

Добавлено через 8 минут
Подскажите пожалуйста, функция main написана правильно?
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
03.05.2014, 00:32
C++
1
2
3
4
void main()
{
 
}
1) зачем int?
1
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 77
03.05.2014, 00:55  [ТС]
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
зачем int?
Вот, вроде исправил, но все равно не работает
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
#include <stdio.h>
#include <stdlib.h>
#define M 3
#define N 3
 
void Init(int a[M][N],int m, int n) /* тут задаю матрицу*/
{
    int i,j;
    for(i=0;i<m;i++)
    for(j=0;j<n;j++)
    a[i][j]=rand()%100;
}
 
int BOTTAKOEHAZBAHIE(int a[M][N], int m, int n)
{
    int i,j,r,f,k,b[k]; 
    r=f=0;
    for(i=0; i<m; i++)
    for(j=0; j<n; j++)
     for(r=0; r<n; r++)
      for(f=0; f<m; f++)
    if(a[i][j] != a[r][f]) // если какой то элемент не равен другому элементу двумерного массива
    {
        while(k<M)
        {
            b[k]=a[i][j];      //то записать этот элемент в массив b
            k++;
            printf("%d",b[k]); //и распечатать массив b           
        }        
    }
    return b[k];
}
 
int main() /*тут выполняю предыдущие функции, */
{
    int a[M][N];
    Init(a,M,N);
    BOTTAKOEHAZBAHIE(a,M,N);
    printf("%d",BOTTAKOEHAZBAHIE(a,M,N));   
    return 0;
}
А есть какой нибудь способ узнать где именно я ошибся? А то я окончательно застопорился
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
03.05.2014, 02:04
1.
C++
1
a[i][j]=rand()%100;
тут будет всегда одно и тоже число.
Надо так:
C++
1
2
3
4
5
6
7
#include <ctime>
void main()
{
srand(time(0));
 
// теперь при вызове rand() будет новое число
}
2.
C++
1
2
3
4
5
6
int i,j,r,f,k,b[k]; 
    r=f=0;
    for(i=0; i<m; i++)
    for(j=0; j<n; j++)
     for(r=0; r<n; r++)
      for(f=0; f<m; f++)
1) локальные переменные для цикла объявляй в блоке инициализации и НЕЗАБЫВАЙ табуляцию
C++
1
2
3
4
 for(int i=0; i<m; i++)
         for(int j=0; j<n; j++)
              for(int r=0; r<n; r++)
                 for(int f=0; f<m; f++)
2. k,b[k] что за *** ??
1) Называй переменные своим предназначением:
k - счётчик? counter
b - временный массив? temp_arr
2) int i,j,r,f,k,b[k]; - в ячейке k мусор и ты тут же объявляет массив с размером мусора. Что?)
3) Возвращать массив чутка бред. Просто ты еще указатели не учил.

Итого весь твой бредовый код такой сейчас:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int BOTTAKOEHAZBAHIE(int a[M][N], int m, int n)
{
    const int size = M*N;
    int temp_arr[size] = {};
    int counter =0;
    for(int i=0; i<m; i++)
         for(int j=0; j<n; j++)
              for(int r=0; r<n; r++)
                 for(int f=0; f<m; f++)
                      if(a[i][j] != a[r][f]) // если какой то элемент не равен другому элементу двумерного массива
                        {
                            while(counter<M)
                            {
                                temp_arr[counter]=a[i][j];      //то записать этот элемент в массив b
                                counter++;
                                printf("%d",temp_arr[counter]); //и распечатать массив b         
                            }        
                        }
    return temp_arr[counter];
}
Почему бредовый? Массив
1 2 3
1 2 3
Подумай что делает твой четверной цикл

P.S. Блин я тебе полностью готовую логику алгоритма дал - вчитайся и делов то!
1
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,874
03.05.2014, 09:38
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
зачем int?
По стандарту
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
const int size = M*N;
* * int temp_arr[size] = {};
во всех ли компиляторах такое будет работать?
0
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 77
03.05.2014, 20:53  [ТС]
А для чего у Вас нужны эти переменные?
zero_was
noExist


Что означает cout.width(3); ?


Цитата Сообщение от rikimaru2013 Посмотреть сообщение
if( arr[i][z] == temp_arr[temp_i] && arr[i][z] != 0)
Для чего
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
&& arr[i][z] != 0)
?


И что означает
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
if(arr[i][z] == 0) // один ноль запишим и хватит
* * * * * * * * * * * * zero_was = true;
?
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
03.05.2014, 23:22
Цитата Сообщение от Bestear Посмотреть сообщение
А для чего у Вас нужны эти переменные?
zero_was
noExist
zero_was - (перевод "ноль_был") - в этой переменной bool значение был ноль уже или нет (с) капитан_очевидность
noExist - (перевод "неСуществует") - в этой переменной bool значение нашли совпадение уже или его не существует (с) капитан_очевидность
Цитата Сообщение от Bestear Посмотреть сообщение
Что означает cout.width(3); ?
Убери с кода, посмотри, верни - сделай вывод. Сабж: если нужно вывести, что-то у кого символов меньше 3-ёх остальное заполняется пробелами.
Цитата Сообщение от Bestear Посмотреть сообщение
if( arr[i][z] == temp_arr[temp_i] && arr[i][z] != 0)
Убери и посмотри, что получиться. Если в твоём ряде чисел будет ноль, то его не запишут в наш второстепенный массив так как он первоначально заполнен нулями. arr[i][z] == temp_arr[temp_i] будет true
Цитата Сообщение от Bestear Посмотреть сообщение
if(arr[i][z] == 0) // один ноль запишим и хватит
* * * * * * * * * * * * zero_was = true;
запишем ноль только один раз если он есть в нашем ряде чисел
1
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 77
03.05.2014, 23:45  [ТС]
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
в этой переменной bool значение был ноль уже или нет
Так чем бедный ноль от других цифр отличается то? зачем его постоянно выделять?
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
04.05.2014, 00:16
arr[i][z] == temp_arr[temp_i]

в temp_arr[temp_i] при первой итерации уже все нули!!

если массив 0 1 2 3 4

он не запишет ноль, и первый элемент будет 1. Ну возьми листочек и отдебаж программу что пишешь или через отладчик

Добавлено через 4 минуты
C++
1
int temp_arr[size] = {};
равносильно
C++
1
int temp_arr[size] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
1
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 77
04.05.2014, 01:51  [ТС]
Огромное спасибо! Все предельно ясно!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.05.2014, 01:51
Помогаю со студенческими работами здесь

Найти минимальные элементы в строках квадратной матрицы
помогите пожалуйста составить код

В данной целочисленной квадратной матрице порядка N все элементы со значением Z заменить их квадратами
В данной целочисленной квадратной матрице порядка N все элементы со значением Z заменить их квадратами (В С++)

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

Все элементы с наибольшим по модулю значением в целочисленной квадратной матрице заменить нулями
Задание: все элементы с наибольшим по модулю значением в целочисленной квадратной матрице порядка N заменить нулями. Текст проги: ...

Удалить из целочисленной квадратной матрицы строку с минимальным средним значением элементов
Доброго времени суток.. Помогите пожалуйста решить вот эту задачу,кажется вроде не сложная,но просто не представляю как её сделать.. ...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru