Definice const char *[] – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Definice const char *[] – C / C++ – Fórum – Programujte.comDefinice const char *[] – C / C++ – Fórum – Programujte.com

 

Remder0
Návštěvník
25. 10. 2011   #1
-
0
-

Mám program v C, který vypisuje počet sekund a poté příslušný tvar slova "sekunda" a abych nemusel psát:

(Zjednodusene)

if (sek = 1)
	prinf("%d sekunda", sek);
if (sek = 2 || sek = 3 || sek = 4)
	prinf("%d sekundy", sek);
.
.
.

Chci si vytvořit pole řetězců a použít ho jako:

printf("%d %s", sek, SKSEK[sek]);

Definice by měla vypadat asi takto:

const char *SKSEC[] =
{
  [0] = "sekund",
  [1] = "sekunda",
  [2] = "sekundy",
};

Ale potřeboval bych poradit jak řetězec "sekundy" přiřadit zároveň k hodnotám 2,3,4, bez toho aniž bych musel psát pro každou hodnotu nový řádek. Dále pak jak přiřadit řetězec pro všechny hodnoty >4 (nebo pro hodnoty jiné, než jsou již definovány).

Předem děkuji za odpověď.

Nahlásit jako SPAM
IP: 85.93.122.–
devilfish0
Stálý člen
25. 10. 2011   #2
-
0
-

   

if (sek == 1)
	prinf("%d sekunda", sek);
else if (sek > 1 && sek < 5)
	prinf("%d sekundy", sek);
else
	prinf("%d sekund", sek);

Naozaj netreba do toho zatahovat polia

Nahlásit jako SPAM
IP: 188.121.172.–
Remder0
Návštěvník
25. 10. 2011   #3
-
0
-

#2 devilfish

Díky za odpověď.

Nejspíš jsem to měl zmínit už na začátku, ale když tímto způsobem (přes if, nebo switch to už je jedno) budu dále vypisovat minuty, hodiny, dny,... tak kód docela naroste a znepřehlední, ale to není tak podstatné. Hlavní důvod je, že způsob s polem mi příjde více "profesionálnějsí",elegantnější, obecnější a taky bych chtěl sám vědět jestli to vůbec jde.

Nejde mi o to, že bych nevěděl jak program napsat, aby fungoval, ale abych věděl jak by se postupovalo skrz pole a vůbec bych se přiučil něco dalšího o polích.

Nahlásit jako SPAM
IP: 85.93.122.–
devilfish0
Stálý člen
25. 10. 2011   #4
-
0
-

Samozrejme najlepsie riesenie je

prinf("%d second(s)", sek);

Cez to pole to nespravis lebo mozes ako sek dostat akekolvek cislo

Nahlásit jako SPAM
IP: 188.121.172.–
KIIV
~ Moderátor
+43
God of flame
25. 10. 2011   #5
-
0
-

teoreticky muzes zneuzit funkci, ktere predas jen   "minut" a pak k tomu vypises   1 a, 2-4 y, 5+ nic

melo by to fungovat skoro obecne... (ikdyz jsou vyjimky... treba den, dny, dni - ale na to se da udelat jen specialni funkce... )

a kdyz potrebujes zmenit tak je to jen na jednom miste vse

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
liborb
~ Redaktor
+18
Guru
26. 10. 2011   #6
-
0
-

 Co třeba přes funkci:

int dejIndex(int hodnota)
{
	if (hodnota == 1) return(0);
	else if (hodnota > 1 && hodnota < 5)
		return(1);
	else return(2);
}

a pak v kódu:

printf("%d %s", hod, SKHOD[dejIndex(hod)]);
printf("%d %s", min, SKMIN[dejIndex(min)]);
printf("%d %s", sek, SKSEK[dejIndex(sek)]);
Nahlásit jako SPAM
IP: 78.80.52.–
Remder0
Návštěvník
26. 10. 2011   #7
-
0
-

#6 liborb
Díky za odpověd,
použil jsem a funguje skvěle díky.

Nahlásit jako SPAM
IP: 147.229.179.–
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, 42 hostů

Podobná vlákna

Const char v C — založil Halancik

Static const char array[] .. — založil kruciik

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ý