Programování

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Neil88
nováček
Příspěvky: 3
Registrován: listopad 14
Pohlaví: Muž
Stav:
Offline

Programování

Příspěvekod Neil88 » 10 lis 2014 09:48

Dobrý den,

je to někdo velmi ochotný mi za dnešek napsat část projektu? (C) (viz. příloha)

Potřeboval bych aspoň nějaké body za obhajobu...

Děkuji za ochotu a odpověď.

Neil88
Přílohy
Projekt.pdf
(289.96 KiB) Staženo 70 x

Reklama
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Programování

Příspěvekod faraon » 10 lis 2014 18:57

Tak za dnešek bych ti možná stihl napsat to načítání tabulky ze souboru. Za víkend by se to dalo stihnout celé, při náležitém ohodnocení.

Ale to by patřilo spíš do jiné sekce: viewforum.php?f=102 ;-)
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Neil88
nováček
Příspěvky: 3
Registrován: listopad 14
Pohlaví: Muž
Stav:
Offline

Re: Programování

Příspěvekod Neil88 » 10 lis 2014 20:51

Tam se souborem pracovat nemá. :/ Má to jenom vypsat na obrazovku.

"volání z rodiny fopen, fclose, fscanf, ... - práce se soubory (dočasnými) není v tomto projektu žádoucí"

Takže, netuším vůbec jak na to. Doufám, že tady ještě někdo je.

Uživatelský avatar
domitea
Tvůrce článků
Level 4.5
Level 4.5
Příspěvky: 1971
Registrován: červen 09
Bydliště: Královehradecký kraj
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Programování

Příspěvekod domitea » 10 lis 2014 21:27

Takže, čtení souboru bez fopen. V linuxu existuje stdin, který je příkazivu používán. Potom argumenty. V základu máš argc, neboli počet argumentů a argv, neboli hodnoty argumentů. Otázka jednoho odpoledne, nic víc, nic míň :wink:

Neil88
nováček
Příspěvky: 3
Registrován: listopad 14
Pohlaví: Muž
Stav:
Offline

Re: Programování

Příspěvekod Neil88 » 10 lis 2014 21:31

No, otázka jednoho odpoledne pro někoho, kdo se v tom vyzná a ví.

Pro začátečníka, em trošku problém...

Uživatelský avatar
domitea
Tvůrce článků
Level 4.5
Level 4.5
Příspěvky: 1971
Registrován: červen 09
Bydliště: Královehradecký kraj
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Programování

Příspěvekod domitea » 10 lis 2014 21:48

Pokud umíš podmínky a cykly, tak by ti to problém dělat nemělo... To je jediné, co potřebuješ :wink:

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Programování

Příspěvekod faraon » 10 lis 2014 22:56

Ty nepotřebuješ fopen(), protože v okamžiku spuštění programu už máš otevřené tři základní soubory: stdin, stdout, stderr (o to se ti postará knihovna stdio.h). První používáš pro čtení klávesnice, druhý pro výpis na obrazovku, přes třetí se vypisují chybová hlášení. A nedoporučuje se je zavírat ;-)

Takže s čím máš jako začátečník problém? S načtením parametrů, které program dostal při spuštění? Jejich počet zjistíš z proměnné argc (argument count), a jejich obsah z pole řetězců argv (argument vector). I když nic nezadáš, tak program dostane jeden argument, svůj vlastní název s cestou kde se nachází. Ten zjistíš z argv[0]. Zkus si tohle:

Kód: Vybrat vše

#include <stdio.h>

int main(int argc, char **argv)
    {
    int i;

    printf("Počet parametrů: %d\n", argc);

    for (i=0; i<argc; ++i)
        printf("%d\t%s\n", i, argv[i]);

    return 0;
    }

Parametry můžeš samozřejmě vyhodnotit v cyklu pomocí funkcí na porovnávání řetězcůl z knihovny string.h, ale pozor ať nepřekročíš rozměr toho pole. Tohle není Pascal, který ti to ohlídá, tohle je Céčko a to udělá cokoliv co mu nařídíš! Podle zadaných parametrů si nastavíš příznaky v programu, a ten pak podle nich bude pracovat.

Takže když ho spustíš se dvěma parametry, například
./proj1 ahoj lidi
bude počet parametrů v argc 3, v argv[1] budeš mít slovo ahoj, a v argv[2] slovo lidi. Zkus si to s tím kódem co jsem ti napsal.

Nebo máš problém načíst data zadávaná z klávesnice? Celý řádek načteš funkcí gets() (nebo bezpečnější fgets()), v zadání je že řádek bude mít maximálně 1024 znaků, takže ti stačí jeden vstupní buffer velikosti 1025B. Nesmíš zapomenout nechat místo na ukončující znak '\0'!

Ten řádek si pak rozebereš opět funkcemi z knihovny string.h, podle prvního znaku každého "slova" zjistíš jestli se jedná o číslo nebo o text, a potom použiješ sscanf(). A nebo lze výhodně využít toho že rodina *scanf funkcí jako návratovou hodnotu udává počet načtených položek (RTFM), takže pokud se tomu sscanf() podaří načíst číslo, vrátí 1, pokud ne, vrátí 0 a ty načteš řetězec.

Pak už jenom musíš zapřemýšlet jakým způsobem uložíš tabulku v paměti, a jak budeš rozlišovat co v které buňce je. Já bych na to šel asi přes struktury. Také si musíš rozmyslet jak velká ta tabulka bude, jak velké množství paměti si chceš zabrat.

Akorát místo -std=c99 použij radši -ansi, pokud bys to náhodou doma vyvíjel ve VS verze 2013 a starší, tak to má s C99 pořád ještě problémy. Některé věci by nemusely fungovat tak jak mají.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů