Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 14.09.2014
Сообщений: 75
1

Заменить нулем максимальный по модулю элемент

11.12.2014, 12:31. Показов 1599. Ответов 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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int n,m,i,j;
int A[10][10];
printf("Количество строк: ");
scanf("%d",&n);
printf("Количество столбцов: ");
scanf("%d",&m);
 
    for (i=0;i<n;i++)
   {
       for (j=0;j<m;j++)
   {
       A[i][j]=rand()%10;
       printf("%d",A[i][j]);
 
        }
        printf("\n");
    }
 
 
return 0;
}
не понимаю как заменить нулем максимальный по модулю элемент(, программисты выручайте.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2014, 12:31
Ответы с готовыми решениями:

Вычислить max2-min2 , где max-максимальный по модулю элемент массива, а min -минимальный по модулю
Дан массив размера 6 x 2 с элементами вещественного типа. Написать программу для вычисления...

Заменить минимальный элемент каждого столбца нулем
Дан двумерный массив размером n*m, заполненный случайными числами из заданного пользователем...

Последний отрицательный элемент каждого столбца прямоугольной матрицы заменить нулем
Задача: Последний отрицательный элемент каждого столбца прямоугольной матрицы заменить нулем ...

Максимальный по модулю элемент массива
Помогите написать программу &quot;Максимальный по модулю элемент массива&quot;

8
44 / 30 / 18
Регистрация: 15.11.2014
Сообщений: 169
11.12.2014, 13:21 2
есть функция abs(), которая возвращает число по модулю в заголовочном фале math.h, организуйте проход по всем элементам матрицы сравнивая:

C++
1
2
3
4
5
6
if(abs(m[i][j])>max)//max следует изначально присвоить первый элемент массива max=abs(m[0][0])
    {
          max=abs(m[i][j+1]);
          k=i;//чтобы запомнить номер строки макс
          l=j;//чтобы запомнить номер столбца макс
    }
Ну а потом просто:
C++
1
m[k][l]=0;
Как-то так, наверно.
1
Эксперт PHP
3045 / 2550 / 1199
Регистрация: 14.05.2014
Сообщений: 7,136
Записей в блоге: 1
11.12.2014, 13:36 3
Цитата Сообщение от Zedapp Посмотреть сообщение
C++
1
2
3
4
5
6
if(abs(m[i][j])>max)//max следует изначально присвоить первый элемент массива max=abs(m[0][0])
{
    max=abs(m[i][j+1]);
    k=i;//чтобы запомнить номер строки макс
    l=j;//чтобы запомнить номер столбца макс
}
т.е. Вы проверяете один элемент, а присваиваете max другой?

Добавлено через 6 минут
Лучше немного иначе сделать, т.е. найти максимальный элемент, но не запоминать индексы, а затем сравнивать с самим значением.
C
1
2
3
4
5
6
7
max = abs(A[0][0]);
for(i = 0; i < n; ++i)
    for (j = 0; j < m; ++j)
        if (abs(A[i][j]) > max) max = A[i][j];
for (i = 0; i < n; ++i)
    for (j = 0; j < m; ++j)
        if (abs(A[i][j]) == max) A[i][j] = 0;
как-то так
1
1 / 1 / 0
Регистрация: 14.09.2014
Сообщений: 75
11.12.2014, 13:42  [ТС] 4
C
1
int забыли
0
Эксперт PHP
3045 / 2550 / 1199
Регистрация: 14.05.2014
Сообщений: 7,136
Записей в блоге: 1
11.12.2014, 13:45 5
Цитата Сообщение от vlsd Посмотреть сообщение
int забыли
не забыл, в С переменные объявляются в начале программы, поэтому и не написал, думал сами додумаетесь
1
1 / 1 / 0
Регистрация: 14.09.2014
Сообщений: 75
11.12.2014, 14:26  [ТС] 6
что-то я слепить два кода не могу, если добавляю ваш массив ломается и выдает только первую строчку
0
44 / 30 / 18
Регистрация: 15.11.2014
Сообщений: 169
11.12.2014, 14:44 7
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
т.е. Вы проверяете один элемент, а присваиваете max другой?
Упс, я случайно. Это мой косяк.
C++
1
2
3
4
5
6
if(abs(m[i][j])>max)//max следует изначально присвоить первый элемент массива max=abs(m[0][0])
    {
          max=abs(m[i][j]);
          k=i;//чтобы запомнить номер строки макс
          l=j;//чтобы запомнить номер столбца макс
    }
Добавлено через 58 секунд
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
в С переменные объявляются в начале программы
Современный стандарт вроде как разрешает, но это конечно извращение.

Добавлено через 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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int n,m,i,j,k,l;
int A[10][10];
printf("Количество строк: ");
scanf("%d",&n);
printf("Количество столбцов: ");
scanf("%d",&m);
 
    for (i=0;i<n;i++)
   {
       for (j=0;j<m;j++)
   {
       A[i][j]=rand()%10;
       printf("%d",A[i][j]);
 
        }
        printf("\n");
    }
    max=abs(A[0][0]);
 for (i=0;i<n;i++)
   {
       for (j=0;j<m;j++)
   {
    if(abs(A[i][j])>max)//max следует изначально присвоить первый элемент массива max=abs(m[0][0])
    {
          max=abs(A[i][j]);
          k=i;//чтобы запомнить номер строки макс
          l=j;//чтобы запомнить номер столбца макс
    }
    }
    }
    m[k][l]=0;
return 0;
}
Уверен, что где-то косяки со скобками, так как клеил все копипастом и не проверял.

UPD: А ещё забыл обьявить k и l.
1
Эксперт PHP
3045 / 2550 / 1199
Регистрация: 14.05.2014
Сообщений: 7,136
Записей в блоге: 1
11.12.2014, 14:59 8
Лучший ответ Сообщение было отмечено vlsd как решение

Решение

vlsd, если максимальных несколько, заменить только один или все? Если все, то
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 <stdlib.h>
#include <math.h>
#include <windows.h>
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int n ,m, i, j, max;
    int A[10][10];
    printf("Количество строк: ");
    scanf("%d", &n);
    printf("Количество столбцов: ");
    scanf("%d", &m);
     
    for (i = 0; i < n; ++i)
    {
        for (j = 0; j < m; ++j)
        {
            A[i][j] = rand() % 10;
            printf("%d ", A[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    max = abs(A[0][0]);
    for(i = 0; i < n; ++i)
        for (j = 0; j < m; ++j)
            if (abs(A[i][j]) > max) max = A[i][j];
    for (i = 0; i < n; ++i)
        for (j = 0; j < m; ++j)
            if (abs(A[i][j]) == max) A[i][j] = 0;
    
    for (i = 0; i < n; ++i)
    {
        for (j = 0; j < m; ++j)
            printf("%d ", A[i][j]);
        printf("\n");
    }
    
    return 0;
}
Добавлено через 6 минут
Цитата Сообщение от Zedapp Посмотреть сообщение
но это конечно извращение

Не по теме:

Не соглашусь. Объявить переменную там, где она впервые будет использована, намного удобнее.

2
44 / 30 / 18
Регистрация: 15.11.2014
Сообщений: 169
11.12.2014, 15:02 9
Kerry_Jr, признаю победу вашего алгоритма, семпай.

Добавлено через 1 минуту
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Не соглашусь. Объявить переменную там, где она впервые будет использована, намного удобнее.
Я не знаю как писать "не по теме"(если можете расскажите), но представьте у вас большое количество циклов и в каждом объявлять свои локальные i и j расточительно.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2014, 15:02

Удалить из массива максимальный по модулю элемент
Всем привет! Помогите понять ,что не правильно.Задано 3 файла Х.txt,Y.txt и Z.txt и нужно удалить...

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

Найти максимальный по модулю элемент матрицы
Задана матрица размером (n x n). Как Найти максимальный по модулю элемент матрицы??

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


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

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

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