Příklady v jazyku C – část 3

Slides:



Advertisements
Podobné prezentace
A1PRG - Programování – Seminář Ing. Michal Typová konverze, oblast platnosti, paměťové třídy 9 Verze
Advertisements

Standardní knihovní funkce pro práci s textovými řetězci
Programování v C jazyku - SEMINÁŘ
Přednáška 11 Jiří Šebesta
Racionální čísla, operátory, výrazy, knihovní funkce
Programování 2 Cvičení 5.
Základy jazyka C.
Příkazy Přednáška č. 4. Příkazy (statements)  Příkaz – dílčí krok programu (část kódu – zpravidla jeden řádek)  Program – posloupnost příkazů  Příkazy.
Pole, ukazatele a odkazy
Algoritmy I Cvičení č. 2. Cíl hodiny Datové typy a přetypování (int, float, double, bool, char, long, short) Konstanty – Celočíselné Desítkové – 15, 0,
Preprocess Úvod do tvorby funkcí Princip preprocesoringu Direktivy preprocesoru Podmíněný překlad Základy tvorby funkcí Zjednodušený popis principu předávaní.
Cvičení 2 Proměnné(jednoduché a složené) a konstanty První program Zápis výrazů.
Programování v C++ Cvičení.
Algoritmy I Cvičení č. 3.
Algoritmizace a programování
Druhé cvičení Vytváření identifikátorů Datové typy
Větvení cykly J a v a Začínáme programovat Lucie Žoltá.
Datové typy 6 A1PRG - Programování – Seminář
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro práci se soubory 13 Verze
OSNOVA: a) Řetězce v C b) Funkce stdio.h pro řetězce c) Funkce string.h pro řetězce d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
Jednoduché datové typy
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
C – strukturované příkazy
Seminář C cvičení Obsluha výjimek Ing. Jan Mikulka.
Příklady v jazyku C – část 6
DEKLARACE PROMĚNNÝCH A KONSTANT
A1PRG - Programování – Seminář Ing. Michal Ukazatele a pole 10 Verze
Cvičení.
Vstupy a výstupy znaků a) Terminálový vstup a výstup ( getchar(), putchar() ) Přečtěte znak pomocí systémové funkce getchar() a vypište ho pomocí putchar().
Příklady v jazyku C – část 4
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro vstup a výstup 12 Verze
Spojové struktury BI-PA1 Programování a algoritmizace 1, ZS
Příklady v jazyku C – část 2
C – cyklus while Mgr. Lenka Švancarová.
Napište program v C pro výpočet plochy obdélníka se stranami A=3 a B=2. Výsledek vytiskněte s patřičným komentářem na obrazovku formátovým příkazem printf.
OSNOVA: a) Příkazy pro větvení b) Příkazy pro cykly c) Příkazy pro řízení přenosu d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
OSNOVA: a)Funkce – úvod b) Hlavičky funkcí c) Rekurze funkcí d)Knihovny funkcí e)Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
Realloc a qsort examples BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
C – switch Mgr. Lenka Švancarová. switch syntaxe switch (výraz) { case hodnota_1: příkaz(y)_ve_větvi_1; case hodnota_2: příkaz(y)_ve_větvi_2; … default:
Rozklad problému na podproblémy, rekurze
Začínáme vážně programovat Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů.
POSLOUPNOST úkol 1_41. ZADÁNÍ Sestavte program, který doplní tabulku nepřímé úměrnosti pro hodnoty proměnné x = 1, …, n. Nepřímá úměrnost je zadána uživatelem.
STRING A UKAZATELE. Co to je řetězec? Řetězec v Javě je samostatný objekt. Je konstantní, co znamená, že jednou vytvořený řetězec nelze změnit. Chceme-li.
C – jak na procedury Mgr. Lenka Švancarová. C – procedury #include int main() { printf("Ahoj\n"); return(0); } #include void pozdrav(void) { printf("Ahoj\n");
Příklady v jazyku C – část 1. Výstupy pomocí printf. printf(" Tisk textu \n v apostrofech \n ") ; p=10; printf("%d\n", p) ; /* tisk konstanty */ printf("Tisk.
Příklady v jazyku C – část 8. Napište program, který inicializuje 2-rozměrné pole uživatele (5 řádků, 2 sloupce) a naplní ho hodnotami (první sloupec.
Vazby dynamických proměnných,databázové systémy Přednáška č. 10.
Ukazatele, řetězce Přednáška č. 3. Ukazatele  Ukazatel (pointer) – typ o velikosti 4 bajty (v 32bit. systémech) pro uložení adresy objektu na který ukazuje.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Příklady v jazyku C – část 2
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Příklady v jazyku C – část 2
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část I.
C – procedury Mgr. Lenka Švancarová.
C – if Mgr. Lenka Švancarová. if vývojový diagram Podmínka Příkaz(y) Podmínka Příkaz(y) Úplné větveníNeúplné větvení ++--
C – cyklus do-while Mgr. Lenka Švancarová.
ROOT
Funkce, intuitivní chápání složitosti
Pokročilé datové typy (struktury, unie, dynamické proměnné)
Funkce Přednáška č. 5. Funkce (functions)  posloupnost příkazů uvedená hlavičkou  využití – opakovaně volaná sekvence – strukturování programu – ošetření.
Programování KONSTANTY, ČTENÍ PO JEDNOM ZNAKU GETCHAR() FORMÁTOVANÝ VÝSTUP POMOCÍ PRINTF, VÝVOJOVÉ DIAGRAMY, CYKLY.
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY Datové typy a operátory Základní programové.
Programování OPERÁTOR SIZEOF, FUNKCE, POLE JAKO PARAMETRY FUNKCÍ ERIK KRÁL.
Počítače a programování 2
Programovací jazyk C Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
Funkce výstupu (2) Funkce printf: deklarována v: stdio.h
Opakování ze 3. cvičení deklarace proměnných výpis na monitor (výstup)
Proměnné (1) Proměnná: Definice proměnných:
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Transkript prezentace:

Příklady v jazyku C – část 3

Upravte pomocí explicitní typové konverze dělení pro i=5 a j=2 podíl f=i / j tak, aby výsledek podílu byl 0,5 : #include <stdio.h> #include <stdlib.h> int main() { int i, j; float f; i = 5, j = 2; /* pouziti operatoru carky */ f = (float) i / j; printf("Typova konverze - 1. moznost: %f\n", f); f = i / (float) j; printf("Typova konverze - 2. moznost: %f\n", f); f = (float) i / (float) j; printf("Typova konverze - 3. moznost: %f\n", f); f = (float) (i / j); printf("Explicitni typova konverze - chybny zpusob: %f\n", f); f = i / j; printf("Implicitni typova konverze - chybny zpusob: %f\n", f); system("PAUSE"); }

Formát čísel a typová konverze Formát čísel a typová konverze. Jaké budou výsledky zobrazení a číselné hodnoty ? #include <stdio.h> #include <stdlib.h> int main(void) { float v,y=25; int x; printf("%d\n\n",5/2); v=(float)5/2; x=y/4; printf("%10.2f\n",v); printf("%010.2f\n",v); printf("%+10.2f\n",v); printf("%-10.2f\n",v); printf("%e\n",v); printf("%g\n\n",v); printf("%d\n",5%2); printf("%d\n",x); printf("%d\n",4/2); printf("%d\n",4%2); system("PAUSE"); return 0; }

Napište program , ve kterém budou příkazy a zdůvodněte dosažené výsledky: printf("%d\n", i == 8); printf("%d\n", i = 8); #include <stdio.h> #include <stdlib.h> int main() { system("PAUSE"); return 0; }

Napište program , ve kterém zobrazíte velikost proměnných typů int, short int, long int, long long int, float, double, long double: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { printf("%d\n\n",sizeof(int)); printf("%d\n\n",sizeof(short int)); printf("%d\n\n",sizeof(long int)); printf("%d\n\n",sizeof(long long int)); printf("%d\n\n",sizeof(float)); printf("%d\n\n",sizeof(double)); printf("%d\n\n",sizeof(long double)); system("PAUSE"); return 0; }

Napište program , který přečte (scanf) 2 celá čísla 5 a 8 a pomocí ternálního operátoru ( ? : ) vytiskne: Menší číslo: 5 Větší číslo: 8 #include <stdio.h> #include <stdlib.h> int main() { int i, j; printf("Zadej dve cela cisla: "); scanf("%d %d", &i, &j); printf("Mensi cislo: %d\n", (i < j) ? i : j); printf("Vetsi cislo: %d\n", (i > j) ? i : j); system("PAUSE"); }

Napište program , který ověří činnost příkazu skoku “goto” #include <stdio.h> #include <stdlib.h> int main(void) { goto nav1; printf("Toto se nevytiskne"); nav1: printf("Toto se vytiskne\n\n"); system("PAUSE"); return 0; }

Napište program , který s pomocí příkazu skoku “goto” a podmíněného příkazu if vytiskne čísla od 1 do 10. #include <stdio.h> #include <stdlib.h> int main(void) { int i; i = 1; znovu: printf("%d ", i); i++; if(i<10) goto znovu; system("PAUSE"); return 0; }

Napište program ,který přečte číslo mezi 1 až 4 a vypíše toto číslo slovně. Použijte switch příkaz. Pokud bude číslo mimo zadaný interval, napíše text "Nerozpoznané číslo ". #include <stdio.h> int main(void) { int i; printf("Zadej cislo mezi 1 a 4: "); scanf("%d", &i); switch(i) { case 1: printf("\njedna\n"); break; case 2: printf("\ndva\n"); case 3: printf("\ntri\n"); case 4: printf("\nctyri\n"); default: printf("\nNerozpoznané cislo\n"); getchar(); return 0; }

Napište program ,který spočte počet dní mezi dvěma datumy. #include <stdio.h> int main(void) { int y1,y2,m1,m2,d1,d2,c1,c2,l1,l2,b,s,p,i; int fak1,fak2; int m[12]; m[0] = 31; m[1] = 28; m[2] = 31; m[3] = 30; m[4] = 31; m[5] = 30; m[6] = 31; m[7] = 31; m[8] = 30; m[9] = 31; m[10]= 30; m[11]= 31; printf("\n\nZadej prvni datum DD MM RRRR: "); scanf("%d %d %d",&d1,&m1,&y1); printf("\n\nZadej druhy datum DD MM RRRR: "); scanf("%d %d %d",&d2,&m2,&y2); c1=0; for (i=0;i<=m1-1-1;i++) c1=c1+m[i]; /* spocitani dnu v roce od zac.roku v poc.roce */ if((y1%4==0)&&(m1>2)) c1=c1+1; /* osetreni prestupneho roku v pocatecnim roce */ l1=c1+d1; c2=0; for (i=0;i<=m2-1-1;i++) c2=c2+m[i]; /* spocitani dnu v roce od zacatku roku v koncovem roce */ if((y2%4==0)&&(m2>2)) c2=c2+1; /* osetreni prestupneho roku v koncovem roce */ l2=c2+d2; b=(y2-y1)/4; /* pocet prestupnich roku */ s=(y2-y1)*365+b; /* pocet dnu v letech mezi pocatecnim a koncovym rokem */ p=s+l2-l1; printf("Pocet dni mezi temito datumy = %d \n\n",p); getchar(); return 0; }

Napište program , který přečte 2 znaky z rozsahu 0 až 9 nebo A až F Napište program , který přečte 2 znaky z rozsahu 0 až 9 nebo A až F. Tyto 2 znaky považujte za 1 hexadecimální číslo a to pak vypište dekadicky. #include <stdio.h> int main(void) { int c1, c2, i; printf("Zadejte hexadecimalni cislo (00 az FF): "); c1 = getchar(); c2 = getchar(); if (c1 >= '0' && c1 <= '9') i = 16 * (c1 - '0'); else /* predpokladame, ze je cislo zadane velkymi pismeny a ze je v povolenem rozsahu */ i = 16 * (c1 - 'A' + 0xA); if (c2 >= '0' && c2 <= '9') i += c2 - '0'; i += c2 - 'A' + 0xA; printf("Dekadicka hodnota je: %d\n", i); getchar(); return 0; }

K rozhodnutí použijte podmíněný příkaz if-else . Přečtěte znak, a není-li to písmeno ani číslice, vytiskněte text “interpunkční znak” , jinak vytiskněte text “alfanumerický znak”. K rozhodnutí použijte podmíněný příkaz if-else . #include <stdio.h> int main(void) { int c; printf("Zadej jeden znak: "); c = getchar(); if (c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z') printf("Alfanumericky znak\n"); else printf("Interpunkcni znak\n"); getchar(); return 0; }

#include <stdio.h> Ověřte,že podmínky if( výraz != 0 ) a if ( výraz ) a stejně tak if( výraz == 0 ) a if ( !výraz ) mají stejnou funkci #include <stdio.h> #include <stdlib.h> int main() { int vyraz; printf("Splnene podminky:\n"); /* nulova hodnota */ vyraz = 0; if (vyraz != 0) printf("if (%d != 0)\n", vyraz); if (vyraz) printf("if (%d)\n", vyraz); if (vyraz == 0) printf("if (%d == 0)\n", vyraz); if (!vyraz) printf("if (!%d)\n", vyraz); putchar('\n'); system("PAUSE"); return 0; }

Přečtěte znaky až do “\n“ a spočítejte počet velkých a malých písmen Přečtěte znaky až do “\n“ a spočítejte počet velkých a malých písmen. Ostatní znaky neberte v úvahu. Použijte cyklus while. #include <stdio.h> int main(void) { int c, /* znaky se ctou do int !!! */ mala = 0, /* citac pro mala pismena */ velka = 0; /* citac pro velka pismena */ printf("Zadavej znaky a zadavani ukonci <Enter>\n"); while ((c = getchar()) != '\n') { if (c >= 'A' && c <= 'Z') velka++; if (c >= 'a' && c <= 'z') mala++; } printf("\nBylo precteno:\n %d malych pismen\n %d velkych pismen\n", mala, velka); getchar(); return 0;

Napište program,který přečte n čísel z klávesnice (n se zadá také z klávesnice).Pro každý vstup vypište: Zadej 1. číslo. Z načtených čísel určete, kolik jich leží v intervalu <25;38>. Použijte cyklus for. #include <stdio.h> int main(void) { int n, /* pocet cisel celkem */ v_interv = 0, /* pocet cisel v intervalu */ i, j; printf("Zadej pocet cisel: "); scanf("%d", &n); for (i = 1; i <= n; i++) { printf("Zadej %d. cislo: ", i); scanf("%d", &j); if (j >= 25 && j <= 38) v_interv++; } printf("\nBylo precteno %d cisel v intervalu <25, 38>\n", v_interv); getchar(); return 0;

Napište program,který vypočte faktoriál. Použijte typ long int #include <stdio.h> int main(void) {long int n, /* stupen faktorialu */ fakt = 1, /* hodnota faktorialu */ i; printf("Zadej stupen faktorialu: "); scanf("%ld", &n); for (i = 2; i <= n; i++) { fakt *= i; } printf("\nFaktorial cisla %ld je %ld\n", n, fakt); getchar(); return 0;

Napište program,který vypisuje přirozená čísla – tj. čísla {1,2,3, Napište program,který vypisuje přirozená čísla – tj. čísla {1,2,3,...}, které nabývá proměnná i<20 (pomocí příkazu for). Vykoušejte příkazy continue (i>=10) a break (i>=15) . #include <stdio.h> int main(void) { int i; printf("\nTest prikazu break a continue\n"); for (i = 1; i < 20; i++) { printf("\n%d ", i); if (i >= 15) { printf("break\n"); break; } if (i >= 10) { printf("continue "); continue; printf("posledni prikaz cyklu for"); getchar(); return 0;

Napište program,který přečte 2 kladná reálná čísla f a g a vypíše všechna sudá čísla v intervalu <f,g>. #include <stdio.h> int main(void) { double f, g; int i, d, /* dolni mez */ h; /* horni mez */ printf("Zadej dve realna kladna cisla: "); scanf("%lf %lf", &f, &g); /* nalezeni horni a dolni meze */ d = (f < g) ? f : g; h = (f >= g) ? f : g; /* zaokrouhleni na nejblizsi vyssi cele sude cislo */ d += (d % 2) ? 1 : 0; for (i = d; i <= h; i += 2) printf("%4d ", i); printf("\n"); getchar(); return 0; }