Witam ponownie. Program mam, autorstwa danio, za który bardzo dziękuję. Sam nie dałem rady :) No i program jest w C, a nie w C++ ale to nie szkodzi.
#include <stdio.h>
#include <stdlib.h>
char clockShield[] =
" 12 \n"
" \n"
" 11 1 \n"
" \n"
" \n"
" 10 2 \n"
" \n"
" \n"
" \n"
" 9 3\n"
" \n"
" \n"
" \n"
" 8 4 \n"
" \n"
" \n"
" 7 5 \n"
" \n"
" 6 \n";
char symbols[] = { '-', '.', '-', '.', '-', '|', '-', '.', '-', '.', '-', '|' };
int fields[][17] =
{
{ 410, 409, 368, 367, 326, 325, 284, 283, 242, 241, 200, 199, 158, 157 }, // 14 --
{ 409, 370, 331, 292 }, // 4 .
{ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425 }, // 17 -
{ 409, 456, 503, 550 }, // 4 .
{ 410, 411, 454, 455, 498, 499, 542, 543, 586, 587, 630, 631, 674, 675 }, // 14 --
{ 409, 452, 495, 538, 581, 624, 667, 710 }, // 8 |
{ 408, 409, 450, 451, 492, 493, 534, 535, 576, 577, 618, 619, 660, 661 }, // 14 --
{ 409, 448, 487, 526 }, // 4 .
{ 409, 408, 407, 406, 405, 404, 403, 402, 401, 400, 399, 398, 397, 396, 395, 394, 393 }, // 17 -
{ 409, 362, 315, 268 }, // 4 .
{ 409, 408, 365, 364, 321, 320, 277, 276, 233, 232, 189, 188, 145, 144 }, // 14 --
{ 409, 366, 323, 280, 237, 194, 151, 108 } //8 |
};
int main(int argc, char *argv[])
{
/*
for (int i = sizeof(clockShield)-1; i >= 0; i--)
if (clockShield[i] == '-')
printf("%d, ", i);
*
* for (int i = 0; clockShield[i] != '\0'; i++)
* if (clockShield[i] == '.')
* printf("%d, ", i);
*/
if (argc != 4)
{
printf("Wymagana ilość argumentów to: 3\n");
return 1;
}
int h = atoi(*(argv + 1));
int m = atoi(*(argv + 2));
char *filename = *(argv + 3);
if (h > 12)
h -= 12;
h -= 1;
int rest = 5 - (m % 5);
if (rest < 3)
m += rest;
m /= 5;
if (m == 0)
m = 12;
m -= 1;
// duza wskazowka
for (int i = 0; i < 17 && fields[m][i] != 0; i++)
clockShield[fields[m][i]] = symbols[m];
// mala wskazowka
int count = 0;
for (int i = 0; i < 17 && fields[h][i] != 0; i++, count++);
count = count / 2 + 1;
for (int i = 0; i < count && fields[h][i] != 0; i++)
clockShield[fields[h][i]] = symbols[h];
FILE* pFile = fopen(filename, "a");
if (pFile == NULL)
{
perror("\n");
return 1;
}
else
{
fputs(clockShield, pFile);
fputs("\n", pFile);
fclose(pFile);
printf("\nZapis do pliku przebiegł pomyślnie\n");
}
return 0;
}
Piszę z kolejnym problemem. W program muszę wbudować kolejki komunikatów msgget. Niestety nie wiem, jak msgget działa, ani co miałby w tym programie robić. Próbowałem coś zrobić, ale nie widziałem w necie, żeby było to jakoś wyjaśnione. Ma ktoś jakiś pomysł ? Dużo z tym roboty będzie ?