Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
master19
9 / 9 / 0
Регистрация: 05.11.2009
Сообщений: 45
1

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

21.11.2009, 21:43. Просмотров 2406. Ответов 10
Метки нет (Все метки)

задача: Дана матрица,заполненная нулями и еденицами.Если в строке или столбце только одна еденица,то она заменяеться нулем.Если после этого в какой-либо строке или столбцеокажетьсятолько одна еденица,то она снова заменяеться нулем и т.д. до тех пор,пока возможны такие замены.
Указать индексы оставшихся едениц(или напечатать сообщение,что едениц не осталось)

кто может помочь с этой задачей,буду очень благодарен!!!

программа для С

Добавлено через 1 час 17 минут
heeelp

Добавлено через 1 час 46 минут
Нарооод!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2009, 21:43
Ответы с готовыми решениями:

Если в строке матрицы есть хотя бы одна единица, то заменить строку нулями
Всем привет, не могу решить эту задачу с помощью функции. Задана матрица...

Заменить первое число нулем, если оно меньше или равно второму
Даны два действительных числа. Заменить первое число нулем, если оно меньше...

Заменить первое число нулем, если оно меньше или равно второму
Даны два действительных числа. Заменить первое число нулем, если оно меньше или...

Элементы матрицы расположенные в одной строке и в одном столбце с минимальным заменить на него
Дана квадратная матрица 5х5. Составить программу, которая находит минимальный...

Если минимальный элемент матрицы стоит в первой строке, то элементы, стоящие в строке за ним, заменить нулями
Задана матрица С(5,5). Если минимальный элемент стоит в первой строке, то все...

10
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
21.11.2009, 21:52 2
не кричи поможем, было бы желание

Добавлено через 1 минуту
что ты сам сделал? ты не стесняйся, выкладывай
0
master19
9 / 9 / 0
Регистрация: 05.11.2009
Сообщений: 45
21.11.2009, 22:53  [ТС] 3
пока ничего нету))
0
Лукас
4 / 4 / 2
Регистрация: 17.11.2009
Сообщений: 32
21.11.2009, 23:31 4
всегда, когда я вижу подобную просьбу, у меня возникает вопрос, в чем именно затруднения: алгоритм или код?
я могу помочь с алгоритмом, но писать и отлаживать код - уж извините, но на этом обычно деньги зарабатывают. я намекаю не на плату, а на то, что это какбе не очень просто.
0
master19
9 / 9 / 0
Регистрация: 05.11.2009
Сообщений: 45
22.11.2009, 00:43  [ТС] 5
понимаете,если не очень понимаешь такие вещи,а срочно нужно сдать лабу,и ничего не поделаешь...что делатЬ???
0
Лукас
4 / 4 / 2
Регистрация: 17.11.2009
Сообщений: 32
22.11.2009, 00:45 6
ну-с?
мне доподлинно известно, что две минуты назад ты смотрел эту тему

Добавлено через 21 секунду
ой.

Добавлено через 29 секунд
ты язык вообще хоть децл знаешь?
0
master19
9 / 9 / 0
Регистрация: 05.11.2009
Сообщений: 45
22.11.2009, 00:47  [ТС] 7
простые программы могу писать
0
Лукас
4 / 4 / 2
Регистрация: 17.11.2009
Сообщений: 32
22.11.2009, 00:56 8
ща я тебе напишу, а ты это дело в компилятор, ага?
а потом скажешь, если ошибки есть.
ладно?
0
master19
9 / 9 / 0
Регистрация: 05.11.2009
Сообщений: 45
22.11.2009, 00:59  [ТС] 9
хорошо!!!спасибо!!
0
Лукас
4 / 4 / 2
Регистрация: 17.11.2009
Сообщений: 32
22.11.2009, 02:57 10
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include<conio.h>
#include<iostream.h>
 
main()
 { int stolb, strok, i,j, kol1,i1,j1, kol2,i2,j2, schet; //schet - переменная, позволяющая отслеживать, совершено ли было изменение матрицы и, как следствие, нужно ли продолжать. :)
   clrscr();
   cout<<"skolko strok?"; cin>>strok;
   cout<<"skolko stolbcov?"; cin>>stolb;
   int m[strok][stolb]; //создали матрицу
   randomize();
   for(i=0;i<strok;i++)
      {for(j=0;j<stolb;j++)
           {m[i][j]=random(2)-1; cout<<m[i][j]<<"   ";}//задание значений и вывод на экран
       cout<<endl;}
   while(schet==1)
     {for(i=0;i<strok;i++)
         {kol=0;schet=0;
          for(j=0;j<stolb;j++)
             {if(m[i][j]==1) {kol1++; i1=i; j1=j;} // запоминаем место, где единица.
              if(m[j][i]==1) {kol2++; i2=j; j2=i;} }// то же, но для столбцов.
          if(kol1==1) {m[i1][j1]=0; schet=1;}
          if(kol2==1) {m[i2][j2]=0; schet=1;}
         } 
     }
   for(i=0;i<strok;i++)
      {for(j=0;j<stolb;j++)
           cout<<m[i][j]<<"   ";//вывод на экран
       cout<<endl;}
    getch();
 }
Добавлено через 41 секунду
а, черт, надо ж еще потом с единицами повозиться... пусть сначала это заработает.

Добавлено через 30 минут
эгей! оО

Добавлено через 53 минуты
хамите, юноша! (с)
0
easybudda
Модератор
Эксперт CЭксперт С++
10090 / 6001 / 1503
Регистрация: 25.07.2009
Сообщений: 11,379
22.11.2009, 06:06 11
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от 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+ единичек/ноликов набирать...
1
22.11.2009, 06:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2009, 06:06

Заменить в каждой строке файла элементы с наибольшим значением нулем
Дан текстовый файл,состоящий из одной или нескольких строк. Каждая строка файла...

Если символ — большая латинская буква, то заменить в нем 3-й бит нулем
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cctype&gt;...

В четных столбцах матрицы заменить минимальный элемент нулем
В матрице размерности 7 на 7 посчитать в каждом втором столбце заме- нить...


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

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

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