== code(cpp) |
#include <stdio.h>
/** Funcţiile necesare parsării fişierului de ieşire **/
FILE *_fout;
int _out_loc; char _out_buff[50000];
int _out_loc; char _out_buff[4096];
void write_init(const char* name) // Apelaţi această funcţie la începutul funcţiei <main>
{
_fout = fopen(name, "w");
_out_loc = 0;
_fout = fopen(name, "w");
_out_loc = 0;
}
void write_ch(char ch) // Apelaţi această funcţie pentru a scrie un caracter (cum ar fi ' ' sau '\n')
{
if (_out_loc == 50000) {
fwrite(_out_buff, 1, 50000, _fout);
_out_loc = 0;
_out_buff[_out_loc++] = ch;
} else {
_out_buff[_out_loc++] = ch;
}
if (_out_loc == 4096) {
fwrite(_out_buff, 1, 4096, _fout);
_out_loc = 0;
_out_buff[_out_loc++] = ch;
} else {
_out_buff[_out_loc++] = ch;
}
}
void write_u32(unsigned int vu32) // Apelaţi această funcţie pentru a scrie un număr ce se încadrează în categoria <unsigned int>
{
if (vu32 <= 9) {
write_ch(vu32 + '0');
} else {
write_u32(vu32 / 10);
write_ch(vu32 % 10 + '0');
}
if (vu32 == 0) write_ch ('0');
int cif[11];
cif[0] = 0;
while (vu32)
cif[++cif[0]] = vu32 % 10, vu32 /= 10;
for (int i=cif[0]; i>=1; i--)
write_ch (cif[i] + '0');
}
void write_u64(unsigned long long vu64) // Apelaţi această funcţie pentru a scrie un număr ce se încadrează în categoria <unsigned long long>
{
if (vu64 <= 9) {
write_ch(vu64 + '0');
} else {
write_u64(vu64 / 10);
write_ch(vu64 % 10 + '0');
}
if (vu64 == 0) write_ch ('0');
int cif[11];
cif[0] = 0;
while (vu64)
cif[++cif[0]] = vu64 % 10, vu64 /= 10;
for (int i=cif[0]; i>=1; i--)
write_ch (cif[i] + '0');
}
void write_appendix() // ###! ATENŢIE, Apelaţi această funcţie la finalul prgramului. Altfel, fisierul outpt NU VA CONŢINE ÎN ÎNTREGIME ceea ce doriţi!
{
fwrite(_out_buff, 1, _out_loc, _fout);
fclose(_fout);
fwrite(_out_buff, 1, _out_loc, _fout);
fclose(_fout);
}
==