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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
lamer_c
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 6
#1

Перестановка столбцов в матрице - C++

04.06.2009, 19:33. Просмотров 1848. Ответов 10
Метки нет (Все метки)

Смысл задания такой.. данна матрица. нужно:
1) посчитать сумму элементов в тех столбцах, которые содержат хоть 1 отрицательный элемент
2) характеристикой столбца называется сумма модулей его отрицательных нечетных элементов, переставить столбцы по возрастанию их харакстеристик..
1 задание я сделал... во 2 нашел характеристики.. а вот переставить не могу столбцы... прошу помочь
вот исходник:
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<iostream>
using namespace std;
#include<iomanip>
#include<stdlib.h>
int main(){
    const int row=5;const int col=5;
    int mas[row][col];
    int sum[row][col];
    int mass[row][2];
    int i,j,k,s,s1;
    for (i=0;i<row;i++) {for(j=0;j<col;j++){mas[i][j]=rand()%10-5;
        cout<<setw(4)<<mas[i][j]<<" ";}
        cout<<endl;
    }
 
    for (i=0;i<row;i++) for(j=0;j<col;j++)sum[i][j]=0;
    /// находим сумму в столбцах, содержащих отрицательные элементы
    for(j=0;j<col;j++) {s1=0;
        for(i=0;i<row;i++)
        if(mas[i][j]<0)
            for(i=0;i<row;i++) {k=j;
                s1+=mas[i][k];
                sum[0][j]=k+1;
                sum[1][j]=s1;}}
                cout<<endl;
    for (i=0;i<2;i++){
        for (j=0;j<col;j++)
        cout<<setw(4)<<sum[i][j]<<" ";cout<<endl;}
        cout<<endl;
    ///находим характеристики
        s=0;
        for (j=0;j<col;j++){s=0;
            for(i=0;i<row;i+=2){
                if(mas[i][j]<0)
            s+=abs(mas[i][j]);
            mass[0][j]=s;
            mass[3][j]=j;}
            cout<<"j= "<<j<<" "<<"s= "<<s<<endl;
        }
return 0;
}
выслушаю и критику так как в Си++ начал вот недавно програмить пытаться
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2009, 19:33     Перестановка столбцов в матрице
Посмотрите здесь:

Перестановка строк и столбцов в матрице - C++
Добрый день программисты! Вопрос заключается в том как сделать так чтобы можно было переставлять строки и(или) столбцы в нужном порядке. ...

Перестановка столбцов - C++
Суть в том, чтобы переставить столбец Z с первым столбцом матрицы. Программа вылетает на строке, указанной ниже (видимо выход за границы...

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

Перестановка столбцов матрицы - C++
Переставить столбцы матрицы так, чтоб элементы первой строки были расставлены по невозрастанию(прямой обмен)

Перестановка столбцов матрицы - C++
Помогите разобраться, суть задачи: Дана целочисленная матрица размера 6х9. Найти матрицу, получающуюся из данной: перестановкой строк -...

Перестановка столбцов матрицы - C++
Дан двумерный числовой массив n*m. Найти массив получающийся перестановкой столбцов первого с последним, второй с предпоследним и т.д

Перестановка диагоналей в матрице - C++
Нужно переставить диагонали в матрице, сори если было не нашел: Вот тут написал уже кое-что: #include &lt;iostream&gt; #include &lt;cstdlib&gt; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lamer_c
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 6
06.06.2009, 23:29  [ТС]     Перестановка столбцов в матрице #2
видимо так сложно.. что никто не ответил
Ultrator
11 / 7 / 1
Регистрация: 28.04.2009
Сообщений: 219
06.06.2009, 23:52     Перестановка столбцов в матрице #3
Дак это...

Ещё 1 одномерный массив нада: S[ j ],
Вместо 38 строки будет S[j]=s;
Затем - (любая) сортировка, но лучше посмотри в 3-й том Кнута (щас я и сам посмотрю, там как раз для указателей, по ключу), а переприсваивать столбцы - не надо (но, для этого 2-мерный массив mas[][] надо было создать несколько иначе), просто будут переприсвоены указатели...

Правда, при этом индексы придётся поменять местами (иначе - не получится).
Но, можно и более тупо. Смотря как надо...
lamer_c
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 6
06.06.2009, 23:59  [ТС]     Перестановка столбцов в матрице #4
Ultrator, в смысле иначе? можно немного подробнее?
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
07.06.2009, 00:17     Перестановка столбцов в матрице #5
C++
1
"посмотри в 3-й том Кнута (щас я и сам посмотрю, там как раз для указателей, по ключу)" - эта цитата убила :D
mirso
524 / 342 / 17
Регистрация: 05.04.2009
Сообщений: 709
07.06.2009, 00:36     Перестановка столбцов в матрице #6
lamer_c,
"перестановка столбцов" уже была
C++
1
2
3
4
5
6
7
8
char tmp;
    for(i = 0; i < n; i++)
    {
            tmp = mas[i][x -1];
            mas[i][x - 1] = mas[i][y - 1];
            mas[i][y - 1] = tmp;
 
    }
Ultrator
11 / 7 / 1
Регистрация: 28.04.2009
Сообщений: 219
07.06.2009, 15:41     Перестановка столбцов в матрице #7
Ага, кому делать нечего - переприсваивать переменные.
Ну и ладно.
Смотря, как надо...

Добавлено через 12 минут 25 секунд

Не по теме:

Да и вообще, чёт настроения нет объяснять. Я бы сделал по-другому, но зачем я буду это навязывать.



Если чё: Кнут, Т3, 5.2.1, Алгоритм L (Сортировка: Метод вставки в список). (Это - ПОСЛЕ сортировки Шелла и её оценки.)
Ключ - S[i].
Ну, и всё, наверно.



А теперь - по поводу Search: Модератор, ау-у!
lamer_c
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 6
07.06.2009, 16:19  [ТС]     Перестановка столбцов в матрице #8
mirso, ты мне написал пузырьковую сортировку... мне надо переставить в соответствии с характеристиками

Добавлено через 11 минут 58 секунд
З.Ы. если кто не понял характеристики столбцов здесь: mass[0][j]=s;
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
07.06.2009, 16:57     Перестановка столбцов в матрице #9
да нет, lamer_c.
mirso просто написал процедуру сдвига столбцов. что ты и просил.
ставь свое условие, и сдвигай по этому алгоритму.
lamer_c
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 6
07.06.2009, 17:08  [ТС]     Перестановка столбцов в матрице #10
чтож спасибо. попробуем
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2009, 00:23     Перестановка столбцов в матрице
Еще ссылки по теме:

Перестановка блоков в матрице - C++
Переставить блоки в матрице. Функция написана просто на начальном этапе(объявление переменных и т.д), а вот код для самой перестановки не...

Перестановка строк в матрице (С++) - C++
Здравствуйте ребята,очень нужна помощь помогите пожалуйста написать программу.. смысл в том что в программе я должна ввести любую...

Перестановка строк в матрице - C++
Добрый день Дана заданная целочисленная матрица 6x9. Нужно чтобы по заданному пользователем распорядку чисел от 1 до 9 выстаивались в...

Перестановка строк в матрице - C++
Дана целочисленная матрица размера 6х9. Найти матрицу, получающуюся из данной: перестановкой строк первой с последней, второй с...

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


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

Или воспользуйтесь поиском по форуму:
lamer_c
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 6
11.06.2009, 00:23  [ТС]     Перестановка столбцов в матрице #11
если кому понадобиться.. вот до чего додумался...
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
#include <math.h>
#include<iostream>
#include <iomanip> 
using namespace std;
void main()
{
const int m=3;
const int n=4;
int matr[m][n];
int c,j,i;
bool f=false;
int mas[n];
cout<<"\nVvedite elementi mas";
for (i=0;i<m;i++)for ( j=0;j<n;j++)cin>>matr[i][j];
for (i=0;i<m;i++){for ( j=0;j<n;j++)cout<<setw(3)<<matr[i][j];
cout<<endl;}
//читаем характеристики
for(j=0;j<n;j++){
    mas[j]=0; for(i=0;i<m;i++)
        if(matr[i][j]<0 && matr[i][j]% 2) mas[j]+=abs(matr[i][j]);
        cout<<"j "<<j<<" "<<mas[j]<<endl;}
 
//Сортировка
for( i=0;i<m;i++)
  for(j=i+1;j<n;j++)
    if(mas[i]>mas[j])
      {
        c=mas[i];
        mas[i]=mas[j];
        mas[j]=c;
        for(int k=0;k<m;k++)
           {
               c=matr[k][i];
               matr[k][i]=matr[k][j];
               matr[k][j]=c;
            }
      }
for (i=0;i<m;i++){for ( j=0;j<n;j++)cout<<setw(3)<<matr[i][j];cout<<endl;}
//Нахождение суммы
for(i=0;i<n;i++)
  {
    c=0;
    f=false;
    for(int j=0;j<m;j++)
       {
            if(!f) f= (matr[j][i]<0);
            c+=matr[j][i];
       }
    if(f) cout<<"Summ "<<i<<" = "<<c<<endl;
  }
}
Yandex
Объявления
11.06.2009, 00:23     Перестановка столбцов в матрице
Ответ Создать тему
Опции темы

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