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

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

Восстановить пароль Регистрация
 
naste94
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 31
13.03.2014, 20:00     Поиск максимального элемента по модулю #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
//---------------------------------------------------------------------------
 
#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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TheBelk
 Аватар для TheBelk
3 / 3 / 0
Регистрация: 12.03.2014
Сообщений: 26
13.03.2014, 20:41     Поиск максимального элемента по модулю #2
В переменную сунь первый элемент строки, потом иди по ней и сравнивай каждый элемент с этой переменной. Если в переменной меньшее значение - меняй.
naste94
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 31
13.03.2014, 20:53  [ТС]     Поиск максимального элемента по модулю #3
так находится только один элемент матрицы, а мне надо по строкам смотреть!
TheBelk
 Аватар для TheBelk
3 / 3 / 0
Регистрация: 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 на единицу, записываем строку
}
naste94
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");
S_el
1907 / 1502 / 296
Регистрация: 15.12.2013
Сообщений: 5,917
15.03.2014, 13:41     Поиск максимального элемента по модулю #6
Цитата Сообщение от naste94 Посмотреть сообщение
Я сделала вот так и это видимо бред какой-то
Сравните максимальный элемент строки с первым и если они совпадают,то копируйте строку в новый массив.
naste94
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2014, 22:18     Поиск максимального элемента по модулю
Еще ссылки по теме:

Массив: номер минимального и максимального по модулю элемента массива C++
C++ Найти номер максимального по модулю элемента массива
Формирования массивов Y и Z, определения максимального по модулю элемента, удаления элемента C++

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

Или воспользуйтесь поиском по форуму:
S_el
1907 / 1502 / 296
Регистрация: 15.12.2013
Сообщений: 5,917
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;
}
Yandex
Объявления
15.03.2014, 22:18     Поиск максимального элемента по модулю
Ответ Создать тему
Опции темы

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