Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
cibertronic
256 / 143 / 17
Регистрация: 27.12.2009
Сообщений: 908
#1

В квадратной матрице заменить элементы главной и побочной диагонали на минимальный элемент - C++

09.01.2010, 19:42. Просмотров 1219. Ответов 8
Метки нет (Все метки)

задача такая:в квадратной матрице заменить элементы главной и побочной диагонали на минимальный элемент найденый среди элементов находящихся ниже главной диагонали.
т.е. допустим матрица 5х5:
2 3 5 6 5
8 3 5 7 1
3 4 8 7 3
4 5 1 8 9
3 5 7 5 6
тогда:
1 3 5 6 1
8 1 5 1 1
3 4 1 7 3
4 1 1 1 9
1 5 7 5 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
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
const int N1=10,M1=10;
int a[N1][M1],i,j,n,m,s,imin;
printf(" vvedite 4islo strok i stolbcov massiva: ");
scanf("%d%d",&n,&m);
printf(" vvedite elementy matrici\n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%5d",a[i][j]);
printf("\n");
}
imin=0;
for(i=0;i<n;i++)
{
if(a[i][imin]>a[i][i-1])
s=imin;
}
printf("minimalny element nije glavnoj diagonali=%d",s);
for(i=0;i<n;i++)
{
j=n-i-1;
a[i][j]=s;
a[i][i]=s;
}
printf(" polu4ennyj massiv\n");
 
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%5d",a[i][j]);
printf("\n");
}
getch();
}
то что размерность вводится так как есть это думаю не важно, хотя можно тоже исправить.
вот с поиском наименьшего элемента ниже главной диагонали чет никак не могу справиться,
то нуль какойто находит, то 3, то еще что, в общем чет тут надо, а как незнаю
C++
1
2
3
4
5
for(i=0;i<n;i++)
{
if(a[i][imin]>a[i][i-1])
s=imin;
}
помогите
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2010, 19:42
Я подобрал для вас темы с готовыми решениями и ответами на вопрос В квадратной матрице заменить элементы главной и побочной диагонали на минимальный элемент (C++):

Заменить элементы главной и побочной диагоналей матрицы на минимальный элемент ниже главной диагонали
В квадратной матрице А заменить элементы главной и побочной диагоналей на...

В заданной квадратной матрице заменить минимальный элемент на 0, затем найти сумму элементов главной диагонали
В матрице размерности 7 на 7 посчитать в каждом втором столбце заме-...

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

Обнулить в квадратной матрице элементы, лежащие выше главной и ниже побочной диагонали
Как обнулить в квадратной матрице элементы, лежащие выше главной и ниже...

В заданной квадратной матрице поменять местами элементы, стоящие на главной и побочной диагонали
Добрый день ! Помогите пожалуйста с задачей,очень нужно! (С++) Дана матрицы...

Заменить элементы главной диагонали матрицы нулями и найти максимальный элемент ниже побочной диагонали
Есть пример для решения другой задачи(она находит суму всех элементов каждой...

8
Darky
Быдлокодер
508 / 295 / 84
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
09.01.2010, 19:46 #2
ниже главной диагонали
C++
1
2
3
4
5
6
7
for (int i=1;i<N;i++)
{
  for (int j=i;j<N;j++)
  {
     ...
  }
}
0
cibertronic
256 / 143 / 17
Регистрация: 27.12.2009
Сообщений: 908
09.01.2010, 20:26  [ТС] #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
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
const int N1=10,M1=10;
int a[N1][M1],i,j,n,m,s,imin;
printf(" vvedite 4islo strok i stolbcov massiva: ");
scanf("%d%d",&n,&m);
printf(" vvedite elementy matrici\n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%5d",a[i][j]);
printf("\n");
}
imin=0;
for (int i=1;i<n;i++)
{
  for (int j=i;j<n;j++)
  {
if(a[i][imin]>a[i][i-1])
s=imin;
}
}
printf("minimalny element nije glavnoj diagonali=%d",s);
for(i=0;i<n;i++)
{
j=n-i-1;
a[i][j]=s;
a[i][i]=s;
}
printf(" polu4ennyj massiv\n");
 
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%5d",a[i][j]);
printf("\n");
}
getch();
}
тогда:
0
Миниатюры
В квадратной матрице заменить элементы главной и побочной диагонали на минимальный элемент  
cibertronic
256 / 143 / 17
Регистрация: 27.12.2009
Сообщений: 908
09.01.2010, 20:26  [ТС] #4
так чет коряво слегка )))
0
Darky
Быдлокодер
508 / 295 / 84
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
09.01.2010, 20:40 #5
Да, вижу. Весь код надо переделывать - малочитабельный.
Секунду.

Добавлено через 4 минуты
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
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
/*в квадратной матрице заменить
элементы главной и побочной диагонали
на минимальный элемент найденый среди
элементов находящихся ниже главной диагонали.*/
#define N 5
int minimum(int A[N][N], int min);
int main()
{
srand((unsigned)time(0));
  int A[N][N],B[N][N],min;
  for (int i=0;i<N;i++)
  {
      for (int j=0;j<N;j++)
      {
        A[i][j]=rand()%100;
        cout<<A[i][j]<<" ";
      }
    cout<<endl;
  }
  cout<<endl<<minimum(A,min)<<"\n\n";
  for (int i=0;i<N;i++)
  {
      for (int j=0;j<N;j++)
      {
        if (i==N-j-1 || i==j)
          B[i][j]=minimum(A,min);
        else
          B[i][j]=A[i][j];
        cout<<B[i][j]<<" ";
      }
    cout<<endl;
  }
  getch();
}
int minimum(int A[N][N], int min)
{
  for (int i=1;i<N;i++)
  {
    for (int j=i;j<N;j++)
    {
      if (i==1 && j==1)
        min=A[i][j];
      if (A[i][j]<min)
        min=A[i][j];
    }
  }
  return min;
}
0
cibertronic
256 / 143 / 17
Регистрация: 27.12.2009
Сообщений: 908
09.01.2010, 21:56  [ТС] #6
чесн говоря хоть он и малочитабельный, но именно такими путями надо сделать.... мне только нужно именно найти минимальное число ниже главной диагонали, а все остальное так как есть надо

Добавлено через 3 минуты
cout<<endl; вот это не будет у меня работать

#define N 5 это еще не скоро проходить будем, #include <time.h> это тоже
по этому не получится сдать
0
Darky
Быдлокодер
508 / 295 / 84
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
09.01.2010, 21:58 #7
cibertronic, Земляк, cout<<endl; заменяется на cout<<"\n";
#define N 5 - тоже самое, что const int N = 5 или везде в коде N заменять на 5.
а #include <time.h> нужен для заполнения массива случайными числами.
0
outoftime
║XLR8║
756 / 656 / 211
Регистрация: 25.07.2009
Сообщений: 3,289
Записей в блоге: 5
09.01.2010, 22:06 #8
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <stdio.h>
 
#define FOR(i,a,b) for (int i(a), _b(b); i < _b; ++i)
 
using namespace std;
 
int Min(int** a, int n)
{
    int me = a[n-1][n-1];
    FOR(i,0,n)
        FOR(j,n-i,n)
            me = (me < a[i][j]) ? me : a[i][j];
    return me;
}
 
int main()
{
    //заполняем матрицу и выводим на екран
    int n;
    scanf("%d", &n);
    int** a = (int**) calloc(n, sizeof(int*));
    FOR(i,0,n)
    {
        a[i] = (int*) calloc(n, sizeof(int));
        FOR(j,0,n)
        {
            a[i][j] = rand()%100-50;
            printf("%4d", a[i][j]);
        }
        printf("\n\n");
    }
    printf("\n");
    //ищим минимум
    int MinE = Min(a,n);
    //заменяем елементы с главной и побочной диагоналей на минимальный
    FOR(i,0,n)
    {
        a[i][i] = MinE;
        a[n-i-1][i] = MinE;
    }
    //выводим результирующую матрицу
    FOR(i,0,n)
    {
        FOR(j,0,n)
            printf("%4d", a[i][j]);
        printf("\n\n");
    }
    getchar();
    return 0;
}
0
cibertronic
256 / 143 / 17
Регистрация: 27.12.2009
Сообщений: 908
10.01.2010, 01:00  [ТС] #9
просто в таком варианте у меня то и пройдет, а вот преподу такой исходник не пройдет. нужно так как в этой долбанной методичке((

Добавлено через 1 минуту
Цитата Сообщение от cibertronic Посмотреть сообщение
for(i=0;i<n;i++)
{
if(a[i][imin]>a[i][i-1])
s=imin;
}
вот это надо както изменить

Добавлено через 3 минуты
потому как формула для главной a[i][i] то ниже эт a[i][i-1]

Добавлено через 2 часа 41 минуту
спасибо конечн за код, но я кажется нашел лучше решение
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
const int N1=10,M1=10;
int a[N1][M1],i,j,n,imin;
printf(" vvedite 4islo strok i stolbcov massiva: ");
scanf("%d",&n);
printf(" vvedite elementy matrici\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%5d",a[i][j]);
printf("\n");
imin=a[2][1];
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(i>j)
{
if(a[i][j]<imin)
imin=a[i][j];
}
}
printf("\n minimalny element nije glavnoj diagonali=%d",imin);
for(i=0;i<n;i++)
{
j=n-i-1;
a[i][j]=imin;
a[i][i]=imin;
}
printf("\n polu4ennyj massiv\n");
 
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%5d",a[i][j]);
printf("\n");
}
getch();
}
вот в таком виде надо)
0
10.01.2010, 01:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2010, 01:00
Привет! Вот еще темы с решениями:

Заменить элементы главной и побочной диагоналей на минимальный элемент
В квадратной матрице A заменить элементы главной и побочной диагоналей на...

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

В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки
Матрица 5х5. Заменить все отрицательные элементы ниже главной диагонали на...

Найти произведение максимального элемента главной диагонали на минимальный элемент побочной диагонали
Всем привет! Мастера помогите доделать задание с матрицой. Вот само задание:...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru