1時間ごとに更新!Amazon.co.jpで今売れている本トップ100   ショッピングモール


掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.5485

モース コード
投稿者---TG(2006/03/02 20:04:50)


こんにちわ、本日2回目の投稿です。
入力したアルファベット(String)をモースコードに変換しなければならないのですが、メインとは別のFunctionにてコードの変更を行う、という作業をしなければなりません。

モースコードは例の -. ...- -.-. などですが、これをメインでArrayにしてしまえばできるのですが、それが許されません。。。

例えば、メインでとなると下記です。。。。
const char* convertToMorse(char text, const char buffer[25][5])
{

if(text >= 'A' && text <= 'Z')
return buffer[text - 'A'];
else
return NULL;
}/*end convertToMorse*/

int main(){

char text;
char buffer[25][5] = { ".-", "-...", "-.-.", ".", "..-", "--.",
"....", "..", ".---", "-.-", ".-..", "--",
"-.", "---", ".--.", "--.-", ".-.", "...",
"-", "..-", "...-", ".--", "-..-", "-.--", "--.."
};

Textはユーザーの入力です。なのでTextとBufferを一緒にconvertToMorseのFunctionにパスする場合は上記になるはずですが(実際に試した)、実際のコードを部分をconvertToMorseにもってくるにはどうしたらよいか、どなたかアドバイスいただけますでしょうか? なぜメインでできないか・・・と、いうのも課題なのでこちらがしたくでもできない、、というだけなのですが。。

よろしくお願いします! :)


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:モース コード 5487 REE 2006/03/02 20:09:23
<子記事> Re:モース コード 5489 Hermit 2006/03/02 22:15:44
<子記事> Re:モース コード 5491 επιστημη 2006/03/02 22:37:16


No.5487

Re:モース コード
投稿者---REE(2006/03/02 20:09:23)


>モースコードは例の -. ...- -.-. などですが、これをメインでArrayにしてしまえばできるのですが、それが許されません。。。

convertToMorseでArrayにしてしまえばよいのでは?



この投稿にコメントする

削除パスワード

No.5489

Re:モース コード
投稿者---Hermit(2006/03/02 22:15:44)


昔はモールスと言ってましたが、
今は、モースなんですか?



この投稿にコメントする

削除パスワード

No.5490

Re:モース コード
投稿者---TG(2006/03/02 22:30:26)


>昔はモールスと言ってましたが、
>今は、モースなんですか?


(^^;)当方、英語圏にてプログラミングを勉強しているため、日本語の正式名称をしらず、Morseを、英語よむをそのままカタカナにしてしまっただけでした。。

また、さきほどの投稿、「字下げ」をせずに投稿してしまいました。。


この投稿にコメントする

削除パスワード

No.5494

Re:モース コード
投稿者---Hermit(2006/03/02 22:52:03)


解決したみたいで、よかったですね。

>>昔はモールスと言ってましたが、
>>今は、モースなんですか?
>(^^;)当方、英語圏にてプログラミングを勉強しているため、日本語の正式名称をしらず、Morseを、英語よむをそのままカタカナにしてしまっただけでした。。

日本の表記って、かなりいい加減なんで(^^;
で、英語圏って何処でしょう。アメリカ、イギリス、オーストラリア
その他いろいろな国(地域、人種によっても)で、発音違うので。

参考までに教えてください。



この投稿にコメントする

削除パスワード

No.5501

Re:モース コード
投稿者---TG(2006/03/02 23:36:48)


>日本の表記って、かなりいい加減なんで(^^;
>で、英語圏って何処でしょう。アメリカ、イギリス、オーストラリア
>その他いろいろな国(地域、人種によっても)で、発音違うので。
>
>参考までに教えてください。

香港です。なので英語はイギリスです。
(一般の香港人の英語は広東語なまりがきついですが)
:)


この投稿にコメントする

削除パスワード

No.5522

Re:モース コード
投稿者---Hermit(2006/03/03 19:41:44)


>香港です。なので英語はイギリスです。
>(一般の香港人の英語は広東語なまりがきついですが)
>:)
そちらの方ですか。
香港あたりは、r の発音が弱いと覚えておきます。
その辺りなら行く可能性大だし。

ありがとうございます。


この投稿にコメントする

削除パスワード

No.5491

Re:モース コード
投稿者---επιστημη(2006/03/02 22:37:16)


#include <stdio.h>

const char* convertToMorse(char text) {
  static char buffer[26][5] = { 
    ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", 
    "....", "..", ".---", "-.-", ".-..", "--", 
    "-.", "---", ".--.", "--.-", ".-.", "...", 
    "-", "..-", "...-", ".--", "-..-", "-.--", "--.." 
  };

  if(text >= 'A' && text <= 'Z')
    return buffer[text - 'A'];
  else
    return NULL;
}

int main(){
  const char* input = "APPLE";
  const char* p;
  for ( p = input; *p; ++p ) {
    printf("%c : %s\n", *p, convertToMorse(*p));
  }
  return 0;
}



この投稿にコメントする

削除パスワード

No.5492

Re:モース コード
投稿者---TG(2006/03/02 22:41:35)


επιστημηさん

おお。επιστημηさんのCodeでしっかりできました。
ちょっとこのCode勉強させてください。何せ初心者なので、また質問すると思います。


この投稿にコメントする

削除パスワード

No.5493

Re:モース コード
投稿者---επιστημη(2006/03/02 22:45:22)


>ちょっとこのCode勉強させてください。何せ初心者なので、また質問すると思います。

キモは static です。



この投稿にコメントする

削除パスワード

No.5496

Re:モース コード
投稿者---TG(2006/03/02 23:04:36)


>>ちょっとこのCode勉強させてください。何せ初心者なので、また質問すると思います。
>
>キモは static です。

static 実はまだそこまで行ってないんですよ、授業が。。
で、このMorse Codeの課題なので当方としては難しい要求と思っているのですが、
すいません、今メインのサンプルを見つけました。このメインに合わせて convertToMorse のFunctionを作成しなければならないと。

そうなると、Functionをポインターにできなく、パラメーター部分が
char text[] char buffer[]になります。
convertToMorse のFunctionの中で、この二つのArrayを使っていくことになりますが、
また、static を使わないで正しくOUTPUTされる方法はありますか?


#include <stdio.h>

//Functionのプロトタイプは元々配られたものです。変更できないと。。。
char convertToMorse(char text[], char buffer[]) {

//課題はここの部分をどうするか----------------------------
  static char buffer[26][5]= {
    ".-", "-...", "-.-.", "-..", ".", "..-.", "--.",
    "....", "..", ".---", "-.-", ".-..", "--",
    "-.", "---", ".--.", "--.-", ".-.", "...",
    "-", "..-", "...-", ".--", "-..-", "-.--", "--.."
  };
//---------------------------------------------------

//そしてArray使用だと、ここの部分も変わってくると思いますが、text[]
//どうでしょう?
//課題は、このメインに合わせてこのFunctionをどう作るか、なのですが。

  if(text >= 'A' && text <= 'Z')
    return buffer[text - 'A'];
  else
    return NULL;

}

//メイン部分はサンプルとして元々配られた部分です
int main(){
  char buffer[26], text[];

  printf("Enter a text:\n");
  text = getchar();
  convertToMorse(buffer, text);

  printf("%s\n", buffer);

  return 0;

  fflush(stdin);
  getchar();
}/*end main*/




この投稿にコメントする

削除パスワード

No.5497

Re:モース コード
投稿者---επιστημη(2006/03/02 23:24:01)


//メイン部分はサンプルとして元々配られた部分です
int main(){
  char buffer[26], text[]; // ←間違っている

  printf("Enter a text:\n"); // テキスト(文字列)を要求しておきながら
  text = getchar(); // なんだこれは!?
  convertToMorse(buffer, text);

  printf("%s\n", buffer);

  return 0;

  fflush(stdin);
  getchar();
}/*end main*/



最低のサンプルです。だれも突っ込まなかったのか?



この投稿にコメントする

削除パスワード

No.5498

Re:モース コード
投稿者---TG(2006/03/02 23:24:01)


初歩的なこといくつかお伺いします。

[1]下のFunction Prototype;

//Functionのプロトタイプは元々配られたものです。変更できないと。。。
char convertToMorse(char text[], char buffer[]) {

このようにしてメインより渡されたParameterはArrayなため、このFunctionでもArrayで使用しなければならないと思ったのですが、下記の
if(text >= 'A' && text <= 'Z')の部分では、textだけで使っています。このtextはtext[0]のアドレスをさしていると教わった記憶が?そうすると、textはtext[0]のアドレスをさしていますか?Arrayを[] なしで使用するのにまだ慣れていません。。なぜtextだけで、下記の部分が機能するのでしょう。。か?


if(text >= 'A' && text <= 'Z')


この投稿にコメントする

削除パスワード

No.5499

Re:モース コード
投稿者---επιστημη(2006/03/02 23:27:35)


>初歩的なこといくつかお伺いします。

その前に確認。

>char convertToMorse(char text[], char buffer[]) {

どっちが入力? どっちが出力? 戻り値は何を返すの?
入力されるのは文字? それとも文字列?
変換できない入力に対してどうすればいい?

わかんないことだらけ。



この投稿にコメントする

削除パスワード

No.5500

Re:モース コード
投稿者---TG(2006/03/02 23:34:52)


>>初歩的なこといくつかお伺いします。
>
>その前に確認。
>
>>char convertToMorse(char text[], char buffer[]) {
>
>どっちが入力? どっちが出力? 戻り値は何を返すの?
>入力されるのは文字? それとも文字列?
>変換できない入力に対してどうすればいい?
>
>わかんないことだらけ。

text[]が入力です。メインにて打ち込まれたアルファベットです。
大文字のみと限定されています。なのでその部分は自分でif-elseで大文字以外の文字が入ってきた場合無視するか、、、再度入力されるか、などは考えていたのですが。

convertToMorseのFunctionにてアルファベットからMorseCodeに変換して、その変換された結果をbuffer[]で返す。。と。


この投稿にコメントする

削除パスワード

No.5502

Re:モース コード
投稿者---επιστημη(2006/03/02 23:41:10)


>convertToMorseのFunctionにてアルファベットからMorseCodeに変換して、その変換された結果をbuffer[]で返す。。と。

入力は文字なのですね? 文字列では"ない"のですね?
ならばなぜchar textではないのでしょう?

で、戻り値は?



この投稿にコメントする

削除パスワード

No.5504

Re:モース コード
投稿者---TG(2006/03/02 23:52:57)


>>convertToMorseのFunctionにてアルファベットからMorseCodeに変換して、その変換された結果をbuffer[]で返す。。と。
>
>入力は文字なのですね? 文字列では"ない"のですね?
>ならばなぜchar textではないのでしょう?
>
>で、戻り値は?

A を文字
ABC を文字列を呼ぶならば、この場合要求されているのは文字列です。

要求以下になります;
1)パラメーターは文字列を含むCharacter Arrayを使用
2)パラメーター BufferはMorseCodeを含む。
3)大文字のみMorse Codeへ変換する
4)大文字以外の文字は変換されない
5)Morse CodeとMorse Codeの間はスペースを置く
6)Standard Ouputへの出力はなし (というのは、Buffer ArrayにMorse Codeを含ませるということだそうです)

この課題は、メインを作る課題ではなく、部分的なFunction部分のみを作ることに限られているので、それも変な課題ですが。。。


この投稿にコメントする

削除パスワード

No.5505

Re:モース コード
投稿者---επιστημη(2006/03/02 23:54:42)


>要求以下になります;
>1)パラメーターは文字列を含むCharacter Arrayを使用
>2)パラメーター BufferはMorseCodeを含む。
>3)大文字のみMorse Codeへ変換する
>4)大文字以外の文字は変換されない
>5)Morse CodeとMorse Codeの間はスペースを置く
>6)Standard Ouputへの出力はなし (というのは、Buffer ArrayにMorse Codeを含ませるということだそうです)

で、戻り値は?



この投稿にコメントする

削除パスワード

No.5507

Re:モース コード
投稿者---TG(2006/03/03 00:02:19)


>>要求以下になります;
>>1)パラメーターは文字列を含むCharacter Arrayを使用
>>2)パラメーター BufferはMorseCodeを含む。
>>3)大文字のみMorse Codeへ変換する
>>4)大文字以外の文字は変換されない
>>5)Morse CodeとMorse Codeの間はスペースを置く
>>6)Standard Ouputへの出力はなし (というのは、Buffer ArrayにMorse Codeを含ませるということだそうです)
>
>で、戻り値は?

戻り値というと、Functionから何がReturnされるか、ということですよね?(それが質問ですよね?)

例えばメインへ「MT」とアルファベットを打ち込んだら、
このFunctionからは「-- -」という、MとTのMorse Codeが戻される、と指示されています。

この部分をみると;
if(text >= 'A' && text <= 'Z')
return buffer[text - 'A'];
else
return NULL;

アルファベット(例えばM)に値するMorse Codeを、Morse Codeとしてメインに戻すと。。。


この投稿にコメントする

削除パスワード

No.5509

Re:モース コード
投稿者---επιστημη(2006/03/03 00:32:39)


>戻り値というと、Functionから何がReturnされるか、ということですよね?(それが質問ですよね?)

char convertToMorse(char text[], char buffer[])
^^^^
↑この値。 何を返す?




この投稿にコメントする

削除パスワード

No.5510

Re:モース コード
投稿者---TG(2006/03/03 09:49:49)


>>戻り値というと、Functionから何がReturnされるか、ということですよね?(それが質問ですよね?)
>
>char convertToMorse(char text[], char buffer[])
>^^^^
>↑この値。 何を返す?
>

charの戻り値ですね、それはBufferです。
Bufferの“中に、例えばMTならMTの“Morce Code”を入れて返せ”と。
そう、要求されています。


この投稿にコメントする

削除パスワード

No.5527

Re:モース コード
投稿者---επιστημη(2006/03/03 22:24:06)


>>char convertToMorse(char text[], char buffer[])
>>^^^^
>>↑この値。 何を返す?
>>
>charの戻り値ですね、それはBufferです。
>Bufferの“中に、例えばMTならMTの“Morce Code”を入れて返せ”と。
>そう、要求されています。

charだから1文字しか返せません。



この投稿にコメントする

削除パスワード

No.5506

Re:モース コード
投稿者---TJ(2006/03/02 23:54:55)
http://home.f01.itscom.net/toge/programingreport/


> if(text >= 'A' && text <= 'Z')の部分では、textだけで使っています。このtextはtext[0]のアドレスをさしていると教わった記憶が?そうすると、textは text[0]のアドレスをさしていますか?Arrayを[] なしで使用するのにまだ慣れていません。。なぜtextだけで、下記の部分が機能するのでしょう。。か?
>
>
> if(text >= 'A' && text <= 'Z')
機能していません。
というかコンパイルでwarningとかがでるのではないでしょうか?
おっしゃる通りtextはtext[0]のアドレスを指していますので、char*型とint型を比較していることになります。

サンプルのソースコードを見る限り、失礼ながらそのサンプルを書いた方からは何も学ばない方がいいかと思います。


この投稿にコメントする

削除パスワード

No.5508

Re:モース コード
投稿者---TG(2006/03/03 00:09:36)


>>
>> if(text >= 'A' && text <= 'Z')
>機能していません。
>というかコンパイルでwarningとかがでるのではないでしょうか?
>おっしゃる通りtextはtext[0]のアドレスを指していますので、char*型とint型を比較していることになります。
>
>サンプルのソースコードを見る限り、失礼ながらそのサンプルを書いた方からは何も学ばない方がいいかと思います。

受け取ったサンプルコードは下記です。あとはこっちで付け足して現在苦戦中ですので、わたしの追加した部分はかなりはちゃめちゃです。。今それをなんとか正そうとしているのですが。なので、すいませんが、わたしが手を加えた部分はちょっと無視と。。。

>>
>> if(text >= 'A' && text <= 'Z')
>機能していません。

コンパイルでWarningでます。その場合、このtext部分はどのようになおせばよいですか?
text[i] ?


オリジナルサンプルコードです;
#include <stdio.h>

void convertToMorse(char text[], char buffer[])
{
        /** Put your function coding below **/
        return;
}

int main(int argc, char* argv[])
{
        char msg[256], morsecode[1000];

        printf("Oct/2005 Presentation - sample testing program\n");
        printf("Input a message: ");
        gets(msg);
        convertToMorse(msg, morsecode);
        printf("Morse code for the input message is: %s", morsecode);
        fflush(stdin);
        getchar();
        return 0;
}



この投稿にコメントする

削除パスワード

No.5521

Re:モース コード
投稿者---TJ(2006/03/03 19:06:34)
http://home.f01.itscom.net/toge/programingreport/


>受け取ったサンプルコードは下記です。あとはこっちで付け足して現在苦戦中ですので、わたしの追加した部分はかなりはちゃめちゃです。。今それをなんとか正そうとしているのですが。なので、すいませんが、わたしが手を加えた部分はちょっと無視と。。。

それは申し訳ありませんでした。 教える側の人間が書いたと勘違いしておりました。

>コンパイルでWarningでます。その場合、このtext部分はどのようになおせばよいですか?
>text[i] ?
そうです。

staticを使ってはいけないならば、convertToMorse内で、文字列をコピー
すればどうでしょう。流れとしては、

1、for文でtextを1文字ずつ見ていく。
2、アルファベットの大文字かどうか判断し、大文字ならその文字に対応するモールス信号の文字列をmorseにコピーしていく。


この投稿にコメントする

削除パスワード

No.5523

Re:モース コード
投稿者---円零(2006/03/03 19:45:27)


A-Zの文字コードが連続しているって前提でいいんですかね。
その辺も保証されない場合、一文字ずつ検索しないといけないので
逆に大文字かどうかのチェックとかはいらなくなりますが。
void convertToMorse(char text[], char buffer[])
{
    /*static*/ char chrset[50] =
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,:?'\"+-/=()@";
    /*static*/ char *codestr[49] = 
    {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---",
     "-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-",
     "..-","...-",".--","-..-","-.--","--..","-----",".----","..---",
     "...--","....-",".....","-....","--...","---..","----.",
     ".-.-.-","--..--","---...","..--..",".----.",".-..-.",".-.-.",
     "-....-","-..-.","-...-","-.--.","-.--.-",".--.-."};
    int letter, length = 0;

    while(*text){
        for(letter = 0; letter < 50; letter++)
            if(chrset[letter] == *text) break;
        if(letter < 26 && length < 994)
            length += sprintf(buffer + length, "%s ", codestr[letter]);
        text ++;
    }
    return;
}

int main(int argc, char* argv[])
{
        char msg[256], morsecode[1000];

        printf("Oct/2005 Presentation - sample testing program\n");
        printf("Input a message: ");
        gets(msg);
        convertToMorse(msg, morsecode);
        printf("Morse code for the input message is: %s", morsecode);
        fflush(stdin);
        getchar();
        return 0;
}




この投稿にコメントする

削除パスワード

No.5524

Re:モース コード
投稿者---Hermit(2006/03/03 21:10:36)


>if(letter < 26 && length < 994)
letter < 50 でない?


この投稿にコメントする

削除パスワード

No.5525

Re:モース コード
投稿者---円零(2006/03/03 21:24:26)


>>if(letter < 26 && length < 994)
>letter < 50 でない?

記号も変換したくなった時のために備えてはあるものの、
要求仕様的にはアルファベット大文字以外は変換してはいけないらしいので。

#趣味でプログラミングやってる人間はつい余計なおまけをつけてしまうと言う話。



この投稿にコメントする

削除パスワード

No.5526

Re:モース コード
投稿者---Hermit(2006/03/03 21:49:41)


そういうことですか
いらぬおせっかいを焼いてしまいました
失礼。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧




掲示板提供:Real Integrity