4. cvičení
Příklad: řešení kvadratické rovnice
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
// a*x*x + b*x + c = 0
double a = 0;
double b = 0;
double c = 0;
cout << "Zadej koeficienty a,b,c pro kvadratickou rovnici: ";
cin >> a >> b >> c;
cout << "Zadane koeficienty jsou: " << a << " " << b << " " << c << endl;
if (a != 0) {
double diskriminant = b*b - 4*a*c;
if (diskriminant > 0) {
double x1 = (-b + sqrt(diskriminant)) / (2*a);
double x2 = (-b - sqrt(diskriminant)) / (2*a);
cout << "koreny jsou " << x1 << " a " << x2 << endl;
}
else if (diskriminant == 0) {
double x = -b / (2*a);
cout << "dvojnasobny koren je " << x << endl;
}
else {
cout << "rovnice nema zadne realne koreny" << endl;
}
}
else {
if (b != 0) {
double x = - c / b;
cout << "reseni je " << x << endl;
}
else if (b == 0 && c == 0) {
cout << "reseni jsou vsechna realna cisla" << endl;
}
else {
cout << "rovnice nema reseni" << endl;
}
}
return 0;
}
Přehled matematických funkcí dostupných ve standardní knihovně lze nalézt na stránce cppreference.com. Nezapomeňte na include správného hlavičkového souboru!
Pole v jazyce C++
Pole je základní datová struktura sloužící k uložení \(N\) prvků stejného datového typu. Počet prvků \(N\) může být buď konstanta nebo hodnota nějaké proměnné. Deklarace pole se provede podobně jako deklarace proměnné, pouze za název proměnné se do hranatých závorek napíše počet prvků pole:
int pole[7];
Nebo s délkou určenou hodnotou proměnné:
int n = 7;
int pole[n];
Jednotlivé prvky pole jsou v paměti počítače uloženy těsně za sebou,
takže pro přístup k prvkům pole stačí znát adresu prvního prvku a celkový počet
prvků. Pro přístup k prvkům pole se opět používají hranaté závorky, např.
pole[i]
představuje i
-tý prvek pole. Indexování prvků funguje tak, že od
základní adresy pole se posuneme o daný počet prvků (hodnota zadaná v hranatých
závorkách) doprava – první prvek má tedy index 0 a poslední prvek má index
n - 1
.
Stejně jako v případě normálních proměnných i prvky pole je nejprve potřeba
inicializovat. Např. pro vynulování všech prvků pole délky n
lze použít
cyklus:
for (int i = 0; i < n; i++) {
pole[i] = 0;
}
Podobně lze přečíst hodnoty prvků z terminálu pomocí funkce scanf
:
cout << "Zadej " << n << " cisel:" << endl;
for (int i = 0; i < n; i++) {
cout << i << ". cislo: ";
cin >> pole[i];
}
Nebo vypsat zadané hodnoty pomocí funkce printf
:
for (int i = 0; i < n; i++) {
cout << pole[i] << " ";
}
cout << endl;