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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Циклы в Си++, хотелось бы уточнить некоторые моменты http://www.cyberforum.ru/cpp-beginners/thread107296.html
Начинаю изучать Си, учусь по самоучителю при отсутствии знакомых и друзей программистов, пройдя главу про циклы так и не смог уяснить для себя в каких ситуациях и как правильно выбрать тот или иной вид цикла(for, while, do while). Если кого то не затруднит прошу объяснить,по возможности с примерами, заранее благодарю.
C++ Элементы главной диагонали Дана действительная квадратная матрица 5х5, все элементы которой различны. Найти наименьший элемент среди стоящих на главной диагонали и поменять его местами с элементом стоящим в правом нижнем углу матрицы. Вот наброски. Помогите дописать прогу, а именно, надо теперь поменять местами минимальный элемент диагонали с элементомв правом нижнем углу и если есть ошибки исправить )) #include... http://www.cyberforum.ru/cpp-beginners/thread107295.html
Конструктор - копировщик: ошибка C++
при таком кодеclass cat{ public: cat(); ~cat(); cat(cat&); }; cat::cat(){ cout<<"Cat constructor"<<endl; }
C++ Масcив
1. Дан целочисленный линейный массив из 10 элементов. Найдите наименьшее число K элементов, которое нужно исключить из последовательности A, A,…,A, чтобы осталась возрастающая последовательность. 2. Составьте программу вычисления суммы элементов от первого отрицательного и до конца.
C++ Не могу задать массив 1000х1000 http://www.cyberforum.ru/cpp-beginners/thread107222.html
Помогите, плз, найти ошибку или решение. Нужно задать массив размера не меньше 1000х1000 случайными числами. Составляю программку: #include <iostream> using namespace std; int main()
C++ Обмен переменных string Здравствуйте. Подскажите пожалуйста, как ПРАВИЛЬНО и КРАСИВО поменять местами две string-переменные? Делаю следующим образом: void SwapStrings(string *str1, string *str2) { string temp; temp = *str1; *str1 = *str2; подробнее

Показать сообщение отдельно
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
22.03.2010, 11:32     Матрицы. нулевые и одинаковые строки.
Индексы строк начинаются с 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; 
}
 
Текущее время: 11:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru