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

Почему не сортирует?? - C++

Восстановить пароль Регистрация
 
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
17.12.2011, 21:56     Почему не сортирует?? #1
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
#include <iostream>
#include <fstream>
#include <math.h>
#include <iomanip>
using namespace std;
 
void  perestanovka(int **mas,int n,int m){
        int  i, j, j1; 
                double  dva, ras;
                mas=new int*[n]; 
        for(i=0; i<n; i++)
                mas[i]=new int[m];
    for(j=0; j<m-1; j++)
       for(j1=0; j1<m-1-j; j1++)
           {
                   ras=dva=0;
                   for(i=0; i<n; i++)
                   {
                           if(mas[i][j1]<0 && (mas[i][j1])%2==0)
                                   dva+=fabs(mas[i][j1]);
                           if(mas[i][j1+1]<0 &&  (mas[i][j1+1])%2==0)
                                   ras+=fabs(mas[i][j1+1]);
                   }
                   if(dva>ras)
                           for(i=0; i<n; i++)
                           {
                                   dva=mas[i][j1];
                                   mas[i][j1]=mas[i][j1+1];
                                   mas[i][j1+1]=dva;
                           }
           }
}
void summa(int **mas,int n,int m)
{
    int  i, j;
 for(i=0; i<m; i++)
    {
       double  summa=0;
       
       for(j=0; j<n; j++)
       { bool fl;
                   summa+=mas[j][i];
                   if(mas[j][i]<0) 
                           fl=false;
           }
           cout<<"Stolbec"<<" "<<i+1<<" ";
                cout<<"Summa"<<" "<<summa<<endl;
              
 }
}
int main()
{
    const int n = 3, m = 3;
    
    int **mas = new int *[n]; 
    ifstream fin("test.txt", ifstream::in);
    if(!fin)
    {
        cout << " not found" << endl;
        return 1;
    }
    cout << "Matrix:" << endl;
    
    for(int i=0;i<n;i++)
    {
        mas[i] = new int[n];
        for(int j=0;j<n;j++)
        {
            fin >> mas[i][j];
            cout << setw(3) << mas[i][j];
        }
        cout << endl;
    }
 
    summa(mas,n,m);
    perestanovka(mas,n,m);
 
        system("pause");
    return 0; 
}
Добрый вечер всем.Народ почему программа не сортирует матрицу???
Вот задание.
Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов.
Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик.
Найти сумму эл-тов в тех столбцах, которые содержат хотя бы один отрицательный эл-т.
Когда задача была оформлена без функции, то она сортировала, а сейчас нет.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wanderer1
23 / 23 / 4
Регистрация: 26.03.2011
Сообщений: 54
17.12.2011, 22:45     Почему не сортирует?? #2
если я правильно понял, попробуйте переместить строки 53-55 на строку 6. поменяйте местами строки 75 и 76. а то бессмысленно что делает функция perestanovka
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
18.12.2011, 00:04  [ТС]     Почему не сортирует?? #3
Цитата Сообщение от Wanderer1 Посмотреть сообщение
если я правильно понял, попробуйте переместить строки 53-55 на строку 6.
строка 6 же пуста о_О
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.12.2011, 00:08     Почему не сортирует?? #4
Цитата Сообщение от takewa Посмотреть сообщение
Когда задача была оформлена без функции, то она сортировала, а сейчас нет.
ну если так, то убирайте строки 10-12 и тогда должно все заработать.
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
18.12.2011, 00:13  [ТС]     Почему не сортирует?? #5
Непомогло
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.12.2011, 00:14     Почему не сортирует?? #6
takewa, последний вариант кода показывайте.
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
18.12.2011, 00:15  [ТС]     Почему не сортирует?? #7
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
#include <iostream>
#include <fstream>
#include <math.h>
#include <iomanip>
using namespace std;
 
void  perestanovka(int **mas,int n,int m){
        int  i, j, j1; 
                double  dva, ras;
    for(j=0; j<m-1; j++)
       for(j1=0; j1<m-1-j; j1++)
           {
                   ras=dva=0;
                   for(i=0; i<n; i++)
                   {
                           if(mas[i][j1]<0 && (mas[i][j1])%2==0)
                                   dva+=fabs(mas[i][j1]);
                           if(mas[i][j1+1]<0 &&  (mas[i][j1+1])%2==0)
                                   ras+=fabs(mas[i][j1+1]);
                   }
                   if(dva>ras)
                           for(i=0; i<n; i++)
                           {
                                   dva=mas[i][j1];
                                   mas[i][j1]=mas[i][j1+1];
                                   mas[i][j1+1]=dva;
                           }
           }
}
void summa(int **mas,int n,int m)
{
        int  i, j;
 for(i=0; i<m; i++)
    {
       double  summa=0;
       
       for(j=0; j<n; j++)
           { bool fl;
                   summa+=mas[j][i];
                   if(mas[j][i]<0) 
                           fl=false;
           }
           cout<<"Stolbec"<<" "<<i+1<<" ";
                cout<<"Summa"<<" "<<summa<<endl;
              
 }
}
int main()
{
        const int n = 3, m = 3;
        
        int **mas = new int *[n]; 
        ifstream fin("test.txt", ifstream::in);
        if(!fin)
        {
                cout << " not found" << endl;
                return 1;
        }
        cout << "Matrix:" << endl;
        
        for(int i=0;i<n;i++)
        {
                mas[i] = new int[n];
                for(int j=0;j<n;j++)
                {
                        fin >> mas[i][j];
                        cout << setw(3) << mas[i][j];
                }
                cout << endl;
        }
        perestanovka(mas,n,m);
        summa(mas,n,m);
 
        system("pause");
    return 0; 
}
Wanderer1
23 / 23 / 4
Регистрация: 26.03.2011
Сообщений: 54
18.12.2011, 00:21     Почему не сортирует?? #8
вот теперь переместите строки 50-52 на пустую строку 6. эти переменные должны быть глобальными, иначе в перестановке нет смысла.
да и perestanovka() и summa() желательно должны быть без параметров
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
18.12.2011, 00:25  [ТС]     Почему не сортирует?? #9
В задании Глобальные переменные не допускаются....

Добавлено через 1 минуту
Все равно не пашет. И выдает вот такое если удалить параметры.
'perestanovka' : function does not take 0 parameters
'summa' : function does not take 0 parameters
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.12.2011, 00:28     Почему не сортирует?? #10
takewa, последний вариант сортирует нормально. Если в 73 строке (последнего варианта) вставите вывод матрицы на экран, прекрасно это увидите.
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
18.12.2011, 00:33  [ТС]     Почему не сортирует?? #11
если вписать тупо cout<<mas[i][j] в 73 строку, то он не только выдаст что j не известно но и выдаст ошибку при запуск окна...
for(int j=0;j<n;j++)
{

cout << setw(3) << mas[i][j];
}
если так то тоже самое
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.12.2011, 00:35     Почему не сортирует?? #12
Ну ввод значений матрицы Вы же осилили:
Цитата Сообщение от takewa Посмотреть сообщение
for(int i=0;i<n;i++)
{
mas[i] = new int[n];
for(int j=0;j<n;j++)
{
fin >> mas[i][j];
cout << setw(3) << mas[i][j];
}
cout << endl;
}
Вывод вот такой в 73 строке нужно:
C++
1
2
3
4
5
6
7
8
9
        for(i=0;i<n;i++)
        {
                  for(int j=0;j<n;j++)
                {
                      
                        cout << setw(3) << mas[i][j];
                }
                cout << endl;
        }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2011, 00:36     Почему не сортирует??
Еще ссылки по теме:

Почему не сортирует C++
C++ сортировка не сортирует
Почему не сортирует список? C++

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

Или воспользуйтесь поиском по форуму:
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
18.12.2011, 00:36  [ТС]     Почему не сортирует?? #13
Спасибо вам Братюни
Yandex
Объявления
18.12.2011, 00:36     Почему не сортирует??
Ответ Создать тему
Опции темы

Текущее время: 02:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru