Сравнить коммиты
	
		
			Ничего общего в коммитах. '62b78372fa6195f32a60452fee2a3b421fa0211a' и '3b43df26b7e2b575c84ff79388e899a68a759333' имеют совершенно разные истории. 
		
	
	
		
			62b78372fa
			...
			3b43df26b7
		
	
		
	
											
												
													Разница между файлами не показана из-за своего большого размера
													Загрузить разницу
												
											
										
									
								@ -1,8 +0,0 @@
 | 
				
			|||||||
#ifndef HISTOGRAM_INTERNAL_H_INCLUDED
 | 
					 | 
				
			||||||
#define HISTOGRAM_INTERNAL_H_INCLUDED
 | 
					 | 
				
			||||||
#include <vector>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool
 | 
					 | 
				
			||||||
find_minmax(const std::vector<double>& numbers, double& min, double& max);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif // HISTOGRAM_INTERNAL_H_INCLUDED
 | 
					 | 
				
			||||||
@ -1,70 +0,0 @@
 | 
				
			|||||||
#include <iostream>
 | 
					 | 
				
			||||||
#include <vector>
 | 
					 | 
				
			||||||
#include "string"
 | 
					 | 
				
			||||||
#include "svg.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
using namespace std;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void
 | 
					 | 
				
			||||||
svg_begin(double width, double height) {
 | 
					 | 
				
			||||||
    cout << "<?xml version='1.0' encoding='UTF-8'?>\n";
 | 
					 | 
				
			||||||
    cout << "<svg ";
 | 
					 | 
				
			||||||
    cout << "width='" << width << "' ";
 | 
					 | 
				
			||||||
    cout << "height='" << height << "' ";
 | 
					 | 
				
			||||||
    cout << "viewBox='0 0 " << width << " " << height << "' ";
 | 
					 | 
				
			||||||
    cout << "xmlns='http://www.w3.org/2000/svg'>\n";
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void
 | 
					 | 
				
			||||||
svg_end() {
 | 
					 | 
				
			||||||
    cout << "</svg>\n";
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void
 | 
					 | 
				
			||||||
svg_text(double TEXT_LEFT, double BASELINE, string text) {
 | 
					 | 
				
			||||||
        cout << "<text x='" << TEXT_LEFT << "' 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
 | 
					 | 
				
			||||||
show_histogram_svg(const vector<size_t>& bins) {
 | 
					 | 
				
			||||||
    const auto IMAGE_WIDTH = 400;
 | 
					 | 
				
			||||||
    const auto IMAGE_HEIGHT = 300;
 | 
					 | 
				
			||||||
    const auto TEXT_LEFT = 20;
 | 
					 | 
				
			||||||
    const auto TEXT_BASELINE = 20;
 | 
					 | 
				
			||||||
    const auto TEXT_WIDTH = 50;
 | 
					 | 
				
			||||||
    const auto BIN_HEIGHT = 30;
 | 
					 | 
				
			||||||
    const auto BLOCK_WIDTH = 10;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    const double SCALE = IMAGE_WIDTH - TEXT_WIDTH;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    double max_count = 0;
 | 
					 | 
				
			||||||
    for (double x: bins) {
 | 
					 | 
				
			||||||
        if (x > max_count) {
 | 
					 | 
				
			||||||
                max_count = x;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    svg_begin(800,300);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
       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);
 | 
					 | 
				
			||||||
        top += BIN_HEIGHT;
 | 
					 | 
				
			||||||
        cout << endl;
 | 
					 | 
				
			||||||
        cout << bin_width;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    svg_end();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,15 +0,0 @@
 | 
				
			|||||||
#ifndef SVG_H_INCLUDED
 | 
					 | 
				
			||||||
#define SVG_H_INCLUDED
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void
 | 
					 | 
				
			||||||
svg_begin(double width, double height);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void
 | 
					 | 
				
			||||||
svg_end();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void
 | 
					 | 
				
			||||||
show_histogram_svg(const std::vector<size_t>& bins);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif // SVG_H_INCLUDED
 | 
					 | 
				
			||||||
@ -1,38 +0,0 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
 | 
					 | 
				
			||||||
<CodeBlocks_project_file>
 | 
					 | 
				
			||||||
	<FileVersion major="1" minor="6" />
 | 
					 | 
				
			||||||
	<Project>
 | 
					 | 
				
			||||||
		<Option title="unittest" />
 | 
					 | 
				
			||||||
		<Option pch_mode="2" />
 | 
					 | 
				
			||||||
		<Option compiler="gcc" />
 | 
					 | 
				
			||||||
		<Build>
 | 
					 | 
				
			||||||
			<Target title="Debug">
 | 
					 | 
				
			||||||
				<Option output="bin/Debug/unittest" prefix_auto="1" extension_auto="1" />
 | 
					 | 
				
			||||||
				<Option object_output="obj/Debug/" />
 | 
					 | 
				
			||||||
				<Option type="1" />
 | 
					 | 
				
			||||||
				<Option compiler="gcc" />
 | 
					 | 
				
			||||||
				<Compiler>
 | 
					 | 
				
			||||||
					<Add option="-g" />
 | 
					 | 
				
			||||||
				</Compiler>
 | 
					 | 
				
			||||||
			</Target>
 | 
					 | 
				
			||||||
			<Target title="Release">
 | 
					 | 
				
			||||||
				<Option output="bin/Release/unittest" prefix_auto="1" extension_auto="1" />
 | 
					 | 
				
			||||||
				<Option object_output="obj/Release/" />
 | 
					 | 
				
			||||||
				<Option type="1" />
 | 
					 | 
				
			||||||
				<Option compiler="gcc" />
 | 
					 | 
				
			||||||
				<Compiler>
 | 
					 | 
				
			||||||
					<Add option="-O2" />
 | 
					 | 
				
			||||||
				</Compiler>
 | 
					 | 
				
			||||||
				<Linker>
 | 
					 | 
				
			||||||
					<Add option="-s" />
 | 
					 | 
				
			||||||
				</Linker>
 | 
					 | 
				
			||||||
			</Target>
 | 
					 | 
				
			||||||
		</Build>
 | 
					 | 
				
			||||||
		<Compiler>
 | 
					 | 
				
			||||||
			<Add option="-Wall" />
 | 
					 | 
				
			||||||
		</Compiler>
 | 
					 | 
				
			||||||
		<Extensions>
 | 
					 | 
				
			||||||
			<lib_finder disable_auto="1" />
 | 
					 | 
				
			||||||
		</Extensions>
 | 
					 | 
				
			||||||
	</Project>
 | 
					 | 
				
			||||||
</CodeBlocks_project_file>
 | 
					 | 
				
			||||||
@ -1,22 +0,0 @@
 | 
				
			|||||||
#define DOCTEST_CONFIG_NO_MULTITHREADING
 | 
					 | 
				
			||||||
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
 | 
					 | 
				
			||||||
#include "doctest.h"
 | 
					 | 
				
			||||||
#include "histogram_internal.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    find_minmax({-1, -2, -3, -4, -5}, min, max);
 | 
					 | 
				
			||||||
    CHECK(min == -5);
 | 
					 | 
				
			||||||
    CHECK(max == -1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    CHECK(!find_minmax({}, min, max));
 | 
					 | 
				
			||||||
    CHECK(true);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
					Загрузка…
					
					
				
		Ссылка в новой задаче