ページ 11

最後のやつだけでない

Posted: 2009年11月13日(金) 12:53
by 天和
英文を打って(例This is a pen)単語単位で切り出しそのごその単語の文字数を出力させないさいという問題で
#include<stdio.h>
int main(void)
{
int c;
int e;
e = 0;
while(1){
c = getchar();
putchar(c);
e++;
if(c == ' ')
{printf(": %d letters.\n", (e - 1));
e = 0;}
if(c == EOF)
{printf(": %d letters.\n", (e - 1));
e = 0;
break;

}
return 0;
}
とプログラムを組んだのですがさいごのもじだlettersという文字が出てきませんよろしくお願いします

Re:最後のやつだけでない

Posted: 2009年11月13日(金) 13:38
by non
EOFの入力はCTRL-Zです。
そのように入力しましたか?

Re:最後のやつだけでない

Posted: 2009年11月13日(金) 14:02
by 天和
いえ、前回の(http://www.play21.jp/board/formz.cgi?ac ... &rln=41131
の時にはそんなことしなくてもできたので・・・
できれば普通に入力したらでるようにしたいです。
ちなみにコンパイルしなおしなおしたらこんなエラーが出ます。
c:\users\k09036kk\desktop\c++\vc\project\宿題3\宿題3\宿題3.cpp(22) : fatal error C1075: 左側 中かっこ '{' に対応するものが 'c:\users\k09036kk\desktop\c++\vc\project\宿題3\宿題3\宿題3.cpp(3)' で見つかる前に EOF が検出されました。

Re:最後のやつだけでない

Posted: 2009年11月13日(金) 14:37
by non
エラーは }の個数が対応してないからでしょう。

前回はしらないけど、EOFはCTRL-Zなんだからしょうがない。
Enterで終わらせたいなら、
if(c == '\n')
に変更したらどうですか。

Re:最後のやつだけでない

Posted: 2009年11月13日(金) 15:00
by 天和
それをやるとlettersが改行した後に出力してしまうので
もし¥nがあったらその前にretterを表示させた後に改行しなさいとプログラム組めればいいのですが・・

Re:最後のやつだけでない

Posted: 2009年11月13日(金) 15:43
by non
#include<stdio.h> 
int main(void) 
{ 
	int c; 
	int e; 
	e = 0; 
	while(1){ 
		c = getchar();
		if(c != '\n')
			putchar(c); 
		e++; 
		if(c == ' ') 
		{
			printf(": %d letters.\n", (e - 1)); 
			e = 0;
		} 
		if(c == '\n') 
		{
			printf(": %d letters.\n", (e - 1)); 
			break; 
	
		}
	}
		return 0; 
}

Re:最後のやつだけでない

Posted: 2009年11月13日(金) 20:58
by 天和
なるほど改行の時だけ出力させないでその代わりの文章を用意してやればいいんですねありがとうございましたー

Re:最後のやつだけでない

Posted: 2009年11月13日(金) 21:08
by 天和
解決しました