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

Если в строке или столбце матрицы только одна единица, то заменить ее нулем - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Builder Вывод одномерного массива в TMemo http://www.cyberforum.ru/cpp-beginners/thread65967.html
вечер добрый! если не сложно, приведите пример вывода в Memo1 массива
C++ Найти номера элементов массива, равных заданому числу помогите решить!! найти номера элементов массива М равных заданому числу А =5,количество элементов N= 15,от -10 до 10 http://www.cyberforum.ru/cpp-beginners/thread65951.html
C++ Программу по схеме
помогите написать прогу по этой схеме
Максимум в матрице C++
помагите плиз ...ни как не могу разобрать...с задачей на Турбо Си. Дана квадpатная матpица действительных чисел pазмеpности n (n <=20). Найти наибольшее из значений элементов , pасположенных в заштpихoванной части матpицы. а) ┌─────────────────┐ │*\ │***\ │*****\ │*******\ │********/ ...
C++ файловый ввод-вывод http://www.cyberforum.ru/cpp-beginners/thread65929.html
посоветуйте пожалуйста какие нужно использавать функции для файлового ввода-вывода блоками данных (не строками а то строковые функции сами редактируют данные добавляя где попало лишние байты)
C++ НАСЛЕДОВАНИЕ Привет! Есть у меня одна задачка из лабораторной работы. Дело в том что на лекцие я не был по этой теме(Наследование), и потому прошу вашей помощи. Условия задачи: Создать класс ТОЧКА ,которая имеет координаты .Класс ЕЛИПС и КРУГ. Определить иерархию типов. Определить функцию вывода на экран, площу елипса и круга, конструктор, деструктор! подробнее

Показать сообщение отдельно
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
22.11.2009, 06:06     Если в строке или столбце матрицы только одна единица, то заменить ее нулем
Цитата Сообщение от master19 Посмотреть сообщение
задача: Дана матрица,заполненная нулями и еденицами.Если в строке или столбце только одна еденица,то она заменяеться нулем.Если после этого в какой-либо строке или столбцеокажетьсятолько одна еденица,то она снова заменяеться нулем и т.д. до тех пор,пока возможны такие замены.
Указать индексы оставшихся едениц(или напечатать сообщение,что едениц не осталось)
Вместо индексов рисует саму таблицу "до" и "после" (для нагляности), а так вроде работает...
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define ROWS 5
#define COLS 5
    
/* Заполнение матрицы ROWS X COLS нулями и еденицами в произвольном порядке и обнуление 
    единственных в строке или столбце еденичных ячеек */
 
int main(){
    int matr[ROWS][COLS];
    size_t i, j, n, m, count;
    int flag;
    
    /* заполнение матрицы */
    srand(time(NULL));
    for ( i = 0; i < ROWS; i++ )
        for ( j = 0; j < COLS; j++ )
            matr[i][j] = rand() % 2;
    
    printf("\nOriginal matrix:\n");
    for ( i = 0; i < ROWS; i++ )
        for ( j = 0; j < COLS; j++ )
            printf( ( j < COLS - 1 ) ? "%d " : "%d\n", matr[i][j]);
    
    /* обнуление */
    do {
        flag = 0;
        for ( i = 0; i < ROWS; i++ ){
            count = 0;
            for ( j = 0; j < COLS; j++ ){
                if ( matr[i][j] == 1 ){
                    if ( ++count > 1 ){
                        break;
                    }
                    else {
                        n = i;
                        m = j;
                    }
                }
            }
            if ( count == 1 ){
                matr[n][m] = 0;
                flag = 1;
            }
        }
        for ( j = 0; j < COLS; j++ ){
            count = 0;
            for ( i = 0; i < ROWS; i++ ){
                if ( matr[i][j] == 1 ){
                    if ( ++count > 1 ){
                        break;
                    }
                    else {
                        n = i;
                        m = j;
                    }
                }
            }
            if ( count == 1 ){
                matr[n][m] = 0;
                flag = 1;
            }
        }
    } while ( flag );   
    
    /* вывод результатов */
    printf("\nProcessed matrix:\n");
    for ( i = 0; i < ROWS; i++ )
        for ( j = 0; j < COLS; j++ )
            printf( ( j < COLS - 1 ) ? "%d " : "%d\n", matr[i][j]);
    
    return 0;
}
Запускать лучше несколько раз подряд, а то не всегда понятно, что происходит (если происходит). Можно заполнение матрицы вручную сделать, но каждый раз тоскливо по 25+ единичек/ноликов набирать...
 
Текущее время: 20:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru