Jazyk c

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
craven
Nováček
Nováček
Registrován: 10. zář 2007

Jazyk c

Příspěvek od craven »

zdarec hledám někoho kdo umí programovat v c potřeboval bych helfnout
mhl
Středně pokročilý
Středně pokročilý
Registrován: 17. úno 2004
Bydliště: Brno

Příspěvek od mhl »

a proč zrovna nenapíšeš co potřebuješ?
craven
Nováček
Nováček
Registrován: 10. zář 2007

Příspěvek od craven »

Tohle je zadání ulohy je k tomu i konstra jestli chceš. možná je to jednoduché ale já s c nemám moc zkušensotí tak pokud bys mi prosím poradil jak sestavit hlavní program dík:

Poslední změna: 5. září 2007
Zadání úlohy
Vytvořte program pro převod celých kladných čísel mezi číselnými soustavami. Program ze standardního vstupu načte údaj o základu vstupní číselné soustavy a celé kladné číslo v této číselné soustavě. Jeho hodnotu poté vypíše na standardní výstup ve stejném formátu jako vstup, ale ve výstupní soustavě, jejíž hodnota bude specifikována parametrem příkazového řádku. Program musí být schopen pracovat s číselnými soustavami o základu 2 až 36. Číslice vyšších soustav než desítkové budou reprezentovány znaky 'A' až 'Z' (velká písmena).
Program musí být schopen načíst maximální hodnotu datového typu unsigned long long (konstanta ULLONG_MAX z limits.h - více viz man limits.h). Program musí být schopen detekovat chybové stavy ve všech vstupních údajích.
Pro čtení ze standardního vstupu smíte použít výhradně funkce getchar() nebo getc(). Pro výpis výsledku na standardní výstup smíte použít výhradně funkce putchar() nebo putc() (to neplatí pro tisk nápovědy a chybových hlášení). Pro převod hodnot přečtených ze stdin je zakázáno používat knihovní funkce jazyka C, které problémy převodu mezi číselnými soustavami samy řeší (strtol(), ...). (Můžete je ovšem použít pro testování.)
Rozhraní programu
Program se bude spouštět s parametry s následujícím významem:
Příkazový řádek Očekávaný vstup Bude tisknout na výstup Poznámka
proj1 -h vytiskne nápovědu Povinně
proj1 OUT IN INVALUE OUT OUTVALUE Povinně
proj1 OUT N IN INVALUE OUT 00000OUTVALUE - vytiskne zadanou hodnotu v číselné soustavě o základu OUT zarovnanou zleva nulami na N číslic Za prémii 1 bod.
Program musí být schopen pracovat s hodnotami v tomto formátu:
Z ZVALUE
kde Z je hodnota základu číselné soustavy od 2 do 36 zapsaná v desítkové soustavě a ZVALUE je vlastní hodnota čísla zapsaná číslicemi 0 až 9 a velkými písmeny A až Z v soustavě o základu Z. Obě tyto hodnoty leží na jediném řádku a jsou odděleny právě jednou mezerou.
Program musí být schopen správně načíst hodnotu v tomto formátu ze stdin a ve stejném formátu vytisknout výsledek na stdout.
Program musí být schopen zpracovat tento vstup zadaný na jednom řádku, kde jednotlivé hodnoty budou odděleny právě jednou mezerou. Zpracování většího množství zadání (např. jedno na každém řádku), akceptování malých písmen a až z na vstupu ani oddělení hodnot libovolným počtem bílých znaků není povinné.
Příklad: Po spuštění programu proj1[.exe] s parametrem 16
$ ./proj1 16
program očekává na standardním vstupu dvě hodnoty oddělené mezerou
2 000101
Toto zadání znamená, že program bude očekávat hodnotu ve dvojkové soustavě a vypíše ji v šestnáctkové soustavě na jediný řádek standardního výstupu ve stejné formě jako byl zadán vstup:
16 5
Pokud implementujete i druhý parametr příkazové řádky může zadání vypadat takto:
$ ./proj1 16 15
2 101
a odpovídající výstup takto:
16 000000000000005
mhl
Středně pokročilý
Středně pokročilý
Registrován: 17. úno 2004
Bydliště: Brno

Příspěvek od mhl »

Nejprve si napíšeš funkci, která načtě řádek ze stdin. Další funkcí ten načtený řádek zpracuješ na číslo, který pak převedeš do výsledné soustavy a další funkcí to vyplivneš ven. No a pak ještě musíš vyřešit zpracování argumentů příkazové řádky. Nejspíš ve výsledku problém rozložíš do více funkcí, což je dobře ... tohle je jen velice zjednosušená verze.

A doporučuju sem nedávat žádný větší celky kódu z výsledného programu, protože když to někdo zkopíruje a odevzdá, oba přijdete o body za tento projekt ;-)...minulej rok na tom vyhořelo dost lidí :)
Ssnake
Začátečník
Začátečník
Registrován: 25. led 2005
Bydliště: chotebuz

Příspěvek od Ssnake »

nekde mam prog. na prevod mezi soustavami, mozna by ti to mohlo pomoct...kdyz tak pm (ale zrovna jsem bez kompu takze by to chvili trvalo nez bych se k tomu dostal)
FD node 202, ST45SF, Z97i, i7-4980HQ CB20:1718,CB24:254 NH-L9i, 2x8, R9NANO , 5100MAX
x850xtPE, x1950xtx, hd2900gt, hd3870, hd4890, hd5870 - - 6800ultra, 7900gtx, 8800gtx, 9800gtx+, gtx285
craven
Nováček
Nováček
Registrován: 10. zář 2007

Příspěvek od craven »

Jasný tu myšlenku sem tak nějak měl podobnou akorát to ted dát dohromady
craven
Nováček
Nováček
Registrován: 10. zář 2007

Příspěvek od craven »

jo hele tohle jsem napsal když jsem se učil je to konverze hexadecimalniho čísla na dekadické

int c1, c2, i;

c1 = getchar();
c2 = getchar();

if (c1 >= '0' && c1 <= '9')
i = 16 * (c1 - '0');
else
/* predpokladame, ze je cislo zadane velkymi pismeny
a ze je v povolenem rozsahu */
i = 16 * (c1 - 'A' + 0xA);

if (c2 >= '0' && c2 <= '9')
i += c2 - '0';
else
i += c2 - 'A' + 0xA;

printf("Dekadicka hodnota je: %d\n", i);
return 0;

já si myslím že zakopaný pes musí být někde v tom hm?samozřejmě bych pak napsal víc algoritmů pro ednotlivé převody co?
mhl
Středně pokročilý
Středně pokročilý
Registrován: 17. úno 2004
Bydliště: Brno

Příspěvek od mhl »

Dělat pro každou soustavu jinou funkci je šílenost :). Číslo bych nejprve převedl z libovolné soustavy do desítkové - algoritmus je stejný ať převádíš z libovolné soustavy, mění se pouze základ. A pak z desítkové opět do libovolné soustavy.
craven
Nováček
Nováček
Registrován: 10. zář 2007

Příspěvek od craven »

počky takže to bude vypadat jak?
Ssnake
Začátečník
Začátečník
Registrován: 25. led 2005
Bydliště: chotebuz

Příspěvek od Ssnake »

craven píše:počky takže to bude vypadat jak?
fce kde parametr bude i ciselna soustava pred/po vypoctu, teda vlastne 2 - jedna co prevede jakoukoliv soustavu na 10vou a druha ktera prevede 10vou na jakoukoliv...pak staci :

fce nacti();
fce preved_na_10();
fce preved_z_10();
fce vypis/uloz/cokoliv...

tou vyslednou a vstupni soustavou bude delit/nasobit/neco delat takze to das jako parametr a je to, mit 32 ruznych fci by bylo trochu....neefektivni :-) ale urcite mozne (a pak bys videl ze je to jen jedna stejna fce ktere se meni jeden parametr...)
FD node 202, ST45SF, Z97i, i7-4980HQ CB20:1718,CB24:254 NH-L9i, 2x8, R9NANO , 5100MAX
x850xtPE, x1950xtx, hd2900gt, hd3870, hd4890, hd5870 - - 6800ultra, 7900gtx, 8800gtx, 9800gtx+, gtx285
craven
Nováček
Nováček
Registrován: 10. zář 2007

Příspěvek od craven »

takže jestli tomu rozumím budu mít štyři algoritmy jo?
Ssnake
Začátečník
Začátečník
Registrován: 25. led 2005
Bydliště: chotebuz

Příspěvek od Ssnake »

craven píše:takže jestli tomu rozumím budu mít štyři algoritmy jo?
nevim jestli "štyri" ale tak nejak, cim vic to rozdelis na male casti tim lepsi...pri tak malem programku klidne pouzijes globalni promenne a ty si budes mezi tema fcema prehazovat...
FD node 202, ST45SF, Z97i, i7-4980HQ CB20:1718,CB24:254 NH-L9i, 2x8, R9NANO , 5100MAX
x850xtPE, x1950xtx, hd2900gt, hd3870, hd4890, hd5870 - - 6800ultra, 7900gtx, 8800gtx, 9800gtx+, gtx285
craven
Nováček
Nováček
Registrován: 10. zář 2007

Příspěvek od craven »

no snad už to asik chápu celkově ale urči se ještě zeptám jo a kdybys našel ten prográmek tak mi pošli nějaký ten algoritmus at se na to můžu kouknout nebo tak nechci at to posilas ce¨le bo at to neni plagiatoství..
Odpovědět

Zpět na „Programování a web“