![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 01.12.2022
Сообщений: 1
|
![]()
С++ делает подсчёт и выдаёт данные, но возникает трудность в создании гистограммы, графика и тепловой карты на основе полученных результатов. Вот код для получения данных:
#include <iostream> #include <iomanip> #include <cmath> int main() { int S[20*20]; for (int i = 0; i < 20; i++) { for (int j = 0; j < 20; j++) { if (std::rand() % 100 >= 50) { S[20 * i + j] = 1; } else { S[20 * i + j] = -1; } } } for (int i = 0; i < 20; i++) { // Here we show an array. for (int j = 0; j < 20; j++) { std::cout << std::setw(3) << S[20 * i + j] << " "; } std::cout << std::endl; } int T = 273; // Temperature. for (unsigned int k = 0; k < 10; k++) { int J = 0, r = 0; r = std::rand()%400; if ((r + 1 >= 0) && (r + 1 <= 400)) { if (S[r] == S[r + 1]) { J--; } else if (S[r] != S[r + 1]) { J++; } } if ((r - 1 >= 0) && (r - 1 <= 400)) { if (S[r] == S[r - 1]) { J--; } else if (S[r] != S[r - 1]) { J++; } } if ((r + 20 >= 0) && (r + 20 <= 400)) { if (S[r] == S[r + 20]) { J--; } else if (S[r] != S[r + 20]) { J++; } } if ((r - 20 >= 0) && (r - 20 <= 400)) { if (S[r] == S[r - 20]) { J--; } else if (S[r] != S[r - 20]) { J++; } } int E1 = J; J = 0; if ((r + 1 >= 0) && (r + 1 <= 400)) { if (S[r] == -S[r + 1]) { J--; } else if (S[r] != -S[r + 1]) { J++; } } if ((r - 1 >= 0) && (r - 1 <= 400)) { if (S[r] == -S[r - 1]) { J--; } else if (S[r] != -S[r - 1]) { J++; } } if ((r + 20 >= 0) && (r + 20 <= 400)) { if (S[r] == -S[r + 20]) { J--; } else if (S[r] != -S[r + 20]) { J++; } } if ((r - 20 >= 0) && (r - 20 <= 400)) { if (S[r] == -S[r - 20]) { J--; } else if (S[r] != -S[r - 20]) { J++; } } if (J - E1 < 0) { S[r] = -S[r]; } else if (J - E1 > 0) { if (std::rand() % 100 >= (3 ^ ((E1 - J) / T))) { S[r] = -S[r]; } } std::cout << std::endl; for (int i = 0; i < 20; i++) { // Here we show an array. for (int j = 0; j < 20; j++) { std::cout << std::setw(3) << S[20 * i + j] << " "; } std::cout << std::endl; } } } |
![]() |
![]() |
![]() |
#2 | ||
Форумчанин
Регистрация: 26.10.2022
Сообщений: 119
|
![]() Цитата:
Который надо окружать tag-ами [ CODE ] [ / CODE ] (без пробелов). Второе граничное условие должно быть «r + 1 < 400», потому что в C++ индекс должен быть строго меньше длины массива. Вообще, здесь лучше сделать функцию: Код:
Цитата:
Код:
Это вы так пытаетесь число 3 возвести в степень «(E1 - J) / T»? В C++, ^ -- это битовый xor, а возведение в степень делается функцией pow из <math.h> (она же std::pow из <cmath>). Кстати, E1, J и T -- это переменные типа int, поэтому деление будет целочисленное, с округлением. |
||
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
посоветуйте сторонний компонент для конструкции графиков / гистограмм | impeee | Компоненты Delphi | 5 | 05.10.2013 00:06 |
построение графиков. Си | Моркковь!) | Помощь студентам | 2 | 09.06.2011 12:24 |
Построение графиков. USB. МК | Agnikay | Visual C++ | 7 | 28.05.2011 17:44 |
Построение гистограмм или нормальное распределение | FunerallMooN | Помощь студентам | 0 | 25.03.2011 02:30 |
Построение графиков | <3myworld | Microsoft Office Excel | 2 | 18.03.2010 07:48 |