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

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

Войти
Регистрация
Восстановить пароль
 
Expelio
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 23
#1

Матрицы. нулевые и одинаковые строки. - C++

22.03.2010, 09:21. Просмотров 628. Ответов 2
Метки нет (Все метки)

Дана целочисленная матрица размера 56. Найти номера строк, где все элементы нулевые, все элементы одинаковы.

Вот недописанный код программы. Помогите дописать и исправить. Недописал еще нахождение строки с одинаковыми элементами. Что-то не получается.

И помогите исправить ещё проблему, что если несколько нулевых строк, то он будет выводить номер всех, а не одной.

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
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <iomanip>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{const int N1=5;
const int M1=6;
int i,j;
int l=0,g=0,lmax=0;
 
    int x[N1][M1];
 
 
for (i=0; i<N1; i++)
           { for (j=0; j<M1; j++)
                    { cout << "x[" << i <<"][" << j<<"]=";
                  cin >> x[i][ j];   }
           }
 
cout << "Vvedennaya matrica" << endl;
for (i=0;i<N1;i++)
         { for (j=0;j<M1;j++)
            { 
               cout << setw(4) << x[i][j];
            }
       cout <<endl;
   }
 
int row;
for(i=0;i<N1;i++) {
    for (j=0;j<M1;j++) {
        for (int n=0;n<N1;n++)
        {if (x[i][j]==0) row=i; else ; }
      
            }
        }
 
cout << row << endl;
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2010, 09:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Матрицы. нулевые и одинаковые строки. (C++):

Удалить из матрицы нулевые строки - C++
Господа уважаемые программеры! Пожалуйста помогите доделать детскую прогу. Имеется матрица NxM элементов. Нужно удалить методом...

Найти нулевые строки матрицы - C++
Задана матрица целых чисел.Найти номера строк все элементы которых равны нулю.Использовать функции Помогите отредактировать пожалуйста ...

Поменять местами первую и последнюю строки матрицы, которые содержат одинаковые элементы - C++
1. Дана целочисленная прямоугольная матрица. Поменять местами первую и последнюю строки матрицы, которые содержат одинаковые элементы. 2....

Матрицы. Необходимо найти значение среднего арифметического строк матрицы, исключая нулевые, в случае, если строка имеет отрицательный элемент(ы) - C++
Добрый день уважаемые форумчане! На днях возник вопрос, как найти среднее арифметическое строк, исключая нулевые элементы, если там есть...

Если последняя строка данной матрицы содержит нулевые элементы - домножить все элементы матрицы на 10 - C++
Дана действительная матрица С(n*m).Если последняя строка данной матрицы содержит нулевые элементы то домножить все элементы матрицы на 10

Найти нулевые строки и столбцы в матрице - C++
Доброго всем дня)) помогите сделать часть кода на проверку строк и столбцов матрицы. Если все элементы строки или столбца нули то =&gt;...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Himka
2 / 2 / 1
Регистрация: 28.02.2010
Сообщений: 5
22.03.2010, 11:28 #2
Вот так написал:
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
#include "stdafx.h"
#include <iostream.h>
#include <iomanip.h>
 
int main(int argc, char* argv[])
{int i,j;
 int X[5][6];
 int counter=0;
 int r; 
 
for (i=0; i<5; i++)
 for (j=0; j<6; j++)
 { cout << "X[" << i <<"][" << j<<"] = ";
   cin >>X[i][ j]; 
 }
cout<<"Vvedennaya matrica"<<endl;
for (i=0; i<5; i++)
{for (j=0; j<6; j++)
   cout << setw(5) <<X[i][j];
 cout <<endl;
}
 
for(i=0; i<5; i++)
{r=1;
 for (j=0; j<5; j++) 
  if (X[i][j]!=X[i][j+1])
   {r=0;
    break; 
  }
  if (r==1)
  {counter++;
   if (X[i][5]==0)
    cout<<"Stroka nomer "<<i<<" - nulevaya"<<endl;
   else
    cout<<"U stroki nomer "<<i<<" vse elementy odinakovy"<<endl;
  }          
}                     
                
if (counter==0)
  cout<<"Matrica ne sodergit strok, v kotoryh vse elementy ravny"<<endl; 
return 0;
}
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
22.03.2010, 11:32 #3
Индексы строк начинаются с 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
109
110
111
112
113
114
115
116
117
#include <iostream.h>
//Описание узла стека:
struct Node {
int n_str;
Node *pnext;
};
 
//----------------------------------------------------------------------
int push(Node **top, int index); //положить на вершину стека
int pop(Node **top);             //выборка  из стека
int print(Node *top);            //показать значения стека
int Update(Node **top);          //полное освобождение памяти из под стека.
//----------------------------------------------------------------------
 
 
//Клиент:
int main(){
 
const int H = 5;
const int W = 5;
int matrix[H][W] = {
    {1,1,1,1,1},
    {5,5,5,5,5},
    {0,0,0,0,0},
    {1,1,1,1,1},
    {0,0,0,0,0}
 
};
Node *top_Null_str = NULL;   //используется для хранения номеров строк со всеми 0
Node *top_Equal_str = NULL;  //для хранения номеров строк где все элементы равны.
 
//Рабочая часть:
for( int i = 0 ; i < H ; i++ ){  
         int count_n = 0;
         int count_e = 0;
 
             for( int j = 0 ; j < W; j++ ) {
 
         if(matrix[i][0]==matrix[i][j]&&(matrix[i][j]!=0))count_e++;
                 if(matrix[i][j]==0)count_n++;
 
             }
 
             if(count_n == W)push(&top_Null_str,i);
             if(count_e == W)push(&top_Equal_str,i);
 
}
 
 
//-------------------------
cout<<"Null str  \n"; print(top_Null_str);
cout<<"Equal str \n"; print(top_Equal_str);
 
 
 
 
//-------------------------
Update(&top_Null_str);
Update(&top_Equal_str);
//-------------------------
return 0;
}
 
int push(Node **top, int index){
//Если формируем первый элемент.
if((*top)==NULL){
Node * pv = new Node ;
pv->n_str = index;
pv->pnext = NULL;
(*top)=pv;
return 0;
}
 
//Иначе добавляем на вершину.
else {            
Node * pv = new Node ;
pv->n_str = index;
pv->pnext = (*top);
(*top)= pv;
return 0;
}
 
return 0;
 
 
}
 
 
//выборка  из стека
int pop(Node **top){
Node *tmp = (*top);
if(tmp){
int str = tmp->n_str;
(*top)=(*top)->pnext;
delete tmp;
return str;
}
 
return 0;
}
 
//показать значения стека
int print(Node *top){   
while(top){
cout<<"Number_str "<<top->n_str<<'\n';
top = top->pnext;
}
cout<<'\n';
return 0;
}
int Update(Node **top){ 
    while((*top)){
    pop(top);
}
    
    return 0; 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2010, 11:32
Привет! Вот еще темы с ответами:

Все нулевые элементы матрицы заменить на единицу - C++
Условие: Все нулевые элементы заменить на единицу! Во второй строке у меня там изменённый масив но там выводит нули одни! Почему? ...

Найти количество строк матрицы, содержащих нулевые элементы - C++
В общем написал такую вот программу но есть проблемка-http://i037.***********/1210/47/d753a3df6509.jpg,не могу понять в чем дело,пожалуйста...

Сохранить нулевые элементы матрицы, расположенные в шахматном порядке - C++
Сохранить все нулевые элементы матрицы, размещенные в шахматном порядке, начиная со 2-го элемента 1-го рядка

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


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

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

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