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

Функция, где ошибка? - C++

Восстановить пароль Регистрация
 
hhhhhh
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 20
25.12.2013, 13:09     Функция, где ошибка? #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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
// ConsoleApplication13.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "iostream";
#include <stdio.h>
#include <conio.h>
#include <string>
#include <iomanip> // Отвечает за форматированный ввод -  вывод
using namespace std;
 
 
void perestanovka(double **a, int n, int m)
{
    int i, j, k, h;
    int temp[100];
    // Сортируем методом выбора.
 
    for (j = 0; j < m; j++)
    {
        for (k = j + 1; k < m; k++)
        {
 
            if (temp[j] > temp[k])      // По условию: сортировка происходит по возрастанию сумм столбцов
            {
 
                h = temp[j];
 
                temp[j] = temp[k];           // Заменяем значения исходного массива на новый, для дальнейшего использования при сортировки
 
                temp[k] = h;
 
                for (i = 0; i < n; i++)
                {
 
                    h = a[i][j];                       //Переставляем столбцы  по возрастанию сумм
 
                    a[i][j] = a[i][k];
 
                    a[i][k] = h;
 
                }
            }
        }
    }
 
 
}
 
int _tmain(int argc, _TCHAR* argv[])
{
 
    double **a;   // Использование динамической матрицы
    int  n, m, temp[100];
    int i, j,k,h;
 
    // Пусть матрица вводиться вручную с клавиатуры.
 
 
 
    cout << " Vvedite kolichestvo strok n= \n";
    cin >> n;                                            //ввод количества строк с клавиатуры.
    cout << "Vvedite kolichestvo stolbchov m=\n";
    cin >> m;                                         //ввод количества столбцов с клавиатуры.
    cout << "\n";
 
    cout << "\n\n Vvdodim postrochno cheres probel \t";
    cout << "\n";
    a = new double*[n];
    for (i = 0; i < n; i++)                               //цикл для вывода матрицы на экран
    { 
        cout << ">\t";
        a[i] = new double[m];
        for (j = 0; j < m; j++)
            cin >> a[i][j];
    }
    cout << "\n";
    cout << "Kontrolnai matricha:\n";
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
            cout << setw(5) << a[i][j];
        cout << "\n";
    }
    // Находим суммы элементов столбцов
    for (j = 0; j < m; j++)
    {
        for (i = 0; i < n; i++)
            temp[j] += a[i][j];            // Записываем  дополнительный массив для суммы столбцов данной матрицы
 
    }
    cout << "\n";
perestanovka(a, i, j);
 
    
    
 
 
    // Печатаем отсортированую матрицу.
 
    cout << "Otsortirovannai matrich:\n";
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
 
            cout << a[i][j] << "\t";
 
        }
        cout << "\n";
    }
 
    cout << "\n" << "\n";
 
 
    for (j = 0; j < 100; j++)            // Обнуляем дополнительный массив
 
        temp[j] = 0;
 
    // Находим сумму элементов строк отсортированного массива
 
    cout << "Summa elementov strok:\n";
 
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
 
            temp[i] += a[i][j];
 
        cout << temp[i] << "\t";    // Печатаем сумму в виде одномерной матрицы.
 
    } 
 
    _getch();
    return 0;
}
Миниатюры
Функция, где ошибка?  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
25.12.2013, 13:15     Функция, где ошибка? #2
Цитата Сообщение от hhhhhh Посмотреть сообщение
if (temp[j] > temp[k])
перед этим temp объявлен но не определён
hhhhhh
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 20
25.12.2013, 13:49  [ТС]     Функция, где ошибка? #3
То есть, нахождение temp мы тоже вносим в функцию
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
25.12.2013, 13:55     Функция, где ошибка? #4
Цитата Сообщение от hhhhhh Посмотреть сообщение
То есть, нахождение temp мы тоже вносим в функцию
ну подумайте...
У вас в main есть temp[100] , а в функции вы снова объявляете int temp[100] - этоуже совершенно другой массив, но с тем же названием, и этот temp вы как-то начинаете сортировать, хотя данных в нём нету(точнее там мусор, который был в памяти до объявления этого локального массива)...Мб у вас ещё какие-то ошибки, я не запускал вашу прогу)
hhhhhh
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 20
25.12.2013, 14:35  [ТС]     Функция, где ошибка? #5
Спасибо,я описала нахождение temp в самой функции, теперь сортирует.

Добавлено через 31 минуту
Можете пожалуйста подсказать, как найти сумму строк, номера которых задаются целочисленным вектором?
Yandex
Объявления
25.12.2013, 14:35     Функция, где ошибка?
Ответ Создать тему
Опции темы

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