IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Lukas
Člen
Avatar
Lukas:10.11.2016 15:12

Zdravim potreboval by som mensiu radu...som zaciatocnik a riesim ulohu, ze uzivatel zada 3 lubovolne slova a ono ich porovna a vypise dlzku... to problem nie je ale v zadani mam ze ak zada len 2 alebo 1 slovo program vypise chybu problem je ze slova musia byt zadane v jednom riadku a oddelene medzerou skusal som to cez cin ale ten vzdy caka aj na to tretie slovo, getline myslim ze by nebolo rozumne pouzit kedze potrebujem tie slova v osobitnych premennych...
Poradil by mi niekto ako teda nacitat slovo s dlzkou 0 resp len so znakom enteru?

 
Odpovědět
10.11.2016 15:12
Avatar
mvtrader64
Člen
Avatar
mvtrader64:10.11.2016 15:32

string vstup;
getline(cin,vstup);

a mas nacitany cely retazec. Zisti pocet medzier, ak su dve, tak je vstup OK.
Nepotrebujes 3 premenne, lebo mozes v cykle porovnavat znaky retazca, napr. vstup[0]==vstup[5] atd.

 
Nahoru Odpovědět
10.11.2016 15:32
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Lukas
DarkCoder:10.11.2016 21:44

Co třeba využít argumentů funkce main(), jednoduchým testem určíš správný počet argumentů, ve tvém případě se jedná o slova, se kterými dále pracuješ. Pro zjištění délky řetězce využiješ knihovní funkci strlen(), pro lexikografické porovnání použiješ funkci strcmp(). Oboje funkce se nachází ve string.h. Pozor, řetězec obsahující znak '\r' není řetězec s nulovou délkou.

Nahoru Odpovědět
10.11.2016 21:44
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Odpovídá na Lukas
Libor Šimo (libcosenior):11.11.2016 7:33
#include <iostream>
#include <cstring>

using namespace std;

int main(void)
{
    string slova;
    int i, j = 0;

    cout << "Zadaj tri slova oddelene medzerou a potvrd entrom!" << endl;
    getline(cin, slova);
    for(i = 0; i < slova.length(); i++) {
        if (slova[i] == ' ') {
            j++;
        }
    }

    if (j < 2 || j > 2) {
        cout << "Nespravny pocet slov!" << endl;
        return 1;
    }
    return 0;
}
Nahoru Odpovědět
11.11.2016 7:33
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.