To polarkac : Buď můžeš použít sprintf nebo itoa. Obě fce určitě najdeš na cplusplus.com
Příspěvky odeslané z IP adresy 82.100.0.–
To Lovable.Angel : Co se týče počtu studentů/úmrtnosti tak může posloužit následující statistika http://is.muni.cz/studium/statistika.pl?fakulta=1433, vyber aktivní studium bez samoplátců. Aktuálně ty počty studentů budou trochu rozházené, protože někdo si ještě třeba nezažádal o zápis do dalšího semestru.
Ohledně náročnosti Aplikované Informatiky a matematické informatiky. Náročnost oborů nelze hodnotit podle procentuální úspěšnosti studentů. Tyto dva předměty se liší hlavně v základech (Skladba povinných předmětů, pokud jsi byla na DOD, tak jsi určitě dostala žlutou knihu, kde jsou oba základy popsané). Hlavní rozdíl je v matematice, na Aplikované informatice máš Matematika I až IV na celé studium, kdežto na Matematické Informatice stihneš 4 matematiky za 2 semestry (můžeš klidně i více). Obecně bych řekl, že na Aplikované Informatice máš menší počet povinných předmětů, takže si studium můžeš udělat o trochu "lehčí", ale ty povinné předměty musíš absolvovat stejně.
To Perth : Na všechno podstatné ti odpověděl palmik (jak se tak dozvídám, tak můj spoužák z oboru :D).
Co se týče DOD, mám to do Brna přes 200km, a také jsem se tam byl podívat a rozhodně jsem toho nelitoval.
Úvod do programování jsem taky zapsaný neměl, ale kamarádi jo a probírají se tam úplné základy. Programuje se v C a jede se od proměnných přes cykly, pole, až k práci se souborama. Hodně také záleží na výběru zkoušejícího. Co jsem slyšel, tak u každého se naučíš trochu něco jiného :)
To Ahoj3 : 1) Vždycky může být chyba v zadání :).
2) V zadání je napsáno, že jezdí z pole do cukrovaru, takže je teoreticky možné, že jsou auta zaparkovaná na poli a počítá se i 0. minuta
Jinak k výpočtu: Budou se potkávat každých 105min (105, 210, 315, 420), takže žádné zaokrouhlování ;)
To lorDoom : Pokud můžeš předpokládat, že na vstup dostaneš takový soubor, že <a href... /> bude vždy na začátku nějaké řádky, pak otestuješ první tři znaky každého řádku a pokud budou ['<', 'a', ' '], tak rozsekat href="link"> pomocí strtok není těžké. Pokud se <a href... /> může vyskytovat kdekoli v textu, asi bych použil fci strtok, která ti text rozseká po slovech a pokud nějaké slovo bude "<a" tak následující slovo je "href=link"> a to rozsekneš opět pomocí strtok.
Asi to bude oprávněním přistupu k souboru. Zkus ho vybrat přes dialog nějak takhle
private void SelectFile()
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Multiselect = false;
dlg.Filter = "All Files (*.*)|*.*";
if ((bool)dlg.ShowDialog())
{
this.ReadFile(dlg.File);
}
}
private void ReadFile(FileInfo fi)
{
using (FileStream fs = fi.OpenRead())
{
using (StreamReader sr = new StreamReader(fs))
{
string line = string.Empty;
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
}
To Ahoj3 : Taky jsem si chtěl jednou naprogramovat 3D hru, ale nikdy jsem nevynikal v grafice (ani programování různých grafických aplikací). Proto jsem společně s kamarádem (nadšencem pro grafiku a programování) udělal jako maturitní práci 3D hru ve stylu Tower Defense. Rozdělili jsme si práci a dokonce vyzkoušeli i práci v týmu. Takže pokud máš tu možnost, mohu práci na hře v "týmu" jen a jen doporučit :)
Abych se držel původního tématu, tak hru jsme dělali kompletně v C++ (DirectX), akorát Launcher, který měl na starosti nastavení (práci s registry) byl v C#.
To TomBar : Ty alokuješ pole o velikosti l, které má hodnotu 1 --> Pak přistupuješ na index prvocisla[l] (prvocisla[1]), což je špatně. Jediný index toho pole je prvocisla[0]. Navíc potom l++ zvětšuješ a chtěl bys do pole zapisovat znova. Buď musíš alokovat větší pole nebo ho poté realokovat.
To janek : Můžeš zkusit použít typeid(proměnná).name() a to vždy porovnat s řetězcem "int", pokud bude výsledek shodný, vyhodit error. Více o typeid zde http://www.cplusplus.com/reference/std/typeinfo/type_info/
To Jakub Stodůlka : Hledej funkci strtok, tak ti umožní načíst data oddělená oddělovačem. Data bych načetl někam do struktury (jméno; skóre). Buď můžeš při načítání kontrolovat hodnotu skóre a načítat už je seřazené nebo načíst všechny, pak je seřadit a vypsat prvních deset.
To tulk : Zrovna na tomto příkladě se ukazuje, že matematické znalosti jsou k nezaplacení. Vezmi si například, že by někdo zadal čísla 1 a 30 000. Tvůj program by to projel 30 001x, kdežto k tomu stačí jednoduchý výpočet na součet aritmetické posloupnosti. Chápu, že tady se jedná spíše o procvičení cyklů, ale jen jako taková rada do budoucna ;)
To tulk : Neporovnáš řetězce, ale jejich adresu v paměti. K porovnání dvou řetězců slouží fce strcmp() viz http://cplusplus.com/reference/clibrary/cstring/strcmp/
Díky všem za všechny informace. Měl bych dva dotazy. V případě, že si zapíši nějaký předmět (volitelný) a po pár přednáškách mi nebude vyhovovat, nebudu stíhat atd., jak se to pak řeší? Musím ten předmět udělat?. A druhý dotaz, kolik je optimální počet předmětů na semestr (první se bude zřejmě výrazně lišit (přechod, adaptace, ...))? S učením jsem nikdy problém neměl a věci chápu celkem rychle.
Konečně jsem se dočkal a letos maturuji na SŠ a čeká mě studijum na VŠ. Vybral jsem si FI MUNI, obor Matematická Informatika, splnil jsem podmínky pro přijetí (NSZ z MAT 90 percentil) a tak se ptám, je zde nějaký budoucí spolužák? :)
Případně současných studentů na co si dát pozor? :)
To Sibyx : Když už tu to vlákno je... O jakou verzi Builderu se jedná? Já měl čest pouze s verzí 6, která mě straší (naštěstí už dlouho nebude) 4 roky ve škole. Verze 6 byla možná ve své době vynikající IDE, ale v dnešní době naprosto nepoužitelné.
To RePRO : strtok viz http://programujte.com/?akce=diskuze&kam=vlakno&tema=15465-socet-radku-text-souboru-v-c nebo přímo cplusplus.com
To KOUDIS : pod Windows Visual Studio od Microsoftu. Je zdarma v Express edici pro všechny. Já používám školní MSDN licenci a mám Professsionala nemůžu si stěžovat. Momentálně je i dostupná Ultimate verze beta 2 od vs 2010. Jediné, co ve VS trošičku pokulhává je Intelisence, jinak jsem naprosto spokojen a rozhodně bych neměnil.
To TomBar : 1) Protože nejprve vše načteš a potom zpracováváš... ale při načítání nové řádky přepíšeš tu starou. Možnost jak to řešit je načíst řádku, zakódovat, uložit a to opakovat s další řádkou
2) Cesta přetaženého souboru na *.exe je uložena v druhém (agrc == 1) agrv argumentu
To Roflcopter : Hodně záleží na tom, co chceš programovat. Můj osobní názor je, že C++ se v budoucnu používat bude. Ale dnešní trend je usnadnit programátorovi co nejvíce práce. Proto opravdu záleží, co chceš programovat.
C++ se imho bude používat na síťové aplikace, nějaké složitější výpočty a celkově spíše backend, kdežto na frontend se již v dnešní době využívá spíše C#. (Je to můj osobní názor, takže pokud se v něčem pletu, tak se předem omlouvám :) )
To Figa : Tak to můžeš udělat takto:
// Místo iSqr
struct SSQUARE {
POINT Coord;
int iNumber;
};
// Místo Pole[9][9]
struct SNUMBERS {
int iNumber;
bool bOK;
};
//...
//stejné for cykly, akorát místo Sqr[index++] = unsolved[i][n];
sSqr[index].iNumber = unsolved[i][n];
sSqr[index].Coord.x = i;
sSqr[index++].Coord.y = n;
// Fce Correct bude brát ještě pole[9][9]
if(!CorrectSqr(sSqr, sPole)) return false;
// Fce CorrectSqr(SSQUARE *pSqr, SNUMBERS **ppNumbers) by mohla vypadat nějak takto
bool CorrectSqr(SSQUARE *pSqr, SNUMBERS **ppNumbers) {
bool bReturnValue = true;
for(int i = 0; i < 9; i++) {
for(int n = i+1; n < 9; n++) {
if(pSqr[i].iNumber == pSqr[n].iNumber) {
ppNumbers[pSqr[i].Coord.x][pSqr[i].Coord.y].bOK = false;
ppNumbers[pSqr[n].Coord.x][pSqr[n].Coord.y].bOK = false;
bReturnValue = false;
}
}
}
return bReturnValue;
}
To Figa : Tohle mi nepřijde jako moc elegenantní řešení, hádám, že tohle je součást cyklu, kterej prochází všechny políčka? Udělal bych to spíš nějak takto
for(x = 0; x < 9; x+=3) {
for(y = 0; y < 9; y+=3) {
int iSqr[9];
int index = 0;
for(int i = x; i < x+3; i++) {
for(int n = y; n < y+3; n++) {
iSqr[index++] = unsolved[i][n];
}
}
// Nějaká fce, která zjistí, jestli nejsou v poli dvě stejná čísla
if(!CorrectSqr(iSqr) return false;
}
}
return true;
}
To pouk : NULL se tomu přiřazuje na začátku, protože neexistuje další prvek. Ale pokud chceš přidat další prvek do seznamu, uložíš do *dalsi adresu toho nového. Ukážu to na jednoduchym kódu
struct SEZNAM {
int iValue;
SEZNAM *pNext;
SEZNAM() { pNext = NULL; };
~SEZNAM();
};
int main() {
SEZNAM *pSeznam;
SEZNAM *pTemp;
pSeznam = new SEZNAM;
pTemp = new SEZNAM;
pSeznam->iValue = 0;
// Teď má pSeznam->pNext hodnotu NULL;
pTemp->iValue = 1;
pSeznam->pNext = new SEZNAM; // Alokujeme další
memcpy(pSeznam->pNext, pTemp, sizeof(*pTemp));
// Teď má pSeznam->pNext adresu vytvořenou při alokaci a uchovává stejné data jako pTemp;
// Pro skutečnou práci se seznamem je dobré si někde uchovávat informaci o prvním a posledním prvku
// A nezapomenout na uvonění, které bude složitější než tady v té ukázce
delete pSeznam->pNext; delete pSeznam; delete pTemp;
}
To KroYc : V podstatě jde o to, že k určení jakkéhokoliv čísla potřebuješ dvě čísla předchozí, které každé z nich určíš zase z dvou předchozích, tak bude pokračovat dál dokud nenazaríš na něco, co víš... víš 1. a 2. číslo řady (1,1). Takže v podstatě budeš zjišťovat součet n-1 a n-2 .Pokud nebudeš vědět hodnotu n-1 tak zjistíš hodnotu (n-1)-1 a (n-1)-2 ... snad jsem ti alespoň trochu nastínil řešení :)
To Figa : Můžeš použít strtok viz http://cplusplus.com/reference/clibrary/cstring/strtok/
To vojta : Na cylku for toho moc k pochopení neni, je velmi jednoduchý
for(inicializace; podmínka; akce) {
// Bude se provádět, dokud bude podmínka pravdivá
}
S čim si teda nevíš rady, jak sestavi for cyklus?
for(int i = 0; i < 10; i++)
printf("%d\n", i);
To vypíše čísla od 0 do 9
• Taky většinu část kódu nekomentuju, i když v poslední době se snažim zlepšit, protože mi vždycky trvá nějakou dobu než zjistim, proč jsem to napsal tak, jak jsem to napsal
• Uvolňování paměti. Zapomínám uvolňovat paměť s tim, že se to pak snažim najít až dodělám program a někdy neni jednoduchý to najít.
• Neudržení pozornosti, zjistil jsem, že zapnuté IM nebo prohlížeč výrazně snižují moje soustředění, proto, když teď dělám něco většího, vypínám "kontakt s okolním světem"
• Některé problémy podceňuju a řeknu si, že jejich hlavní část vymyslím za pochodu, což někdy vede k smazání celé práce a musim začít od znova (po té, co se nad tím zamyslím)
To Figa : Použí ::write viz http://cplusplus.com/reference/iostream/ostream/write/
To Figa : Úplně špatné to asi nebude, ale nebudeš mít 100% úspěšnost, někdy by se ti zkrátka nevygenerovalo. Před rokem jsem také programoval sudoku (Zasekl jsem se na lehké obtížnosti, protože se mi podařilo odebrat jen pár čísel, aby se to dalo dohrát). Nicméně jsem také vymýšlel způsob, jak celé sudoku vygenerovat. Nakonec jsem přišel na řešení pomocí priorit.
Každý řádek, sloupec a čtverec měli čísla (1 - 9), na začátku u každých bylo, že nejsou využita. Poté jsem jel postupně políčko po políčku a dělal jsem následovné:
- Zjištěný dostupných hodnot (průnik dostupných hodnot v řádku, sloupci, čtverci)
- Zjištění hodnot s větší prioritou (Projdou se čísla v sousedních sloupcích a řádcích, pokud se čísla shodují s dostupnými, zvýší se jim priorita)
- Pokud existuje alespoň jedno číslo s vyšší prioritou, vybere se mezi nimi
- Pokud neexisutje ani jedno šíslo s vyšší prioritou, vybere se mezi dostupnými.
Pokud budeš chtít, můžu sem dát i kód, který jsem k tomu napsal.
To Figa : Pokud ti jde o generování sudoku, tak tohle není moc šťastné řešení (generovat náhodná čísla a zkoušet, jestli tam sedí nebo ne).
1) Nemusí se ti to vůbec vygenerovat
2) Když už se ti to podaří vygenerovat, může to trvat pěkně dlouho
To shunkoplex : Na hledání nejkratší cesty doporučuju A* http://en.wikipedia.org/wiki/A*_search_algorithm
To jerrysla : Nejprve musíš spočítat kolika způsoby můžeš rozdat 8/32 karet C = 32! / (24! * 8!)
C = 10518300. Pak musíš spočítat počet kombinacích, kdy se v oněch osmi kartách nachází právě 4 esa.
To znamená, že chceme 4 určité karty + 4 jakkékoli --> 4 * 28! / (24! * 4!) = 20475.
Pravděpodobnost pak spočítáš už jednoduše 20475 / 10518300 * 100 = 0,195%
To Adam.br(zavinac)seznam.cz : Předem se omlouvám za OT, ale ty pleteš dohromady dvě úplně jiné věci, teorii ve škole a praxi získanou psaním kódu, zjišťováním proč tohle je tak a né jinak. Jestli si myslíš, že vysoká škola z tebe udělá nejlepšího programátora, tak já osobně si myslim, že se hluboce pleteš. Programovat ve škole ještě nikdy nikoho nenaučili. Osobně znám člověka, který má střední školu změřenou na elektroniku a programovat umí víc než lidé, které znám a mají za sebou vysokou školu. Nepopírám, že na vysoké škole získáš dobré znalosti hlavně z teorie, matematiky apod. Ale mně to prostě připadá jako když srovnáváš dvě naprosto rozdílné věci.
To Jardan : Záleží, jak rychle cestu potřebuješ zjistit, rozměry mapy atd... Pokud bude malá mapa a málo jednotek, postačující bude BFS, pokud bys chtěl něco rychlejšího, doporučuju A* http://www.gamedev.net/reference/articles/article2003.asp, sám ho používám pro hledání nejkratší cesty.
To Hnykda : (Číslo <= Hádané číslo + tolerance && Hádané číslo - tolerance >= Číslo) && Hádané číslo != číslo
Číslo, které musí uživatel uhádnout: 10
tolerance: 2
Tudíž čísla, která může zadat {8, 9, 11, 12}
11 <= 10 + 2 && 10 - 2 <= 11 && 10 != 11
9 <= 10 + 2 && 10 - 2 <= 9 && 10 != 9
if( (a <= b+d && a >= b-d) && a != b) cout << "Jseš blízko"