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

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

Войти
Регистрация
Восстановить пароль
 
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
#1

Не знаю, как работать с элементамми массива - C++

14.03.2012, 18:32. Просмотров 273. Ответов 0
Метки нет (Все метки)

Еужно провести кое-какие преобразования с элементами вектора.

Для начала нужно считать ненулевые элементы матрицы в вектор values типа double, создать еще один coord вектор, стоящий из чисел, построенных по правилу:
i + (j-1)*n , где i - номер строки, j - номер столбца, n - порядок матрицы
теперь нужно разделить все элементы строки на диагональный элемент, стоящий в данной строке, т.е.
если матрица такая
10 1 1
2 10 1
2 2 10
то надо перейти вот к такой матрице:
1 0.1 0.1
0.2 10 0.1
0.2 0.2 1

values = {10, 1, 1, 0, 2, 10, 1, 0, 2, 2, 10}
coord = {1, 4, 7, 0, 2, 5, 8, 0, 3, 6, 9, 0}
для простоты - отделяю элементы одной строки от элементов другйо строки нулями (все-равно я считываю лишь ненулевые элементы из исходного файла) Так же отделяю элменты вектора coord
Это я сделал.

Вот только не получается разделить элементы values, стоящие между нулями (т.е. те, что в одной строке в матрицы) на диагональный элемент.

Вот мой код:

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
    int row = 1;
    for ( int i = 0; i < values_z.size(); i++ )
    {
        if ( values_z[i] == 0 )
        { row++; }
        int colum = (coordinates_z[i] - row)/3 +1;
        if ( row == colum )
        {
            double current_el = values_z[i];
            int q = i;
            // делим элементы, стоящие справа от диагонального на диагональный
            while ( values_z[q] != 0 )
            {
                values_z[q] = values_z[q]/current_el;
                q++;
            }
            // делим элементы, стоящие слева от диагонального на диагональный
            int w = i;
            while (values_z[w] != 0 )
            {
                w--;
                values_z[w] = values_z[w]/current_el;
                if ( w < 0 ) { return 0;}
            }
        }
        if ( row != colum ){}
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2012, 18:32     Не знаю, как работать с элементамми массива
Посмотрите здесь:

Простой список в виде массива.Как работать с элементами списка-массива через единую функцию - C++
Добрый день!Подсобите,как реализовать Простой список,но не через шаблоны или создание указателей,а как бы в виде массива.(Ну,или ваш...

Как работать со списком на основе массива? - C++
У меня есть структура A у которой есть структурный элемент row. Как мне присвоить какое либо значение в a.row? Как мне добавить элемент с...

Как работать с указателями и как работать с ссылками - C++
Я в книге дочитал до темы указатели и ссылки, не понимаю как работать с указателями и как работать с ссылками. Я прочитал понятия я понимаю...

Не знаю как реализовать - C++
Итак, пользователь может ввести, а может и ничего не вводить, но програма выводит число через каждые sleep(500) как реализировать...

Не знаю как выполнить - C++
Помогите пожалуйста с этой задачей: Напишите функцию void compare (char str1, char str2), сравнивающую 2 символьных массива. Функция main...

Я не знаю как доработать - C++
Написал код, но очень криво и нифига ничего не работает. Наш препод ничерта не объясняет =( Учу С всего 2 месяца Итак задание:...

Не знаю как отсортировать - C++
Есть матрица 22х22, нужно заполнить его случайными числами от-22 до 22 и отсортировать четные столбцы в обратном порядке, а нечетные в...

Не знаю как назвать - C++
Подскажите пожалуйста, где здесь ошибка? Пытался скомпилировать в Microsoft Visual C++ (2010) Нажал на кнопку Run, а там ошибка, ну...

Не знаю как написать - C++
Помогите пожалуйста ! Задание : Дан символьный файл. Получить копию этого файла. совсем не пойму что делать... Есть ли какие либо...

Сортировка(я не знаю как сделать) - C++
Имеется одномерный массив длинной N=40. Отсортировать по уменьшению методом бинарного сортирования те элементы массива, которые являются...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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