Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 17.11.2022
Сообщений: 76
1

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

01.01.2023, 11:10. Показов 401. Ответов 6

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

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

Мой код:

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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
#define M 7
 
int main() {
    int **a, count = 0;
 
    a = calloc(N, sizeof (int*));
    for (int i = 0; i < N; i++)
    {
        a[i] = calloc (M, sizeof (int));
        for (int j = 0; j < M; j++)
        {
            a[i][j] = rand()%100 - 10;
            printf("%d\t", a[i][j]);
        }
        printf("\n");
    }
    printf("\n");
 
    for (int j = 0; j < M; j++)
    {
        for (int i = 0; i < N; i++)
        {
            if (a[i][j] < 0)
            {
                count++;
                if (count <= M)
                {
                    a[i][j] = 0;
                }
            }
        }
    }
 
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            printf("%d\t", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.01.2023, 11:10
Ответы с готовыми решениями:

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

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

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

Заменить нулём последний отрицательный элемент каждого столбца прямоугольной матрицы
Обращение к массиву нужно делать через указатели Вот мой код: #include &lt;stdio.h&gt; #include...

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

6
37 / 21 / 17
Регистрация: 13.04.2016
Сообщений: 106
01.01.2023, 13:45 2
Лучший ответ Сообщение было отмечено Boiycha как решение

Решение

Смотри во первых у тебя при компиляции и запуске каждый раз будет получаться одинаковый набор чисел, потому что начальное число одно и то же. Эту проблему можно обойти либо самостоятельно меняя начальное число либо использовать функцию srand() вместе с time(NULL) , которая возвращает системное время. Тогда начальное число будет инициализированно каждый раз новое и набор сгенерированных чисел будет каждый раз новый. Добавь вот эту строчку в код:
C
1
srand(time(NULL));
Во вторых что даёт тебе счётчик count? Нафиг он тебе нужен? Ну ты считаешь отрицательные числа во всей матрице окей, а потом если этих чисел меньше числа столбцов меняешь их нулями? Какой в этом смысл? У тебя же задание не в этом. Просто проверь последнюю строку (самую нижнюю) и если какие то значения в ней < 0 меняй их на нули вот и всё.
Вот так вот например:

C
1
2
3
4
5
6
7
8
9
10
 for (int i = 0; i < N; i++) // строки
       {
           for (int j = 0; j < M; j++) // столбцы
        {
            if (a[N-1][j] < 0) // последняя строка матрицы - самые нижние значения каждого из столбцов
            {
                    a[N-1][j] = 0; // заменяем их нулями
            }
        }
    }
1
0 / 0 / 0
Регистрация: 17.11.2022
Сообщений: 76
01.01.2023, 14:31  [ТС] 3
Поняла, спасибо большое!
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12835 / 7571 / 1765
Регистрация: 25.07.2009
Сообщений: 13,968
01.01.2023, 23:36 4
crazykreis, зачем устраивать цикл по строкам, если нужна только последняя строка? Оно, конечно, отработает, но сделает это N раз, при чём N - 1 раз гарантированно впустую.
0
37 / 21 / 17
Регистрация: 13.04.2016
Сообщений: 106
02.01.2023, 00:30 5
easybudda, да можно и не устраивать я просто чтоб не печатать скопипастил с верхнего участка кода как оно было и не трогал)
0
2504 / 1104 / 490
Регистрация: 17.11.2018
Сообщений: 2,800
02.01.2023, 02:35 6
Цитата Сообщение от easybudda Посмотреть сообщение
зачем устраивать цикл по строкам, если нужна только последняя строка?
Если я правильно понимаю, то она тоже не нужна. Тогда цикл поиска мог бы выглядеть как-то так:
C
1
2
3
4
5
6
7
8
9
10
    for (int j = 0; j < M; j++)
    {
        int last_negative = -1;
        for (int i = 0; i < N; i++)
            if (a[i][j] < 0)
                last_negative = i;
                
        if(last_negative != -1)
            a[last_negative][j] = 0;
    }
Или, например, так:
C
1
2
3
4
5
6
7
8
9
    for( int j = 0; j < M; j++ )
    {
        int last_negative = N - 1;
        while( last_negative >= 0 && a[last_negative][j] >= 0 )
            last_negative--;
 
        if( last_negative != -1 )
            a[last_negative][j] = 0;
    }
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12835 / 7571 / 1765
Регистрация: 25.07.2009
Сообщений: 13,968
02.01.2023, 09:23 7
Цитата Сообщение от analogov net Посмотреть сообщение
Если я правильно понимаю
Да, это я по коду из 2 поста почему-то решил, что нужно проверять последний элемент в каждом столбце и, если он отрицательный, менять на 0.
0
02.01.2023, 09:23
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.01.2023, 09:23
Помогаю со студенческими работами здесь

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

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

Последний отрицательный элемент каждого столбца заменить нулем
Free Pascal

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

Дан массив M(n,k). Последний отрицательный элемент каждого столбца заменить нулем
Дан массив M(n,k). Последний отрицательный элемент каждого столбца заменить нулем с#

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как преобразовать список списков в простой список в Python
bytestream 22.01.2025
При работе с Python разработчики часто сталкиваются с необходимостью обработки сложных структур данных, среди которых особое место занимают вложенные списки. Эти структуры представляют собой списки,. . .
Что такое GUID / UUID и как их создать
bytestream 22.01.2025
В мире разработки программного обеспечения существует постоянная потребность в уникальной идентификации объектов, записей и ресурсов. Эта задача становится особенно актуальной в распределенных. . .
Как добавить пустую директорию в репозиторий Git
bytestream 22.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо сохранить пустую директорию в репозитории. Данная задача может показаться простой на первый. . .
Как валидировать адрес email в JavaScript
bytestream 22.01.2025
JavaScript, как основной язык веб-разработки, предоставляет разработчикам множество инструментов для реализации эффективной валидации email-адресов. От простых встроенных решений до сложных. . .
Как заменить все вхождения подстроки в JavaScript
bytestream 22.01.2025
Строки в JavaScript представляют собой неизменяемые последовательности символов, что делает их обработку особенно интересной с точки зрения оптимизации и выбора правильного подхода к решению задач. . . .
Управление версиями пакетов в Node.js. В чем разница между тильдой (~) и кареткой (^) в package.json
bytestream 22.01.2025
В современной разработке программного обеспечения управление версиями пакетов играет ключевую роль в обеспечении стабильности и надежности проектов. Node. js, как одна из самых популярных платформ для. . .
Аутентификация на сайте с помощью формы
bytestream 21.01.2025
В современном цифровом мире безопасная аутентификация становится краеугольным камнем защиты веб-приложений и пользовательских данных. Каждый день миллионы людей используют различные онлайн-сервисы,. . .
Как получить индекс в цикле for в Python
bytestream 21.01.2025
При работе с коллекциями данных в Python часто возникает необходимость не только получить доступ к элементам последовательности, но и знать их позицию в процессе итерации. Индексация в циклах. . .
Как определить адрес, из которого локальный репозиторий Git был клонирован
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса. При работе с Git разработчики часто сталкиваются с необходимостью. . .
Какая разница между операторами == и === в сравнениях в JavaScript
bytestream 21.01.2025
В мире веб-разработки JavaScript занимает особое место как динамический язык программирования, предоставляющий разработчикам широкий набор инструментов для создания интерактивных веб-приложений. . . .
Из чего и как собрать свой домашний кинотеатр
bt_guru 21.01.2025
Создание домашнего кинотеатра: от идеи до реализации В современном мире домашний кинотеатр стал неотъемлемой частью комфортного жилого пространства, предоставляя возможность наслаждаться. . .
Ошибки стиральных машин
bt_guru 21.01.2025
Современные стиральные машины представляют собой сложные электронные устройства, оснащенные множеством датчиков и систем контроля. Они способны самостоятельно определять вес загруженного белья,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru