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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
VoDka
0 / 0 / 0
Регистрация: 18.10.2010
Сообщений: 8
#1

Собрать все отрицательные элементы выше побочной диагонали - C++

18.10.2010, 20:03. Просмотров 1458. Ответов 6
Метки нет (Все метки)

Помогите пожалуйста, суть:. Дана матрица целых чисел. Собрать все отрицательные элементы выше побочной диагонали , получается абсолютно все, и ввод матрицы и вывод на экран все робит, подскажите с куском программы, отвечающим именно за перестановку.....заранее признателен
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2010, 20:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Собрать все отрицательные элементы выше побочной диагонали (C++):

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

В двумерном массиве вывести все элементы выше главной диагонали и ниже побочной - C++
Вообщем то задали такую задачку: В двумерном массиве вывести все элементы выше главной диагонали и ниже побочной. Но у меня получается...

Заменить все нулевые элементы матрицы, которые стоят на побочной диагонали и выше нее, на 1 - C++
Дана квадратная матрица NxN. Заменить все 0 элементы на 1, которые стоят на побочной диагонали и выше нее.

Обнулить элементы матрицы, лежащие одновременно выше главной диагонали и выше побочной диаго-нали. - C++
Matrix92. Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие одновременно выше главной диагонали и выше побочной...

Заменить элементы главной диагонали суммами элементов их строк стоящих выше побочной диагонали - C++
#include <iostream> #include <conio.h> using namespace std; int main() { setlocale(LC_ALL, "rus");//Русский язык const int x...

Обнулить элементы матрицы, лежащие одновременно выше главной диагонали и ниже побочной диагонали - C++
Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие одновременно выше главной диагонали и ниже побочной диагонали (левый...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
18.10.2010, 20:13 #2
ну вот смотри. допустим ты пустил цикл
C++
1
2
3
4
5
for(int i=0;i<SIZE;i++)
    for(int k=0;k<SIZE;k++) // a[i,k]
    {
    ...
    }
который пробегает все пары значений до SIZE. если элемент выше диагонали, то его индекс "высоты" по любому меньше индекса "ширины" т.е. i<k.
0
VoDka
0 / 0 / 0
Регистрация: 18.10.2010
Сообщений: 8
18.10.2010, 20:54  [ТС] #3
а суть то в чем? ты цикл пустил просто по всему массиву, а сравнение то где + если элемент ниже диагонали и отрицателен, то как поместить его выше, точнее не как, а нужно задать еше одну проверку чтобы он не менял местами 2 отрицательных элемента, так как толку от этого нет
0
jlw
6 / 6 / 0
Регистрация: 30.09.2010
Сообщений: 18
18.10.2010, 21:04 #4
Думаю, что так:

C++
1
2
3
4
5
6
for (int i = 0; i < N; ++i)
    for (int j = 0; j < N; ++j)
        if (j < i)
            if (A[i][j] < 0)
                if (A[j][i] >= 0)
                    swap(A[i][j], A[j][i]);
0
VoDka
0 / 0 / 0
Регистрация: 18.10.2010
Сообщений: 8
18.10.2010, 21:15  [ТС] #5
А если все же условие не выполнится?, например, если оба элемента будут отрицательными, то замены не будет, а разместить нужно+ я так думаю надо еще проверку на кол-во отриц элементов запустить, чтобы их кол-во не превышало кол-во элементов выше диагонали
0
jlw
6 / 6 / 0
Регистрация: 30.09.2010
Сообщений: 18
18.10.2010, 22:03 #6
Выглядит не самым лучшим образом, но других вариантов в голову не приходит...

C++
1
2
3
4
5
6
7
8
9
10
for (int i = 0; i < N; ++i)
    for (int j = 0; j < N; ++j)
        if (j < i && A[i][j] < 0)
            if (A[j][i] >= 0)
                swap(A[i][j], A[j][i]);
            else
                for (int k = 0; k < N; ++k)
                    for (int z = 0; z < N; ++z)
                        if (z > k && A[k][z] >= 0)
                            swap(A[i][j], A[k][z]);
А количество отрицательных элементов не должно превышать количество свободных мест выше главной диагонали по условию. Но если нужна проверка, то отдельно перебираем все элементы, суммируя количество отрицательных элементов, а потом сравниваем с величиной (N^2-N)/2.
1
VoDka
0 / 0 / 0
Регистрация: 18.10.2010
Сообщений: 8
18.10.2010, 22:32  [ТС] #7
Спасибо огромное, доработал, все отлично

Добавлено через 9 минут
Кстати а возможно их еще и с диагонали убрать?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2010, 22:32
Привет! Вот еще темы с ответами:

Программа, которая зануляет элементы выше и ниже главной и побочной диагонали - C++
Ребята, помогите срочно нужно, как написать программу которая зануляет элементы выше и ниже главной и побочной диагонали, типа такого чтоб...

Обнулить элементы матрицы, лежащие выше побочной диагонали. Условный оператор не использовать - C++
Доброго времени суток.Прошу помощи в решении следующей задачи. Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие...

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

Возвести в квадрад отрицательные элементы, которые находятся на главной диагонали и выше нее. - C++
Если не трудно, то подскажите. вот дана матрица n*n и мне надо возвести в квадрад отриц. элем., которые находятся на главной диагонали и...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.10.2010, 22:32
Ответ Создать тему
Опции темы

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