Programování v C - příklady

Výpočet procentové části

Program načte celkovou část a počet procent a provede jednoduchý výpočet.
Výsledek vypíše vhodně zformátovaný (tj. vhodný počet mezer, 3 desetinná místa apod.)

host:~$ Procenta

zadej celek  (realne cislo) : 123.45
zadej procenta (cele cislo) : 67
67% z 123.450 je 82.712

host:~$

Výpočet kořenů kvadratické rovnice

Program načte celočíselné koeficienty rovnice ax2 + bx + c = 0,
zadané hodnoty otestuje a vypočítá kořeny x1, x2

host:~$ Kvrov

Program vypocita koreny kvadraticke rovnice
zadej celociselne koeficienty a,b,c : 1.5 2 3
Nespravne zadana cisla !

host:~$ Kvrov

Program vypocita koreny kvadraticke rovnice
zadej celociselne koeficienty a,b,c : 0 1 2
Rovnice neni kvadraticka.

host:~$ Kvrov

Program vypocita koreny kvadraticke rovnice
zadej celociselne koeficienty a,b,c : 1 -3 -5
Rovnice ma dva realne koreny  x1 = 4.192582
                              x2 = -1.192582

host:~$ Kvrov

Program vypocita koreny kvadraticke rovnice
zadej celociselne koeficienty a,b,c : 1 2 1
Rovnice ma jeden dvojnasobny koren  x = -1.000000

host:~$ Kvrov

Program vypocita koreny kvadraticke rovnice
zadej celociselne koeficienty a,b,c : 1 2 3
Rovnice nema realny koren.

host:~$

Výpočet největšího společného dělitele

host:~$ Nsd

Program najde nejvetsi spolecny delitel 2 celych cisel
zadej 2 cela cisla : 89492 19604
NSD(89492,19604) = 52

host:~$

Výpis tabulky velké násobilky

host:~$ Nasobilka

Program vypise tabulku soucinu
zadej rozmer tabulky (2..30) : 20
   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20
   2   4   6   8  10  12  14  16  18  20  22  24  26  28  30  32  34  36  38  40
   3   6   9  12  15  18  21  24  27  30  33  36  39  42  45  48  51  54  57  60
   4   8  12  16  20  24  28  32  36  40  44  48  52  56  60  64  68  72  76  80
   5  10  15  20  25  30  35  40  45  50  55  60  65  70  75  80  85  90  95 100
   6  12  18  24  30  36  42  48  54  60  66  72  78  84  90  96 102 108 114 120
   7  14  21  28  35  42  49  56  63  70  77  84  91  98 105 112 119 126 133 140
   8  16  24  32  40  48  56  64  72  80  88  96 104 112 120 128 136 144 152 160
   9  18  27  36  45  54  63  72  81  90  99 108 117 126 135 144 153 162 171 180
  10  20  30  40  50  60  70  80  90 100 110 120 130 140 150 160 170 180 190 200
  11  22  33  44  55  66  77  88  99 110 121 132 143 154 165 176 187 198 209 220
  12  24  36  48  60  72  84  96 108 120 132 144 156 168 180 192 204 216 228 240
  13  26  39  52  65  78  91 104 117 130 143 156 169 182 195 208 221 234 247 260
  14  28  42  56  70  84  98 112 126 140 154 168 182 196 210 224 238 252 266 280
  15  30  45  60  75  90 105 120 135 150 165 180 195 210 225 240 255 270 285 300
  16  32  48  64  80  96 112 128 144 160 176 192 208 224 240 256 272 288 304 320
  17  34  51  68  85 102 119 136 153 170 187 204 221 238 255 272 289 306 323 340
  18  36  54  72  90 108 126 144 162 180 198 216 234 252 270 288 306 324 342 360
  19  38  57  76  95 114 133 152 171 190 209 228 247 266 285 304 323 342 361 380
  20  40  60  80 100 120 140 160 180 200 220 240 260 280 300 320 340 360 380 400

host:~$

Zjištění počtu cifer a ciferného součtu celého čísla

host:~$ Cifry

Program spocita pocet cifer a ciferny soucet celeho cisla 
zadej cele cislo : 12345678
n = 12345678
pocet cifer    = 8
ciferny soucet = 36

host:~$

Rozklad celého čísla na součin prvočísel

host:~$ Rozklad

Program rozlozi cele cislo na soucin prvocisel
zadej cislo > 1 : 11223344
11223344 = 2.2.2.2.11.43.1483

host:~$

Výpočet faktoriálu

Faktoriál je definován: n! = 1 . 2 . 3 ... (n-1) . n
Pozor - prostým násobením brzy dojde k přetečení reálného čísla.

host:~$ Fakt

Program vypocita faktorial zadaneho cisla
zadej kladne cislo : 5
5! = 1.200000000e+0002 

host:~$ Fakt

Program vypocita faktorial zadaneho cisla
zadej kladne cislo : 1000000
1000000! = 8.263931688e+5565708 

host:~$

Výpis členů matematické posloupnosti

Program počítá členy posloupnosti
Vypisuje prvních 6 členů, pak každý stotisící do milionu a nakonec každý miliontý do 3 milionů.

host:~$ Posloupnost

Program pocita cleny posloupnosti 
       1. clen = 4.000000000000
       2. clen = 3.555555555556
       3. clen = 3.413333333333
       4. clen = 3.343673469388
       5. clen = 3.302393550013
       6. clen = 3.275101041335
  100000. clen = 3.141600507581
  200000. clen = 3.141596580583
  300000. clen = 3.141595271585
  400000. clen = 3.141594617086
  500000. clen = 3.141594224387
  600000. clen = 3.141593962587
  700000. clen = 3.141593775587
  800000. clen = 3.141593635338
  900000. clen = 3.141593526254
 1000000. clen = 3.141593438988
 2000000. clen = 3.141593046289
 3000000. clen = 3.141592915389

host:~$

Hledání nejmenšího čísla v poli

Program naplní pole náhodnými čísly v rozsahu 0 až 999, najde pozici nejmenšího a prohodí toto číslo s prvním číslem v poli.

host:~$ Minimum

Program vygeneruje 16 nahodnych cisel, najde nejmensi
a prohodi jej s prvnim cislem v poli

i= 0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15

 740 312 688 864 639 885 520 602 846 289  96 113 556  67 446 878
 (nejmensi cislo je na pozici 13)
  67 312 688 864 639 885 520 602 846 289  96 113 556 740 446 878

host:~$

Seřazení číselného pole metodou výběru mejmenšího prvku

Program naplní pole náhodnými čísly v rozsahu 0 až 999 a metodou SELECT SORT seřadí prvky od nejmenšího k největšímu.

host:~$ SelectSort

Program vygeneruje 16 nahodnych cisel, a seradi je metodou SELECT SORT

 155 787 627  20 515 916 916 469 264  14 307 123 338 706 140 395
  14 787 627  20 515 916 916 469 264 155 307 123 338 706 140 395
  14  20 627 787 515 916 916 469 264 155 307 123 338 706 140 395
  14  20 123 787 515 916 916 469 264 155 307 627 338 706 140 395
  14  20 123 140 515 916 916 469 264 155 307 627 338 706 787 395
  14  20 123 140 155 916 916 469 264 515 307 627 338 706 787 395
  14  20 123 140 155 264 916 469 916 515 307 627 338 706 787 395
  14  20 123 140 155 264 307 469 916 515 916 627 338 706 787 395
  14  20 123 140 155 264 307 338 916 515 916 627 469 706 787 395
  14  20 123 140 155 264 307 338 395 515 916 627 469 706 787 916
  14  20 123 140 155 264 307 338 395 469 916 627 515 706 787 916
  14  20 123 140 155 264 307 338 395 469 515 627 916 706 787 916
  14  20 123 140 155 264 307 338 395 469 515 627 916 706 787 916
  14  20 123 140 155 264 307 338 395 469 515 627 706 916 787 916
  14  20 123 140 155 264 307 338 395 469 515 627 706 787 916 916
  14  20 123 140 155 264 307 338 395 469 515 627 706 787 916 916

host:~$

Seřazení číselného pole metodou postupných výměn

Program naplní pole náhodnými čísly v rozsahu 0 až 999 a metodou BUBBLE SORT seřadí prvky od nejmenšího k největšímu.

host:~$ BubbleSort

Program vygeneruje pole cisel, a  seradi je metodou BUBBLE SORT

zadej pocet prvku pole (3...100) : 12
 119 323 840 859 765 793 836 459 136 501 212 614

 119 323 840 765 793 836 459 136 501 212 614 859
 119 323 765 793 836 459 136 501 212 614 840 859
 119 323 765 793 459 136 501 212 614 836 840 859
 119 323 765 459 136 501 212 614 793 836 840 859
 119 323 459 136 501 212 614 765 793 836 840 859
 119 323 136 459 212 501 614 765 793 836 840 859
 119 136 323 212 459 501 614 765 793 836 840 859
 119 136 212 323 459 501 614 765 793 836 840 859

host:~$

Prohození řádků v matici

Program naplní matici náhodnými čísly, najde řádek začínající nejmenším číslem a tento řádek prohodí s vrchním řádkem matice.

host:~$ UpravMatici
  
  12   1  16   2   7   3
  10   9   4  14  11   9
  16   2   8  13  15   1
  10  13   6   7   2   2
   2   2  10   6   4  10
  11  16  11  10   1   1

  nejmensim cisle zacina radek 4.  =>  prohazuji radky 0. a 4.

   2   2  10   6   4  10
  10   9   4  14  11   9
  16   2   8  13  15   1
  10  13   6   7   2   2
  12   1  16   2   7   3
  11  16  11  10   1   1

host:~$ UpravMatici

   1   6   3  16  12   4
   5   5   2   4   7  11
  14   9  16   5   7   5
   1   9  16   6  12  11
  10   3   8   6   1  13
  11   1   3  13  16  14

  nejmensim cisle zacina radek 0.  =>  nedelam nic.

host:~$

Fibonacciho posloupnost

Napište funkci, která vypočítá n-tý člen Fibonacciho posloupnosti
1,1,2,3,5,8,13,21,34,55, ... (tj. člen je roven součtu dvou předchozích)
Porovnejte řešení rekurzivní a nerekurzivní.

host:~$ Fib

Program vypocita n-ty clen Fibonacciho posloupnosti
zadej n : 8
Fib(8) = 21 

host:~$ Fib

Program vypocita n-ty clen Fibonacciho posloupnosti
zadej n : 50
Fib(50) = 12586269025 

host:~$

Úpravy řetězců

Napište program, který načte řetězec a provede v něm nějakou změnu - viz. příklady:

host:~$ Retezec1

Program zmeni velikosti pismen zadaneho retezce
zadej retezec    : Ahoj Pepo, najdi mapu USA !
upraveny retezec : aHOJ pEPO, NAJDI MAPU usa !

host:~$ Retezec2

Program obrati poradi znaku v zadanem retezci
zadej retezec    : Ahoj kamarade!
upraveny retezec : !edaramak johA

host:~$

Vytvoření souboru s náhodnými čísly

Napište program, který vytvoří soubor náhodných čísel. Čísla do souboru zapisujte textově nebo binárně. Otestujte předané parametry programu. Porovnejte velikosti souborů a dobu trvání programu utilitou time.

host:~$ Cisla

  Program vygeneruje zadany pocet 2B celych cisel
  a ulozi je do souboru textove nebo binarne
  Syntax: ./Cisla <pocet> <soubor> t|b

host:~$ Cisla 1000 data.txt x

CHYBA - neplatny rezim - x

host:~$ Cisla 1000000 data.txt t
host:~$ time Cisla 1000000 data.txt t

real    0m3.669s
user    0m0.942s
sys     0m0.082s

host:~$ time Cisla 1000000 data.bin b

real    0m0.603s
user    0m0.280s
sys     0m0.020s

host:~$ ll data.*
-rw-r--r--  1 klimes99 3rv 2000000 bře 17 14:38 data.bin
-rw-r--r--  1 klimes99 3rv 5830419 bře 17 14:38 data.txt
host:~$