掲示板利用宣言

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

 私は

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

掲示板2

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

No.24553

文字列比較
投稿者---student(2005/12/06 01:09:25)


いま誕生日から星座を判定するプログラムを作っています。
01/24のような形式で日付を入力して、Jan. 24のような形式で出力。
そして対応する星座を出力する。(もちろんエラーチェックもする。)
これをスマートに書くために文字配列へのポインタの配列を用いたいんですが、どうもうまくいきません。どうすればいいのでしょうか?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> 文字列比較 24554 student 2005/12/06 01:10:05
<子記事> 文字列比較 24555 student 2005/12/06 01:11:38
<子記事> Re:文字列比較 24576 Hermit 2005/12/06 19:18:39


No.24554

文字列比較
投稿者---student(2005/12/06 01:10:05)


題名を間違えました。
星座判定です。


この投稿にコメントする

削除パスワード

No.24555

文字列比較
投稿者---student(2005/12/06 01:11:38)


<pre>#include&lt;stdio.h&gt;

void determination(char *constellation, char *birthday)
{
    if(*birthday != '0')
        printf(&quot;Error&quot;);
    
}
    

int main()
{
    char constellation[80][80]= {&quot;ARIES&quot;, &quot;TAURUS&quot;, &quot;GEMINI&quot;, &quot;CANCER&quot;, &quot;LEO&quot;, &quot;VIRGO&quot;, &quot;LIBRA&quot;, &quot;SCORPIO&quot;, &quot;SAGITTARIUS&quot;, &quot;CAPRICORN&quot;, &quot;AQUARIUS&quot;, &quot;PISCES&quot;};
    char manth[80][80] = {&quot;Jan. &quot;, &quot;Feb. &quot;, &quot;Mar. &quot;, &quot;Apr. &quot;, &quot;May. &quot;, &quot;Jun. &quot;, &quot;Jul. &quot;, &quot;Aug. &quot;, &quot;Sep. &quot;, &quot;Oct. &quot;, &quot;Nov. &quot;, &quot;Dec. &quot;};
    char birthday[3];
    printf(&quot;Enter your birthday [mm/dd] : &quot;);
    scanf(&quot;%d%d&quot;, &amp;birthday);
    printf(&quot;%d&quot;, birthday[3]);
    determination(&amp;constellation, &amp;birthday);
    return 0;
}
</pre>



とりあえずここまではできました。入出力関係でちょっと混乱中です・・・。


この投稿にコメントする

削除パスワード

No.24556

Re:文字列比較
投稿者---RAPT(2005/12/06 01:44:07)


変換ボタンを2度押ししたようですね。

#include<stdio.h>

void determination(char *constellation, char *birthday)
{
    if(*birthday != '0')
        printf("Error");
    
}
    

int main()
{
    char constellation[80][80]= {"ARIES", "TAURUS", "GEMINI", "CANCER", "LEO", "VIRGO", "LIBRA", "SCORPIO", "SAGITTARIUS", "CAPRICORN", "AQUARIUS", "PISCES"};
    char manth[80][80] = {"Jan. ", "Feb. ", "Mar. ", "Apr. ", "May. ", "Jun. ", "Jul. ", "Aug. ", "Sep. ", "Oct. ", "Nov. ", "Dec. "};
    char birthday[3];
    printf("Enter your birthday [mm/dd] : ");
    scanf("%d%d", &birthday);
    printf("%d", birthday[3]);
    determination(&constellation, &birthday);
    return 0;
}





この投稿にコメントする

削除パスワード

No.24557

Re:文字列比較
投稿者---RAPT(2005/12/06 01:50:25)


> char constellation[80][80]
> char manth[80][80]
[80][80]も必要ですか?


> printf("Enter your birthday [mm/dd] : ");
> scanf("%d%d", &birthday);
どんな入力を期待していますか?
scanf() で書式と引数の数が不一致。

12/06と入力させるなら、
int birthday[2];
scanf("%d/%d", &birthday[0], &birthday[1]);
とかした方が良いだろうし。



この投稿にコメントする

削除パスワード

No.24560

文字列比較
投稿者---student(2005/12/06 01:57:46)


なるほど。そのばあいbirthday[0]->月 birthday[1]->日
が入りますよね。
エラーチェックはどうすればいいんですか?


この投稿にコメントする

削除パスワード

No.24561

Re:文字列比較
投稿者---RAPT(2005/12/06 02:55:45)


> エラーチェックはどうすればいいんですか?
どんなエラーチェックをしたい?
どんなエラーチェックが必要だと思う?

それを実装してみればよい。



この投稿にコメントする

削除パスワード

No.24563

文字列比較
投稿者---student(2005/12/06 03:53:48)


どうやって配列の中の月を対応する数字でアクセスしたらいいんですかね?
なんかうまくいかないんですが。。。


この投稿にコメントする

削除パスワード

No.24564

Re:文字列比較
投稿者---ぽへぇ(2005/12/06 06:33:49)


>なんかうまくいかないんですが。。。
ではわかりません。

1.あなたがどういう出力を期待しているのか?
2.どういう入力を与えたのか?
3.どういう結果が得られたのか?

うまくいかない例を一つでもいいから書いてください。
#だいたいは想像付くけど、あえて聞いてみる




この投稿にコメントする

削除パスワード

No.24571

Re:文字列比較
投稿者---まきじ(2005/12/06 12:41:16)


>どうやって配列の中の月を対応する数字でアクセスしたらいいんですかね?

では、なぜ配列に格納しているのでしょうか?
何か意図があって配列に格納しているのでは?

>なんかうまくいかないんですが。。。

"なんか"とは何ですか?


この投稿にコメントする

削除パスワード

No.24582

Re:文字列比較
投稿者---まきじ(2005/12/06 23:35:32)


参考に。
/*compiler : gcc 3.4.2 (mingw-special)
option : -std=iso9899:1999 -pedantic -O2 -Wall
*/

#include <stdio.h>

int main(void){

    static char *month[13]= {NULL,"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
    for(int i = 1; i <= 12; i++) puts(month[i]);
}



この投稿にコメントする

削除パスワード

No.24576

Re:文字列比較
投稿者---Hermit(2005/12/06 19:18:39)


>いま誕生日から星座を判定するプログラムを作っています。
>01/24のような形式で日付を入力して、Jan. 24のような形式で出力。
>そして対応する星座を出力する。(もちろんエラーチェックもする。)

一応、星座を判定するには、星座が変わるあたりでは、何年何月何日何時何分くらいまで必要ですが。

星座占いのしかたの本でも読まれればわかると思いますが、
年によって星座の変わる日が違います。



この投稿にコメントする

削除パスワード

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