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

Путем перестановок строк и столбцов элемент переместить в правый верхний угол подмассива (С Turbo Pascal на C++) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Пространства имен http://www.cyberforum.ru/cpp-beginners/thread871462.html
Здравствуйте. В общем в этом примере возникает ошибка при компиляции 1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl SALES::setSales(struct SALES::Sales &,double const * const,int)" (?setSales@SALES@@YAXAAUSales@1@QBNH@Z) в функции _main 1>C:\Users\Андрей\Documents\Visual Studio 2010\Projects\123\Debug\123.exe : fatal error LNK1120: 1 неразрешенных внешних...
C++ Динамический массив: вычислить сумму элементов главной и побочной диагоналей (Исправление кода) я скатал у друга готовую задачу и преподаватель решил на защиту изменить мне условие #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; /*Практическая работа №11 Двумерные массивы 1 Написать программу работы с двумерным динамическим вещественным массивом. Предусмотреть динамическое распределение памяти под массив перед работой с масси-вом (использовать... http://www.cyberforum.ru/cpp-beginners/thread871436.html
Очередь: Напишите программу сложения и умножения многочленов, представленных описанным образом C++
Всем Здрасти Многочлены вида , где можно представить в виде очереди, где каждый элемент имеет три поля: одно – для коэффициента ci, второе – для показателя степени ei, третье – для указателя на следующую ячейку. Напишите программу сложения и умножения многочленов, представленных описанным образом (реализация 6). Реализация 6. Разработайте класс, реализующий очередь с помощью указателей....
Написать программу, которая предлагает пользователю ввести целую матрицу размером 4 на 4 и заменяет все четные элементы их квадратами C++
Здравствуйте, меня Зовут Алина, прошу помощи для решения задач на С++ очень нужно для экзамена! буду очень признательна! ПОМОГИТЕ ПОЖАЛУЙСТА!!! 1. Написать программу, которая предлагает пользователю ввести целую матрицу размером 4 на 4 и заменяет все четные элементы их квадратами Алина, оформите темы в соответствии с правилами форума, а именно: 1) для каждой задачи создайте по одной...
C++ Написать программу, которая вычисляет целую степень, в которую необходимо возвести число 2, чтобы получить число, ближайшее меньшее либо равное числу, http://www.cyberforum.ru/cpp-beginners/thread871411.html
Написать программу, которая вычисляет целую степень, в которую необходимо возвести число 2, чтобы получить число, ближайшее меньшее либо равное числу, заданному в начале программы. Спасибо.
C++ Переписать символы с входящего рядка в выходящий, меняя операторы языка паскаль на операторы языка С++ := на =, = на ==, # на != Переписать символы с входящего рядка в выходящий, меняя операторы языка паскаль на операторы языка С++ := на =, = на ==, # на != Спасибо. подробнее

Показать сообщение отдельно
MyMind
24 / 24 / 7
Регистрация: 14.05.2013
Сообщений: 68
20.05.2013, 23:35     Путем перестановок строк и столбцов элемент переместить в правый верхний угол подмассива (С Turbo Pascal на C++)
вот ваш код. начал нумеровать массив с 1, а не с 0, так просто запутался.

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
#include <iostream>
#include <iomanip>
#include <ctime>
#include <conio.h>
 
using namespace std;
int main() {
    setlocale(LC_ALL, "Russian");
    int n, imax, jmax;
    double a[15][15], b[15], r;
    bool f;
    srand(time(0));
    do {
        cout << "Задайте размер матрицы до 15 n = ";
        cin >> n;
        cout << "Исходный массив:" << endl;
    } while (n < 1 || n > 15);
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            a[i][j] = rand() % 10;
            cout << setw(5) << a[i][j];
        }
        cout << endl;
    }
    for (int i = 1; i <= n-1; i++) { //количество подмассивов, последний из 1 элемента не трогаем
        imax = i;                   //считаем левый верхний элемент подмассива кандидатом на максимум
        jmax = 0;
        for (int k = i; k <= n; k++)  //цикл для перебора подмассивов
            for (int j = 1; j <= n-i+1; j++)
                if (a[k][j] > a[imax][jmax]) {  //для поиска максимального элемента
                    imax = k;  //нашли - делаем этот элемент максимальным
                    jmax = j;
                }
                if (imax > i) {                 //если максимальный не в первой строке подмассива
                    for (int j = 1; j <= n; j++) //сдвигаем (не обмениваем!) строки
                        b[j] = a[imax][j];  //запомним строку с максимумом
                    for (int k = imax; k >= i+1; k--)  //сдвинем строки вниз до макс.
                        for (int j = 1; j <= n; j++)
                            a[k][j] = a[k-1][j];
                    for (int j = 0; j < n; j++)  //на место первой пишем строку с максимумом
                        a[i][j] = b[j];
                }
        if (jmax < n-i+1) {              //если максимальный не в последнем столбце подмассива
            for (int k = 1; k <= n; k++)  //сдвигаем столбцы
                b[k] = a[k][jmax];  //запомним столбец с макс.
            for (int j = jmax; j >= n-i; j--)  //сдвинем столбцы влево до макс
                for (int k = 1; k <= n; k++)
                    a[k][j] = a[k][j+1];
            for (int k = 1; k <= n; k++)  //на место последнего пишем столбец с макс
                a[k][n-i+1] = b[k];
        }
    }
    cout << "Массив после перестановок:" << endl;
    for (int i = 1; i <= n; i++) {  //вывод результата
        for (int j = 1; j <= n; j++)
            cout << setw(5) << a[i][j];
        cout << endl;
    }
    f = true;
    int i = 2;
    while (i < n && f)
        if (a[i][n-i+1] > a[i-1][n-i+2]) f = false;
        else i++;
    if (f) cout << "На побочной диагонали убывающая последовательность";
    else cout <<"Убывающая последовательность не получилась, ошибка в программе";
    getch();
    return 0;
}
 
Текущее время: 15:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru