Ahoj, chtěl bych se zeptat, jestli je možné v jazyce C vytvořit konstantu potom, co její přiřazena hodnota ze scanf?
Příklad: proměnná i
Zadám číslo 3, které se přiřadí proměnné i.
Od této chvíle je i = 3 konstanta.
Jde to? Děkuji za odpovědi.
Fórum › C / C++
Konstanta při získání z scanf
ne .. je to jen promenna.. konstanta se nesmi menit v programu..
v c++ ji vsak muzes pretypovat pozdeji na const typ .... napriklad pri predavani do funkce (u C si nejsem jist ze by to slo)
Já na to, ale asi bez vaší pomoci nepřijdu.
Vkládám Vám zdrojový kód -
printf("\nZadejte pocet tymu: ");
scanf("%d", &i);
while (getchar() != '\n'); /*Vycisteni bufferu*/
i = i * (i - 1)/2;
printf("\nCelkovy pocet zapasu pri tomto poctu tymu bude %d.", i);
i = i - 1;
printf("Kazdy tym odehraje %d zapasu.", i);
Pokud zadám například 12.
Po celkovém počtu zápasu už se i = 66, tzn. i = i - 1 vyjde 65, správně má však být 11 (měla by být použita 12)
budeš si muset vytvořit další proměnnou pro celkový počet zápasů:
printf("\nZadejte pocet tymu: ");
scanf("%d", &i);
while (getchar() != '\n'); /*Vycisteni bufferu*/
int pocet_zapasu;
pocet_zapasu = i * (i - 1)/2;
printf("\nCelkovy pocet zapasu pri tomto poctu tymu bude %d.", pocet_zapasu);
i = i - 1;
printf("Kazdy tym odehraje %d zapasu.", i);
Ahoj, ještě se vracím, potřeboval bych pomoci s algoritmem pro generování rozpisu utkání každý s každým v jazyce C?
Nevím si s ním vůbec rady. V každém kole se musí utkat mužstvo s mužstvem. Pokud se to bude jednat lichého počtu týmu, tak jedno mužstvo hrát nebude.
1.) 'ořízneš' liché číslo na sudé - pokud je zbytek po dělení 2 nenulový, snížíš počet týmů o jeden
if (pocet%2)
pocet--;
2.) nevím jak má vypadat výstup ale princip:
Pro každý tým vypíšeš všechny jeho protitými, které s ním ještě nehrály (mají vyšší číslo než aktuální).
int i, j;
for (i=1; i<pocet; i++){
for (j=i+1; j<pocet; j++) {
printf ("hraje %d proti %d\n", i, j);
}
}
to: uklizecka
Ahoj, vyzkoušel jsem tvůj kód a moc ti za něj děkuji. Narazil jsem však na problém.
Pokud zadám sudý počet týmů, tak se mi zobrazí poslední hrací tým jako tým předtím.
Př. Počet týmů = 16, poslední tým v rozpise = 15.
Víš, co s tím? Díky!
Tenhle problém jsem vyřešil, že jsem dal místo "i<pocet" tohle "i<=pocet".
Poslední dotaz je tedy takový, zda se dá udělat to, aby jsem měl rozpis na kola.
Př.
1. kolo
hraje 1 proti 2
hraje 3 proti 4
hraje 5 proti 6
....
2.kolo
hraje 1 proti 3
hraje 2 proti 4 atd.
Díky za odpovědi!
první problém: promiň to mě hned nenapadlo
Rozpis na kola? imho potřebuješ nejdřív vědět, kdo vyhraje ne? Chápu to tak, že vždycky jeden postoupí? To potom musí být
počet hráčů mocnina dvou.. třeba 8:
první:
1x2
3x4
5x6
7x8
druhý:
2x4
6x8
třetí:
4x8
takhle to myslíš?
Tak to není. Pravděpodobně jsem se špatně vyjádřil. Nejde o to, zda postoupíš nebo ne. Každý hraje s každým.
Jde o to, aby se všichni soupeři utkali. Rozdělení do kol. Něco jako rozpis zápasů pro "Gambrinus ligu".
Našel jsem kód, který by to samé měl dělat ve VBA.
Je schopen ho někdo přepsat do jazyka C?
Function JeLiche(ByVal cislo As Integer)
Return CBool((cislo And 1))
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
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Statická konštanta — založil lime
Konstanta v triede — založil mrvo
Konstanta charu... — založil Maty
Moderátoři diskuze