0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 31
1

Поиск максимального элемента по модулю

13.03.2014, 20:00. Показов 1013. Ответов 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
//---------------------------------------------------------------------------
 
#pragma hdrstop
#include <stdio.h>
#include <stdlib.h>
#include <ctime>
#include <math.h>
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
const n=2, m=3;
int A[n][m];
int i,j;
srand(time (NULL));
for (i=0; i<m; i++)
{for (j=0; j<n; j++)
A[i][j]=rand(); }
// âûâîä ìàòðèöû íà ýêðàí
printf("\n Matrica imeet vid ");
printf("\n");
for (i=0; i<m; i++)
{for (j=0; j<n; j++)
printf("  %7i ",A[i][j]);
printf("\n");}
system("Pause");
return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.03.2014, 20:00
Ответы с готовыми решениями:

Поиск максимального по модулю элемента в двумерном массиве
Почему для нахождения наибольшего по модулю элемента используется нулевая ячейка arr? int max...

Формирования массивов Y и Z, определения максимального по модулю элемента, удаления элемента
Из массива Х(N) все положительные элементы записать в массив Y(k), а все отрицательные элементы – в...

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

Вычислить номер максимального по модулю элемента матрицы
Люди, помогите, пожалуйста, решить такую задачу: Дан произвольный двумерный массив m*n. Нужно...

7
3 / 3 / 3
Регистрация: 12.03.2014
Сообщений: 26
13.03.2014, 20:41 2
В переменную сунь первый элемент строки, потом иди по ней и сравнивай каждый элемент с этой переменной. Если в переменной меньшее значение - меняй.
0
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 31
13.03.2014, 20:53  [ТС] 3
так находится только один элемент матрицы, а мне надо по строкам смотреть!
0
3 / 3 / 3
Регистрация: 12.03.2014
Сообщений: 26
14.03.2014, 18:22 4
Во-первых, Вы неправильно выводите матрицу, нужно примерно так:
C++
1
2
3
4
5
for (i = 0; i < m; i++){
    for (j = 0; j < n; j++)
        printf("%d ",a[i][j]);
    printf("\n");
}
Во-вторых, я неправильно прочитал задание) Итак:
Для каждой строки берем первый элемент и сравниваем с последующими. Если найдем больший по модулю элемент, выходим из цикла. Если после него j будет равен n, то это значит, что ни один элемент не оказался больше по модулю, поэтому записываем строку в массив b:
C++
1
2
3
4
for (i = 0; i < m; i++){
    for (j = 1; j < n && fabs(a[i][j]) <= fabs(a[i][0]); j++); // с 1, т.к. не имеет смысла сравнивать элемент сам с собой
    if (j==n) // Увеличиваем размер b на единицу, записываем строку
}
1
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 31
15.03.2014, 13:00  [ТС] 5
А вы не могли бы мне подсказать, что нужно написать после if, а то что-то я не совсем поняла)

Добавлено через 14 минут
Я сделала вот так и это видимо бред какой-то
C++
1
2
3
4
5
6
7
8
9
10
for (i = 0; i < N; i++)
{for (j = 1; j < M && fabs(A[i][j]) <= fabs(A[i][0]); j++); // ñ 1, ò.ê. íå èìååò ñìûñëà ñðàâíèâàòü ýëåìåíò ñàì ñ ñîáîé
if (j==M) // Óâåëè÷èâàåì ðàçìåð b íà åäèíèöó, çàïèñûâàåì ñòðîêó
B[N][j]=A[i][j];
}
printf("\n");
for (i=0; i<N; i++)
{for (j=0; j<M; j++);}
printf("  %7d ",B[N][j]);
printf("\n");
0
2431 / 1831 / 404
Регистрация: 15.12.2013
Сообщений: 8,164
15.03.2014, 13:41 6
Цитата Сообщение от naste94 Посмотреть сообщение
Я сделала вот так и это видимо бред какой-то
Сравните максимальный элемент строки с первым и если они совпадают,то копируйте строку в новый массив.
1
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 31
15.03.2014, 18:15  [ТС] 7
a этот фрагмент почему-то не работает, но должен выводить новый массив А, когда найдет нужную строку
C++
1
2
3
4
5
6
7
8
9
10
11
12
printf("\n");
n=0,m=0;
for(i=0;i<N;i++)
{for(j=0;j<M;j++)
if (A[i][j]>=A[n][m])
{n++;
j=M;}
else
{if(j=(M-1))
{for(j=0;j<M;j++);
printf(" %i ",A[i][j]);
printf("\n");}}}
Добавлено через 2 часа 16 минут
А есть еще такая программа, но она не работает! может подскажете что в ней не так!?
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
//---------------------------------------------------------------------------
#pragma hdrstop
#include <ctime>
#include <stdio.h>
#include <stdio.h>
#include <windows.h>
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
const int N=3,M=4;
int i,j,n,s1,s2,B[N][M];
int **A=new int *[N-s2];
for(i=0;i<(N-s2);i++)
{A[i]=new int[M];}
srand(time(NULL));
for(i=0;i<N;i++)
{for(j=0;j<M;j++)
B[i][j]=rand()%89+10;}
for(i=0;i<N;i++)
{for(j=0;j<M;j++)
printf(" %i ",B[i][j]);
printf("\n");}
n=0;s1=0;s2=0;
for(i=0;i<N;i++)
{for(j=0;j<M;j++)
if(B[i][j]<B[n][0])
{s1++;}
else {n++;j=M;s2++;}
if(s1==M)
{for(j=0;j<M;j++)
A[i][j]=B[i][j];s1=0;}}
for(i=0;i<(N-s2);i++)
{for(j=0;j<M;j++)
printf(" %i ",A[i][j]);
printf("\n");}
system("Pause");
return 0;
}
0
2431 / 1831 / 404
Регистрация: 15.12.2013
Сообщений: 8,164
15.03.2014, 22:18 8
Цитата Сообщение от naste94 Посмотреть сообщение
А есть еще такая программа, но она не работает! может подскажете что в ней не так!?
Кроме нечитабельности кода?

Добавлено через 47 минут
Вот,переделал:

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
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
# include <cmath>
#include <stdlib.h>
#include <ctime>
using namespace std;
 
int main(int argc, char* argv[])
{
const int N=3,M=4;
const int min=-100;
const int max=100;
int i,j,k,temp,s1=0,B[N][M];
srand(time(NULL));
 
for(i=0;i<N;i++)
{
    for(j=0;j<M;j++)
    {
    B[i][j]=min + (max-min)*(rand())/RAND_MAX;
    cout<<B[i][j]<<" ";
    }
    cout<<endl;
}
cout<<endl;
for(i=0;i<N;i++)
{
    temp=B[i][0];
    for(j=0;j<M;j++)
    if(abs(B[i][j])>abs(temp)) temp=B[i][j];
 
    if(temp==B[i][0]) s1++;
}
if(!s1)
{
    cout<<"Sredu pervux elementov net maksumalbnux po modylu"<<endl;
    system("Pause");
    return 0;
}
 
int **A=new int*[s1];
for(i=0;i<s1;i++)
A[i]=new int[M];
 
for(k=0,i=0;k<s1;i++)
{
    temp=B[i][0];
    for(j=0;j<M;j++)
    if(abs(B[i][j])>abs(temp)) temp=B[i][j];
 
    if(temp==B[i][0]) 
    {
    for(j=0;j<M;j++)
    {
    A[k][j]=B[i][j];
    cout<<A[k][j]<<" ";
    }
    cout<<endl;
    k++;
    }
}
 
system("Pause");
return 0;
}
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2014, 22:18
Помогаю со студенческими работами здесь

Вычислить номер максимального по модулю элемента массива
2)В одномерном массиве, состоящем из n вещественных элементов, вычислить: - номер максимального по...

Вычислить номер максимального по модулю элемента массива
В одномерном массиве, состоящем из n вещественных элементов, вычислить номер максимального по...

Определить номер максимального по модулю элемента массива
Написать программу, которая определяет номер максимального по модулю элемента массива и вычисляет...

Найти номер максимального по модулю элемента массива
Найти номер максимального по модулю элемента массива;


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru