NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Mezinárodní den IT společnosti je tady! Pouze nyní můžeš získat 90 % extra kreditů při nákupu od 1199 kreditů s promo kódem AJTACI90. Tak neváhej!

Diskuze: Rozpis - generovani zapasu

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
Petr
Neregistrovaný
Avatar
Petr:15.5.2011 20:33

Ahoj, potřeboval bych pomoc s přepsáním tohoto kódu z VBA do programovacího jazyka C.

Function JeLiche(ByVal cislo As Integer)

Return CBool

End Function

Function GenerujRozpis(ByVal PocetTymu As Integer) As String(,)

Dim n, k, s, i, j, TymA, TymB As Integer

If JeLiche(PocetTymu) Then

n = PocetTymu + 1

Else

n = PocetTymu

End If

k = n - 1 'počet kol

s = n / 2 'počet zápasů na kolo

Dim Zapasy(k, s - 1) As String

For i = 1 To k

If Not JeLiche(PocetTymu) Then Zapasy(i, 0) = i & "-" & n

For j = 1 To s - 1

TymA = ((n - j + i - 2) Mod k) + 1

TymB = ((i + j - 1) Mod k) + 1

Zapasy(i, j) = TymA & "-" & TymB

Next

Next

Return Zapasy

End Function

 
Odpovědět
15.5.2011 20:33
Avatar
levpatrik
Člen
Avatar
levpatrik:15.5.2011 21:40

Sice jazyk VBA neznám ale jednodušší by bylo napsat co to má dělat. Vypadá to vcelku jedonoduše.

 
Nahoru Odpovědět
15.5.2011 21:40
Avatar
sczdavos
Vlastník
Avatar
Odpovídá na
sczdavos:15.5.2011 22:21

Ahoj, tady máš zdroják, drobnosti snad už zvládneš. :)

#include<stdio.h>
#include<stdlib.h>

int je_liche(int cislo)
{
    if(cislo % 2 == 0)
        return 0;
    else
        return 1;
}


int main()
{
    int pocet_tymu = 25;
    int n = 0, k = 0, s = 0, i = 0, j = 0, tym_a = 0, tym_b = 0;

        if(je_liche(pocet_tymu))
                n = pocet_tymu + 1;
        else
                n = pocet_tymu;

        k = n - 1;// počet kol
        s = n / 2;// počet zápasů na kolo

        for(i = 1; i <= k; i++)
        {
        printf("\nKolo: %d\n", i);
                if(!je_liche(pocet_tymu))
        {
            printf("tym %d - tym %d\n", i, n);
        }
                for(j = 1; j < s; j++)
                {
                        tym_a = ((n - j + i - 2) % k) + 1;
                        tym_b = ((i + j - 1) % k) + 1;
            printf("tym %d - tym %d\n", tym_a, tym_b);
                }

        }

        getchar();
}
Nahoru Odpovědět
15.5.2011 22:21
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Petr
Neregistrovaný
Avatar
Petr:16.5.2011 14:42

Ahoj, díky moc. S drobnostmi už se snad poperu.

 
Nahoru Odpovědět
16.5.2011 14:42
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.