Programovanie v jazyku C - pole treba poorat...

Podobné dokumenty
Polia a matice v jazyku C. Michal Kvasnica

Programovanie v jazyku C - struktury a polia

Programovanie v jazyku C - ti to zratam...

Programovanie v jazyku C - funkcie a makra

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Programovanie v jazyku C - davaj argumenty

Programovanie v jazyku C - to chce dynamiku

- jak udělat konstantu long int: L long velka = 78L;

Základy programování (IZP)

Algoritmizace a programování

Programovanie I. Úvod do programovania Mgr. Stanislav Horal, Katedra informatiky, FPV, UCM

2 Datové typy v jazyce C

Základy programování (IZP)

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

Základy programování (IZP)

PROGRAMOVÁNÍ V C++ CVIČENÍ

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

Základy programování (IZP)

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje

Operační systémy. Cvičení 4: Programování v C pod Unixem

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

BI-PA1 Programování a Algoritmizace 1. Miroslav Baĺık, Ladislav Vagner a Josef Vogel. 7., 9. a 10. listopadu 2017

Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

Lekce 19 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Proměnná a její uložení v paměti

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Úroveň strojového kódu procesor Intel Pentium. Adresovanie pamäte

Strojový kód, assembler, emulátor počítača

Príklad ponuky: Riešenie: vrch. hodnota 3 hodnota 2 hodnota 1

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

int => unsigned int => long => unsigned long => float => double => long double - tj. bude-li:

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Ďalší spôsob, akým je možné vygenerovať maticu je použitie zabudovaných funkcií na generovanie elementárnych matíc.

Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru

Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky

IUJCE 07/08 Přednáška č. 1

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Množina čísel int stl-set-int.cpp

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

Funkční objekty v C++.

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

15. Príkazy vetvenia

Operační systémy. Cvičení 3: Programování v C pod Unixem

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. December 7, 2016

10 Práce s řetězci - pokračování

Dynamická alokácia pamäte a smerníky

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Kontrola väzieb výkazu Súvaha a Výkaz ziskov a strát Príručka používateľa

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Vstup a výstup datové proudy v C

Algoritmizace a programování

Lekce 9 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Základy programování (IZP)

Pracovné prostredie MS EXCEL 2003.

Algoritmizace a programování

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:

Programování v jazyce C pro chemiky (C2160) 7. Ukazatele, Funkce pro práci s řetězci

Standardní vstup a výstup

Úvod do programovacích jazyků (Java)

Formátové specifikace formátovací řetězce

FORMÁT VÝPISOV Z ÚČTU PRE AUTOMATICKÉ ZAÚČTOVANIE DO ÚČTOVNÍCTVA. Clearingový formát. Formát podpoľa sa vyjadruje pomocou číslic:

- tzv. standardní vstupní a výstupní proud (input / output stream)

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Programování v jazyce C

Práce s řetězci. IUJCE Přednáška č. 10. string.h. vrací: délku řetězce str (bez '\0')

Algoritmizace a programování

Řešení sady 1. Úvod do programování 1 Tomáš Kühr

Pointery II. Jan Hnilica Počítačové modelování 17

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

ZÁKLADY TEÓRIE GRAFOV

Zápis programu v jazyce C#

Zaciatok programovania na

Vytvorenie účtovnej knihy

Ako započítať daňovú licenciu

Import Excel Univerzál

ZÁPOČTOVÝ TEST. Zpracoval Vilém Závodný, #include "stdafx.h" #include "stdio.h"

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

Popis štruktúry výpisu vo formáte MT940. Legenda: Štruktúra záznamu MT940. Stĺpec Povinné/Nepovinné P povinné N nepovinné

Základy programování (IZP)

Ťahák - Základy jazyka Python

Jazyk C základní informace. Vlastnosti

IUJCE 07/08 Přednáška č. 6

Čo ak program potrebuje pamäť, ktorej veľkosť závisí od konkrétneho vstupu?

Mgr. Stanislav Fila, psychológ CPPPaP Banská Bystrica Centrum pedagogicko-psychologického poradenstva a prevencie (bývalá KPPP) Banská Bystrica

Import cenových akcií FRESH

Úrad pre dohľad nad zdravotnou starostlivosťou Žellova 2, Bratislava

Transkript:

CVIČENIE 3/13 (SW2) Programovanie v jazyku C - pole treba poorat... PrednaskaB: Operátory, pravidla vyhodnocování PrednaskaZ: Číselné typy, operátory, typové konstrukce, pole a struktury About zadefinovanie pojmu pole a jeho zakladne vlastnosti, jednorozmerne a viacrozmerne polia, staticke a dynamicke polia TODO: Priklad: Vypsat text tak, aby první písmeno každého slova bylo velké a místo více mezer mezi slovy vypsat jen jednu mezeru int main(int argc, char** argv) int c; int lastc = EOF; int veslove = 0; while( (c = getchar())!= EOF) if( c == ' ') // mezery if( lastc!= ' ') putchar( ' '); else // nemezera if( veslove) putchar( c); else putchar( toupper( c)); veslove = 1; if(! isalnum( c)) veslove = 0; lastc = c; return 0; // zacatek slova // zapamatuj znak

Priklad: Vypsat text tak, aby první i poslední písmeno každého slova bylo velké a místo mezer mezi slovy vypsat jen jednu mezeru POMOCÍ PŘEDCHOZÍHO PŘÍKLADU (minimální změnou předchozího příkladu) #include <ctype.h> int vyhled = EOF; // globalni promenna int get( void) // funkce nacte znak a vrati predchozi nacteny znak int c = vyhled; vyhled = getchar(); return c; int main(int argc, char** argv) int c; int lastc = EOF; int veslove = 0; get(); while( (c = get())!= EOF) // c je znak, ktery se zpracovava if( c == ' ') // mezery if( lastc!= ' ') putchar(' '); else // nemezera if( veslove && isalnum(vyhled)) // prostredek slova putchar( tolower(c)); else // zacatek nebo konec slova putchar( toupper( c)); veslove = 1; if (!isalnum( c)) veslove = 0; lastc = c; return 0; // zapamatuj znak

Basic knowledge pole je datova struktura zlozena z prvkov rovnakeho typu. niekolko vlastnosti: prvky pola sa VZDY indexuju od 0 prvky pola su VZDY rovnakeho typu, pricom typ moze byt jednym zo zakladnych (int, char, float, double) ale aj strukturovane (vlastne definovane typy, smerniky,...) priklad pouzitia: TYP x[pocet]; priklad staticky alokuje blok pamati pre pocet objektov typu TYP, pricom rozsah indexov je od 0 do pocet-1. Jednorozmerne pole jednorozmerne pole sa da inac nazvat vektor (premenna(a1, a2, a3,..) ) priklad pouzitia: int x[10]; x[0] = 5; x[9] = 7; x[10] = 1; // chyba - 10 nie je posledny prvok pola #define MAX 10 int x[max], y[max * 2], z[max + 1]; priklady definicii: int pole1[5] = 2, 4, 6, 8, 10 ; int pole2[] = 2, 4, 6, 8, 10 ; float pole3[5] = 1.2, 2.5, 8.4, 6.0, 4.7 ; double pole4[] = 1.2, 2.5, 8.4, 6.0, 4.7 ; specifickym typom jednorozmerneho pola je retazec - jednorozmerne pole typu char obsahujuce ako prvky pola znaky tvoriace retazec. retazec, pokial ma byt vypisany na obrazovku alebo ma pracovat s funkciami na pracu s retazcom, je potrebne ukoncit znakom '\0'. pre pouzitie osobitych funkcii pre pracu s retazcami sa pouziva kniznica string.h.

priklady pouzitia: char mesto[50]; char meno[] = "janko\0"; char meno2[] = 'b', 'a', 't', 'm', 'a', 'n', '\0' ; printf( "%s\n", meno ); Dvojrozmerne pole dvojrozmerne pole sa da prirovnat ku tabulke alebo ku matici. tabulka aj matica je specificka riadkami a stlpcami, preto dva rozmery (dvojrozmerne pole), ktore sa zadavaju, sa daju interpretovat ako riadok a stlpec. syntax: TYP x[riadky][stlpce]; priklad pouzitia: int tabulka[5][4]; int a[2][3] = 22,1,16,112,0,4 ; int b[][2] = 22,1,16,112,0,4 ; Examples Ex. 1: nacitat zo vstupu N cisiel a vypisat najvacsie z nich. #define MAX 100 int pole[max]; int pocet, i, cislo, najvacsi; printf( "zadaj pocet nacitavanych cisiel: " ); scanf( "%d", &pocet ); for( i = 0; i < pocet; i++ ) printf( "zadaj %d cislo: ", i+1 ); scanf( "%d", &cislo ); pole[i] = cislo; najvacsi = 0; /* zistit najvacsi */ printf( "najvacsi prvok je: %d\n", najvacsi ); getchar();

Ex. 2: modifikovat vysledny program z Ex. 1 a vypisat cisla v opacnom poradi. Ex. 3: nacitat zo vstupu obsah matice a vypisat ju a na konci kazdeho riadku vypisat jeho sucet. #define MAX 100 int matica[max][max+1]; int i, j; int riadkov, stlpcov, prvok; printf( "zadaj pocet riadkov a stlpcov matice: " ); scanf( "%d %d", &riadkov, &stlpcov ); // najprv maticu nacitame zo vstupu for( i = 0; i < riadkov; i++ ) for( j = 0; j < stlpcov; j++ ) printf( "zadaj prvok [%d][%d]: ", i+1, j+1 ); scanf( "%d", &prvok ); matica[i][j] = prvok; */ /* vyratame sucet kazdeho riadku a zapiseme ho do posledneho stlpca // vypiseme vysledok for( i = 0; i < riadkov; i++ ) for( j = 0; j < stlpcov+1; j++ ) printf( "%d ", matica[i][j] ); printf( "\n" ); getchar();getchar();

Ex. 4: zistite velkost nacitaneho retazca zo vstupu. #define MAX 100 char retazec[max]; int dlzka; printf( "napis retazec: " ); scanf( "%s", retazec ); dlzka = 0; /* zistime dlzku retazca */ printf( "dlzka retazca je: %d\n", dlzka ); getchar();getchar(); Ex. 5: zo vstupu nacitajte retazec. vypiste na obrazovku pocet znakov v tomto retazci a pocet cislic, ktore sa v tomto retazci nachadzaju.

Homework nepovinna implementacia Hangman-a. ukazka implementacie : #include <string.h> #define MAX 50 char slovo[] = "jahodka"; char uhadnute[max] = ""; char koniec = 'n', nasiel = 'n'; char tip; int tvoja_smrt = 5, i, pozicia; // nakreslime podtrhnitka na zaklade dlzky slova for( i = 0; i < strlen(slovo) - 1; i++ ) uhadnute[i] = '_'; // hlavna slucka while( (koniec == 'n') && (tvoja_smrt!= 0) ) // vypiseme uhadnute a nacitame hracov tip printf( "%s\npocet pokusov: %d\ntvoj tip: ", uhadnute, tvoja_smrt ); tip = getchar();getchar(); // zistime, ci nieco nasiel nasiel = 'n'; for( i = 0; i < strlen(slovo); i++ ) if( slovo[i] == tip ) nasiel = 'a'; uhadnute[i] = tip; // ak nic nenasiel, znizime mu zivot if( nasiel == 'n' ) tvoja_smrt--; // co ak uz uhadol secko? if( strcmp( uhadnute, slovo ) == 0 ) koniec = 'a'; // poplasne spravy na koniec if( tvoja_smrt == 0 ) printf( "je mi luto - si trapny. slovo bolo %s\n", slovo ); else printf( "gratulujem - si to zvladol\n" ); getchar(); getchar();