Konstanta při získání z scanf – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Konstanta při získání z scanf – C / C++ – Fórum – Programujte.comKonstanta při získání z scanf – C / C++ – Fórum – Programujte.com

 

Petr
~ Anonymní uživatel
746 příspěvků
26. 4. 2011   #1
-
0
-

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.

Nahlásit jako SPAM
IP: 147.230.159.–
crAzY^
~ Moderátor
+10
Grafoman
26. 4. 2011   #2
-
0
-

pokud tu hodnotu získáš někde za běhu programu tak to není konstanta... a ani by neměla význam...

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
KIIV
~ Moderátor
+43
God of flame
26. 4. 2011   #3
-
0
-

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)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Petr
~ Anonymní uživatel
746 příspěvků
26. 4. 2011   #4
-
0
-

Okej, díky chlapci

Nahlásit jako SPAM
IP: 147.230.159.–
Petr
~ Anonymní uživatel
746 příspěvků
26. 4. 2011   #5
-
0
-

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)

Nahlásit jako SPAM
IP: 147.230.159.–
crAzY^
~ Moderátor
+10
Grafoman
26. 4. 2011   #6
-
0
-

 i = i * (i - 1)/2; 


tady proměnné i přiřazuješ jinou hodnotu než je 12

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
crAzY^
~ Moderátor
+10
Grafoman
26. 4. 2011   #7
-
0
-

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);

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Petr
~ Anonymní uživatel
746 příspěvků
26. 4. 2011   #8
-
0
-

Děkuju moc. Věděl jsem, že i se přiřazuje jiná hodnota. Jsem začátečník a nenapadlo mě, jak to udělat. Díky.

Nahlásit jako SPAM
IP: 147.230.159.–
Petr
~ Anonymní uživatel
746 příspěvků
2. 5. 2011   #9
-
0
-

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.

Nahlásit jako SPAM
IP: 147.230.159.–
uklizecka
~ Anonymní uživatel
2 příspěvky
4. 5. 2011   #10
-
0
-

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);
}
}

Nahlásit jako SPAM
IP: 195.113.207.–
Petr
~ Anonymní uživatel
746 příspěvků
4. 5. 2011   #11
-
0
-

Ahoj,
zkusím, jak to funguje a snad s tím pohnu! Díky moc!

Nahlásit jako SPAM
IP: 147.230.159.–
Petr
~ Anonymní uživatel
746 příspěvků
7. 5. 2011   #12
-
0
-

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!

Nahlásit jako SPAM
IP: 77.78.82.–
Petr
~ Anonymní uživatel
746 příspěvků
7. 5. 2011   #13
-
0
-

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!

Nahlásit jako SPAM
IP: 77.78.82.–
uklizecak
~ Anonymní uživatel
1 příspěvek
12. 5. 2011   #14
-
0
-

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íš?

Nahlásit jako SPAM
IP: 195.113.207.–
Petr
~ Anonymní uživatel
746 příspěvků
13. 5. 2011   #15
-
0
-

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".

Nahlásit jako SPAM
IP: 77.78.82.–
Petr
~ Anonymní uživatel
746 příspěvků
15. 5. 2011   #16
-
0
-

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

Nahlásit jako SPAM
IP: 77.78.82.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 76 hostů

Podobná vlákna

Statická konštanta — založil lime

Konstanta v triede — založil mrvo

Konstanta charu... — založil Maty

Scanf - C — založil jakub

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý