Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Sonn ADK
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 11
#1

Прокомментировать - C++

27.12.2010, 01:17. Просмотров 345. Ответов 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
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
118
119
120
121
122
123
124
125
126
#include<iostream.h>
#include<iomanip.h>
#include<stdlib.h>
#include<conio.h>
 
const int max_razm = 20;
 
struct array2D{
 
   int rows, cols;
   int arr[max_razm][max_razm];
};
 
struct array1D{
 
   int cols;
   bool prov_cols[max_razm];
   int arr[max_razm];
};
 
 
array2D InitStartArray(){
 
    array2D temp;
 
    cout<<"Rows "<<"(<="<<max_razm<<"): "; cin>>temp.rows;
   cout<<"Cols "<<"(<="<<max_razm<<"): "; cin>>temp.cols;
   cout<<endl;
 
   randomize();
 
   for(int row = 0; row < temp.rows; row++)
 
    for(int col = 0; col < temp.cols; col++)
 
        temp.arr[row][col] = (float)(random(5)-3);
 
   return temp;
}
 
 
void PrintArray2(array2D arr){
 
   for(int row = 0; row < arr.rows; row++){
 
    for(int col = 0; col < arr.cols; col++){
 
        cout<<setprecision(2)<<setw(5)<<arr.arr[row][col];
      }
 
      cout<<endl;
   }
 
   cout<<endl;
}
 
 
array1D CalculateSumInRows(array2D arr){
 
    array1D result;
 
   result.cols = arr.rows;
 
   float pro;
 
   for(int row = 0; row < arr.rows; row++){
 
      int start_null = -1;
      int end_null = -1;
 
    for(int col = 0; col < arr.cols; col++){
 
        if(arr.arr[row][col] == 0){
 
            if(start_null = -1){
 
                start_null = col;
               col = arr.cols;
               for(int i = arr.cols-1; i > start_null+1; i--){
 
                 if(arr.arr[row][i] == 0) {end_null = i; i = start_null+1;}
               }
            }
         }
      }
      if(start_null == -1 || end_null == -1){
 
           result.prov_cols[row] = false;
      }
      else{
          result.arr[row] = 1;
          for(int col = start_null + 1; col < end_null; col++)
          result.arr[row] = result.arr[row] * arr.arr[row][col];
          result.prov_cols[row] = true;
      }
   }
 
   return result;
}
 
 
 
 
void PrintArray1(array1D arr){
 
    for(int col = 0; col < arr.cols; col++){
 
      cout<<"proizvedenie B "<<(col+1)<<" stroke: ";
        if(arr.prov_cols[col]) cout<<arr.arr[col]<<endl;
      else cout<<"proizvedenia net"<<endl;
      }
}
 
 
void main(){
 
   array2D start_array = InitStartArray();
 
   clrscr();
 
    PrintArray2(start_array);
   getch();
 
   PrintArray1(CalculateSumInRows(start_array));
   getch();
}
 Комментарий модератора 
Используйте теги форматирования кода.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2010, 01:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прокомментировать (C++):

Прокомментировать - C++
Написать программу на языке C + +, моделирующую поведение строителя пира- миды (Mason) путём создания соответствующего класса. Каждый...

Прокомментировать! - C++
Ребята помогите прокомментировать код плиз! :) #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &quot;locale.h&quot; ...

Прокомментировать v3.0 - C++
Цели Написать программу на языке c++, моделирующую иерархию классов ры- баков (Fisher), добывающих рыбу. Все рыбаки имеют имена. Улов y...

Прокомментировать код - C++
есть код программы, нужно объяснить её программный код. и исправить ошибки.помогите пожалуйста. int dwsp(double* x, double* y); int...

Прокомментировать код - C++
Добрый вечер! Есть вопросы по коду... не понимаю некоторые строки. Их выделю розовым цветом. Буду очень благодарна!!! #include...

Прокомментировать код - C++
Нужна помощь. Необходимо поставить комментарии к каждой строке программы. #include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include...

2
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
27.12.2010, 01:37 #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
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include<iostream.h>//Ввод-вывод
#include<iomanip.h>//Манипуляторы
#include<stdlib.h>//Стандартная библа
#include<conio.h>//Для getch
 
const int max_razm = 20;//Константа размера
//Структура 
struct array2D{
 
   int rows, cols;//Строки, столбцы
   int arr[max_razm][max_razm];//Двумерный массив 20 на 20
};
//Структура
struct array1D{
 
   int cols;//Столбцы
   bool prov_cols[max_razm];//Булевый массив размером 20
   int arr[max_razm];//Интовый массив размером 20
};
 
//Функция, возвращающая объект типа array2D без параметров
array2D InitStartArray(){
//Создание объекта
    array2D temp;
//Ввод кол-ва строк и стобцов
    cout<<"Rows "<<"(<="<<max_razm<<"): "; cin>>temp.rows;
   cout<<"Cols "<<"(<="<<max_razm<<"): "; cin>>temp.cols;
   cout<<endl;
//Инициализация датчика рандома
   randomize();
//Заполнение дробными числами двумерного массива
   for(int row = 0; row < temp.rows; row++)
 
    for(int col = 0; col < temp.cols; col++)
 
        temp.arr[row][col] = (float)(random(5)-3);
//Возврат объекта
   return temp;
}
 
//Печать двумерного массива
void PrintArray2(array2D arr){
 
   for(int row = 0; row < arr.rows; row++){
 
    for(int col = 0; col < arr.cols; col++){
//Два знака, в поле размером 5
        cout<<setprecision(2)<<setw(5)<<arr.arr[row][col];
      }
 
      cout<<endl;
   }
 
   cout<<endl;
}
 
//Функция подсчета суммы в строках
array1D CalculateSumInRows(array2D arr){
//Объект структуры array1D
    array1D result;
//Устанавливаем его размер равным кол-ву строк двумерного массива
   result.cols = arr.rows;
//Сумма
   float pro;
 
   for(int row = 0; row < arr.rows; row++){
//Индекс первого и последнего нулей. Сначала равны -1
      int start_null = -1;
      int end_null = -1;
 
    for(int col = 0; col < arr.cols; col++){
//Если в матрице число с индексом row, col = 0
        if(arr.arr[row][col] == 0){
//И если индекс первого нуля есть -1
            if(start_null == -1){
//Индекс первого нуля становится равен счетчику
                start_null = col;
//А счетчик становится равен arr.cols.
               col = arr.cols;
               for(int i = arr.cols-1; i > start_null+1; i--){
//Если в матрице число с индексом row, i ноль, то индекс последнего нуля есть i а i есть индекс //первого нуля+1
                 if(arr.arr[row][i] == 0) {end_null = i; i = start_null+1;}
               }
            }
         }
      }
//Если нулей не найдено
      if(start_null == -1 || end_null == -1){
//Ставим в булевый массив в элемент в индексом row false
           result.prov_cols[row] = false;
      }
//Иначе
      else{
          result.arr[row] = 1;
          for(int col = start_null + 1; col < end_null; col++)
//Ставим в итоговый одномерный массив на место row это число умноженное на элемент двумерного массива с индексами row, col
          result.arr[row] = result.arr[row] * arr.arr[row][col];
//Ставим в булевый массив в элемент с индексом row true
          result.prov_cols[row] = true;
      }
   }
//Вертаем объект назад
   return result;
}
 
 
 
//Печатает одномерный массив
void PrintArray1(array1D arr){
 
    for(int col = 0; col < arr.cols; col++){
//Если в булевом массиве элемент с индексом col не 0 печатаем элемент из интового массива, если 0 //пишем что произведения нет
      cout<<"proizvedenie B "<<(col+1)<<" stroke: ";
        if(arr.prov_cols[col]) cout<<arr.arr[col]<<endl;
      else cout<<"proizvedenia net"<<endl;
      }
}
 
 
void main(){
//Инициализация объекта двумерного массива
   array2D start_array = InitStartArray();
//Очистка экрана
   clrscr();
//Печать двумерного массива
    PrintArray2(start_array);
   getch();
//Печать массива результатов
   PrintArray1(CalculateSumInRows(start_array));
   getch();
}
0
Sonn ADK
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 11
27.12.2010, 20:04  [ТС] #3
а блок-схему можете нарисовать ?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2010, 20:04
Привет! Вот еще темы с ответами:

Прокомментировать код - C++
// Функция решения квадратного уравнения #include &quot;stdio.h&quot; #include &quot;StdAfx.h&quot; #include &quot;conio.h&quot; #include&lt;locale.h&gt; 2 1 ...

Прокомментировать код - C++
Может кто нибудь помочь с комментариями просто очень надо) // x.cpp: определяет точку входа для консольного приложения. // ...

Прокомментировать код - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; void sort(int* m, int n); struct Notebook { int ram; ...

Прокомментировать код - C++
Прокомментировать код #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #define n 5 int main() { int...


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

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

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