Online 110 uživatelů Přihlášení | Registrace | Zaslat heslo | Prohlížení bez přihlášení

 

C++ pro naproste zacatecniky - primitivni otazky a odpovedi [ ID: 8054 ] - [ Počítače (hardware, software) / Programování ]
1 / 46
Mini Home





klub #17180 Makra, Plug-in, Addons pro Vyvojove studia (VS6 C++, VS .NET a jine)
DWORKIN   20:44:11 04.03.2014
Aha tak jina varianta se zavorkama funguje. Popravde vubec nevim jak to cist, asi z vnitrni zavorky prvne.
void DuplikujPixely3x ( int delka, BGRA ** odkud, BGRA ** kam ) {

  while ( delka-- ) {
      *(*kam)++ = *(*odkud);
      *(*kam)++ = *(*odkud);
      *(*kam)++ = *(*odkud)++;
  }
}
DWORKIN   17:47:32 04.03.2014
PS: A dalsi vnitrni while smycku taky nechci, ma to byt rychle. I kdyz ta by byla aspon univerzalni.
DWORKIN   17:45:09 04.03.2014
Ahoj,

neni to sice C++, ale ciste C, snad to neva. Mam jednorozmerne pole pixelu (BGRA), ktere se chova jako dvourozmerne. Je to primo pro XImage v Xlib. A potrebuji ten obrazek zvetsit po jeho nasobcich. Takze jedu  po radcich a kopiruji do noveho pole z 1,2,3,4,5 na 1,1,1,2,2,2,3,3,3,4,4,4,5,5,5...atd. Pak ten cely "hotovy" radek jeste 2x znovu nakopiruji a mam to v tomto pripade 3x zvetseny. Problem je ze ty nasobky se meni a chci to mit co nejrychlejsi a goto promnena asi v cecku neni, neco jako

zvetseni = 3x
goto zvetseni;

7x:
*p_cil++ = *p_zdroj;
6x:
*p_cil++ = *p_zdroj;
5x:
*p_cil++ = *p_zdroj;
4x:
*p_cil++ = *p_zdroj;
3x:
*p_cil++ = *p_zdroj;
2x:
*p_cil++ = *p_zdroj;
1x:
*p_cil++ = *p_zdroj++;

if ( delka-- == 0 ) break;
goto zvetseni;

Tak jsem misto toho udelal funkce pro kazdy zvetseni a na zacatku se priradi do smyek ta spravna. Je tam sice volani navic, ale to by se melo ztratit kdyz je jen jedno na radek nez IF * delka_radku.

No ale potrebuji aby ta funkce vracela aktualizovany p_cil a p_zdroj. A to se mi nedari. Protoze jedine funkcni reseni je tohle:

void DuplikujPixely3x ( int delka, BGRA ** odkud, BGRA ** kam ) {

  BGRA *k = *kam;
  BGRA *o = *odkud;
  while ( delka-- ) {
      *k++ = *o;
      *k++ = *o;
      *k++ = *o++;
  }
  *odkud = o;
  *kam  = k;
}


A jiny cachry z hvezdickama a ruzne to ozavorkovat mi nefunguje. Jak to jde bez tech pomocnych?

BGRA ** odkud -> je ukazatel kde lezi ukazatel na BGRA strukturu.

KOPLIH   23:21:12 27.11.2013
ARDOR [ 22:22:58 27.11.2013 ]:

Tak se zkus podívat na to jak otevřít a číst textový file http://www.cplusplus.com/doc/tutorial/files/
a např. na funkci getline http://www.cplusplus.com/reference/string/string/getline/
XISTL   23:19:22 27.11.2013
ARDOR [ 20:17:30 27.11.2013 ]: To je jednoduche. Nacitas ze souboru radek po radku a pomoci strtok dostanes jednotlive polozky daneho radku. Pak jenom staci napsat filtr, ktery ti vybere to, co chces.

ARDOR [ 22:22:58 27.11.2013 ]: To neni tak tezke, najdi si fopen, fclose, fgets a jestli jses alespon trochu schopny v programovani, musis to byt schopen pouzit pro to, co potrebujes. Pomoci techto funkci otevres soubor, postupne nactes z neho data a nakonec ho zavres. Retezec, ve kterem mas radek z csv souboru rozporcujes pomoci strtok. Pak mas aktualni cast z retezce, kterou zpracujes.
ARDOR   22:22:58 27.11.2013
KOPLIH [ 21:57:21 27.11.2013 ]: mno, pochybuju že jo... celkově mi jde o toho - jak načíst CSV po řádcích do pole stringů? Bez použití věcí, co nám na nevysvětlili v prvním semestru na VŠB... takže mám velmi omezené možnosti, zatím na přednáškách nebyla ani práce se soubory...  :18)

Dejme tomu, že mám CSV s jídelním lístem z menzy na 5 dní, vždycky 3 jídla za den, ve formátu (21.3.2014A-C; jméno; cena;) - a chci najít jídla podle nějakých vlastností, které obsahují jednotlivé řádky CSV...

Kupříkladu, zadám tam "21.3.2014" a vyjedou mi tři řádky odpovídající tomu dni - jak projít stringy vím, ale s načtením a rozporcováním CSV tápu jak žid na poušti...
KOPLIH   21:57:21 27.11.2013
ARDOR [ 20:17:30 27.11.2013 ]:

Jestli můžeš použít knihovny (např. boost), tak tady je chytrej odkaz http://mybyteofcode.blogspot.cz/2010/02/parse-csv-file-with-boost-tokenizer-in.html
ARDOR   20:17:30 27.11.2013
Žije to tu ještě?
Nemá někdo náhodou program (neobjektový, C++), který pracuje s CSV soubory? Víceméně jakýkoli, zajímá mě metoda procházení a vyhledávání v CSV, a výpis podle nějakých podmínek... ideální by bylo, kdyby byl případný program okomentovaný, ale snad si to nějak přeberu :2)
PAULSMITH   10:08:15 10.03.2013
JOCKERS [ 18:50:27 09.03.2013 ]: nebo můžeš odchytávat návratovaou hodnotu scanf()
XISTL   22:29:34 09.03.2013
JOCKERS [ 18:50:27 09.03.2013 ]: pomoci funkce strtol
JOCKERS   18:50:27 09.03.2013
Ahoj, jak se da osetrit aby mi nekdo na vstup kde chci int nezadal neco jineho?
PAULSMITH   21:47:47 24.10.2012
PAULSMITH [ 22:07:46 23.10.2012 ]: Tak už jsem to asi zvládl... :18)
PAULSMITH   22:07:46 23.10.2012
Potřebuji v C/C++ udělat udp server, který bude naslouchat na konkretnich rozhranich.
Může mi někdo pomoct napsat minimální příklad s otevřením a nastavením socketů, přijmutím zprávy a odesláním odpovědi?
Na googlu jsem strávil už spoustu hodin a nic mi z toho nefunguje...
(přemýšlel jsem, že bych sem hodil muj kod, ale nebudu vas nutit hledat chybu v minimálním příkladě o 70ti řádcích...)
Předem díky.
XISTL   12:23:52 21.01.2012
SAMUELSUMEC [ 21:40:42 15.01.2012 ]: 1) 1)Vsechny jsou O(n^2), tady zalezi primo na implementaci jednotlivych algoritmu. Merenim pripadne presnym vycislenim ti muze vyjit presne poradi.

2) Muzes si udelat pointr ukazujici na pole tri pointru z nichz kazy ukazuje na pole ctyr pointru z nichz kazy ukazuje na pole peti prvku, ale proc bys to delal? Neni jednoduchsi si primo napsat tridu pro praci s polem velikosti 60, ktere je virtualne rozmeru 3x4x5? Ja bych to tak resil, tedy jestli neni duvod mit to pole primo v zdrojaku. Ale i tak si muzes usnadnit praci funkcemi, ktere ti usnadni praci...
FISCH   00:13:27 21.01.2012
SAMUELSUMEC [ 21:40:42 15.01.2012 ]:  SAMUELSUMEC [ 21:40:42 15.01.2012 ]:
nemaj všechny ty algoritmy složitost n^2 nahodou?
a to pole jestli mysli velikost tak asi 60 položek jinak by museli říct jakeho je to pole typu
SAMUELSUMEC   21:40:42 15.01.2012
zdravím vás velký páni :2) , položím vám niekolko otázok :24)  ...
1). zoradte od najpomalsieho triediace polia, to su insert, select, bubble a shaker sort.
- odpoved: bubble sort, select sort, insert sort, shaker sort... moze byt? :2)
2). "Aké velké je trojrozmerné pole 3x4x5 ????"
- odpoved: 60? alebo je to chytak, a ziadne take polia su neni?
diky moc, zatial toto, ja se vratim :15)
TOOTEA   08:21:46 27.10.2011
PEPAK [ 19:34:33 24.10.2011 ]: MinGW kompilátor je k dispozici jak nativně na Windows, tak jako crosskompilátor na Linuxu (a rozumné distribuce kromě kompilátoru mají v balících i potřebné knihovny zkompilované pro Windows).
Já právě od jisté doby všechny .exe crosskompiluju z Linuxu, je s tím míň otrava a výsledek stejný ;:)
PEPAK   19:34:33 24.10.2011
TOOTEA [ 16:08:00 24.10.2011 ]: Legrační je, že ten program sám výjimky nikde nepoužívá, pokud tam někde jsou, tak někde v interní implementaci (stringů apod.).

Kompiluju to pochopitelně na Windows (MingW :-))

XISTL [ 19:18:09 24.10.2011 ]: To nemá absolutně žádný efekt.
XISTL   19:18:09 24.10.2011
PEPAK [ 14:00:21 24.10.2011 ]: Nemas to kompilovat takto:

$ g++ -c trida1.cpp -o trida1.o
$ g++ -c trida2.cpp -o trida2.o
$ g++ -c test.cpp -o test.o
$ g++ test.o trida1.o trida2.o -o test
TOOTEA   16:08:00 24.10.2011
PEPAK [ 14:15:25 24.10.2011 ]: Hm, skutečně jde nejspíš o nekompatibilní implementace výjimek v tebou zkompilovaném programu a v libstdc++, takže podezírám rozbitou instalaci MinGW (kupříkladu kombinaci nového kompilátoru a starých knihoven nebo tak něco).

Kompiluješ to na Woknech nebo Linuxu?
1 / 46