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

Программирование матричных операций. Упорядочить элементы первой половины вектора X по возрастанию абсолютных значений - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Code Blocks и OpenCV http://www.cyberforum.ru/cpp-beginners/thread772873.html
подскажите хоть одну рабочую ссылку на установку OpenCV в codeBlocks ? пробую http://myncbi.blogspot.com/2012/04/how-to-configure-codeblocks-for-opencv.html выкидывает ошибку (рис) OpenCV2.3 CodeBlocks 12.11
C++ где можно найти хорошие уроки по с++ напешите ссылку http://www.cyberforum.ru/cpp-beginners/thread772857.html
C++ Цепь из двух резисторов
Написать программу вычисления сопротивления электрической цепи, состоящей из двух резисторов. Ре-зисторы могут быть соединены последовательно или параллельно. Вот как я это написал: # include <stdio.h> # include <conio.h> int main ( ) { float a,b,c,p; //1резстор , 2 резистор, сопративление, форма цепи printf ("Введите 1 если цепь последовательная, или 2 если цепь параллельная");...
Площадь прямоугольника C++
Возникла проблема с С++. Недавно начал изучать. Такая задача. Найти площадь прямоугольника, задав с клавиатуры значение длинны и ширины. # include <stdio.h> # include <conio.h> void main ( ) { float a, b; float s; printf ("Vvedite ishodnye dannye: \ n"); printf ("Dlina"); scanf (" % f ", & a);
C++ массив структур с полями http://www.cyberforum.ru/cpp-beginners/thread772810.html
Ребят помогите разобраться: Реализовать в программе массив структур с полями: Фамилия студента Номер группы Средний балл за экзамены Реализовать возможности ввода и просмотра массива, сортировки массива по любому из полей, формирования двух текстовых файлов с данными об успевающих и неуспевающих студентах вот такое вот задание как бы есть по нему наработки но проблема с баллами и...
C++ Из массива точек найти наибольшее количество лежащих на одной прямой Из массива точек найти наибольшее количество лежащих на одной прямой Входные данные: Количество точек N N пар - координаты точек. Выходные данные: Ответ на задачу подробнее

Показать сообщение отдельно
Vadim 1
Сообщений: n/a
27.01.2013, 16:37     Программирование матричных операций. Упорядочить элементы первой половины вектора X по возрастанию абсолютных значений
Разработать алгоритм и программу на языке С++ решения следующих взаимосвязанных задач:
1) рассчитать элементы квадратной матрицы A = (aij ), i,j = 0,1,2,...,n-1 по заданной формуле;
2) сформировать из матрицы A элементы вектора X = (xi), i = 0,1,2,...,n-1 по заданному правилу;
3) провести заданное упорядочение элементов матрицы А или вектора Х.


3) упорядочить элементы первой половины вектора X по возрастанию абсолютных значений;

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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "stdafx.h"
#include <vector>
#include <algorithm>
#include <iostream>
#include <math.h>
#include <iomanip>
#include <conio.h>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
     
    int N;
    int f=1;
    cout << "Vvedite razmer matrix A ";
    cin >> N;
    cout << endl;
    //Создаем квадратную матрицу A
    double ** A = new double* [N];
    for (int  i =0;  i<N; i++)
        A[i] = new double [N];
    for(int i = 0; i < N; i ++)
    {
        for(int j = 0; j < N; j ++)             
        {
            for (int i=1;i<=N;i++)
            f =f+i;
            A[i][j]  = ((N-i*j)*(sin((double)(f))))/(cos((double)j));
            cout << fixed << setw(9) << setprecision(2) << A[i][j];
        }
        cout << endl;
    }
    cout << endl;
    cout << "Element vectora X[i]"<< endl;
    //так как индексы массива от 0 до N (не включая N)  то N-i+1  будет изменена на N-i-1
    //то есть для первого цикла при i и j = 0 =>   N-0-1 , так как i < N и j <N
    //это для того чтобы не выйти за пределы выделенного динамического массива
    double* X = new double [N];
    for (int i = 0; i < N; i++)
    {
        double sum = 0.0;   
      for (int j = 0; j <N; j++)
          for (int k = 1; k <N; k++)
        {
            int x_min=0;
            if (A[i][j]<x_min)
         x_min=A[k][j];
            sum += A[i][j]-x_min;  
        }
      X[i] = sum;
      cout << setw(9) << setprecision(3) << X[i];
    
    cout << endl;
    cout << endl;
    }
    //Сортировака массива, индексы содержат минус 1, так индексы начинаются с 0
    //а нам в привычном виде индексы должны начинаться с 1 
    cout << "Uporyadochivanie 1 polovini vektora X po vozrastaniu"<< endl;
 
      
    {
       vector< int > vec (  X[i], X+i); 
       vector<int>::iterator    it = vec.begin(),     end_it = vec.end();         
 
       // сортировка массива 
       sort( vec.begin(),vec.begin()+vec.size()/2 ); 
 
       cout << "Uporyidochenniy massiv:    "; 
       it = vec.begin(); end_it = vec.end(); 
       for ( ; it != end_it; ++ it ) cout << *it << ' '; 
           cout << "\n\n"; 
 
          }
    //Вывод отсортированного массива
      for (int i = 0; i < N; i++)
      {
        for (int j = 0; j <N; j++)
            {
            cout << fixed << setw(9) << setprecision(2) << X[i];
            }
        cout << endl;
      }
    //--- Освобождение выделенной памяти
    for (int i = 0; i <N; i++)
        delete[]A[i];
    delete[]A;
    delete[] X;
    getch();
    return 0;
}

Помогите что-то не получается упорядочить элементы первой половины вектора X по возрастанию абсолютных значений;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru