Programování v jazyce C Obecné charakteristiky jazyka C: jazyk C je „programátorsky“ přívětivý, obecně použitelný
většinou je implementován jako překladač
překladač jazyka C je rozsahem malý a lze ho poměrně snadno převést na jiné platformy programy vytvořené pomocí jazyka C mají poměrně krátkou dobu provádění, nízké nároky na paměť a dají se lehce přenášet na jiné počítače Zdrojový kód jazyk C důsledně rozlišuje malá a velká písmena
první řádek obsahuje příkaz #include, který určuje hlavičkový soubor stdio.h důležitý pro správné provádění vstupně-výstupních datových operací
každý program musí mít jednu povinnou součást, kterou je hlavní funkce main, tento název je pevně daný a neměnný
Na programování potřebujeme vývojové prostředí, které slouží pro překlad algoritmů napsaných v nějakém vyšším programovacím jazyce do jazyka strojového neboli strojového kódu pomocí kompilátoru. Budeme používat
Vytvoření projektu 1. Na úvodní stránce: Create a new project... 2. Vyberte skupinu Projects a v kategorii Console položku Console Application.
3.
4.
5.
6.
7. program vygeneruje první soubor
8. Kompilace: Build->Build nebo tlačítkem 9. Spuštění programu: Build->Run nebo tlačítkem
Jak pracuje kompilátor
Vstupem do kompilátoru je náš zdrojový kód s příponou *.c ten se dostane do preprocesoru který nám "před připraví" náš kód např.: smaže komentáře poté kód vstupuje do kompilátoru
kompilátor nám vytvoří program v objektovém kódu ovšem který ještě nejde spustit.
Poté kód vstupuje do tzv. linkeru a právě linker nám poskládá už objektový kód knihovny tak, aby program nyní šel spustit.
Komentáře: Komentáře se jako v jiných jazycích používají také v jazyce C příklady: /* Sem si můžete napsat libovolný komentář */ <- správně! // Sem si můžete napsat libovolný komentář
<- správně!
*/ Sem si můžete napsat libovolný komentář /* <- špatně! V komentářích můžete libovolně používat diakritiku, protože jak už víte tak se komentáře při kompilaci vymažou. Co je to hlavičkový soubor? Hlavičkový soubor je soubor, který nám umožňují používat funkce. Hlavičkové soubory musí být připojený ke každému zdrojovému kódu.
příklad: Hlavičkový soubor stdio.h -> Obsahuje hodně užitečných spíš až základních funkcí. Hlavní z nich jsou printf();scanf();getchar(); a jiné #include <stdio.h>
Funkce main po spuštění se vždy načte jako první má syntaxi - typ název (parametr) - int main() začíná a končí složenými závorkami Funkce printf() vytiskne zadaná data na obrazovku syntaxe - int printf("formát výstupního řetězce“, vycet_promennych) - printf("vysledek %a:%b je %lf", a, b, c); Funkce scanf() slouží k načítání dat ze standardního vstupu tato data ukládá do proměnných, které jí předáme jako parametry syntaxe - int scanf("formát vstupního retezce", seznam promennych); u proměnných, do kterých chceme data načítat, musíme použít refenční operátor & (ampersand) - scanf("%lf %lf", &a, &b); takto předáme funkci scanf adresu v paměti, kam má načtenou hodnotu zapsat Funkce getcahr / putchar tyto dvě funkce představují základní možnost načítání a vypisování znaků funkce getchar má následující syntaxi - int getchar(void); funkce nepřebírá žádné parametry, pouze vrací celé číslo - ASCII kód načteného znaku z toho vyplývá, že jazyk C vnitřně pracuje se znakovou proměnnou, jako s celým číslem funkce putchar - syntaxe - void putchar(int ch); slouží k výpisu znaku na standardní výstup a přebírá jediný parametr, a tím je celé číslo reprezentující kód znaku, který chceme tisknout Ukázka, jak pomocí getchar znak načíst, a pomocí putchar zase zpět vypsat. int ch; printf("Zadejte alfanumericky znak:"); ch = getchar(); printf("Vytiskneme pomoci putchar:"); putchar(ch);
Základní datové typy jazyka C Typ
Bity
char short int long long long enum float double long double pointer
8 16 16/32 32 64 8/16/32 32 64 80 16/32
Významy čísel znak krátké celé číslo celé číslo dlouhé celé číslo ještě delší celé číslo výčtový typ racionální číslo racionální číslo s dvojitou přesností velmi dlouhé racionální číslo ukazatel
Při výběru vhodného datového typu je třeba počítat s tím, že rozsah datového typu (tj. nejmenší a největší číslo, které do něj můžete nacpat) se bude lišit „počítač od počítače“.
Boolovské datové typy V některých programovacích jazycích se používá datový typ bool, který může nabývat pouze hodnot true (pravda) nebo false (nepravda). Tyto hodnoty se používají ve vyhodnocování podmínek při řízení běhu programu a podmíněných operátorů. Na tomto místě si jen řekneme, že v jazyce C takovýto typ neexistuje. V jazyce C se jako nepravda vrací 0 a jako pravda 1. A dále platí, že cokoliv nenulového se vyhodnocuje jako pravda (tj. vše kromě 0 a NULL). Datový typ bool můžete používat, pokud zahrnete do svého zdrojového kódu knihovnu <stdbool.h>: #include <stdbool.h> bool x = true; x = false;
Bloky, deklarace a definice Blokem se rozumí vše, co je mezi složenými závorkami { a }. V příkladu nahoře máme jediný blok, a to tělo funkce main (). Všechny proměnné, které deklarujeme v bloku, jsou tzv. lokální proměnné a proměnné mimo blok jsou globální. Lokální proměnné platí jen v těle bloku a v blocích vnořených (jinde je překladač neuvidí). Proměnné jsou místa kdesi v paměti počítače, které definujeme v programu. Velikost místa v paměti závisí na datovém typu proměnné. Do proměnných lze vkládat hodnoty, měnit je a číst. Deklarací proměnných určujeme, jaké proměnné se v programu objeví. Nejdříve se určí datový typ
a za ním názvy proměnných oddělené čárkou. Deklarace se ukončí středníkem. Při deklaraci je možné do proměnné rovnou vložit hodnotu. Názvy proměnných nesmí obsahovat mezeru, národní znaky (č, ř, š atp.) a nesmí začínat číslem. Jejich maximální délka je závislá na překladači. Jazyk C rozlišuje malá a velká písmena, takže můžete vytvořit proměnné se jmény Ahoj, ahoj, aHoj… a program je bude chápat jako různé identifikátory. Dobrým zvykem je pro proměnné používat vždy jen malá písmena. unsigned int i,j,k; signed int cislo1, cislo2 = cislo3 = 25; Proměnné mohou být v jazyce C deklarovány pouze na začátku bloku funkce (tzv. lokální proměnné), nebo na začátku programu (globální proměnné). Lokální proměnné „existují“ jen v bloku, ve kterém jsou definovány (případně v blocích v něm vnořených) a nelze je tudíž používat mimo něj.
NULL NULL je speciální znak, který označuje velké nic. Používá se například v souvislosti s ukazateli. NULL je definováno v knihovně <stddef.h>, která je načítána např. pomocí <stdlib.h> a <stdio.h>.
Konstanty Konstanty jsou objekty, jejichž hodnota se za chodu programu nemění. Konstanty se definují za klíčovým slovem const. Po něm následuje datový typ konstanty. Pokud ne, překladač jej chápe jako int. Dále je v definici identifikátor konstanty a za rovnítkem hodnota. const float a = 5;
Řídící sekvence %d
Celé číslo
%f
Reálné číslo
%lf %c
Reálné číslo se zvýšenou přesností Celé číslo, které je konvertováno na znak, např. 64 = @
%o
Celé číslo v oktalové soustavě
%x
Celé číslo v hexadecimální soustavě
\a
Varovné pípnutí
\n \r
Skok na začátek nového řádku Přesune vozík na začátek aktuálního řádku
\v
Vertikální tabulátor; skočí na nový řádek, ale zůstane v aktuálním sloupci
Pondělí 7. ledna Větvení Příkaz if – else jedná se o příkaz, který umožňuje program větvit do dvou větví na základě logické hodnoty výrazu. Tyto výrazy mohou nabývat dvou stavů – pravda/nepravda. K vyjádření těchto výrazů používáme následující operátory: A == B A != B A
B A <= B A >= B
Podmínka je splněna, pokud se A rovná B. Podmínka je splněna, pokud se A nerovná B. Podmínka je splněna, pokud je A menší než B. Podmínka je splněna, pokud je A větší než B. Podmínka je splněna, pokud je A menší, nebo rovno než B. Podmínka je splněna, pokud je A větší, nebo rovno než B.
Prostředky pro konstrukci složitějších výrazů: (a != b) && (b < 25) Výraz je pravdivý, pokud se a nerovná b a současně je b menší než 25 (a < 10) || (a > 20) Výraz je pravdivý, pokud je a menší než 10 nebo pokud je a větší než 20. & - pravý alt + c | - pravý alt + w Příklady: Dělitelnost int main() { int a, b, zbytek; printf("Zadejte celá čísla, dělence a dělitele:\n"); scanf("%d%d", &a,&b); zbytek=a % b; if (zbytek==0) printf("Číslo %d\ je dělitelné číslem %d",a,b); else printf("Číslo %d\ není dělitelné číslem %d",a,b); system("pause"); return 0; }
Jednoduchá kalkulačka #include <stdio.h> #include <stdlib.h> int main() { int x, y; char znak;
printf("Vytvořte jednoduchou kalkulačku, zadejte čísla x, y a operátora "); scanf("%d%d%c",&x, &y, &znak); switch(znak) { case '+': printf("Vysledek je %d",x+y); break; case '-': printf("Vysledek je %d",x-y); break; case '*': printf("Vysledek je %d",x*y); break; case '/': printf("Vysledek je %f",x/y); break; default: printf("Zadali jste špatného operátora"); } return 0; }
Pondělí 14. ledna Př. Rozhodněte, zda zadaná čísla mohou být strany trojúhelníku #include <stdio.h> #include <stdlib.h> int main() { int a, b, c; printf("Zadejte tři čísla a zjistěte, jde-li o strany trojúhelníku\n: "); scanf("%d%d%d", &a,&b,&c); if (a+b>c) if (a+c>b) if(b+c>a) printf("Jde o trojúhelník"); else printf("Není to trojúhelník"); }
return 0;
Podmínky je možné do sebe také vnořovat #include <stdio.h> #include <stdlib.h> int main() { int hotovost = 200; int ucet = 3000; double cena = 3500; if (hotovost > cena) if (ucet > cena) puts("Můžeš platit kartou i hotovostí."); else puts("Zaplať hotovostí.");
else if (ucet > cena) puts("Zaplať kartou."); else puts("Ten nový počítač nepotřebuješ."); return 0; }
Funkce puts() vytiskne řetězec, jenž je jejím argumentem, do standardního výstupu
Cykly V případě, že třeba nějakou činnost vykonat opakovaně, je pro tento případ standardním nástrojem cyklus. Céčko nabízí hned tři typy cyklů.
for
while
do - while
for cyklus – je předem známý počet opakování obecně:
for (inicializace; podmínka; krok) příkaz nebo blok
Př. Vypište pod sebe čísla od 1 do 10 #include <stdio.h> #include <stdlib.h> int main() { int i; for (i = 1; i <= 10; i++) printf("%i\n", i); }
return 0;
Př. Vypočítejte faktoriál zadaného čísla int main() { int n,i; int faktorial=1; printf("Napište èíslo, jehož faktoriál chcete vypoèítat:"); scanf("%d",&n); for (i=2;i<=n; i++) { faktorial= faktorial*i; }
}
printf("%d",faktorial); return 0;
Pondělí 21. ledna while cyklus – cyklus s podmínkou na začátku obecně:
while (logická hodnota) příkaz nebo blok
Př. Vypište čísla od 1 do 10 int main() { int i = 1; while (i <= 10) { printf("%d\n", i); i++; } return 0;
}
Př. Vypište pod sebe násobky čísla n, které jsou menší než m int main() { int i = 1; int n,m,j ; printf("Vypište všechny násobky čísla n, které jsou menší než m\n"); printf("Zadejte n\n"); scanf("%d",&n); printf("Zadejte m\n"); scanf("%d",&m); while (n*i<= m) { j=i*n; printf("%d\n",j ); i++; } return 0; }
Př. Najdi minimum z neznámého počtu kladných celých čísel – podmínka X ≠ -1 int main() { printf("Najdi minimum z neznámého počtu kladných celých čísel – podmínka X ≠ -1\n"); int x,min=0; printf("Zadej číslo x\n"); scanf("%d",&x); min=x; while (x!=-1) {if (x<min) min=x; printf("Zadej další číslo :\n"); scanf("%d",&x); } printf("Nejmenší číslo je %d",min);
return 0; }
do - while cyklus – cyklus s podmínkou na konci. Tento cyklus se používá v případech, kdy potřebujeme tělo cyklu vykonat alespoň jednou obecně:
do příkaz nebo blok while (logická hodnota);
Př. Zjistěte, kolik čísel jsme napsali, než padla nula int main() { int x, pocet=0; do { printf("Napiste cislo:\n "); scanf("%d",&x); pocet=pocet +1; } while (x != 0); printf("Pocet zadanych císel je %d",pocet); return 0; }
Pondělí 28. ledna Switch – přepínač int main() { int a; printf("Napiste cele cislo z intervalu 1 - 4"); scanf("%d",&a); printf("Zvolili jste "); switch(a) { case 1: printf("jaro"); break; case 2: printf("leto"); break; case 3: printf("podzim"); break; case 4: printf("zima"); break; default: printf("spatne cislo"); } return 0; }
Příkazy break a continue Tyto příkazy se používají v případě, že potřebujeme okamžitě zastavit provádění těla cyklu, případně začít vykonávat tělo cyklu od začátku. Continue V případě, že při provádění programu narazíme na tento příkaz, dojde k okamžitému ukončení aktuální iterace a tělo cyklu se začne provádět od začátku. K vyskočení z cyklu tedy nedojde Break Tento příkaz způsobuje okamžité vyskočení z cyklu a program pokračuje bezprostředně za cyklem. K okamžitému přerušení cyklu můžeme použít vyjma příkazu break také příkaz goto. Př. Dělení int main() { int x,y; float z; printf("Napis delence a delitele:"); scanf("%d%d",&x,&y); {if (y !=0) z=(float)x/y; // je nutné přetypovat výsledek printf("Vysledek je %lf ",z); } return 0; }
Abychom dostali po dělení správný výsledek (desetinné číslo) je potřeba použít přetypování. Tím můžeme sdělit, jakého typu má být výsledek nějakého výrazu (z=(float)x/y;)
Prověrka 1. Vypočítejte průměr ze tří zadaných čísel int main() { int a,b,c; double p; printf("Zadejte tri cisla: \n"); scanf("%d%d%d",&a,&b,&c); p=(double)(a+b+c)/3; printf("Prumer zadanych cisel je %lf\n", p); return 0; }
2. Najděte největší ze tří zadaných čísel int main() { int a,b,c; printf("Zadejte tri cisla: \n"); scanf("%d%d%d",&a,&b,&c); if (a>b) { if (a>c) printf("Největší číslo je %d",a); else printf("Největší číslo je %d",c);} else { if (b>c) printf("Největší číslo je %d",b); else printf("Největší číslo je %d",c); } return 0; }
3. Načtěte 5 čísel a spočítejte, kolik z nich je záporných int main() { int x,i,pocet; printf("Napiste cislo:\n"); scanf("%d",&x); pocet=0; for (i=1;i<=5;i++) { if (x<0) pocet=pocet + 1; printf("Napiste cislo:\n"); scanf("%d",&x); } printf("Mezi zadanymi cisly je %d zapornych ",pocet); return 0; }
Pondělí 25. února V jazyce C se každý, byť sebemenší program obsahuje alespoň jednu funkci, funkci main. Pokud při programování píšeme rozsáhlejší program, potřebujeme prostředek, který nám umožní na první pohled složitý problém rozložit do menších částí, a to z několika důvodů.
Uživatelské funkce lze volat opakovaně, tedy to, co jednou naprogramujeme, můžeme používat opakovaně.
Původně složitý problém můžeme rozdělit na množství dílčích úkonů, které již není problém naprogramovat, a takový kód je snáze udržovatelný.
Můžeme používat lokální proměnné, které jsou viditelné pouze v prostoru dané funkce, čímž se vyhneme problémům se jmény a takový kód může pracovat paralelně.
Úvodní pojmy Ještě než si ukážeme několik možností, jak vytvářet naše vlastní funkce a jak je používat podíváme se na dva pojmy, se kterými se setkáme. Jsou jimi deklarace a definice funkce.
Deklarace funkce - říkáme pouze to, že někde bude existovat funkce s daným názvem, návratovým typem a parametry.
Definicí funkce rozumíme samotné „výkonné“ tělo, tedy kód, který daná funkce vykonává.
Nutno poznamenat, že deklaraci ve své podstatě používat nemusíme, ale potom narážíme na problém, že funkce musí být definována před svým prvním použitím, aby o ní překladač věděl. To může na první pohled vypadat jako samozřejmost, ale později, až budeme mít více funkcí, kde z jedné budeme volat druhou atp., se můžeme do problému tak zamotat, že deklarace pro nás bude vysvobozením. Každá funkce v jazyce C je dána jednak svým názvem, chcete-li identifikátorem, návratovým typem a seznamem parametrů.
název funkce by měl být volen tak, aby hned z názvu bylo patrné, co funkce dělá
název funkce nesmí začínat číslicí
je-li název složen z více slov, musí být psána za sebou bez mezery
Návratový typ určuje, jakého typu bude výsledek, který od funkce získáme. Pokud se bude jednat o funkci pro provádění nějakého výpočtu, návratovým typem bude nepochybně číselná hodnota.
Př. Napište funkci, která vypočítá rychlost v km/h #include <stdio.h> #include <stdlib.h> float VypocetRychlosti(float draha, float cas); int main() { int draha; int cas; printf("Zadej delku drahy v km\n "); scanf("%d",&draha); printf("Zadej cas jizdy v minutách\n "); scanf("%d",&cas);
}
printf("%lf km/hod ",VypocetRychlosti(draha,cas)); return 0; float VypocetRychlosti(float draha, float cas) { return draha/(cas/60); }
Př. Stejný příklad ještě s funkcí, která převede rychlost z km/h na m/s #include <stdio.h> #include <stdlib.h> float VypocetRychlosti(float draha, float cas); float PrevedRychlost (float rychlost); int main() { int draha; int cas; float rychlost; printf("Zadej delku drahy v km\n "); scanf("%d",&draha); printf("Zadej cas jizdy v minutách\n "); scanf("%d",&cas); rychlost = VypocetRychlosti(draha,cas); printf("%lf km/hod\n ",VypocetRychlosti(draha,cas)); printf("%lf m/s ",PrevedRychlost (rychlost)); return 0; }
float VypocetRychlosti(float draha, float cas) { return draha/(cas/60); } float PrevedRychlost (float rychlost) { return rychlost*3.6; }
Hlavičkový soubor standardní knihovny jazyka C, který zpřístupňuje matematické funkce je math.h Funkce pow je funkce, která umožňuje umocňovat reálný základ reálným číslem. Př. Napište funkci, která vypočítá mocninu xy #include <stdio.h> #include <stdlib.h> #include <math.h> int Mocnina(int x, int y); int main() { int x, y; printf( "Zadejte mocnence a mocnitele\n "); scanf ("%d%d",&x,&y); printf("Cislo %d na %d. je %d",x, y, Mocnina(x,y)); return 0; } int Mocnina(int x, int y) { return pow(x, y); }
Př. Výpočet mocniny jinak #include <stdio.h> #include <stdlib.h> int Mocnina(int x, int y); int main() { int x, y; printf( "Zadejte mocnence a mocnitele\n "); scanf ("%d%d",&x,&y); printf("Cislo %d na %d. je %d",x, y, Mocnina(x,y)); return 0; } int Mocnina(int x, int y) { int pom, i; i=1; pom = x; while(i
Pondělí 11. března Pole Pole jsou homogenní datové struktury, jejichž prvky jsou indexovány. První prvek pole má index 0. Pole můžeme rozdělit na statická a dynamická, jednorozměrná a vícerozměrná.
Deklarace pole Pole je v jazyce C interně podporováno, a tedy není nutné vkládat žádné speciální hlavičky. Deklarace pole má následující strukturu: <jméno>[<[velikost]>]; Deklarace se tedy příliš neliší od deklarace proměnné. Typ je základní typ buňky pole (pole je homogenní, není možné měnit typ u jednotlivých buněk), jméno je identifikátor pole – jméno proměnné typu pole – a velikost určuje, kolik buněk bude pole mít. Velikost je nepovinný údaj, stačí inicializovat pole a překladač si velikost doplní sám. Pokud velikost uvedeme, musíme vždy použít celé nezáporné číslo. V konkrétním případě tedy pole o deseti prvcích se jménem pole a typem int bude vypadat takto: int pole[10];
Inicializace pole Pole můžeme inicializovat jako každou jinou proměnnou při jejím vzniku. U pole je to ale o něco složitější. Musíme totiž vyjmenovat obsahy jednotlivých buněk. int int int int
pole1[5] = {1, 2, 3, 4, 5}; pole2[] = {1, 2, 3, 4, 5}; pole3[5] = {1, 2}; pole4[5] = {0};
Na první řádce kompletně inicializujeme pole s pěti buňkami. Na druhé řádce vytvoříme ekvivalentní pole s polem pole1, viz výše. Co se ale stane s polem pole3? Zde vyplníme pouze první dvě buňky, zbytek bude vynulován. Stejně tak pole4 bude kompletně vyplněné nulami.
Práce s polem Indexace Máme-li vytvořenou proměnnou typu pole, můžeme k jednotlivým buňkám přistupovat pomocí operátoru indexace nebo-li indexem v hranatých závorkách. Nesmíme ovšem zapomínat na to, že první buňka má index nula int pole[5] = {1, 2, 3, 4, 5}; int a = pole[0]; // první buňka pole, v a bude 1 int b = pole[1]; // druhá buňka pole, v b bude 2 int c = pole[5]; // chyba, saháme za konec pole!!
Na poslední řádce se pokoušíme číst buňku s indexem pět. To je samozřejmě chybně, protože pole má poslední buňku na indexu čtyři. Jazyk C nemá žádnou zabudovanou kontrolu mezí polí. V případě jako je výše, dojde k potenciálně nebezpečnému čtení paměti. To může způsobit pád programu nebo náhodně vrácená data.
Porovnávání polí Pole nelze jednoduše porovnávat, jako to jde s jednoduchými číselnými typy. Od následujícího kódu nelze očekávat korektní chování, pokud nám jde o srovnání obsahu polí: if (pole1 == pole2) // ...
Chceme-li srovnat obsahy polí, nezbude nám nic jiného, než vytvořit cyklus a porovnat buňku po buňce. Další možností je použít funkci int memcmp(const void *pole1, const void *pole2, size_t velikost)
z hlavičkového souboru string.h,, která srovná dva úseky paměti zadané délky a vrátí
podobně jako funkce strcmp() hodnotu menší než nula, nula, nebo větší než nula, pokud je první pole po bajtech menší, rovno, nebo větší než druhé pole.
Pole jako parametr funkce Pole lze předávat do funkce jako každou jinou proměnnou. Stačí pouze označit, že se jedná o pole párem hranatých závorek: void funkce (int pole[], int velikost)
Jako první parametr funkce funkce se očekává pole typu int. Ve druhém parametru předáváme délku pole. Délka pole se nedá jednoduše zjistit, a proto ji musíme předávat samostatně. S polem se v těle funkce pracuje jako s obyčejným lokálně vytvořeným polem.
Vícerozměrná pole Doteď jsme se zabývali pouze jednorozměrným polem. Jazyk C nás ale v dimenzích pole neomezuje. Dvourozměrné pole vytvoříme zadáním velikosti nadvakrát. int pole2d [3][3];
Zde jsme vytvořili dvourozměrnou matici 3x3. Vícerozměrná pole můžeme také inicializovat. Jelikož jsou pole v jazyce C ukládaná po řádkách, musíme inicializaci psát řádkově. int pole2d1 [3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; int pole2d2 [3][3] = {{1, 2, 3}}; int pole2d3 [3][3] = {{0}};
Jako v případě jednorozměrných polí, i zde můžeme část inicializace vynechat. Překladač zbytek doplní nulami. Pole pole2d3 bude tedy reprezentovat nulovou matici 3x3. Na libovolný prvek pole se dá dostat vícenásobnou indexací. int a = pole2d[1][1];
Stejně jako u jednorozměrných polí i zde se indexuje od nuly. Levý horní prvek matice má tedy index [0][0].
Pondělí 25. března Př. Porovnejte dvě pole a zjistěte, jsou-li shodná #include <stdio.h> #include <stdlib.h> int main() { int pole1[5]= {1,2,8,4,5}; int pole2 [5] = {1,2,3,4,5}; int i, shoda=1; for(i=0;i<5;i++) {if (pole1[i] != pole2[i]) { shoda=0; break; } }
}
if (shoda==1) printf("pole jsou shodna %d",shoda); else printf("pole nejsou shodna %d",shoda); return 0;
Př. Vytvořte pole deseti náhodných čísel #include <stdio.h> #include <stdlib.h> int main() { int pole [10], i; for (i=0; i<10; i++) { pole[i]= rand()%100; printf("%d\n ",pole[i]); } printf("\n"); return 0; }
//vybere čísla od 0 do 99