Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
1 / 1 / 0
Регистрация: 10.03.2019
Сообщений: 14

Оцените код CPP

13.03.2019, 21:27. Показов 3502. Ответов 27
Метки code, cpp (Все метки)

Студворк — интернет-сервис помощи студентам
Задание:

Задана квадратная матрица. Поменять местами строку с максимальным
элементом на главной диагонали со строкой с заданным
номером m

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
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main() {
    srand(time(NULL));
    const int SIZE = 3;
    int arr[SIZE][SIZE];
    int blackarr[1][SIZE];
    int max_element = 0, row_max = 0;
    int m;
    cout << "Enter row = "; cin >> m;
 
    //Заполнение и вывод матрицы.
 
    for (int i = 0; i < SIZE; i++)
    {
        for (int j = 0; j < SIZE; j++)
        {
            arr[i][j] = rand() % 10;
            cout << "\t" << arr[i][j];
        }
        cout << "\n\n";
    }
    
    //Поиск максимального элемента и строки, в которой находится этот элемент.
 
    for (int i = 0; i < SIZE; i++)
    {
        for (int j = 0; j < SIZE; j++)
        {
            if (arr[i][i] > max_element)
            {
                max_element = arr[i][i];
                row_max = i;
            }
        }
    }
 
    //Присваиваю значение строки матрицы, на которую буду менять строку с максимальным элементом
 
    for (int i = 0; i < SIZE; i++)
    {
        for (int j = 0; j < SIZE; j++)
        {
            blackarr[0][j] = arr[m][j];
        }
    }
 
    //Меняю местами строки.
 
    for (int i = 0; i < SIZE; i++)
    {
        for (int j = 0; j < SIZE; j++)
        {
            arr[m][j] = arr[row_max][j];
        }
    }
 
    for (int i = 0; i < SIZE; i++)
    {
        for (int j = 0; j < SIZE; j++)
        {
            arr[row_max][j] = blackarr[0][j];
        }
    }
 
    // Вывод готового решения.
 
    cout << "\n\n\n\n\n";
    for (int i = 0; i < SIZE; i++)
    {
        for (int j = 0; j < SIZE; j++)
        {
            cout << "\t" << arr[i][j];
        }
        cout << "\n\n";
    }
 
 
    cout << "\n\nMax element in main diagonal = " << max_element << endl;
 
 
    system("pause");
    return 0;
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.03.2019, 21:27
Ответы с готовыми решениями:

Есть три файла. файл main.cpp и Source.cpp знают только Header.h, так как он подключен. как же подключается Source.cpp
main.cpp #include &lt;iostream&gt; #include&quot;Header.h&quot; using namespace std; int main() { A ob; ob.f(); return...

Правильно ли написан код .cpp?
Вот сам код #define _CRT_SECURE_NO_WARNINGS #include &lt;Windows.h&gt; #include &lt;HCNetSDK.h&gt; #include &lt;memory&gt; #include...

Разбить исходный код на main.cpp и my.h
#include &lt;windows.h&gt; #include &lt;iostream&gt; using namespace std; class vremya { public: int vvod(); int vivod(); ...

27
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
13.03.2019, 22:15
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Taiga_ Посмотреть сообщение
Могу узнать, как вы отличаете "Сишное" "Не сишное".Я понимаю, что смешивать плюсы и си - это плохой тон, но как отличать их? (Точнее их приёмы.)
#define VALUE 1234 это константы из Си. И вот они как раз обычно идут капсом.
Плюсовые константы это const int value=1234;.
И их поведение несколько различается, когда речь заходит об областях видимости. Так что лучше не смешивать.

А так, функционал Си вполне можно использовать, INT_MAX банально короче чем std::numeric_limits<int>::max().
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
13.03.2019, 22:21
Лучший ответ Сообщение было отмечено Taiga_ как решение

Решение

Taiga_, Правила

3.6 Если какой-либо пост на форуме показался вам полезным, то вы можете выразить свою благодарность, нажав кнопку "Спасибо" внизу самого поста.

Так как вы новичёк, в любом случае советую ознакомиться, в том числе со статьей как "Как правильно задавать вопросы" в самом низу.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
13.03.2019, 23:39
Taiga_, как вариант:
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
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main() 
{
    srand((int)time(0));
    int n, m, index_max=0;
    cout <<"n="; cin >>n;
    
      double **a = new double*[n];
    for (int i = 0; i < n; i++)
         a[i]=new double[n];
 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            a[i][j] = rand()%9 +1;
            cout << a[i][j] << " ";
        }
        if (a[i][i]>a[index_max][index_max]) index_max=i;
        cout << "\n";
    }
    
    cout << "m="; cin >> m;
    
    swap(a[index_max],a[m-1]);
    
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)       
            cout << a[i][j] << " ";       
        cout << "\n";
    }
    
    for (int i = 0; i < n; i++)
    delete[]a[i];
    delete[]a;
 
    system("pause");
    return 0;
}
если на главной диагонали несколько max поменяет строку с первым
2
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
14.03.2019, 10:56
Цитата Сообщение от Renji Посмотреть сообщение
"For serious random-number generation needs" (криптография) генератор псевдослучайных чисел не подходит в принципе. Хоть из Си, хоть из C++11. А для Саперов и Пасьянсов и rand хватит.
И в чем проблема допустим... использовать мерсен для Казино?
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
14.03.2019, 12:25
Цитата Сообщение от eva2326 Посмотреть сообщение
И в чем проблема допустим... использовать мерсен для Казино?
Ссылку можно?
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
14.03.2019, 19:12
Цитата Сообщение от eva2326 Посмотреть сообщение
И в чем проблема допустим... использовать мерсен для Казино?
В том, что имея на руках достаточно элементов псевдослучайной последовательности, атакующий может восстановить всю последовательность. А зная последовательность псевдослучайных чисел по которой работает казино, атакующий сможет предсказывать что выпадет на рулетке.

Собственно, погуглил - нда, не надо недооценивать количество идиотов. Они там действительно используют псевдослучайные числа, а потом идут скандалить "а пачиму матиматики нашу рулетку прасчитывают? Ничесна!". Уж сколько раз твердили миру, не жмоться на аппаратный генератор случайных чисел. А все не впрок. И в сердце жлоб всегда отыщет уголок.
1
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
15.03.2019, 11:24
Цитата Сообщение от Renji Посмотреть сообщение
В том, что имея на руках достаточно элементов псевдослучайной последовательности, атакующий может восстановить всю последовательность.
Сколько же нужно знать таких элементов,
что бы сделать прогноз с вероятностью успеха хотя бы 50%?

Рассмотрим алгоритм Кнута:

C++
1
2
3
4
5
   
    //TODO: clock - не самый удачный инициализитор сидов. 
    // но для примера сойдёт и так
    static thread_local int seed = clock();
    return (((seed = seed * 214013L + 2531011L) >> 16)& 0x7fff);
Как вы сможете расшифровать коэнгурентную формулу?
Сколько нужно минимум чисел последовательности,
что бы делать прогноз с вероятностью хотя бы 50% успеха?

Допустим, minCount - это и есть это минимальное количество элементов.
Что будет, если я просто буду менять формулу сидов
через каждые minCount - 1 итераций?

Цитата Сообщение от Renji Посмотреть сообщение
Собственно, погуглил - нда, не надо недооценивать количество идиотов. Они там действительно используют псевдослучайные числа, а потом идут скандалить "а пачиму матиматики нашу рулетку прасчитывают? Ничесна!".
Казино не используют рандом вообще
За исключением тех случаев, когда "случайность" не играет для профита казино никакой роли.

Не нужно верить всякой желтизне.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
15.03.2019, 19:56
Цитата Сообщение от eva2326 Посмотреть сообщение
Как вы сможете расшифровать коэнгурентную формулу?
Надо спрашивать не "сможете ли вы", а "смог ли кто-то из криптоаналитиков за последние лет десять". Но окей, рассмотрим конгруэнтную формулу:
1) конгруэнтная формула имеет вид nextSeed=seed*N+M, где нужно найти N и M. Вообще говоря, подставлять сюда рандомные числа нельзя, так как выбор коэффициентов сильно влияет на ТТХ генератора. Но да замнем для ясности.
2) В данной формуле, младшие знаки nextSeed зависят только от младших знаков seed, N и M (3*11+15 кончается на восемь, 763*101+35 все равно кончается на восемь).
3) Исходя из сказанного выше, младший бит seed зависит только от младшего бита N и M. Два неизвестных мне бита, это четыре варианта ответа. Согласитесь, чтобы выбрать из четырех вариантов ответа, четырех значений seed вполне достаточно.
4) Теперь я хочу знать второй бит N и M. Первый бит я узнал на шаге три. Значит, у меня опять четыре варианта ответа и достаточно четырех значений seed.
5) Повторять шаг четыре, пока биты не закончатся.

Резюмируя: если к атакующему уплыли хотя бы четыре значения seed, можете начинать подозревать что он восстановил коэффициенты формулы и просчитывает значения наперед.
Цитата Сообщение от eva2326 Посмотреть сообщение
Что будет, если я просто буду менять формулу сидов
через каждые minCount - 1 итераций?
Случайным образом менять? Будет аппаратный источник энтропии, на который эта случайность завязана. То есть, возвращаемся к исходному - не жмоться, ставь аппаратный генератор случайных чисел.
Собственно, /dev/urandom именно так и работает. Накопилось достаточно энтропии - генератор псевдослучайных чисел сбрасывается этой энтропией. Маловато энтропии - ну что поделать, поживем пока на псевдослучайных числах. Действительно, разумный компромисс.
Цитата Сообщение от eva2326 Посмотреть сообщение
Казино не используют рандом вообще
О, как. Сертификацию генераторы случайных чисел в казино проходят, но самих генераторов там нет. Жопа есть, а слова нет, да?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.03.2019, 19:56

Как разбить код на несколько *.CPP*
Как разбить код на несколько *.CPP* Добрый вечер - при изучении языка С где то в литературе видемо упустил такую информацию и не где...

Некомпилируемый код компилируется в dev-cpp 4.9.9.2
Доброго времени суток. Вот код #include &lt;iostream&gt; int main() { int n; std::cin &gt;&gt; n; int arr; std::cin...

Перенести код из VC++ в CPP Builder (код использует DLL)
Такая проблема. Есть DLL + пример её использования на Visual C++, пытаюсь этот пример перенести в Builder. Проблемы возникают в самом...

Перевести код класса с Паскаля на CPP
На Delphi написан простенький класс: TProtectThread = class(TThread) private { Private declarations } protected ...

Как в Dev-Cpp (С++) скомпилировать исходный код в exe файл?
Написал простейший код: #include int main() { std::cout &lt;&lt; &quot;Hello!&quot;; } Оно его компилирует в exe файл, но он...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru