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

[C++] Задача на матрицу - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Невидимость программы. http://www.cyberforum.ru/cpp-beginners/thread384315.html
Здравствуйте! У меня такой вопрос: Как можно сделать программу "невидимой"(т.е. как сделать так,чтобы программа висела в памяти компьютера, добавить программу в автозагрузку(естественно программно), и чтобы эта программа не имела никаких аппликаций(была "без окон, без дверей")). Буду очень признателен! :) Добавлено через 1 минуту Компилятор использую: Dev c++ 4.9.9.2.
C++ Работа со строкой. Не могу разобраться, в чём ошибка. Есть такой код: HANDLE Search;//Объявляем хендл WIN32_FIND_DATAA FileSearch;//Создаем структуру типа WIN32_FIND_DATAA Hand:printf("\nEnter the path:");//Просим ввести путь getchar();// gets(di);//Вводим путь strcat(di, "*");//Создаем маску объединением пути и маски поиска(*-искать всё) Search=FindFirstFileA(di, &FileSearch);//Приравниваем хендл к хендлу, возвращаемому функцией... http://www.cyberforum.ru/cpp-beginners/thread384310.html
односвязный и двухсвязный списки C++
разработать две программы обрабатывающие односвязный и двухсвязный списки по этому заданию : Сформировать список о зарегистрированных пересдачах задолженностей студентов: ФИО, предмет, количество пересдач. Распечатать список по заданному признаку (например, количеству пересдач) и выдать его на экран дисплея. #include<conio.h> #include<iostream.h> #include<string.h> main()
Шифрование и архивация данных C++
Прошу помощи в написании программы на С++ шифрование и архивация данных
C++ Количество элементов в массиве. http://www.cyberforum.ru/cpp-beginners/thread384304.html
Здраствуйте, может кто поможет вродебы как с лёгкой задачей?чтото нечево не могу найти похожева чтобы както сделать самому. Заранее спасибо . Найти количество положительных и отрицательных элементов в двумерном массиве.
C++ округление printf("%.4f", (float) ans ); и printf("%.4lf", ans ); printf("%.4f", (float) ans ); printf("%.4lf", ans ); вроде по моему пониманию мы должны на выходе получать одно и то же (анс в начале дабл). но т.к. это олимпиада протестил 1 и 2 вариант, 2 дал 100 баллов, 1 24 балла, не понимаю где так жестоко косится ответ. P.S. задача вывести с точностью 4 знака опр число, которое рассчитывается до этого. подробнее

Показать сообщение отдельно
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
15.11.2011, 14:12     [C++] Задача на матрицу
Цитата Сообщение от fierswolf Посмотреть сообщение
Задана матрица размеро n x m. Найти максимальный по модулю элемент матрицы. Переставить строки и столбцы матрицы таким образом, чтобы максимальный по модулю элемент был расположен на пересечений k-ой строки и k-ого столбца.
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
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <ctime>
 
using namespace std;
 
int main() {
    const int n = 5;
    const int m = 5;
    int A[n][m];
    int k, max_index = (n > m) ? n : m;
 
    srand(time(NULL));
 
    // Заполнение матрицы случайными числами
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            A[i][j] = rand()%51 - 25;
            cout << A[i][j] << '\t';
        }
        cout << endl;
    }
 
    cout << "Enter k[0-"<< max_index-1 << "]: ";
    cin >> k;
    k = abs(k) % max_index; // Простой способ избежать выхода за границы массива
 
    int max_i = 0, max_j = 0;
 
    // Поиск максимального числа по модулю
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (abs(A[i][j]) > abs(A[max_i][max_j])) {
                max_i = i;
                max_j = j;
            }
        }
    }
    cout << "Max: A[" << max_i << "][" << max_j << "]=" << A[max_i][max_j] << "\nk=" << k << endl;
 
    // Перемещение столбцов и строк
    if (max_i < k || max_i > k) {
        for (int j = 0, temp; j < m; j++) {
            temp = A[k][j];
            A[k][j] = A[max_i][j];
            A[max_i][j] = temp;
        }
    }
 
    if (max_j < k || max_j > k) {
        for (int i = 0, temp; i < n; i++) {
            temp = A[i][k];
            A[i][k] = A[i][max_j];
            A[i][max_j] = temp;
        }
    }
    //---------------------------------
 
    // Вывод матрицы
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout << A[i][j] << '\t';
        }
        cout << endl;
    }
 
    return 0;
}
Результат:
Код
-3	-19	-19	-23	-16	
14	-2	15	-20	-11	
10	15	-19	-17	-17	
-22	-7	24	2	12	
-13	8	-15	23	-9	
Enter k[0-4]: 3
Max: A[3][2]=24
k=3
-3	-19	-23	-19	-16	
14	-2	-20	15	-11	
10	15	-17	-19	-17	
-22	-7	2	24	12	
-13	8	23	-15	-9
Если нужно перемещать строки и столбцы итератисно, то блок Перемещение столбцов и строк можно заменить на следующий код:
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
         while (max_i != k) {
                if (max_i < k) {
                        for (int j = 0, temp; j < m; j++) {
                                temp = A[max_i+1][j];
                                A[max_i+1][j] = A[max_i][j];
                                A[max_i][j] = temp;
                        }
                        max_i++;
                }
                else {
                        for (int j = 0, temp; j < m; j++) {
                                temp = A[max_i-1][j];
                                A[max_i-1][j] = A[max_i][j];
                                A[max_i][j] = temp;
                        }
                        max_i--;
                }
        }
        
        while (max_j != k) {
                if (max_j < k) {
                        for (int i = 0, temp; i < n; i++) {
                                temp = A[i][max_j+1];
                                A[i][max_j+1] = A[i][max_j];
                                A[i][max_j] = temp;
                        }
                        max_j++;
                }
                else {
                        for (int i = 0, temp; i < n; i++) {
                                temp = A[i][max_j-1];
                                A[i][max_j-1] = A[i][max_j];
                                A[i][max_j] = temp;
                        }
                        max_j--;
                }
        }
 
Текущее время: 14:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru