Založen: Nov 07, 2005 Příspěvky: 1543 Bydliště: Studénka
Zaslal: út květen 24 2022, 14:20 Předmět:
Já jsem asi nějaký natvrdlý. Výše uvedený program "Házení kostkou" jako jpg mám v CodeBlocks zapsaný a funkční. Chci si proměnnou "c" jako číselnou hodnotu zobrazit před provedením operace switch (c). Čtu různé popisy jazyka Céčka, ale nemohu přijít na to, jak mám zapsat programový řádek, který zobrazí vypočtenou náhodnou aktuální hodnotu "c" před tím switch. Zápis printf (c); je blbost a nefunguje. Jak se to má správně zapsat. Ten hledaný řádek je v následujícím výpisu zvýrazněný tučně a červeně. Proti Basic a VBA je pro mne zatím jazyk C nepřehledný. Asi to chce čas a studium nějakých vzorů.
#include <stdio.h> // pro funkcnost printf(), prip. scanf()
#include <stdlib.h> // pro funkcnost srand() a rand()
#include <time.h> // pro funkcnost time()
int
main ()
{
int c;
printf ("Hazim kostkou...\n\n");
srand (time (NULL));
c = rand () % 6 + 1;
printf (c);
switch (c)
{
case 1:
printf ("Padla jednicka\n");
break;
case 2:
printf ("padla dvojka\n");
break;
case 3:
printf ("padla trojka\n");
break;
case 4:
printf ("padla ctyrka\n");
break;
case 5:
printf ("padla petka\n");
break;
case 6:
printf ("padla sestka\n");
break;
}
return 0;
}
Nic si z toho nerob. printf nie je príkaz jazyka C. Je to funkcia knižnice stdio.h. Ak tú funkciu chceš používať, tak si musíš niekde nájsť, ako sa používa, aké má vstupné parametre, akú má návratovú hodnotu, čo tá funkcia robí, jak to s tou funkciou myslel jej autor, ktorý ju naísal... To je úplne normálne, keď používaš cudzie knižnice, že k ním potrebuješ dokumentáciu. Našťastie máme internety a stdio.h je najbežnejšie používaná knižnica. Ak by si začal s učebnicou, na ktorú som ti dal minule odkaz, tak hneď v prvej kapitole je vysvetlené použitie tejto funkcie printf. Správny zápis by mohol byť trebárs
printf("%d",c);
Alebo môžeš použiť jednoduchšiu funkciu
putc(c);
Každopádne si vyhľadaj použitie funkcie printf a putc. Nejdem tu kopírovať knihy alebo internety.
Založen: Nov 07, 2005 Příspěvky: 1543 Bydliště: Studénka
Zaslal: út květen 24 2022, 15:10 Předmět:
Dík. Funguje to. Musím v popisech najít co vyjadřuje a znamená to "procenta d" (v Google klávesnici jsem nenašel znak procenta) a proč to tam musí být.
Zjednodušene, percento označuje miesto v reťazci, kam sa vloží hodnota z premennej, ktorá je za čiarkou ako ďalší parameter funkcie printf. Percent v reťazci a premenných odelených čiarkami môže byť viac. Za percentom následuje znak, ktorý definuje tvar, v ktorom sa hodnota vypíše. Napríklad d je celočíselný dekadický tvar, f je float alebo desatinný tvar, e- je exponenciálny tvar, s je reťazec, c je jeden znak, h je hexadecimálny tvar a ešte nejaké ďalšie... Potom ešte môže následovať číslo označujúce počet platných miest a za bodkou počet desatinných miest... V reťazci môžu byť aj špeciálne znaky napríklad \n je nový riadok, \t je tabelátor, \b je backspace... Áno, funkcia printf je takto zložitá, ale aj veľmi užitočná. Nuž ale už kto by si to všetko pamätal. Stačí vedieť, kde to nájsť. A na to sú internety.
Priznám sa však, že ešte stále neviem, ako môže mať funkcia printf ľubovoľný počet parametrov. Raz si na to možno nájdem čas a zistím si, jak to nakódili.
Založen: Mar 21, 2006 Příspěvky: 34654 Bydliště: Bratislava
Zaslal: út květen 24 2022, 16:56 Předmět:
samec napsal(a):
Zjednodušene, percento označuje miesto v reťazci, kam sa vloží hodnota z premennej, ktorá je za čiarkou ako ďalší parameter funkcie printf. Percent v reťazci a premenných odelených čiarkami môže byť viac. Za percentom následuje znak, ktorý definuje tvar, v ktorom sa hodnota vypíše. Napríklad d je celočíselný dekadický tvar, f je float alebo desatinný tvar, e- je exponenciálny tvar, s je reťazec, c je jeden znak, h je hexadecimálny tvar a ešte nejaké ďalšie... Potom ešte môže následovať číslo označujúce počet platných miest a za bodkou počet desatinných miest... V reťazci môžu byť aj špeciálne znaky napríklad \n je nový riadok, \t je tabelátor, \b je backspace... Áno, funkcia printf je takto zložitá, ale aj veľmi užitočná. Nuž ale už kto by si to všetko pamätal. Stačí vedieť, kde to nájsť. A na to sú internety.
man 3 printf
citace:
Priznám sa však, že ešte stále neviem, ako môže mať funkcia printf ľubovoľný počet parametrov. Raz si na to možno nájdem čas a zistím si, jak to nakódili.
Založen: Aug 02, 2009 Příspěvky: 1388 Bydliště: Praha
Zaslal: út květen 24 2022, 18:31 Předmět:
>samec
putc(c); je blbost, to by vytisklo cislo jako znak s odpovidajicim ascii kodem, takze pro 1-6 bys toho na obrazovce moc nevidel. Kdyz uz tak putc(c+'0'); bude fungovat aspon pro cisla 0-9
Jinak s printf sem mel pri prechodu z Pascalu taky velke problemy a presne sem mel tyhle remcy, na co nejaka % atd., a ted sem za mocny printf rad...
Založen: Nov 07, 2005 Příspěvky: 1543 Bydliště: Studénka
Zaslal: út květen 24 2022, 19:16 Předmět:
Stáhl jsem si toho Kremlina z internetu jako PDF soubor v EN. Musí se s tím pracovat systematicky od začátku. Skutečně tam je ten printf i s parametry vysvětlen.
Založen: Nov 07, 2005 Příspěvky: 1543 Bydliště: Studénka
Zaslal: čt květen 26 2022, 8:21 Předmět:
Kamarádi, potřebuji zase radu a pomoc. Poraďte dědovi starci 77 let. V Kremlinu v EN nějak nenacházím jak na to.
Řešili jsme s vnukem toto zadání:
"Vytvořte jednoduchou kalkulačku s operacemi sčítání, odčítání, násobení a dělení. Načtěte dvě čísla x1 a x2 a zadejte aritmetickou operaci. Podle zadaného znaku aritmetické operace (+, -, *, /) program vypočítá a vypíše výsledek."
Napsali jsme funkční řešení toho zadání, ale větvení podle znaků + - * / jsme nahradili tak, že se znaky zadají číslem "z", a podle něj se provede příslušná operace.
Jak se přečte zadání znaku + - * / na klávesnici podle znaku jak se zadá ten SWITCH?
Tady je naše řešení:
Dík za odkaz. Je tam vše potřebné, co jsem potřeboval. Některé příkazy jsem mechanicky opsal a funují. Nedokáži je však rozklíčovat, co znamenají jednotlivá "písmenka" v příkazu. V té učebnici od Kremlina v EN se nedokáži orientovat při nahodilém hledání, muselo by se to studovat systematicky stránku po stránce. Např. co mi říkají znaky "%.1lf + %.1lf = %.2lf" v tomto řádku programu pro kakulačku (x1 a x2 jsou proměnné):
Při proměnných X1=8.546 a x2=8.352 "printf" napíše 8.5 + 7.4
= 15.90 .
Ta čísla znamenají počet desetinných míst, ale nechápu, jak a proč celý tento řádek vytvoří 8.5 + 7.4 = 15.90 .
Založen: Nov 07, 2005 Příspěvky: 1543 Bydliště: Studénka
Zaslal: pá květen 27 2022, 17:17 Předmět:
[quote="MiloPS3"]ono se to tezko vysvetluje.... ale je to jednoduchy ... /quote]
Dík, to je výborný popis.
Šíleně mi jde na nervy ta učitelka programování mého vnuka. Nutí studenty psát cvičné programy v C zcela zpaměti, klasické šprtání. Lituji vnuka, že má rozumět syntaxi a konstrukcí programu a ještě mít v hlavě ty parametry příkazů a instrukcí. Psával jsem programy v Basic a pro Excel ve VBA, a vždy jsem u toho opisoval sám od sebe co jsem napsal dříve, nebo z příruček a také podle vzorů jak co napsali jiní. Programy jsem si vytvářel jako potřebu pro vlastní technickou činnost, nejsem Ajťák.
Ne každý student bude pracovat jako programátor. Pro studenty není potřeba vše našprtat, ale měli by se v tom orientovat a vědět kde co najít a použít.
O moderní výuce jako tvůrčí činnosti se hodně mluví, ale skutek utek. Pořád vede to šprtání.
Časy uváděny v GMT + 1 hodina Jdi na stránku Předchozí1, 2, 3Další
Strana 2 z 3
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.