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

Выбор оптимальной последовательности. Конечный алгоритм - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевод double в char http://www.cyberforum.ru/cpp-beginners/thread751396.html
Необходимо перевести число типa double, к примеру а=0.1234 В char... Все это необходимо реализовать с С++ Гуглил, искал... Попадал на множество методов... Но не смог понять... Помогите пожалуйста...
C++ Не получается правильно настроить формат вывод текста Нужно вывести дамп памяти, в формате, как указано на приложенном изображении. У меня проблема с выводом ячеек памяти. Я попробовал написать код, но он неправильно работает, поскольку я не могу установить setw так как мне нужно. cout << "\nРЕГИСТРЫ:\n" << setw(30) << left << "accumulator" << right << accumulator << "\n" << setw(30) << left << "instructionCounter" << right <<... http://www.cyberforum.ru/cpp-beginners/thread751387.html
Ответвить дочерний процесс C++
Ответвить дочерний процесс. Установить оба процесса спать, некоторое время (оба числа вводятся с консоли). После пробуждения процесс должен стараться терминировать другой и вывести в консоли своё имя
C++ определить, совпадают ли суммы первых и последних трех цифр шестизначного числа
вот мой код. компилятор выдаёт ошибку в 4ой строке. не могу понять как исправить.. #include <iostream> using namespace std main(){ const int N=6; int A; cout<<"Vvedite chislo N:"<<endl; for(int i=0; i<N; i++){ cin>>N;}
C++ Как узнать объём выделеной динамичесой памяти? http://www.cyberforum.ru/cpp-beginners/thread751369.html
sizeof(new_alloc) в этом случаи бесполезно так как указатель у меня всегда равен 4 байта. Можно, конечно при помощи цикла передвигать указатель на одно значение и посчитать таким образом кол. байт. Но если ли более тривиальный способ?
C++ Реализовать класс для работы с одномерными массивами указателей строк всем привет. помогите пожалуйста не могу написать прогу по заданию. реализовать класс для работы с одномерными массивами указателей строк. 1. возможность обращения к отдельном строкам массива по индексам с контролем выхода за пределы индексов; 2. выполнение операций поэлементного сцепления двух массивов с образованием нового; 3. слияние двух массивов с исключением повторяющихся элементов;... подробнее

Показать сообщение отдельно
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
04.01.2013, 23:40
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include <iostream>
#include "windows.h"
 
 
using namespace std;
 
bool isMaxX(int row,int col,int size,double ** matrix){
 
    for (int i = 0; i < size; i++) {  // максимум в столбце
        if (matrix[row][col] < matrix[i][col]) {
            return false;
        }
    }
 
    for (int j = 0; j < size; j++) {   // максимум в строке
        if (matrix[row][col] < matrix[row][j]) {
            return false;
        }
    }
    return true;
 
 }
bool isMaxR(int row,int col,int size,double ** matrix){
 
    for (int j = 0; j < size; j++) {   // максимум в строке
        if (matrix[row][col] < matrix[row][j]) {
            return false;
        }
    }
    return true;
 
 }
bool isMaxC(int row,int col,int size,double ** matrix){
 
    for (int i = 0; i < size; i++) {  // максимум в столбце
        if (matrix[row][col] < matrix[i][col]) {
            return false;
        }
    }
 
    return true;
 
 }
 
double getSum(double ** matrix,int size,bool  flag(int,int,int,double**)){
    int count = 0;
    double sum = 0;
    while (count < size) { //флаг на случай если с 1 раза не все очевидно
         for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                if (flag(i,j,size,matrix)) {
                   for (int k = 0; k < size; k++) {
                       if (k!=i) {
                         matrix[k][j] = -1.7E-308;
                       }
                    for (int k = 0; k < size; k++) {
                       if (k!=j) {
                         matrix[i][k] = -1.7E-308;
                       }
                    }
                   }
                   sum += matrix[i][j];
                   count++;
                }
            }
 
         }
     }
     return sum;
}
 
 int main()
 {
     SetConsoleCP(1251);
     SetConsoleOutputCP(1251);
     double ** matrix;
     double ** tmp;
     double sum1,sum2,sum3,ressum;
     int size;
 
     cout << "Введите ращмер матрицы " ;
     cin >> size;
     matrix = new double* [size];
     tmp = new double* [size];
     for (int i = 0; i < size; i++) {
         matrix[i] = new double [size];
         tmp[i] = new double [size];
         for (int j = 0; j < size; j++) {
             cout<< "Введите matrix[" << i << "][" << j << "] ";
             cin >> matrix[i][j] ;
 
         }
     }
 
      for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
           cout << matrix[i][j] << " " ;
           tmp[i][j] = matrix[i][j];
        }
        cout << endl;
     }
     cout << endl;
 
     sum1 = getSum(tmp,size,&isMaxX);   // расчет суммы на основе перекрестныъ
 
      for (int i = 0; i < size; i++) {      //привидение tmp к исходному
        for (int j = 0; j < size; j++) {
           tmp[i][j] = matrix[i][j];
        }
     }
     sum2 = getSum(tmp,size,&isMaxR);   // расчет суммы на основе строк
 
     for (int i = 0; i < size; i++) {     //привидение tmp к исходному
        for (int j = 0; j < size; j++) {
           tmp[i][j] = matrix[i][j];
        }
     }
     sum3 = getSum(tmp,size,&isMaxC);  // расчет суммы на основе столбцов
 
     if (sum1 > sum2 ) {
       if (sum1 > sum3) {
          ressum = getSum(matrix,size,&isMaxX);   //перекрестная
       } else{
          ressum = getSum(matrix,size,&isMaxC);   // колонки
       }
     }else{
         if (sum2 > sum3) {
            ressum = getSum(matrix,size,&isMaxR);   // строки
         }else {
            ressum = getSum(matrix,size,&isMaxC);   // колонки
         }
     }
     for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
           if (matrix[i][j] == -1.7E-308) {
               matrix[i][j] = 0;
           }
        }
     }
     cout << endl;
     for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
           cout << matrix[i][j] << " " ;
        }
        cout << endl;
     }
     cout << "Наибольшая сумма " << ressum<<endl;
     system("pause");
     return 0;
 }
ну вот тогда этот потестите

Добавлено через 4 минуты

Не по теме:

эх столько бьюсь над задачкой а вы даже спасибо не кликнули, мелочь но приятно)

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