#6 ORION206
sem tam něco vložil a mě to funguje, čas běhu 0.004 sec. tak nevim
#include "stdafx.h"
#include <iostream> // std::cout
#include <fstream> // std::ifstream
#include <string>
#include <sstream>
#include <time.h>
#include <ctime>
const int COLUMNS = 7;
struct radek
{
float x;
float y;
float z;
float odrazivost;
float r;
float g;
float b;
};
using namespace std;
radek MakeRow(float pole[7])
{
radek soucasnejRadek;
soucasnejRadek.x = pole[0];
soucasnejRadek.y = pole[1];
soucasnejRadek.z = pole[2];
soucasnejRadek.odrazivost = pole[3];
soucasnejRadek.r = pole[4];
soucasnejRadek.g = pole[5];
soucasnejRadek.b = pole[6];
return soucasnejRadek;
}
#define DatumFormat "%d.%m.%Y %H:%M:%S "
#define DatumVelikost 21
#define DatumFormat2 "%d.%m.%Y %H:%M:%S "
#define DatumVelikost2 21
static char *DATUM(char *buff)
{
time_t t = time(0);
strftime(buff, DatumVelikost, DatumFormat, localtime(&t));
return buff;
}
float main()
{
char volba;
char format;
char format2;
float mez_X[2];
float mez_Y[2];
float mez_Z[2];
int odrazivost[2];
int barva_r[2];
int barva_g[2];
int barva_b[2];
int pocetRadku;
char date[DatumVelikost];
//char date1[DatumVelikost2];
int cas;
cout << "Pokud chcete vysledny soubor dle souradnic stiknete S.\n";
cout << "Pokud chcete vysledny soubor dle odrazivosti stiknete O.\n";
cout << "Pokud chcete vysledny soubor dle barev stiknete R.\n";
cout << "Pokud chcete vysledny soubor dle souradnic a odrazivosti vyberte variantu A.\n";
cout << "Pokud chcete vysledny soubor dle souradnic a barev vyberte variantu B.\n";
cout << "Pokud chcete vysledny soubor dle odrazivosti a barev vyberte variantu C.\n";
cout << "Pokud chcete vysledny soubor dle souradnic, odrazivosti a barev vyberte variantu D.\n";
cin >> volba;
cin.get();
// PODMINKA PRO SOURADNICE - S
if (volba == 'S' || volba == 's')
{
std::string filename;
std::string filenameOUT = "Vysledek_Cisla_Dle_Souradnic";
cout << "Zadejte jmeno souboru, ze ktereho chcete nacitat data.\n";
getline(cin, filename);
cout << endl;
cout << "Zadejte format nacitaneho souboru: \n";
cout << "(1) - .pts\n";
cout << "(2) - .txt\n";
cout << "(3) - .rcp\n";
cout << "(4) - .rcs\n";
cin >> format;
switch (format)
{
case '1':
filename += ".pts";
cout << "Byl vybran format .pts.\n";
break;
case '2':
filename += ".txt";
cout << "Byl vybran format .txt.\n";
break;
case '3':
filename += ".rcp";
cout << "Byl vybran format .rcp.\n";
break;
case '4':
filename += ".rcs";
cout << "Byl vybran format .rcs.\n";
break;
}
cout << endl;
cout << "Zadejte format vysledneho souboru: \n";
cout << "(1) - .pts\n";
cout << "(2) - .txt\n";
cout << "(3) - .rcp\n";
cout << "(4) - .rcs\n";
cin >> format2;
switch (format2)
{
case '1':
filenameOUT += ".pts";
cout << "Byl vybran format .pts.\n";
break;
case '2':
filenameOUT += ".txt";
cout << "Byl vybran format .txt.\n";
break;
case '3':
filenameOUT += ".rcp";
cout << "Byl vybran format .rcp.\n";
break;
case '4':
filenameOUT += ".rcs";
cout << "Byl vybran format .rcs.\n";
break;
}
std::ifstream ifs(filename.c_str(), std::ifstream::in);
std::ofstream ofs(filenameOUT.c_str(), std::ofstream::out);
cout << endl;
cout << "Zadejte souradnice pro vytvoreni souboru (x,y,z)\n";
cout << "Zadejte mez X: (nejpreve zapornou a pak kladnou)\n";
cin >> mez_X[0];
cin >> mez_X[1];
cout << "Zadejte mez Y:\n";
cin >> mez_Y[0];
cin >> mez_Y[1];
cout << "Zadejte mez Z:\n";
cin >> mez_Z[0];
cin >> mez_Z[1];
cout << "Meze zadany, nasleduje vytvareni souboru.\n";
time_t start = time(NULL);
//*********************************************
clock_t time_begin = clock();
//*********************************************
int start1 = clock();
int a = 0;
if (ifs.is_open() && ofs.is_open())
{
std::string line;
while (std::getline(ifs, line))
{
std::istringstream ss(line);
radek soucasnejRadek;
if (!(ss >> soucasnejRadek.x >> soucasnejRadek.y >> soucasnejRadek.z >> soucasnejRadek.odrazivost >> soucasnejRadek.r >> soucasnejRadek.g >> soucasnejRadek.b))
{
continue;
}
if (mez_X[0] <= soucasnejRadek.x && mez_X[1] >= soucasnejRadek.x)
{
if (mez_Y[0] <= soucasnejRadek.y && mez_Y[1] >= soucasnejRadek.y)
{
if (mez_Z[0] <= soucasnejRadek.z && mez_Z[1] >= soucasnejRadek.z)
{
a++;
pocetRadku = a;
ofs << soucasnejRadek.x << " " << soucasnejRadek.y << " " << soucasnejRadek.z << " " << soucasnejRadek.odrazivost << " " << soucasnejRadek.r << " " << soucasnejRadek.g << " " << soucasnejRadek.b << '\n';
}
}
}
}
ifs.close();
ofs.close();
}
else
{
std::cout << "Error opening file";
}
//LOG soubor souradnic
time_t tt = time(0);
struct tm*now = localtime(&tt);
char DATUM_1[80];
strftime(DATUM_1, DatumVelikost2, DatumFormat2, now);
//*********************************************************
clock_t time_end = clock();
double elapsed_secs = double(time_end - time_begin) / CLOCKS_PER_SEC;
std::cout << elapsed_secs;
//*********************************************************
int stop = clock();
cas = ((stop - start1) / (CLOCKS_PER_SEC));
cout << "Vysledny soubor vytvoren.\n";
cout << "Nasleduje zapis LOG souboru.\n";
std::ofstream ofss("LOG_Cisla_Dle_Souradnic.txt", std::ofstream::out);
ofss << "Informace o vyslednem souboru vytvoreneho dle mezi souradnic:\n";
ofss << "Pouzite meze souradnic: \n" << "Mez X: " << "<" << mez_X[0] << "; " << mez_X[1] << ">\n" << "Mez Y: " << "<" << mez_Y[0] << "; " << mez_Y[1] << ">\n" << "Mez Z: " << "<" << mez_Z[0] << "; " << mez_Z[1] << ">\n";
ofss << "Pocet bodu v tomto souboru: " << pocetRadku << "\n";
ofss << "Zacatek vytvoreni souboru: " << DATUM(date) << "\n";
ofss << "Konec vytvoreni souboru: " << DATUM_1 << "\n";
ofss << "Cas tvoreni souboru: " << (double)(time(NULL) - start) << " s" << "\n";
ofss << endl;
cout << "LOG soubor byl vytvoren.\n";
cout << "Cas tvoreni souboru: " << cas << " s" << "\n";
}
}// main