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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
magnum1992
41 / 41 / 9
Регистрация: 22.05.2011
Сообщений: 156
Записей в блоге: 5
#1

Вычеркивание i строки j столбца в матрице - C++

22.05.2011, 19:21. Просмотров 1116. Ответов 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
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
#include "stdafx.h"
#include "conio.h"
#include "math.h"
#include "time.h"
#include <stdlib.h>
#include <locale.h>
 
 
 
int main()
{
    setlocale (LC_ALL,"RUS");
    const int N=100;
    int flag=0;
    int k=0;
    printf("Введите разницу в возрасте:\n");
    scanf("%i",&k);
    int d[N][N];
    int c[N][N];
    int e[N];
    int n;
    printf("Введите количество пар:\n");
    scanf("%i",&n);
    int a[N];
    printf("Возраста мужского пола: \n");
    for(int i=1; i<n; i++)
    {
        a[0]=0;//левый верхний угловой элемент
        a[i] = 18+rand()%33;//Создаем случайный массив А из n элементов цифрами от 18 до 50
         printf("%i \n",a[i]);
}
    int b[N];
    printf("\nВозраста женского пола: \n");
    for(int i=1; i<n; i++)
    {
        b[0]=0;//левый верхний угловой элемент
        b[i] = 18+rand()%33;//Создаем случайный массив В из n элементов цифрами от 18 до 50
        printf("%i \n",b[i]);
}
    printf("\n");
 
{//сортировка массива А по возрастанию
    int temp;
 
    for (int j=1; j<n;j++)
{
 
    for (int i=1; i<n;i++)
    {
        if (a[i]>=a[j])
       {
           temp = a[i];
           a[i] = a[j];
           a[j]=temp;
       }
    }
}
 
}
 
 
{//сортировка массива В по возрастанию
    int temp;
 
    for (int j=1; j<n;j++)
{
 
    for (int i=1; i<n;i++)
    {
        if (b[i]>=b[j])
       {
           temp = b[i];
           b[i] = b[j];
           b[j]=temp;
       }
    }
}
 
}
 
{//В первую строку и столбец забиваем отсортированные возраста
    for(int i=0;i<n;++i)
        d[i][0]=a[i];
    for(int j=0;j<n;++j)
        d[0][j]=b[j];
    
}
 
for(int i=1;i<n;++i)
    for(int j=1;j<n;++j)
        if(abs(b[j]-a[i])<=k)
            d[i][j]=1;//построение матрицы смежности на пересечении возрастов ставим 1 если разность в возрасте меньше или равна заданому k иначе 0
        else d[i][j]=0;
 
for(int i=0;i<n;++i)//Вывод матрицы
    {
        for(int j=0;j<n;++j)
        printf(" | %i | ",d[i][j]);
        printf("\n");
    }
{
    for(int i=1;i<n;++i)
        if(d[i][i]==0)//если на главной диагонали 1 повышаем флаг
        {
        flag++;
        break;
        }
}
Задача такая:нужно найти паросочетания в двудольном графе и вывести различные варианты паросочетаий.Алгоритм такой: рандомом забиваются два массива возростов потом сортируются по возрастанию и строиться матрица смежности которая на пересечении возрастов ставит 1 если паросочетание возможно и 0 если нет.Потом проверяется главная диагональ если на ней все 1 то паросочетания сущ.Не могу написать часть в которой была бы проверка если на [i][j] месте 1,зачеркиваеться i строка и j столбец и проверяеться оставшееся матрица на наличие на главной диагонали 1.Помогите В заранее благодарен.
P.S.нужна только та часть где происходит удаление i строки и j столбца

Добавлено через 9 минут
C++
1
2
3
4
5
6
7
8
if(flag==0)//если флаг равен нулю на главной диагонали только 1 
    {  
        for(int i=1;i<n;i++)
        {for(int j=1;j<n;j++) 
        if(d[i][j]==1)
            {for(int e=0;e<n;e++)
        for(int w=0;w<n;w++) 
            c[e][w]=d[i+1][j+1];}}
вот попробывал написать, не работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2011, 19:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычеркивание i строки j столбца в матрице (C++):

«Вычеркивание» строки и столбца из матрицы оформить как функцию потока - C++
«Вычеркивание» строки и столбца из матрицы оформить как функцию потока. Сначала вводятся элементы исходной матрицы, номер строки и...

Удаление столбца и строки в матрице - C++
Доброго времени суток всем. У меня возникла следующая проблема при программировании на с++, а конкретно с удалением строки и столбца в...

Удаление строки и столбца в матрице с максимальным элементом - C++
Доброго времени суток. Выделил память под матрицу. Заполнил её случайными элементами. Нашел максимальный элемент в матрице. Результатом...

Найти максимальное значение в матрице и номер его столбца и строки - C++
Дана матрица размером N*M. Напишите программу, определяющую максимальное значение в матрице и номер его столбца и строки.Ввод с...

Получить квадратную матрицу порядка n — 1 путем отбрасывания в исходной матрице строки и столбца - C++
В данной действительной квадратной матрице порядка n найти наибольший по модулю элемент. Получить квадратную матрицу порядка n — 1 путем...

В матрице А(4-строки, 3-столбца) поменять местами наибольшие элементы в первом и третьем столбцах - C++
В матрице А(4-строки, 3-столбца) поменять местами наибольшие элементы в первом и третьем столбцах

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2011, 19:21
Привет! Вот еще темы с ответами:

В прямоугольной матрице заменить элементы каждого столбца на сумму элементов этого столбца - C++
Решить задачу: в прямоугольной матрице заменить элементы каждого столбца на сумму элементов этого столбца.

В заданной матрице найти наибольший элемент и попарно перемножить элементы строки на элементы столбца - C++
В данной квадратной матрице найти наибольший элемент и попарно перемножить элементы строки, в котором он расположен, на элементы столбца, в...

Найти нулевой(ые) элемент(ы) в матрице, вывести на пересечение какой строки и столбца располагается(ются) этот(эти) элемент(ы) - C++
Ребят, программа нужна срочно, мне на неё нужно много потратить времени, помогите. Язык Си.

Массивы. Поделить элементы каждой строки столбца на последний элемент столбца - C++
Дано матрицу Т размером 8х9. поділіть элементы каждой строки столбца на последний элемент столбца. Превращенную матрицу напечатать


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru