1時間ごとに更新!Amazon.co.jpで今売れている本トップ100   掲示板ランキング



掲示板利用宣言

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

 私は

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

掲示板1

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

No.5886

空白を圧縮
投稿者---TAK(2006/06/21 00:15:00)


空白を圧縮するプログラムです。英字を一文字ずつ入力し、空白が2つ以上続いた場合、それを1つに圧縮します。

今の所、'#'がきたら、入力終了で、空白で無ければ出力のようにしました。chmを空白にして、chm=ch; で圧縮。

そこから先はどうすればわからないので、教えてください。


#include <stdio.h> 

int main()
{
  char ch, chm;

  while((ch=getchar())!='#'){
     chm=' ';
    if(ch!=' '){
      putchar(ch);
    }

    else if(    ){

    
   chm=ch; 
  }
  
  return 0;
}




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:空白を圧縮 5887 επιστημη 2006/06/21 00:33:04
<子記事> Re:空白を圧縮 5888 KING・王 2006/06/21 00:42:28
<子記事> Re:空白を圧縮 5918 shu 2006/06/22 12:05:53
<子記事> Re:空白を圧縮 5919 円零 2006/06/22 15:37:09
<子記事> 問題解決 6063 TAK 2006/07/05 00:43:29


No.5887

Re:空白を圧縮
投稿者---επιστημη(2006/06/21 00:33:04)


ひとつ前に出力した文字を覚えておき、それと入力文字がともに空白なら出力しない。ってのでいかがです?




この投稿にコメントする

削除パスワード

No.5888

Re:空白を圧縮
投稿者---KING・王(2006/06/21 00:42:28)


>空白を圧縮するプログラムです。英字を一文字ずつ入力し、空白が2つ以上続いた場合、それを1つに圧縮します。
>
>今の所、'#'がきたら、入力終了で、空白で無ければ出力のようにしました。chmを空白にして、chm=ch; で圧縮。
>
>そこから先はどうすればわからないので、教えてください。
>

元のプログラムと少し違うが、次のようなことがしたいのかと推測。

(1)空白判定フラグを用意し、初期値としてfalseを設定。
(2)入力を受け付ける。
(3)入力が'#'の場合ループを抜ける
(4)入力が空白以外の場合、空白判定フラグにfalseを設定し、入力された値を出力。
(5)入力が空白で、空白判定フラグがfalseの場合、空白判定フラグにtrueを設定し、空白を出力。
(6)入力が空白で、空白判定フラグがtrueの場合、入力を無視する。
(7)上記(2)に戻り次の入力を受け付ける。



この投稿にコメントする

削除パスワード

No.5918

Re:空白を圧縮
投稿者---shu(2006/06/22 12:05:53)


#include <stdio.h>

int main(void)
{
    int c, b = -1;
    
    while ((c = getchar()) != EOF) {
        if (b == ' ' && c == ' ') continue;
        putchar(c);
        if ((b == ' ') != (c == ' ')) b = c;
    }
    return 0;
}



この投稿にコメントする

削除パスワード

No.5919

Re:空白を圧縮
投稿者---円零(2006/06/22 15:37:09)


解答例来たみたいなので私も。
スペースがたくさん連続する場合にはフラグ立てるより微妙に早いかも。
#include <stdio.h> 

int main(void){
    char ch;
    while( (ch = getchar()) != '#'){
        putchar(ch);
        if(ch == ' '){   
            while( (ch = getchar()) == ' ' );
            if(ch == '#') break;
            putchar(ch);
        }
    }
    return 0;
}


…実はungetcとか好きなんですが、
#include <stdio.h> 

int main(void){
    char ch;
    while( (ch = getchar()) != '#'){
        putchar(ch);
        if(ch == ' '){
            while( (ch = getchar()) == ' ' );
            ungetc(ch, stdin);
        }
    }
    return 0;
}
別に効率が良くなったりするわけでもなんでもないのでイチ押しにはせず。


この投稿にコメントする

削除パスワード

No.6063

問題解決
投稿者---TAK(2006/07/05 00:43:29)


みなさんのおかげで出来ました!!
どうもありがとうございます!!


この投稿にコメントする

削除パスワード

No.6065

Re:問題解決
投稿者---asd(2006/07/05 09:19:29)


>みなさんのおかげで出来ました!!

どうやって?
できたかできないかよりもどうやってやったのかという過程のほうが重要です。


この投稿にコメントする

削除パスワード

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





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