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

Определить, может ли при перестановке строк одной матрицы получится вторая - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужен пример отправки get и post запросов http://www.cyberforum.ru/cpp-beginners/thread342195.html
ребят покажите пример отправки пост и гет запросов на сайт работаю на mvs2010 Добавлено через 11 минут strcpy(query,"GET /"); strcat(query, http_path); strcat(query," HTTP/1.0\nHost: "); strcat(query, http_host); strcat(query,"\nUser-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); strcat(query,"\nAccept: */*\n\n"); вроде как то так
C++ Помогите с программой Не знал куда закинуть, поэтому тут. На http://www.********/?main=task&id_task=21 задачка. Решал, решал и не решил. Вот мой код: #include <fstream> using namespace std; int main() { ifstream inputf("INPUT.TXT"); ofstream outputf("OUTPUT.TXT"); http://www.cyberforum.ru/cpp-beginners/thread342191.html
string в int C++
народ подскажите пожалуйств как строку в число перевести? например string в int
С чего начать изучать C++ C++
С чего начать изучать C++ желательно книгу попроще так как мне 12 лет. P.S Решение не оспаривать хочу попробовать P.S.S Работаю в Visual C++ Express
C++ Перегрузка оператора += http://www.cyberforum.ru/cpp-beginners/thread342118.html
Создал класс дробь. Пытаюсь перегрузить оператор += (или -=, *=, /=) А компилятор выдаёт ошибку 'drob operator+=(drob&)' must take exactly two arguments class drob { private: int numerator, denominator; void reduce(); public: drob(int n = 1, int d = 1);
C++ Обработка исключений и ошибок Я недавно начал изучать обработку ошибок try catch. И сразу появились вопросы: 1)Какую библиотеку нужно использовать для исключений и ошибок (например runtime_error) 2) Как написать программу, которая запрашивает у пользователя два числа и выводит их частное. В случае деления на нуль выводит сообщение "On zero divide!". Как я не пытался писать программу вводя в нее например 5 0 оно выводило... подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
15.08.2011, 22:01     Определить, может ли при перестановке строк одной матрицы получится вторая
Цитата Сообщение от PointsEqual Посмотреть сообщение
можно отсортировать сначала строки матрицы, а потом по-элементно сравнить:
- которыйраз встрчаю сортировки - они удлинняют время выполнения алгоритма, на мой взгляд нужно работать сразу с матрицами, притом есть ряд задач где исходная матрица должна оставаться таковой (даже если она не отсортированная)!

Добавлено через 2 минуты
Цитата Сообщение от paskal Посмотреть сообщение
Это решение не полное. Во 2-й матрице могут попасться 2 одинаковые строки, тогда перестановки не существует, а ваш алгоритм скажет что существует.
- С учётом этого изменил в своём алгоритме всего 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
#include <stdio.h>
#include <conio.h>
 
void getmatr(int rows, int cols, int ** matr, char * name); 
bool scanrow(int rows, int cols, int ** matr, int * row);
void showrow(int cols, int *row);
 
int main()
{
    int rows, cols;
    int ** matr1, **matr2;
    bool is_row = false;
    char ch;
    do
    {
        printf("Enter num of rows: ");
        scanf("%d",&rows);
        printf("Enter num of cols: ");
        scanf("%d",&cols);
 
        matr1 = new int *[rows];
        matr2 = new int *[rows];
 
        for(int i = 0; i < rows; i++)
        {
            matr1[i] = new int[cols];
            matr2[i] = new int[cols];
        }
        printf("Enter matrix A\r\n");
        getmatr(rows, cols, matr1, "A");
 
        printf("Enter matrix B\r\n");
        getmatr(rows, cols, matr2, "B");
    
        printf("\tMatrix A\r\n");
        for(i = 0; i < rows; i++)
            showrow(cols, matr1[i]);
        printf("\tMatrix B\r\n");
        for(i = 0; i < rows; i++)
            showrow(cols, matr2[i]);
        for(i = 0; i < rows; i++)
        {
            if(!(is_row = scanrow(rows, cols, matr1, matr2[i])))
                break;
        }
        delete [] matr1;
        delete [] matr2;
 
        if(is_row && i == rows)
            printf("rows in matr2 is can be sorted in rows of matr1\r\n");
        else
            printf("matr1 not equal matr2\r\n");
        printf("[Y/N] Y - enter new matrixes\r\n");
        ch = getch();
    }
    while('Y' == ch || 'y' == ch);
    return 0;
}
 
void getmatr(int rows, int cols, int ** matr, char * name)
{
    for(int i = 0,j; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            printf("%s[%02d][%02d] = ",name,i + 1, j + 1);
            scanf("%d",&matr[i][j]);
        }
    }
}
 
bool scanrow(int rows, int cols, int ** matr, int * row)
{
    bool ret = false;
    for(int i = 0,j, n; i < rows; i++)
    {
        n = 0;
        for(j = 0; j < cols; j++)
        {
            if(matr[i][j] == row[j])
                n++;
            else
                break;
        }
        if(cols < n)
            break;
    }
    if(n == cols)
        ret = true;
    return ret;
}
 
void showrow(int cols, int *row)
{
    for(int j = 0; j < cols; j++)
        printf("%d ",row[j]);
    printf("\r\n");
}
Листинг выполнения программы рассмотрел все случаи присутствия нескольких одинаковых строк)

Enter num of rows: 3
Enter num of cols: 3
Enter matrix A
A[01][01] = 1
A[01][02] = 2
A[01][03] = 3
A[02][01] = 4
A[02][02] = 5
A[02][03] = 6
A[03][01] = 7
A[03][02] = 8
A[03][03] = 9
Enter matrix B
B[01][01] = 4
B[01][02] = 5
B[01][03] = 6
B[02][01] = 7
B[02][02] = 8
B[02][03] = 9
B[03][01] = 1
B[03][02] = 2
B[03][03] = 3
Matrix A
1 2 3
4 5 6
7 8 9
Matrix B
4 5 6
7 8 9
1 2 3
matr1 not equal matr2
[Y/N] Y - enter new matrixes
Enter num of rows: 3
Enter num of cols: 3
Enter matrix A
A[01][01] = 1
A[01][02] = 2
A[01][03] = 3
A[02][01] = 1
A[02][02] = 2
A[02][03] = 3
A[03][01] = 4
A[03][02] = 5
A[03][03] = 6
Enter matrix B
B[01][01] = 4
B[01][02] = 5
B[01][03] = 6
B[02][01] = 1
B[02][02] = 2
B[02][03] = 3
B[03][01] = 7
B[03][02] = 8
B[03][03] = 9
Matrix A
1 2 3
1 2 3
4 5 6
Matrix B
4 5 6
1 2 3
7 8 9
matr1 not equal matr2
[Y/N] Y - enter new matrixes
Enter num of rows: 3
Enter num of cols: 3
Enter matrix A
A[01][01] = 1
A[01][02] = 2
A[01][03] = 3
A[02][01] = 1
A[02][02] = 2
A[02][03] = 3
A[03][01] = 4
A[03][02] = 5
A[03][03] = 6
Enter matrix B
B[01][01] = 1
B[01][02] = 2
B[01][03] = 3
B[02][01] = 1
B[02][02] = 2
B[02][03] = 3
B[03][01] = 4
B[03][02] = 5
B[03][03] = 6
Matrix A
1 2 3
1 2 3
4 5 6
Matrix B
1 2 3
1 2 3
4 5 6
matr1 not equal matr2
[Y/N] Y - enter new matrixes
 
Текущее время: 19:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru