掲示板ランキング  システムユーティリティ(レプリケータ)


掲示板利用宣言

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

 私は

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

掲示板1

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

No.7057

学校の課題
投稿者---覇王(2007/02/04 22:25:41)


学校で課題が出されたのですがここから手を加えて課題を完成させなければいけません、どうかお力をお貸しください。

課題:英文を入力して英文内の、文字数(スペース含む)、単語数、文数を数えて表示するプログラムを作りなさい。

例.
文章を入力せよ:Are you MIKE? Yes I do.
文字数は:23
単語数は:6
文数は:2

という風に表示するプログラムです、できれば一文一文どういう働きをしているのかも解説していただけるとありがたいです。
当日先生が質問されるそうなので…。


#include <stdio.h>

main( void )
{

int i, j, flg;
char str[512];

printf("文章を入力せよ:");
gets(str);
i = 0;

flg=j=0;
while (str[i] != '\0'){
if(str[i] != ' '){
if(flg==0){
j++;
}
flg=1;
}else{
flg=0;
}
i++;
}


printf("文字数は%dで単語数は%dです。\n", i, j);
}


こんな感じでなんですが、これに文数を数えるプログラムを足したいのですが…、ここから手が進みません、これで文字数と単語数はでるんですが…どうかお力をお貸しください。お願いいたします。



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:学校の課題 7058 akg 2007/02/04 22:56:58
<子記事> Re:学校の課題 7063 ルナレルナ 2007/02/05 14:22:03


No.7058

Re:学校の課題
投稿者---akg(2007/02/04 22:56:58)


>これに文数を数えるプログラムを足したいのですが

英語の文末を表わすのはどんな文字でしょうか?
その文字を読み取ったら、文の数を格納する変数に1を加えればよいと思います。
なお、iとかjではなく、文字数や単語数を端的に示すような
変数名を付ける方がよいと思います。


この投稿にコメントする

削除パスワード

No.7060

Re:学校の課題
投稿者---覇王(2007/02/04 23:10:11)


>英語の文末を表わすのはどんな文字でしょうか?
文末をあらわすのわ「.」か「?」です。


この投稿にコメントする

削除パスワード

No.7061

Re:学校の課題
投稿者---akg(2007/02/05 07:39:12)


>文末をあらわすのわ「.」か「?」です。

「!」なんかは入りませんか?
いずれにしても、後はご自分でお考えください。


この投稿にコメントする

削除パスワード

No.7062

Re:学校の課題
投稿者---επιστημη(2007/02/05 09:17:45)
http://blogs.wankuma.com/episteme/


>>英語の文末を表わすのはどんな文字でしょうか?
>文末をあらわすのわ「.」か「?」です。

じゃ簡単だ。読み込んだ文字列中の'.'と'?'の数を数えればいい。



この投稿にコメントする

削除パスワード

No.7065

Re:学校の課題
投稿者---Hermit(2007/02/05 17:46:05)


>じゃ簡単だ。読み込んだ文字列中の'.'と'?'の数を数えればいい。
'.' と、'?' の後に続く単語が有るか無いか判定する必要がありそうです。



この投稿にコメントする

削除パスワード

No.7066

Re:学校の課題
投稿者---覇王(2007/02/05 18:21:11)


なるほど


この投稿にコメントする

削除パスワード

No.7063

Re:学校の課題
投稿者---ルナレルナ(2007/02/05 14:22:03)
http://park6.wakwak.com/~nougaki/mini_program/


//
//	ゆびのまた、またからゆびへ
//

int main(void)
{
    char s[256];
    int i, n[3] = {0, 1, 0};
    
    fgets(s, sizeof s, stdin);
    
    for (i = 0; s[i]; i++)
        if (s[i] == '\n')
            break;
    s[i] = '\0';
    
    for (i = 0; s[i]; i++)
        n[0]++;
        
    //	入力によっては正確にカウントできない
    for (i = 0; s[i]; i++)
        if (s[i] == ' ')
            n[1]++;
    
    for (i = 0; s[i]; i++)
        if (s[i] == '.' || s[i] == '?')
            n[2]++;
    
    printf("%d %d %d", n[0], n[1], n[2]);
    
    return 0;
}



この投稿にコメントする

削除パスワード

No.7067

Re:学校の課題
投稿者---覇王(2007/02/05 18:21:41)


ありがとうございます、助かりました。


この投稿にコメントする

削除パスワード

No.7068

Re:学校の課題
投稿者---ルナレルナ(2007/02/05 19:15:26)
http://park6.wakwak.com/~nougaki/mini_program/


> ゆびのまた、またからゆびへ

僕の左手には5本の指がある。
5本の指の指と指との間に、4つの又がある。

指の数 - 1 = 又の数

又の数から逆算すれば、

又の数 + 1 = 指の数

ということになる。

この問題において、指の数を単語の数、
又の数を空白の数として考えると、

空白の数 + 1 = 単語の数

となる。

ただし、空白が連続してあったり、
行頭・行末に空白が存在していた場合は、
正しい勘定ができない。




文字を数える
文字なら数える
文字で無いなら数えない
文字とは?
文字で無いとは?
文字と文字で無いとの違いとは?
数えるとは?
数えないとは?
数えると数えないとの違いとは?

英文としか書いてない
全角文字も考えなければ
そもとも英文自体に全角も半角も無い
文になってない、英文字の羅列はどうなるんだ
文とは何ぞや
文で無いとは何ぞや
文と文で無いとの違いは

考えれば考えるだけ延々と
後から後からわいてくる問い
c言語で扱いやすい範疇のものだけに限れば楽なのかもしれないが
そんなものがプログラミングとも思えない

無限にある選択肢の中からどれを選ぶか
なにを優先させるか
不必要なものを切り捨てるのではなく
必要なものを切り上げる
不必要なものは0でいい
そのままでいい、変えなくていい、
より必要なものから1にしていく。



この投稿にコメントする

削除パスワード

No.7069

Re:学校の課題
投稿者---覇王(2007/02/05 19:25:55)


ありがとうございます、もう一度いちから勉強してみます。
本当に助かりました。


この投稿にコメントする

削除パスワード

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





掲示板提供:(有)リアル・インテグリティ