void countWords()
{
ifstream inFile;
inFile.open("ustava.txt"); // otevřu soubor pro čtení
string word;
while (inFile >> word) {
// do fancy stuff with word
}
}
- otevření souboru pro čtení
#include <iostream>
#include <fstream>
ifstream odkazNaSoubor;
odkazNaSoubor.open("vstupniSoubor.txt");- otevření souboru pro zápis
#include <iostream>
#include <fstream>
ofstream odkazNaSoubor;
odkazNaSoubor.open("vystupniSoubor.txt");- zavření souboru
odkazNaSoubor.close();- přepis souboru
if (inFile.is_open()) {
while ( getline (inFile, line) ) {
outFile << line;
}
}string do_replace( string const & in, string const & from, string const & to )
{
return regex_replace( in, std::regex(from), to );
}- použití:
danyText = do_replace(danyText, "co", "čím");- funkce
int divide3(int a, int b, int c):
cout << divide3(25, 5, 5);> 1- funkce
int sumAll(int arr[], int len), sečte všechny prvky pole:
int len = 5;
int a[len] = {2, 4, 6, 1, 4};
cout << sumAll(a, len);> 17- funkce
int multiplyAll(int arr[], int len), snásobí všechny prvky pole:
int len = 5;
int a[len] = {2, 4, 6, 1, 4};
cout << multiplyAll(a, len);> 192- funkce
int sumup3(int a, int b, int c):
cout << sumup3(4, 5, 10);> 19- funkce
int multiply(int a, int b, int c):
cout << multiply(4, 5, 10);> 200- funkce, co vypíše n-té číslo z pole
intů:void printVal(int arr[], int index, int arrLen)
int arr[5] = {2, 4, 12, -1, 5};
printVal(arr, 2, 5);
printVal(arr, 0, 5);> 12
> 2- uprav funkci
printVal(), co vypíše celé pole OD n-tého čísla po konec:void printVal(int arr[], int index, int arrLen)
int arr[5] = {2, 4, 12, -1, 5};
printVal(arr, 2, 5);
printVal(arr, 0, 5);> 12 -1 5
> 2 4 12 -1 5- uprav fci
printVal(), aby vypisovala pole v opačném pořadí
Skutečnější příklad rekurze: zeptám se na malinko jednodušší problém někoho jiného a pak dám dohromady odpověď
- Násobení čísel přičítáním:
int multiply(int multiplicand , int base)- Myšlenka: 4 × 6 = 6 + 6 + 6 + 6 (tzn. čtyřikrát sečteno číslo 6)
- Obecně: 5 × 13 = 13 + 4 × 13 = 13 + 13 + 3 × 13 = ... = 13 + 13 + 13 + 13 + 13
- Příklad:
multiply(3, 6);> 18- Sčítání přičítáním jedničky:
int addBy1(int amount, int base)- Myšlenka: 4 + 6 = 1 + (3 + 6) = 1 + 1 + (2 + 6) = 12 (tzn. čtyřikrát přičtena jednička)
addBy1(3, 6);> 9-
Faktoriál:
int factorial(int base)- Faktorál n je součin n a všech přirozených čísel menších než n:
- Faktoriál 7 = 7 × 6 × 5 × 4 × 3 × 2 × 1 = 7!
- Faktoriál 10 = 10 × 9 × 8 × 7 × 6 × 5 × 4 × 3 × 2 × 1 = 10!
-
Najít maximum v poli:
int maxArray(int arr[])- Zamyslet se nad rychlostí vyhledávání (kolikrát musím porovnávat?)
- vytvořit fci na vypsání pole
void printArr(int arr[])
- dodělat fce z minulé hodiny alespoň po 4. (
void drawTriangle(int smallSide)) - ??? MYSTERY ???
- naprogramovat
void drawLine(int length)
drawLine(5);> #####- naprogramovat
void drawSquare(int side)
drawSquare(3);> ###
> ###
> ###- naprogramovat
void drawRectangle(int a, int b)
drawRectangle(2, 4);> ##
> ##
> ##
> ##- naprogramovat
void drawTriangle(int smallSide)
drawTriangle(4);> #
> ##
> ###
> ####- naprogramovat
void drawTriangle2(int smallSide)
drawTriangle2(4);> ####
> ###
> ##
> #- naprogramovat
void drawCross(int size)
drawCross(5);> # #
> # #
> #
> # #
> # #- naprogramovat
void drawCircle(int radius)
drawRadius(5);> ##
> ######
> ######
> ##Vytvoření proměnných celeCislo, desCislo, vDesCislo, znak a retezec:
int celeCislo = 5; // datovy typ int znaci cele cislo
float desCislo = 3.141592; // datovy typ float znaci desetinne cislo
double vDesCislo = 2.718281; // dat. typ double pojme velmi male i velmi velka cisla
char znak = 'r';
string retezec = "Klidne cela veta."; // dat. typ na mnoho znaku, potreba #include <string>
Slouží k větvení kódu ‒ když chci, aby se kus kódu spustil v závislosti na proměnných | obecně:
if (podmínka1) {
když *platí* podmína1 ‒> proveď tento blok
} else if (podmínka2) {
když *platí* podmínka2 ‒> proveď tento blok
} else {
když *neplatí* ani jedna podmínla ‒> proveď tento blok
}
Konkrétní příkaz 'if' pro rozhodnutí, jestli je číslo kladné, nebo záporné:
if (a > 0) {
cout << "Číslo je kladné." << endl;
} else if (a < 0) {
cout << "Číslo je záporné." << endl;
} else {
cout << "Číslo je nula." << endl;
}Když chci něco dělat opakovaně (a dokonce s různými čísly), použiji for | obecně:
for (ridici promenna; podminka; zmena) {
co se ma delat;
}
Konkrétní příklad for pro vypsání i začínající na hodnotě zacatek a končící před hodnotou konec:
for (int i = zacatek; i < konec; i++) {
cout << i << endl;
}
Funkce slouží k osamostatnění kódu. Je to krabička, která dostane 0 až mnoho proměnných jako vstup a nevrátí nic, nebo jednu proměnnou (výstup).
Musime předem říct, jakého datového typu co bude. Obecně:
typ_co_fce_vraci jmenoFce (typProm1 vstupniPromenna1, typProm2 vstupniPromenna...)
{
co se ma delat;
return vysledekFce;
}
Konkrétní příklad funkce soucin co na vstupu dostane 2 celá čísla (typ int) a vrátí na výstupu jejich součin (typ int):
int soucin (int cislo1, cislo2)
{
int vysledek = cislo1 * cislo2;
return vysledek;
}
Slouží pro primitivní načítání vstupu od uživatele a výpis dat skrze konzoli | obecně:
#include <stdio>
using namespace std;
cin >> prměnná; // načtení hodnoty z konzole do proměnné
cout << co vypsat << co dál vypsat << ... << vypiš si toho kolik chceš; // výpis textu, i proměnnýchKonkrétně příklad načtení čísla a písmena a jehich následné vypsání:
int cislo;
char znak;
cin >> cislo;
cin >> znak;
cout << "Načten znak " << znak << " a číslo " << cislo << endl; // endl odřádkuje ("ENTER")
