Zápočet 14.9.2007 od 10hod
Zápočet 14.9.2007 od 10hod
Zdravím, zápočet, který v pátek proběhl byl ve znamení statistiky slov v souboru. Na příkazové řádce dostanete "-i [vstupní soubor] -o [výstupní soubor]". Parametry jsou vždy přítomny v uvedeném pořadí. Vaším úkolem je přečíst vstupní soubor a do výstupního zapsat statistiku slov ze vstupního souboru. Nic není třeba řadit, ve výstupním souboru budou mít jednotlivé řádky tvar "[slovo] : [počet výskytů]". A to bylo vše, jednoduché je řešení pomocí zásobníku (reprezentovaného nafukovacím polem) a malé vyhledávací funkce k tomu. Třikrát sláva, napotřetí mi to vyšlo. Dá se to stihnout za hodinu. Když jsem po hodině odcházel, všichni ostatní ještě mlátili do klávesnic, ale i tak myslím, že statistika tohoto termínu byla zcela jistě příznivá. PS: Hlídal nás Mgr. Eckhardt, pohodový to člověk.
Doplnění
Zapomněl jsem napsat, že řádky souboru byly omezené konstantou (řekněme 1000), žádné slovo nebylo delší než tato konstanta (což je ještě báječnější). O délce souboru ani počtu slov se ale jinak nic předpokládat nemělo (tedy asi se mohlo předpokládat, že se to vejde do paměti).
-
- Matfyz(ák|ačka) level I
- Příspěvky: 26
- Registrován: 4. 6. 2006 10:51
- Typ studia: Informatika Bc.
- Bydliště: Blava/Praha
- Kontaktovat uživatele:
Re: Zápočet 14.9.2007 od 10hod
Takze musim skompilovat zdrojak a vytvorit .exe subor. Ked napisem meno tohoto suboru s dvomi parametrami -i a -o, tak sa ten program spusti a vypocita statistiku. Spravne? Ako sa take nieco nakodi? Dik.
$ man woman
No manual entry for woman
No manual entry for woman
-
- Matfyz(ák|ačka) level I
- Příspěvky: 26
- Registrován: 4. 6. 2006 10:51
- Typ studia: Informatika Bc.
- Bydliště: Blava/Praha
- Kontaktovat uživatele:
Re: Zápočet 14.9.2007 od 10hod
// vytvoril som narychlo taketo nieco (len pre text so slovami, medzerami a
Kód: Vybrat vše
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
ifstream in(argv[2]);
ofstream out(argv[4]);
vector<string> v;
string aword;
char ch;
while (in.get(ch))
{
if (( ch == ' ') || ( ch == '
'))
{
v.push_back(aword);
cout << aword << endl;
aword.erase();
}
else
{
aword += ch;
}
}
//v.pop_back();
while (!v.empty())
{
int count = 0;
out << v[0] << " : ";
aword = v[0];
for (int i = v.size() - 1; i >= 0; i--)
if (aword == v[i]) { count++; v.erase(v.begin() + i);}
out << count << endl;
}
cout << "good deal
";
return 0;
}
$ man woman
No manual entry for woman
No manual entry for woman