C++: Načítanie neznámeho počtu čísel v riadku (konzola) – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

C++: Načítanie neznámeho počtu čísel v riadku (konzola) – C / C++ – Fórum – Programujte.comC++: Načítanie neznámeho počtu čísel v riadku (konzola) – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Mino
~ Anonymní uživatel
2 příspěvky
4. 8. 2016   #1
-
0
-

Mám na vstupe (konzola) neznámy počet čísel oddelených medzerami - v jednom riadku. Prosím, poraďte mi nejaký jednoduchý spôsob, ako načítam tieto čísla, až kým sa nedostanem na koniec riadku.

V Pascale:

while (not eoln) do
begin
  ...
end;

Mocná vďaka!

Nahlásit jako SPAM
IP: 178.40.191.–
Reklama
Reklama
hlucheucho+10
Posthunter
4. 8. 2016   #2
-
0
-

C nebo C++?

V C++ načteš řádek jako string a pak ho rozdělíš. Použiješ metody find a substring. Vždy prohledávej neprohledanou část řetězce.

hu

Nahlásit jako SPAM
IP: 193.86.81.–
Mino
~ Anonymní uživatel
2 příspěvky
4. 8. 2016   #3
-
0
-

#2 hlucheucho

Jo C++. Som v ňom ešte ucho ( :D ), pokúsim sa s tým niečo spraviť.
(A to som po školskom Pascale bol uchvátený genialitou C++. Veril som v jednoduchšiu cestu)

Nahlásit jako SPAM
IP: 178.40.191.–
BDS+2
Věrný člen
4. 8. 2016   #4
-
0
-

#3 Mino
 

int main()
{
	std::string line;
	getline(std::cin, line);
	std::istringstream iss(line);
	std::vector<int> list;
	int num;

	while (iss >> num)
	{
		list.push_back(num);
	}
        //výpis:
	for(unsigned i=0; i<list.size(); i++)std::cout << list[i] << std::endl;
	std::cin.get();
	return 0;
}

ale zkus si to raději udělat sám jak píše hlucheucho a nejlépe bez použití cizích funkcí..

Nahlásit jako SPAM
IP: 185.69.69.–
Visual Studio C/C#/C++
(pouze samouk)
KIIV+42
God of flame
4. 8. 2016   #5
-
0
-

Vetsi sranda je pouzit algorithm :)

#include <sstream>
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>

int main() {
    std::vector<int>  cisla;

    std::string tmp;
    std::getline(std::cin, tmp);     // nacte cely radek
    std::istringstream ln_in{tmp};   // pripravime na zpracovani

    std::copy(
        std::istream_iterator<int>{ln_in},                  // vstupni iterator zacatek
        std::istream_iterator<int>{},                       // vstupni iterator konec (u istream iteratoru je to proste ze nemuze nacist dalsi int)
        std::back_insert_iterator<decltype(cisla)>{cisla}   // vystupni iterator (namapovano na cisla.push_back(x))
        );

    std::copy(std::begin(cisla), std::end(cisla), std::ostream_iterator<int>{std::cout," "});
    std::cout << "\n";
}
Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV+42
God of flame
4. 8. 2016   #6
-
0
-

 Pokud by bylo potreba prubezne zpracovani, tak jedna z moznosti je toto:

#include <iostream>
#include <cctype>

bool EolnOrFail(std::istream & in) {
    char ch;
    while (in.get(ch)) {
        if (ch == '\n' || ch == '\r') {
            return true;
        }
        if (! std::isgraph(ch)) {
            in.unget();
            break;
        }
    }
    return !in;
}


int main() {

  int i;
  while (! EolnOrFail(std::cin)) {
    if (std::cin >> i) { std::cout << i << "\n"; }
  }

  std::cout << "tak to je konec\n";
}
Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 122 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý