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

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

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

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,609
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+ единичек/ноликов набирать...
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru