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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Осуществить циклический сдвиг элементов прямоугольной матрицы http://www.cyberforum.ru/cpp-beginners/thread221046.html
Помогите решить задачки. Я не оть программирую, а делать над... (С++) 1) Вычислить 12 значений функции y=ax^2+bx+c на отрезке , сохранить их в массиве Y и определить, является ли функция убывающей, возрастающей или немонотонной на этом отрезке. 2) Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов вправо или вниз (в зависимости от введенного режима). n может быть...
C++ Бинарное дерево Здравствуйте.Прошу помощи.Никак не могу разобраться в задании.Нужно сделать бинарное дерево и с помощью дерева привести выражение к бесскобочной логике: (a*b+c)/(a-(d+a)).Что это значит? http://www.cyberforum.ru/cpp-beginners/thread221032.html
C++ Библиотеки. Работа с файлами
Предварительно создаются два файла данных А и B. Зависимости от типа данных это выполняется с применением программы или в текстовом редакторе. Содержимое файла C создается в процессе выполнения программы в соответствии задаче. Логическую функцию выполнить в статической и динамической библиотеках. Записать в С все символы с кодовыми номерами 58-70 и 100-120 из А и В. Дополнить файл А...
С++ классы C++
Описать класс с контурами ,операциями,преобразование типов Бинарное число
C++ то напечатает программа? http://www.cyberforum.ru/cpp-beginners/thread221024.html
( задание значения переменной ? условия повтора : шаг ) - по моему такая анолгия ( ? : ) с for? или нет? помогите решить задачу ЭТО НЕ ТОТ СКРИН!СМОТРИ НИЖЕ
C++ структуры Вообще не представляю как делать эту задачу. может кто знает? Напишите программу, которая вычисляет значение у= 1+х^2 +х^3 +… + х^п при любом х. Вычисления продолжать до тех пор, пока очередное слагаемое больше заданного значения z. Найти количество слагаемых. подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
27.12.2010, 01:37     Прокомментировать
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();
}
 
Текущее время: 12:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru