IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – 9. diel - Textové reťazce v jazyku C ++

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Jaroslav Dubánek:14.8.2017 8:26

Dvě otázky:
1.) Co je podřetězec?
2.) Poslední kód nechápu. Co se porovnává? První písmeno, nebo součet hodnot všech znaků dle pozice v abecedě?
Navíc mi ten kód po rekonstrukci ve VS nefunguje, dokud na konec nepřidám cin.get();

Odpovedať
14.8.2017 8:26
Život je ve skutečnosti strašně jednoduchej.
Avatar
Marek Uhlik
Člen
Avatar
Odpovedá na Jaroslav Dubánek
Marek Uhlik:14.8.2017 8:59

Podřetězec je řetězec který se skládá jen z části nějakého jiného řetězce.

string uvod = "Hello World";
string pozdrav = uvod.substr(0,5);

Tak v pozdravu budeš mít "Hello" což je podřetězec řetězce uvod.

Řetězce se vždycky porovnávají podle prvního písmena. Když začínají na stejné písmeno jde to na druhé prostě jak se to dělá normálně.
Nefunguje ti nebo to jen proběhne rychle že si toho ani nevšimneš ?

 
Odpovedať
14.8.2017 8:59
Avatar
Odpovedá na Marek Uhlik
Jaroslav Dubánek:14.8.2017 9:08

Funguje to tak rychle, že si toho ani nevšimnu, protože se to automaticky ukončí. Mě zajímá ten rozdíl proč to tady v kódu není potřeba a VS to potřebuje.
Je to skrytej tréning na troubleshooting? :D

Editované 14.8.2017 9:09
Odpovedať
14.8.2017 9:08
Život je ve skutečnosti strašně jednoduchej.
Avatar
Odpovedá na Jaroslav Dubánek
Jaroslav Dubánek:14.8.2017 9:10

Nedostatečný vyjádření, tenhle kód:

#include <iostream>
#include <string>
using namespace std;

int main(void) {

string prvni = "Hello";
string druhy = "World";
bool porovnani= prvni < druhy;
cout << porovnani;
        return 0;
}
Odpovedať
14.8.2017 9:10
Život je ve skutečnosti strašně jednoduchej.
Avatar
Marek Uhlik
Člen
Avatar
Odpovedá na Jaroslav Dubánek
Marek Uhlik:14.8.2017 9:27

Noo protože ve VS se ti to ukončí ,ale jestli si pamatuji NetBeans tak tam se to sice ukončilo ,ale ten výstup tam zůstal dokud se nezkompiloval další program.A tady myslím že to je stejné.
A s tím porovnáváním ikdyz to vypadá a píšou podle abecedy tak se to porovnává podle ASCII hodnoty znaku takže "A"=65 a "a"=97 tudíž když 65<97 vrátí to true

Editované 14.8.2017 9:29
 
Odpovedať
14.8.2017 9:27
Avatar
Odpovedá na Marek Uhlik
Jaroslav Dubánek:14.8.2017 10:07

Jasný, díky.

Odpovedať
14.8.2017 10:07
Život je ve skutečnosti strašně jednoduchej.
Avatar
Elektron
Člen
Avatar
Odpovedá na Jaroslav Dubánek
Elektron:22.10.2017 19:35

Raději používej Code Blocks než VS.

 
Odpovedať
22.10.2017 19:35
Avatar
Odpovedá na Elektron
Jaroslav Dubánek:23.10.2017 18:01

Už jsem na něj přešel. Máš pravdu, je to lepší.

Odpovedať
23.10.2017 18:01
Život je ve skutečnosti strašně jednoduchej.
Avatar
Miroslav Jaroš:18.11.2018 18:03

Pohral som sa s find() a nieco mi nesedi. Ak pouzijem taketo nieco :

int pozicia = text.find("x");

a znak x mi v stringu text nenajde tak hodnota nie je vyssia ako hodnota posledneho indexu, ale -1. Nechal som si to vypisat do konzoly.
Vrtal som sa v tom, lebo to porovnavanie

if (pozicia < text.length())

mi vo VS sposobovalo varovanie:
Warning C4018 '<': signed/unsigned mismatch
Program, ale napriek tomu fungoval spravne. Aj ked -1 je vlastne mensie, program ho v tej podmienke bral ako vacsie.
To koli tomu, ze porovnavam signed(int) a unsigned(length())? Preto mi dalo, ze -1 je vacsie ako kladne cislo?
Je logicke, ze length() vrati vzdy unsigned,kedze zaporna dlzka nemoze byt, tak ani nie je dovod tam davat taky datovy typ.
Je dobre to takto pouzivat ked dostavam od VS varovanie a spravne by ta podmienka nemala byt splnena? Uvazoval som, ze to pretypujem, ale kdze to funguje, nechal som to tak.
Dakujem.

 
Odpovedať
18.11.2018 18:03
Avatar
Odpovedá na Miroslav Jaroš
Miroslav Jaroš:18.11.2018 18:10

Len chcem este doplnit, ak to bolo nezrozumitelne, ze ak je ta pozicia -1, cize znak x nenaslo, tak to if, co som pisal, neprebehne a pokracuje na else. Aj ked logicky by malo prebehnut to co je v if(-1 je mensie ako dlzka toho textu).

 
Odpovedať
18.11.2018 18:10
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!