|
|
program v c
|
18.11.2006 09:51
Tomáš Eichler
|
Potreboval bych poradit s jednim programem,nevim si snim rady,nemohl by mi nekdo trochu pomoct,predem dekuji,a tady je to zadani:
ma se to delat pomoci pointru
Napište funkci v jazyce C, která překóduje vstupní řetězec za pomocí zadaného klíče XOR-šifrou. V této šifře je každý jednotlivý znak zakódován pomocí logické funkce XOR (nonekvivalence) s odpovídajícím jedním znakem klíče. V případě, že je klíč kratší než samotná zpráva, použijte jej opakovaně od začátku.
Odevzdávejte soubor obsahující výhradně definici jediné funkce pojmenované a deklarované dle zadání. Soubor nesmí obsahovat žádné dodatečné definice typů, direktivy preprocesoru apod.
Deklarace funkce
void XOR_sifra(char *, char *);
Prvním argumentem funkce je vstupní řetězec, druhým klíč.
Funkce přepisuje vstupní řetězec jeho kódovaným ekvivalentem
Příklad
char *r="AHOJ";
XOR_sifra(r,"x");
printf("%s",r);
Výstupem této části programu bude řetězec "9072".
|
|
|
Re: program v c
|
18.11.2006 09:56
Tomáš Eichler
|
kdyby aspon ted zacatek,to je vzdy nejhorsi,pak bych to uz mohl zmaknout |
|
|
Re: program v c
|
18.11.2006 10:28
Ondřej Čečák
|
Nejsou semestralky take o tom, aby vas naucily resit problemy samostatne? :)
|
|
|
Re: program v c
|
18.11.2006 11:05
Tomáš Eichler
|
to jsou,ale kazdej moudrej z nebe nespadl,coz se o mé skupině dá říct |
|
|
Re: program v c
|
18.11.2006 11:47
Ondřej Čečák
|
Ja myslim, ze zadani je srozumitelne ... proste vezmete znaky a pouzijte na ne XOR, to vsechno C umi. ;)
|
|
|
Re: program v c
|
20.11.2006 00:03
Jan Němec
|
Před položením dotazu typu: "Mohl by za mě někdo udělat domácí úkol" bych se tu teda nejdřív porozhlídnul. V jednom dílu seriálu o C/C++ jsem ten váš úkol skoro napsal:
http://www.linuxsoft.cz/article.php?id_article=741 Pokud si to nedokážete upravit, tak teda pozdravpánbu... |
|
|
Re: program v c
|
20.11.2006 18:23
Tomáš Eichler
|
Ja uz sem něco vymyslel,funguje mi to,ale stejně když to chci odeslat na stránky,tak mi to píše že to njede přeložit což nechápu,když mi to funguje:
#include <stdio.h>
void XOR_sifra (char* retezec, char* klic)
{
char* zacatek_klice = klic;
while (*retezec != 0)
{
*retezec ^= *klic;
++retezec;
if (*klic == 0)
klic = zacatek_klice;
else
++klic;
}
}
int main ()
{
char pokus[] = "AHOJ";
XOR_sifra(pokus,"x");
printf("%s",pokus);
}
tadyk je ten protokol to nechápu:
Protokol
auto_check
test.c: In function 'main':
test.c:24: warning: implicit declaration of function 'printf'
test.c:24: warning: incompatible implicit declaration of built-in function 'printf'
test.c:26: warning: control reaches end of non-void function
test.c: At top level:
test.c:47: error: redefinition of 'main'
test.c:21: error: previous definition of 'main' was here
--- gcc-4.0 --- ! Chyba
test.c: In function `main':
test.c:24: warning: implicit declaration of function `printf'
test.c:26: warning: control reaches end of non-void function
In file included from test.c:43:
/usr/include/stdio.h: At top level:
/usr/include/stdio.h:327: warning: type mismatch with previous implicit declaration
test.c:24: warning: previous implicit declaration of `printf'
test.c:47: redefinition of `main'
test.c:21: `main' previously defined here
--- gcc-2.95 --- ! Chyba
|
|
|
Re: program v c
|
21.11.2006 17:30
Petr Zajíc
|
Co třeba přeložit si ty chyby do češtiny a přečíst si je? To by nepomohlo? |
|
|
Re: program v c
|
21.11.2006 19:22
Jan Němec
|
No asi nepomohlo, protoze (jetli jsem tomu rozumnel) tak on to zadava nekam na stranky, kde se to s necim slinkuje, co uz obsahuje main. Takze proto ta chyba s dvojim mainem. Ta neznama printf je asi taky dusledkem toho, ze se to nekde nejak divne sestavuje a #include se zrejme ignoruje. A navic to ma blbe napsane, protoze xoruje i s ukoncovaci nulou klice. |
|
|
Re: program v c
|
21.11.2006 21:30
Petr Zajíc
|
njn. Naštěstí tomu nerozumí, a tak mu to asi nebude vadit ;-) Pokud to dal do dvou tří fór tak už z toho něco splácá. |
|
|
Re: program v c
|
21.11.2006 21:37
Tomáš Eichler
|
Jj máte pravdu zadávám to na stránky,tam se to slinkuje.Uz sem se to dozvedel,tam stacilo poslat jen tu funkci i bez teho #include,takže už to funguje a je to i přeloženy.Chyba tam byla to mate pravdu,pak sem na to přišel,nakonec stačilo poslat tohle
void XOR_sifra (char* retezec, char* klic)
{
char* zacatek_klice = klic;
while (*retezec != 0)
{
*retezec ^= *klic;
++retezec;
if (*(klic+1) == 0)
klic = zacatek_klice;
else
++klic;
}
}
ted si lamu hlavu na dalsi ulohou,neco s morseovou abecedou:-) |
|
|
|
|
KOMENTARZE
|
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
|
|
Szukanie oprogramowania
|
©Pavel Kysilka - 2003-2024 |
maillinuxsoft.cz | Design:
www.megadesign.cz
|