Anonymní profil Ovrscout – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Ovrscout – Programujte.comAnonymní profil Ovrscout – Programujte.com

 

Příspěvky odeslané z IP adresy 188.120.223.–

Ovrscout
C / C++ › C++ - detekce zda do proměnn…
11. 8. 2015   #204246

#3 Ovrscout
hmm, tak hlavně má být nejdříve clear a pak ignore.
A pak podle https://www.daniweb.com/…input-stream to není nic snadného. Asi bude nejlepší načíst z cin řetězec a ten pak převést na číslo.

Tohle mi funguje dobře ale je to takové všelijaké, snad někdo poradí lépe.  

string trimspaces(string& str)
{
	if (str.length() <= 0)return str;
	size_t first = str.find_first_not_of(' ');
	size_t last = str.find_last_not_of(' ');
	return str.substr(first, (last - first + 1));
}
int GetIntValueFromCIN(int &val)
{
	string line;
	getline(cin, line);
	line=trimspaces(line)	
	if (sscanf_s(line.c_str(), "%i", &val) != 1)
	{
		val=0;//pri chybe vratime hodnotu nula, ale je lepsi si kontrolovat navratovouhodnotu
		return -1;
	}
	return 0;
}

//v main potom volat takto
if (GetIntValueFromCIN(volba) != 0)volba = -1;

//a nahradit i další volání cin >> cislox
GetIntValueFromCIN(cislo1);//pripadne doplnit kontrolu navratove hodnoty pro pripad ze nekdo zada neco jineho nez cislo
Ovrscout
Java › Priradenie premennej odkazuj…
11. 8. 2015   #204245

ehm, moc pěkná diskuze tady :)

Zřejmně je to poněkud nesnáze s temíny a překlady. Zkusím to sepsat jak to vidím já a prosím věcné reakce, komentáře či nasměrování hlavně směrem k javě. (Pro jistotu uvádím že znám hlavně C, trochu C++ a C#, tak na mne prosím buďte hodní, javu a její terminologii moc nebo spíš vůbec neznám.)

O zmatení pojmů a tak celé dohromady
Pojem "pole" se mi zdá být jasný, tedy,skoro.
Obecně se tím většinou rozumí skupina prvků s danným pořadím kterým se dá přistupovat pomocí číselného indexu.Na rozdíl od kolekcí, které musí umět "alespoň" iterovat ale přístup přes index není povinost.
Pole mohou být různého typu, repektive s různými přívlastky (např staticky či dynamicky alokovaná, s proměnnou či fixní velikostí).
Pak tu máme datovou strukturu "pole" neboli "Array", bez přívlastků, které už má poměrně specifický popis, vlastně to asi specifikuje nejen vnější chování ale i základ vnitřní organizace dat.
Víceméně takto: základní datová struktura "pole" je skupina či seznam prvků s pevně daným počtem prvků(při vytvoření) kde prvky mají definované pořadí a dá se knim přistoupit dle číselného indexu, např česká a anglická wiki.
Tomu v Javě zřejmně odpovídá typ Array.
Pak tu máme další zmatení jako například staticky a dynamicky alokované pole, celkem běžně označované zkráceným popisem statické a dynamické pole.(původem hlavně z C ale stále má svůj význam v C++ C# atd i když tedy zřemně né v javě)
To ale může být ambivalentní s datovou strukturou dynamické pole neboli Dynamic Array(viz níže) která má jinou a také celkem přesnou definici. Takže správně by to mnělo být zřejmně plným opisem "Dynamicky alokované pole"  a "Datová struktura Dynamické pole".Ale toho by mněl člověk plnou pusu či prsty při psaní proto se to zkracuje páč lidi jsou líní :) , Důležité je pak sdělit a chytit kontext.

Nyní se pokusím zachytit význam Dynamic array z různých směrů:

Dynamic array poprvé
Dynamické pole neboli "Dynamic array" považuji za synonymum  pro pole s proměnnou velikostí (které jako implementační detail může používat např. dynamicky alokované pole fixní velikosti), i en wiki mi v tomto dává za pravdu, ačkoliv zde už tento implementační detail čátečně považují za specifikaci této datové struktury se jménem  "dynamické pole"/"Dynamic array". V popisu ArrayList-u je napsáno že se jedná o Resizable-array(které implementuje rozhraní listu- tedy je možno iterovat ..), což je ve wiki zmíněno jako jedno z alternativních označení pro Dynamic array. Navíc je na té wiki ArrayList přímo vypsán jako příklad a implementace souhlasí s tím jak již byla vylíčena v jednom z předchozích komentářů zde na fóru. Tedy Array list odpovídá specifikaci datového struktury Dynamické pole/Dynamic array


Dynamic array podruhé
Pokud se týká obecnějšího pohledu, tak k položkám ArrayList-u lze přistupovat pomocí indexu , což ho (u mne) kvalifikuje jako pole (obecný popis, ne datová struktura "pole"). A né to že se to nezapisuje do složených závorek mi nevadí, to je jen věc syntaxe nikoliv přístupu k datům.
ArrayList je ale také je to kolekce neboť umožnuje použít iterátory.
A umí měnit svou velikost "dynamicky" dle potřeby.
Implementace,aneb "to co je uvnitř" je samozřejmně zajímavá např. z hlediska výkonu,chování v určitých situacích atp. Ale z venku se to chová jako dynamické pole. Proto to je dynamické pole.
Ostatně mne překvapilo že Java k tomu podobně jako já:) viz ArrayList Implements List<E>, RandomAccess.
Neboli kolekce (chceteli seznam) udržující pořadí prvků s přístupem (také) pomocí indexů List<E>.
Ke které lze rychle (většinou O1) přistupovat pomocí indexů RandomAccess.
 

Dynamic array potřetí
Ještě mne napdl jeden pohled, a to z hlediska hiearchie tříd. Tam je Array jasně odděleno od Collections (pod které ArrayList patří). Zde bych ale nepoužíval překlad Array->Pole protože "Array" je jasně specifikovaná třída. A pole je jen obecný název. když už tak asi třída objektů Array/pole.
 

Takže na konci se mi to zůžilo na dvě/tři otázky:

  • Který význam pole/array a dynamické pole/dynamic array je vám nejbližší?
    (obecný, datová struktura, třída?)
  • Jaká je obecná specifikace datové struktury Dynamic Array?
    (odkaz, obecný nebo i specifický pro javu)
  • Případně pokud to mám celé blbě :)  tak i popis toho co podle vás dělá "pole" polem a "dynamické pole" polem dynamickým.

P.S. nechci flame jen tak se trošku připovzdělat

 

 

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