Morseova abeceda – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Morseova abeceda – C / C++ – Fórum – Programujte.comMorseova abeceda – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Pól Bulva
~ Anonymní uživatel
4 příspěvky
27. 5. 2010   #1
-
0
-

Zdravim,nemate nekdo v pocitaci nejaky program na morseovu abecedu v C nebo v C++?Prinejhorsim muze byt i v Pascalu.Predem dik :-)

Nahlásit jako SPAM
IP: 90.182.253.–
Reklama
Reklama
silent0
Stálý člen
27. 5. 2010   #2
-
0
-

Mno mam, ale nemam v planu ti to dat jen tak, ze tobe se to nechce ucit ...

Nahlásit jako SPAM
IP: 90.182.248.–
C#
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
9. 6. 2010   #3
-
0
-

A co za to?Jestli stahujes pres Czshare,tak mam hodne kreditu a mohl bych ti nejake to Tera poslat :-)

Nahlásit jako SPAM
IP: 90.182.253.–
liborb
~ Redaktor
+18
Guru
10. 6. 2010   #4
-
0
-

Na převod do MA ti stačí jeden switch:



switch(text[i]) {
case('a'):
printf(".-");
break;
case('b'):
...
}


Zadaný text procházíš po znacích, před procházením změnit všechny písmenka na malá. Oddělovač písmenek je mezera nebo /, oddělovač slov jsou dvě lomítka. Oddělovač vět jsou 3 lomítka.

Obrácený převod je otázkou stavového automatu.

Nahlásit jako SPAM
IP: 85.207.166.–
Pól Bulva
~ Anonymní uživatel
4 příspěvky
10. 6. 2010   #5
-
0
-

Tak jsem to udelal,funguje,ale za kodem mi to haze nejake nesmysly :-(
[url=http://img541.imageshack.us/i/kodt.jpg/]

[/url]
kod co jsem splodil je:
[quote]#include <stdio.h>
#include <string.h>

void getMorse(char znak)
{

switch (znak)
{

case 'a' : printf(" .- ");
break;
case 'A' : printf(" .- ");
break;
case 'b' : printf(" -... ");
break;
case 'B' : printf(" -... ");
break;
case 'c' : printf(" -.-. ");
break;
case 'C' : printf(" -.-. ");
break;
case 'd' : printf(" -.. ");
break;
case 'D' : printf(" -.. ");
break;
case 'e' : printf(" . ");
break;
case 'E' : printf(" . ");
break;
case 'f' : printf(" ..-. ");
break;
case 'F' : printf(" ..-. ");
break;
case 'g' : printf(" --. ");
break;
case 'G' : printf(" --. ");
break;
case 'h' : printf(" .... ");
break;
case 'H' : printf(" .... ");
break;
case 'i' : printf(" .. ");
break;
case 'I' : printf(" .. ");
break;
case 'j' : printf(" .--- ");
break;
case 'J' : printf(" .--- ");
break;
case 'k' : printf(" -.- ");
break;
case 'K' : printf(" -.- ");
break;
case 'l' : printf(" .-.. ");
break;
case 'L' : printf(" .-.. ");
break;
case 'm' : printf(" -- ");
break;
case 'M' : printf(" -- ");
break;
case 'n' : printf(" -. ");
break;
case 'N' : printf(" -. ");
break;
case 'o' : printf(" --- ");
break;
case 'O' : printf(" --- ");
break;
case 'p' : printf(" .--. ");
break;
case 'P' : printf(" .--. ");
break;
case 'q' : printf(" --.- ");
break;
case 'Q' : printf(" --.- ");
break;
case 'r' : printf(" .-. ");
break;
case 'R' : printf(" .-. ");
break;
case 's' : printf(" ... ");
break;
case 'S' : printf(" ... ");
break;
case 't' : printf(" - ");
break;
case 'T' : printf(" - ");
break;
case 'u' : printf(" ..- ");
break;
case 'U' : printf(" ..- ");
break;
case 'v' : printf(" ...- ");
break;
case 'V' : printf(" ...- ");
break;
case 'w' : printf(" .-- ");
break;
case 'W' : printf(" .-- ");
break;
case 'x' : printf(" -..- ");
break;
case 'X' : printf(" -..- ");
break;
case 'y' : printf(" -.-- ");
break;
case 'Y' : printf(" -.-- ");
break;
case 'z' : printf(" --.. ");
break;
case 'Z' : printf(" --.. ");
break;


default: putchar(' ');

}
}

int main(int argc, char** argv)

{

char str[80];
int i;

gets(str);
for (i = 0; i < 80; i++ )
{

getMorse(str[i]);
}
getchar();
return 0;
}



[/quote]

Nahlásit jako SPAM
IP: 90.182.253.–
liborb
~ Redaktor
+18
Guru
11. 6. 2010   #6
-
0
-

Protože nemůže procháze celý buffer, ale jenom jeho platnou část, tj. dle délky zadaného řetězce, kterou zjistíš přes strlen. Něco jako:



for (i = 0;i < strlen(str);i++) {

Nahlásit jako SPAM
IP: 85.207.166.–
Pól Bulva
~ Anonymní uživatel
4 příspěvky
11. 6. 2010   #7
-
0
-

Jo super,jeste musim vyresit zvukovu signalizaci,kdybyste zhruba vedeli jak to udelat tak mi prosim poradte,zati dekuju moc :-)

Nahlásit jako SPAM
IP: 90.182.253.–
liborb
~ Redaktor
+18
Guru
11. 6. 2010   #8
-
0
-

Co třeba Beep?

Nahlásit jako SPAM
IP: 85.207.166.–
Pól bulva
~ Anonymní uživatel
4 příspěvky
11. 6. 2010   #9
-
0
-

Jojo uz to hledam,neco jsem nasel,ale nevim jak to aplikovat :-(

Nahlásit jako SPAM
IP: 90.182.253.–
LJ10240
Stálý člen
11. 6. 2010   #10
-
0
-

#define LONGBEEP 350

#define SHORTBEEP 100
#define FREQ 5000
(...)
char c[]="--..";
for(int i=0;i<strlen(c);i++)
switch(c){
case '-': Beep(FREQ, LONGBEEP);break;
case '.': Beep(FREQ, SHORTBEEP);break;
default:break;
}

Nahlásit jako SPAM
IP: 217.30.64.–
11. 6. 2010   #11
-
0
-

To LJ1024 : Jo to je super,ale ja nevim jak a kam to vlozit do mojeho kodu :-(

#include <stdio.h>

#include <string.h>
#define LONGBEEP 350
#define SHORTBEEP 100
#define FREQ 5000


void getMorse(char znak)
{

switch (znak)
{

case 'a' : printf(" .- ");
break;
case 'A' : printf(" .- ");
break;
case 'b' : printf(" -... ");
break;
case 'B' : printf(" -... ");
break;
case 'c' : printf(" -.-. ");
break;
case 'C' : printf(" -.-. ");
break;
case 'd' : printf(" -.. ");
break;
case 'D' : printf(" -.. ");
break;
case 'e' : printf(" . ");
break;
case 'E' : printf(" . ");
break;
case 'f' : printf(" ..-. ");
break;
case 'F' : printf(" ..-. ");
break;
case 'g' : printf(" --. ");
break;
case 'G' : printf(" --. ");
break;
case 'h' : printf(" .... ");
break;
case 'H' : printf(" .... ");
break;
case 'i' : printf(" .. ");
break;
case 'I' : printf(" .. ");
break;
case 'j' : printf(" .--- ");
break;
case 'J' : printf(" .--- ");
break;
case 'k' : printf(" -.- ");
break;
case 'K' : printf(" -.- ");
break;
case 'l' : printf(" .-.. ");
break;
case 'L' : printf(" .-.. ");
break;
case 'm' : printf(" -- ");
break;
case 'M' : printf(" -- ");
break;
case 'n' : printf(" -. ");
break;
case 'N' : printf(" -. ");
break;
case 'o' : printf(" --- ");
break;
case 'O' : printf(" --- ");
break;
case 'p' : printf(" .--. ");
break;
case 'P' : printf(" .--. ");
break;
case 'q' : printf(" --.- ");
break;
case 'Q' : printf(" --.- ");
break;
case 'r' : printf(" .-. ");
break;
case 'R' : printf(" .-. ");
break;
case 's' : printf(" ... ");
break;
case 'S' : printf(" ... ");
break;
case 't' : printf(" - ");
break;
case 'T' : printf(" - ");
break;
case 'u' : printf(" ..- ");
break;
case 'U' : printf(" ..- ");
break;
case 'v' : printf(" ...- ");
break;
case 'V' : printf(" ...- ");
break;
case 'w' : printf(" .-- ");
break;
case 'W' : printf(" .-- ");
break;
case 'x' : printf(" -..- ");
break;
case 'X' : printf(" -..- ");
break;
case 'y' : printf(" -.-- ");
break;
case 'Y' : printf(" -.-- ");
break;
case 'z' : printf(" --.. ");
break;
case 'Z' : printf(" --.. ");
break;
case ' ' : printf(" / ");
break;
case '.' : printf(" // ");
break;
case '?' : printf(" // ");
break;
case '!' : printf(" // ");
break;

default: putchar(' ');

}
}

int main(int argc, char** argv)

{

char str[80];
int i;

gets(str);
for (i = 0;i < strlen(str);i++)
{
getMorse(str[i]);

}


getchar();
return 0;
}



Nahlásit jako SPAM
IP: 90.182.253.–
liborb
~ Redaktor
+18
Guru
11. 6. 2010   #12
-
0
-

To byla jenom ukázka, jak to udělat. Aby si to mohl použít ve tvém kódu, tak místo printf do okna konzole ukládej ty tečky a čárky do řetězce a pak to prožeň kódem od LJ 1024. A nezapomeň to i vypsat.

Nahlásit jako SPAM
IP: 195.189.143.–
11. 6. 2010   #13
-
0
-

Muzes mi nazorne ukazat jak udelat ten retezec aby mi tam fungoval beep? :-(

Nahlásit jako SPAM
IP: 90.182.253.–
LJ10240
Stálý člen
11. 6. 2010   #14
-
0
-

misto

void getMorse(char znak)
napis
char* getMorse(char znak)
misto
printf(" .- ");break;

bude
 return " .- ";

(a stejne tak u vsech dalsich caseu) a misto
default: putchar(' ');

napises
default: return "";


a pak upravis tohle
char str[80];

int i;
gets(str);
for (i = 0;i < strlen(str);i++) {
getMorse(str[i]);
}
na tohle
char str[80];

int i;
gets(str);
for (i = 0;i < strlen(str);i++) {
char c[5];
strcpy(c, getMorse(str[i]));
int j;
for(j=0;j<strlen(c);j++)
switch(c){
case '-': Beep(FREQ, LONGBEEP);break;
case '.': Beep(FREQ, SHORTBEEP);break;
default:break;
}
}

Nahlásit jako SPAM
IP: 217.30.64.–
LJ10240
Stálý člen
11. 6. 2010   #15
-
0
-

A pokud ti nevadí jednodušší a kratší řešní, tak si zkopíruj tohle:

#include <stdio.h>

#include <string.h>
#include <windows.h>
#define je_male(c)((c)>='a' && (c)<='z')
#define je_velke(c)((c)>='A' && (c)<='Z')
#define to_upper(c)(je_male(c) ? (c)-'a'+'A' : (c))
#define LONGBEEP 750
#define SHORTBEEP 250
#define FREQ 450

int main(int argc, char** argv){
char ma[28][5]={".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-.", "...-", ".--", "-..-", "-.--", "--..", "|", ""};
char str[80];
char c[5];
int i;
gets(str);
for(i=0;i<strlen(str);i++){
int j;
int pos;
if(je_male(str[i]) || je_velke(str[i]))
pos=(int)to_upper(str[i])-65;
else if(str[i]==32)
pos=27;
else
pos=26;
strcpy(c, ma[pos]);
for(j=0;j<strlen(c);j++){
putchar(c[j]);
switch(c[j]){
case '-': Beep(FREQ, LONGBEEP);break;
case '.': Beep(FREQ, SHORTBEEP);break;
case '|': Sleep(600);
default:break;
}
Sleep(80);
}
putchar('|');
Sleep(700);
}
getchar();
return 0;
}

Nahlásit jako SPAM
IP: 217.30.64.–
11. 6. 2010   #16
-
0
-

To LJ1024 :
ted jsem to prepsal a pise mi to : switch quantity not an integer

Nahlásit jako SPAM
IP: 90.182.253.–
LJ10240
Stálý člen
11. 6. 2010   #17
-
0
-

PólBulva napsal:
To LJ1024 :
ted jsem to prepsal a pise mi to : switch quantity not an integer



dej sem zdroj (abych vedel, co konkretne myslis, protoze jsem sem dal dve moznosti) a rekni mi, na ktere radce je problem.

EDIT: tak uz asi vim
tohle
for(j=0;j<strlen(c);j++)

switch(c){
case '-': Beep(FREQ, LONGBEEP);break;
case '.': Beep(FREQ, SHORTBEEP);break;
default:break;
}
ma byt takhle
for(j=0;j<strlen(c);j++)

switch(c[j]){
case '-': Beep(FREQ, LONGBEEP);break;
case '.': Beep(FREQ, SHORTBEEP);break;
default:break;
}

Nahlásit jako SPAM
IP: 217.30.64.–
11. 6. 2010   #18
-
0
-

Jojo uz to vidim,jeste jsem to musel pojmenovat jako cpp,ale ted mi to pro zmenu nevypise tek kod :-D

Nahlásit jako SPAM
IP: 90.182.253.–
LJ10240
Stálý člen
12. 6. 2010   #19
-
0
-

Nevypise to, protoze tam ted neni zadan fce, ktera by neco vypisovala... Urcite ji tam ale dokazes pridelat sam, krome toho jsem ti nabidl druhe reseni, ktere vypisuje i pipa, je kratsi, jednodussi a funguje :)

Nahlásit jako SPAM
IP: 217.30.64.–
12. 6. 2010   #20
-
0
-

To LJ1024 :
Jojo ja tam neco uz vymyslim,to druhe reseni je super,ale tam nevim jak bych pridelal treba ?!@...Jo a vedel bys jak u toho mojeho reseni pridelat CH?Zatim MOC DIKY!!

Nahlásit jako SPAM
IP: 90.182.253.–
LJ10240
Stálý člen
12. 6. 2010   #21
-
0
-

Kdybys do meho reseni chtel pridat treba zavinac, tak bys misto

char ma[28][5]={".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-.", "...-", ".--", "-..-", "-.--", "--..", "|", ""};

char str[80];
char c[5];
int i;
gets(str);
for(i=0;i<strlen(str);i++){
int j;
int pos;
if(je_male(str[i]) || je_velke(str[i]))
pos=(int)to_upper(str[i])-65;
else if(str[i]==32)
pos=27;
else
pos=26;

musel mit napriklad
char ma[29][5]={".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-.", "...-", ".--", "-..-", "-.--",

"--..", "|", "", "@"};
char str[80];
char c[5];
int i;
gets(str);
for(i=0;i<strlen(str);i++){
int j;
int pos;
if(je_male(str[i]) || je_velke(str[i]))
pos=(int)to_upper(str[i])-65;
else if(str[i]==32)
pos=27;
else if(str[i]==64)
pos=28;
else
pos=26;

Nahlásit jako SPAM
IP: 217.30.64.–
LJ10240
Stálý člen
12. 6. 2010   #22
-
0
-

a kdybys do tveho reseni chtel pridat "ch", tak by tam muselo by

for (i = 0;i < strlen(str);i++)  {

char c[5];
if(i<strlen(str)-1)
if((str[i]=='c' || str[i]=='C') && (str[i+1]=='h' || str[i+1]=='H')){
strcpy(c, " ---- ");
i++;
}
int j;
for(j=0;j<strlen(c);j++)
switch(c){
case '-': Beep(FREQ, LONGBEEP);break;
case '.': Beep(FREQ, SHORTBEEP);break;
default:break;
}
}

Nahlásit jako SPAM
IP: 217.30.64.–
12. 6. 2010   #23
-
0
-

krnik ted mi to vypise a vypipa jen to ch,misto ostatnich znaku mi to pise nejake nesmysly :-(

Nahlásit jako SPAM
IP: 90.182.253.–
LJ10240
Stálý člen
12. 6. 2010   #24
-
0
-

promin - takhle by to uz melo byt spravne,...

for (i = 0;i < strlen(str);i++)  {

char c[5];
strcpy(c, getMorse(str[i]));
if(i<strlen(str)-1)
if((str[i]=='c' || str[i]=='C') && (str[i+1]=='h' || str[i+1]=='H')){
strcpy(c, " ---- ");
i++;
}
int j;
for(j=0;j<strlen(c);j++)
switch(c){
case '-': Beep(FREQ, LONGBEEP);break;
case '.': Beep(FREQ, SHORTBEEP);break;
default:break;
}
}

Nahlásit jako SPAM
IP: 217.30.64.–
12. 6. 2010   #25
-
0
-

Joooo,super,diky moc,ozvi se mi na icq (322608336),jestli stahujes z czshare :-)

Nahlásit jako SPAM
IP: 90.182.253.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 213 hostů

Podobná vlákna

Morseova abeceda — založil hejnallukas

Morseova Věta — založil Marek

Abeceda — založil ches

Abeceda pes metody — založil Michal

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý