Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Programovací jazyk "C".
Jdi na stránku Předchozí  1, 2, 3  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Výpočetní technika
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
flyingbird



Založen: Oct 09, 2008
Příspěvky: 58
Bydliště: ValMez

PříspěvekZaslal: po květen 23 2022, 8:07    Předmět: Citovat

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Brozicek



Založen: Nov 07, 2005
Příspěvky: 1511
Bydliště: Studénka

PříspěvekZaslal: út květen 24 2022, 14:20    Předmět: Citovat

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;
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
samec



Založen: Dec 19, 2017
Příspěvky: 4120

PříspěvekZaslal: út květen 24 2022, 14:44    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
JoDiK



Založen: Jan 10, 2018
Příspěvky: 525
Bydliště: Olomoucký kraj

PříspěvekZaslal: út květen 24 2022, 14:54    Předmět: Citovat

To jsem nevěděl, že v C je takový problém vypsat číslo...
Dá se to třeba takto:
printf ("Co padlo na kostce: %d\n",c);
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Brozicek



Založen: Nov 07, 2005
Příspěvky: 1511
Bydliště: Studénka

PříspěvekZaslal: út květen 24 2022, 15:10    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
samec



Založen: Dec 19, 2017
Příspěvky: 4120

PříspěvekZaslal: út květen 24 2022, 16:48    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rnbw



Založen: Mar 21, 2006
Příspěvky: 33860
Bydliště: Bratislava

PříspěvekZaslal: út květen 24 2022, 16:56    Předmět: Citovat

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.

man 3 va_start
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
RayeR



Založen: Aug 02, 2009
Příspěvky: 1304
Bydliště: Praha

PříspěvekZaslal: út květen 24 2022, 18:31    Předmět: Citovat

>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 Smile

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...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Brozicek



Založen: Nov 07, 2005
Příspěvky: 1511
Bydliště: Studénka

PříspěvekZaslal: út květen 24 2022, 19:16    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
RayeR



Založen: Aug 02, 2009
Příspěvky: 1304
Bydliště: Praha

PříspěvekZaslal: st květen 25 2022, 2:27    Předmět: Citovat

V Heroutovi je to snad popsane taky dostatecne, z toho sem se ucil. Pro me byla vyhoda, ze tam uvadel srovnani s Pascalem...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Brozicek



Založen: Nov 07, 2005
Příspěvky: 1511
Bydliště: Studénka

PříspěvekZaslal: čt květen 26 2022, 8:21    Předmět: Citovat

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í:

#include <stdio.h>

int main()
{

int x1,x2,z;

printf ("zadej cislo x1 \n");
scanf ("%d\n", &x1);

printf ("zadej cislo x2 \n");
scanf ("%d\n", &x2);

printf ("zadej znamenko 1=+ 2=- 3=* 4=/\n");
scanf ("%d\n", &z);

if (z > 4)
printf("Neplatne znamenko");

if (z < 1)
printf("Neplatne znamenko");

switch (z)
{
case 1:

printf ("vysledek x1 + x2 je: %d\n ", x1 + x2);
break;
case 2:

printf ("vysledek x1 - x2 je: %d\n ", x1 - x2);
break;
case 3:

printf ("vysledek x1 * x2 je: %d\n ", x1 * x2);
break;
case 4:

printf ("vysledek x1 / x2 je: %d\n ", x1 / x2);
break;


}




return 0;

}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
flyingbird



Založen: Oct 09, 2008
Příspěvky: 58
Bydliště: ValMez

PříspěvekZaslal: čt květen 26 2022, 9:34    Předmět: Citovat

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Brozicek



Založen: Nov 07, 2005
Příspěvky: 1511
Bydliště: Studénka

PříspěvekZaslal: pá květen 27 2022, 13:44    Předmět: Citovat

flyingbird napsal(a):
https://www.programiz.com/c-programming/examples/calculator-switch-case


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é):

case 1:
printf ("%.1lf + %.1lf = %.2lf", x1, x2, x1 + x2);
break;

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 .
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 262

PříspěvekZaslal: pá květen 27 2022, 16:27    Předmět: Citovat

ono se to tezko vysvetluje.... ale je to jednoduchy ...
koukni sem https://www.sallyx.org/sally/c/c07.php
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Brozicek



Založen: Nov 07, 2005
Příspěvky: 1511
Bydliště: Studénka

PříspěvekZaslal: pá květen 27 2022, 17:17    Předmět: Citovat

[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í.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Výpočetní technika Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2, 3  Další
Strana 2 z 3

 
Přejdi na:  
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

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

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.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.15 sekund