|
|
morsova abeceda problem
|
4.12.2006 19:26
Jakub Dubovsky
|
Dobry den,nemohli byste mi poradit mame zadani
Zadání
Napište funkci v jazyce C, která překóduje vstupní řetězec z Morseovy abecedy do běžné abecedy. Morseova abeceda je zadávána znaky '.' a '-'. Libovolný jiný znak ve vstupním řetězci, nebo konec řetězce, ukončuje znak Morseovy abecedy. Funkce musí rozpoznávat všechny znaky anglické abecedy (a-z), číslice (0-9) a vracet hodnotu -1, jestliže zadaný kód neodpovídá žádnému znaku ani číslici.
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
char Morse_to_latin(char *);
Argumentem funkce je vstupní řetězec v Morseově abecedě
Funkce vrací první nalezený znak (malá písmena, nebo číslice) běžné abecedy
Příklad
Morse_to_latin("--.-"); vrací znak 'q'
Morse_to_latin("--.-/.-"); vrací znak 'q'
napsal sem tenhle program:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char Morse_to_latin(char *retez )
{
char znak = -1;
char pole[64];
int skip = 0;
int index = 1, i = 0;
do
{
for(i = 0; i != 64; i++)
pole[i] = 0;
pole[0]=-1;pole[1]=-1;
pole[2]='t';pole[3]='e';
pole[4]='m';pole[5]='n';pole[6]='a';pole[7]='i';
pole[8]='o';pole[9]='g';pole[10]='k';pole[11]='d';pole[12]='w';pole[13]='r';
pole[14]='u';pole[15]='s';
pole[18]='q';pole[19]='z';pole[20]='y';pole[21]='c';pole[22]='x';pole[23]='b';
pole[24]='j';pole[25]='p';pole[27]='l';pole[29]='f';pole[30]='v';pole[31]='h';
pole[32]='0';pole[33]='9';pole[35]='8';pole[39]='7';pole[47]='6';
pole[48]='1';pole[56]='2';pole[60]='3';pole[62]='4';pole[63]='5';
if(!retez)
break;
for(i = 0; i!=5; i++)
{
switch(retez[i])
{
case '-':
if(pole[index])
znak = pole[index];
index = 2 * index;
break;
case '.':
if(pole[index])
znak = pole[index];
index = 2 * index + 1;
break;
default:
skip = 1;
break;
}
if(skip)
break;
}
if(pole[index])
znak = pole[index];
} while(2==3);
return znak;
}
int main(int argc, char* argv[])
{
char znak = ' ';
char *retezec = "-.--";
znak = Morse_to_latin(retezec);
system ("PAUSE");
return 0;
}
vsechno se prelozi ale u vypisu z vystupu mi to hazi nejaky chybi v protokolu,nevyhodnoti mi to nejaky ty prvky spravne a nevim proc,uz sem se radil i s kamaradem a ten taky envim proc |
|
|
Re: morsova abeceda problem
|
4.12.2006 19:44
Ondřej Čečák
|
Na jaky predmet s jakym vyucujicim a na jake skole to je?
Tak si rikam, ze bych podobny ukol resil tak, ze bych projel retezec od zacatku do konce a jednotlive skupiny znaku porovnaval s tabulkou (pokud se ted neprojevuje ma absence na skautskych taborech a jednotlive znaky nejsou zakodovany v nejakem matematicky odvoditelnem poradi).
|
|
|
Re: morsova abeceda problem
|
4.12.2006 19:58
Ondřej Čečák
|
(pokud se ted neprojevuje ma absence na skautskych taborech a jednotlive znaky nejsou zakodovany v nejakem matematicky odvoditelnem poradi)
Ha, bohuzel projevuje. :)
|
|
|
Re: morsova abeceda problem
|
4.12.2006 20:01
Jakub Dubovsky
|
no je to programovani,na MU
Ja sem pouzil tohle tohle reseni z http://cs.wikipedia.org/wiki/Morseova_abeceda z te tabulky, jak se da prekladat morseovka. Tu tabulku sem prepsal do pole,za pomoci binarniho stromu.
|
|
|
|
Re: morsova abeceda problem
|
4.12.2006 20:09
Aleš Hakl
|
Ja si myslim, ze by jste lepe udelal, kdyby jste tam mel primo ten binarni strom jako strom nejakych structu, ale to je detail. Pak me neni jasny smysl onoho do {} while(2==3) a zpusobu jak incializujete to pole, ale to je take vice ci mene detail.
Ovsem opravdovy problem bych videl napriklad v tom, ze to nedetekuje vsechny neplatne znaky v morseove abecede (napriklad takove, ktere jsou vice nez 6 symbolu dlouhe a zacinaji nejakym platnym, coz jsou, pokud me neklamou me znalosti morzeovky snad vsechny mozne znaky delsi nez 6 symbolu :)).
|
|
|
Re: morsova abeceda problem
|
4.12.2006 20:26
Jakub Dubovsky
|
Takze myslite ze je chyba v tom |
|
|
|
|
KOMENTARZE
|
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
|
|
Szukanie oprogramowania
|
©Pavel Kysilka - 2003-2024 |
maillinuxsoft.cz | Design:
www.megadesign.cz
|