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

Переставить строки в порядке убывания сумм элементов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проверить, все ли строки матрицы содержат хотя бы один положительный элемент http://www.cyberforum.ru/cpp-beginners/thread516401.html
проверить , все ли строки матрицы содержат хотя бы один положительный элемент . если да, то изменить знаки всех элементов матрицы на обратные.... Нужно сделать с динамическим массивом , но я могу только на обычном цикле с условием ... не знаю что делать помогите что да как можно сделать.... Добавлено через 1 час 23 минуты у меня есть такой вариант только он не подходит а динамический я не...
C++ Работа с двумя списками Суть задания: Два списка А и Б. У одного 5 чисел, у другого пять чисел. У первого:1,2,3,4,5. У второго:3,4,5,6,7. Нужно их вывести на экран. Потом из первого списка удалить числа, которые есть и у второго. Затем добавить к первому списку те числа списка Б, которых нету у А...Я сделал два списка, некоторые функции. Вот мой код. Но я не понимаю как их сравнить и при сравнении удалить элемент... http://www.cyberforum.ru/cpp-beginners/thread516398.html
написать програмку(простенькую) на С++ C++
Заданная квадратная матрица действительных чисел. Найти среднее арифметическое положытельных элементов, находящихся на главной диагонали. помогите пожаалуйста :)
Текущий миннимум C++
Задан массива из n чисел. Каждый элемент заменить минимальным среди первых i элементов этого массива. Тест: 7 9 2 3 4 5 1 6 7 7 2 2 2 2 1 1 p.s Если можно с комментариями плиз
C++ Найти произведение трех матриц размерностью 3*3. http://www.cyberforum.ru/cpp-beginners/thread516362.html
обработка текстовых файлов Найти произведение трех матриц размерностью 3*3.
C++ Считывание и запись в файл Короче пытаюсь считать из одного файла цифру и записать ее в другой файл На то что после // не обращайте внимания эт я для себя писал))) int pokazatel; char a; FILE * fo;// FILE - тип переменно (для привязки переменной к файлу), fo - сама переменная fo = fopen("test.txt","rt");// открытие файла с названием test.txt , wt -запись (write text) rt -чтение fscanf( fo, a);... подробнее

Показать сообщение отдельно
FutureCome
103 / 103 / 6
Регистрация: 19.12.2010
Сообщений: 417
Завершенные тесты: 2
12.03.2012, 03:23     Переставить строки в порядке убывания сумм элементов

Не по теме:

1. Это раздел по C# (Си-шарп), а не по C++ (Си-плюс-плюс). Тему, наверно, переместят;
2. Форматируйте свой код: Используйте отступы и пробелы между операндами;
3. При вставке своего кода сюда, используйте форматирование кода на форуме с помощью кнопочки C++;
4. Перед тем, как задать вопрос, поищите готовые ответы на этом форуме и в интернете.


По делу:
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
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
#include <iostream.h>
#include <time.h>
 
using namespace std;
 
//Создание массива
int** CreateArray(int n)
{
    int** new_arr = new int*[n];
    for (int i = 0; i < n; i++)
    {
        new_arr[i] = new int[n];
        for (int j = 0; j < n; j++)
        {
            new_arr[i][j] = -10 + rand() % 21;
        }
    }
    return new_arr;
}
 
//Печать массива
void PrintArray(int** arr, int n)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cout.width(4);
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
}
 
//Печать массива
void PrintArrayWithSums(int** arr, int* sums, int n)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cout.width(4);
            cout << arr[i][j] << " ";
        }
        cout << "Sum: " << sums[i] << endl;
    }
}
 
//Удаление массива
void DeleteArray(int** arr, int n)
{
    for (int i = 0; i < n; i++)
    {
        delete[] arr[i];
    }
    delete[] arr;
}
 
//Вычисление сумм
int* GetStrSums(int** arr, int n)
{
    int* sums = new int[n];
    for (int i = 0; i < n; i++)
    {
        int curSum = 0;
        for (int j = 0; j < n; j++)
        {
            curSum += arr[i][j];
        }
        sums[i] = curSum;
    }
    return sums;
}
 
//Сортировка по суммам строк (по убыванию). Метод сортировки пузырьком:
//http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BF%D1%83%D0%B7%D1%8B%D1%80%D1%8C%D0%BA%D0%BE%D0%BC
void SortByStrSums(int** arr, int* sums, int n)
{
    bool t = true;
    while(t)
    {
        t = false;
        for (int i = 0; i < (n - 1); i++)
        {
            if (sums[i] < sums[i + 1])
            {
                int* tmpStr = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = tmpStr;
 
                int tmpSum = sums[i];
                sums[i] = sums[i + 1];
                sums[i + 1] = tmpSum;
 
                t = true;
            }
        }
    }
}
 
void main()
{
    int n;
    srand (time(NULL));
 
    cout << "Input N:" << endl;
    cin >> n;
    cout << endl;
 
    int** arr = CreateArray(n); //Создаём массив со случайными числами.
    cout << "Array:" << endl;
    PrintArray(arr, n);
 
    int* sums = GetStrSums(arr, n); //Получаем суммы
    cout << endl << "Array with sums: " << endl;
    PrintArrayWithSums(arr, sums, n); //Печатаем массив вместе с суммами.
 
    SortByStrSums(arr, sums, n); //Сортируем по суммам строк
    cout << endl << "Array sorted by string sums: " << endl;
    PrintArrayWithSums(arr, sums, n); //Печатаем массив после сортировки.
 
    DeleteArray(arr, n); //Удаляем массив
    cin.get(); //пауза до нажатия клавиши.
}

3. Используйте объявление массивов не в статической памяти, а динамической (ключевое слово new) как в моём примере.
4. double - вещественный тип, а вам нужен целый - используйте int.

Добавлено через 32 минуты
Цитата Сообщение от samira di Посмотреть сообщение
почему когда я задаю например 5 чисел от 6 до 2, он пишет что не упорядочен, хотя должен убывать?
Потому что второй цикл нужно делать не до m, а до (m - 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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
void main()
{
    int m;
    cout << "m=";
    cin >> m;
    if (m > 1)
    {
        cout << endl;
        int k,n,i,x[30];
        {
            for(i = 0; i < m; i++)
            {
                cout << "x[" << i << "]=";
                cin >> x[i];
            }
        }
 
        k = 0; n = 0;
        {
                for(i = 0; i < (m - 1); i++)
                    if(x[i] <= x[i + 1])
                        k++;
                    else
                        n++;
 
                if (n == m - 1)
                    cout << "Decreases"; //Убывает
                else if (k == m - 1)
                    cout << "Increases"; //Возврастает
                else
                    cout << "Unsorted"; //Не отсортирован
        }
    }
    else
    {
        cout << "Wrong array length" << endl; //Неверная длина массива
    }
    getch();
}

5. Вместо cin.get() подключайте conio.h:
C++
1
#include <conio.h>
и вызывайте в конце программы функцию:
C++
1
getch();
 
Текущее время: 20:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru