code: динамические библиотеки

master
AnisenkovPD 11 месяцев назад
Родитель 8e462a9fa6
Сommit 6ad5b7518a

@ -1,9 +1,11 @@
#include <iostream>
#include <cmath>
#include <vector>
#include "histogram.h"
#include "text.h"
#include "svg.h"
#include <curl/curl.h>
using namespace std;
const size_t SCREEN_WIDTH = 80;
const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;
@ -44,6 +46,7 @@ input_data(istream& in, bool prompt) {
int main()
{
curl_global_init(CURL_GLOBAL_ALL);
auto in = input_data(cin, true);
auto bins = make_histogram(in.numbers, in.bin_count);
show_histogram_svg(bins);

@ -31,8 +31,25 @@
<Compiler>
<Add option="-Wall" />
<Add option="-fexceptions" />
<Add directory="curl/include" />
</Compiler>
<Linker>
<Add library="libcurl.dll.a" />
<Add directory="curl/lib" />
</Linker>
<Unit filename="histogram.cpp" />
<Unit filename="histogram.h">
<Option target="&lt;{~None~}&gt;" />
</Unit>
<Unit filename="main.cpp" />
<Unit filename="svg.cpp" />
<Unit filename="svg.h">
<Option target="&lt;{~None~}&gt;" />
</Unit>
<Unit filename="text.cpp" />
<Unit filename="text.h">
<Option target="&lt;{~None~}&gt;" />
</Unit>
<Extensions>
<lib_finder disable_auto="1" />
</Extensions>

@ -22,14 +22,14 @@ svg_end() {
}
void
svg_text(double TEXT_LEFT, double BASELINE, string text) {
cout << "<text x='" << TEXT_LEFT << "' y='"<< BASELINE <<"'> " << text << "</text>";
svg_text(double TEXT_LEFT, double BASELINE, string text, size_t bukva_scale) {
cout << "<text x='" << TEXT_LEFT << "' font-size = '" << bukva_scale << "' y='"<< BASELINE <<"'> " << text << "</text>";
}
void svg_rect(double TEXT_WIDTH, double top, double bin_width, double BIN_HEIGHT){
cout << "<rect x='"<<TEXT_WIDTH<<"' y='"<<top<<"' width='"<<bin_width<<"' height='"<<BIN_HEIGHT<<"' stroke ='cyan' fill='#fce166' />\n";
void svg_rect(double TEXT_WIDTH, double top, double bin_width, double BIN_HEIGHT, string grad){
cout << "<rect x='"<<TEXT_WIDTH<<"' y='"<<top<<"' width='"<<bin_width<<"' height='"<<BIN_HEIGHT<<"' stroke ='cyan' fill='#"<<grad<<grad<<grad<<"' />\n";
}
void
@ -43,8 +43,11 @@ show_histogram_svg(const vector<size_t>& bins) {
const auto BLOCK_WIDTH = 10;
const double SCALE = IMAGE_WIDTH - TEXT_WIDTH;
size_t grad = 0;
double max_count = 0;
size_t bukva_scale = 12;
cin >> bukva_scale;
for (double x: bins) {
if (x > max_count) {
max_count = x;
@ -56,8 +59,9 @@ show_histogram_svg(const vector<size_t>& bins) {
double top = 0;
for (size_t i = 0; i < bins.size(); i++) {
const double bin_width = SCALE * ( bins[i] / max_count);
svg_text(TEXT_LEFT, top + TEXT_BASELINE, to_string(bins[i]));
svg_rect(TEXT_WIDTH, top, bin_width, BIN_HEIGHT);
grad = (11 - (bins[i] * 9) / max_count);
svg_text(TEXT_LEFT, top + TEXT_BASELINE, to_string(bins[i]), bukva_scale);
svg_rect(TEXT_WIDTH, top, bin_width, BIN_HEIGHT, to_string(grad));
top += BIN_HEIGHT;
cout << endl;
cout << bin_width;

@ -31,6 +31,12 @@
<Compiler>
<Add option="-Wall" />
</Compiler>
<Unit filename="doctest.h" />
<Unit filename="histogram.cpp" />
<Unit filename="histogram_internal.h">
<Option target="&lt;{~None~}&gt;" />
</Unit>
<Unit filename="unittest.cpp" />
<Extensions>
<lib_finder disable_auto="1" />
</Extensions>

@ -6,17 +6,19 @@
TEST_CASE("distinct positive numbers") {
double min = 0;
double max = 0;
std::vector<double>test = {0};
bool flag;
find_minmax({1, 2}, min, max);
CHECK(min == 1);
CHECK(max == 2);
}
TEST_CASE("distinct negative numbers") {
double min = 0;
double max = 0;
find_minmax({-1, -2, -3, -4, -5}, min, max);
CHECK(min == -5);
CHECK(max == -1);
}
TEST_CASE("distinct null vector") {
double min = 0;
double max = 0;
CHECK(!find_minmax({}, min, max));
CHECK(true);
}
}

Загрузка…
Отмена
Сохранить