英語の文書の一番長い単語

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
齊藤

英語の文書の一番長い単語

#1

投稿記事 by 齊藤 » 13年前

テキストファイルで英文(各単語半角スペースで区切られている)
の中から一番長い単語を抽出してコマンドプロンプト上に表示するプログラムが全然わかりません。

どなたか教えてくださると助かります。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 英語の文書の一番長い単語

#2

投稿記事 by みけCAT » 13年前

丸投げは禁止です。フォーラムルールをお読みください。
まずは使用する言語や開発環境を教えてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: 英語の文書の一番長い単語

#3

投稿記事 by h2so5 » 13年前

Rubyで

コード:

File.read("foo.txt").split(" ").max_by{ |w| w.length }

齊藤

Re: 英語の文書の一番長い単語

#4

投稿記事 by 齊藤 » 13年前

単語数を表示するプログラムを拡張しようと試みました以下
#include<stdio.h>

int main()
{

int c, f = 0;
int *i,*p;
int t=0;
FILE *fp;

fp = fopen("D:\\test002.txt","r");


while((c = getc(fp)) != EOF)
{

for(i=0;i<456;i++)
{
if(c == ' ' || c== '\n' || c == '.' || c == ',')
{
t=*p;

}
f = 0;
}

}
fclose(fp);
printf("%s\n ",t);

return 0;
}

しかしこれはまったくエラーばかり どこが悪いのかわかりません。

開発環境はボーランドC

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 英語の文書の一番長い単語

#5

投稿記事 by みけCAT » 13年前

コードはcodeタグで囲んでください。
エラーメッセージを貼り付けてください。
実行時エラーでしたら、どのような動作を期待し、実際はどのようになったかを教えてください。

コード:

#include<stdio.h>

int main()
{

	int c, f = 0;
	int *i,*p;
	int t=0;
	FILE *fp;

	fp = fopen("D:\\test002.txt","r");
	/* ファイルを開けたかチェックしたほうがいい */

	while((c = getc(fp)) != EOF)
	{

		for(i=0;i<456;i++) /* なぜ? */
		{
			if(c == ' ' || c== '\n' || c == '.' || c == ',')
			{
				/* tはint型なので配列添字アクセスは不可能 */
				/* pが初期化されていないのでアクセス違反 */
				/* iはポインタ型なので不適切 */
				t[i]=*p; 

			}
			f = 0;
		}

	}
	fclose(fp);
	printf("%s\n ",t); /* tはint型なので型の不一致・アクセス違反の危険 */

	return 0;
}
最後に編集したユーザー みけCAT on 2012年12月19日(水) 12:09 [ 編集 2 回目 ]
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

齊藤

Re: 英語の文書の一番長い単語

#6

投稿記事 by 齊藤 » 13年前

<code>
#include<stdio.h>

int main()
{

int c, f = 0;
int *i,*p;
int t=0;
FILE *fp;

fp = fopen("test.txt","r");


while((c = getc(fp)) != EOF)
{

for(i=0;i<456;i++)
{
if(c == ' ' || c== '\n' || c == '.' || c == ',')
{
t=*p;

}
f = 0;
}

}
fclose(fp);
printf("%s\n ",t);

return 0;
}
</code>

エラー
comparison between pointer and integer

期待する結果

test.txt内にある単語のうち一番長い単語を表示

齊藤

Re: 英語の文書の一番長い単語

#7

投稿記事 by 齊藤 » 13年前

コード:

#include<stdio.h>

int main()
{

  int c, f = 0;
  int *i,*p;
  int t=0; 
FILE *fp;

fp = fopen("D:\\test002.txt","r");


  while((c = getc(fp)) != EOF) 
  { 

          for(i=0;i<456;i++)
           {
            if(c == ' ' || c== '\n' || c == '.' || c == ',')
             {
                            t[i]=*p;
                            
                            }
                     f = 0;
              }
               
              }
fclose(fp);
printf("%s\n ",t);

return 0;
}
エラーはさっきの

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 英語の文書の一番長い単語

#8

投稿記事 by softya(ソフト屋) » 13年前

まず、配列やポインタの使い方が出鱈目です。勉強されたんですよね?

処理に必要だと想定しているc,f,i,p,tの変数の役割を言葉で書きだしてみて下さい。
それと、なぜ456なのかは私も教えて欲しいです。どこから出てきたんですか?

インデントも揃えたほうが良いでしょう。すごく読み辛いです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

齊藤

Re: 英語の文書の一番長い単語

#9

投稿記事 by 齊藤 » 13年前

c,f,i,p,t
c ポインタ
f行間

i 単語の番号

p 単語

t単語の変数

ですよね!

non
記事: 1097
登録日時: 15年前

Re: 英語の文書の一番長い単語

#10

投稿記事 by non » 13年前

齊藤 さんが書きました: しかしこれはまったくエラーばかり どこが悪いのかわかりません。
「どこが悪いのか」というより、「なぜ、これで動くと思っているのか」理解できないので
どう、アドバイスすればよいのかわからないですね。
齋藤さんがどのような考え方(アルゴリズム)で作ろうとしているのか説明してください。

PS. ソフト屋さんとかぶった
non

Rinfo

Re: 英語の文書の一番長い単語

#11

投稿記事 by Rinfo » 13年前

サンプル書いてあげればいいんじゃないでしょうか?

齊藤さんもそれみて理解できると思うし。

私はちょっと時間が無いので・・・。

ファイル名だけちがくしてあげてさ

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 英語の文書の一番長い単語

#12

投稿記事 by softya(ソフト屋) » 13年前

齊藤さん、自作自演しないで下さい。
デメリットはあっても意味無いですよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

齊藤

Re: 英語の文書の一番長い単語

#13

投稿記事 by 齊藤 » 13年前

なんでばれたんでしょうか・・・。

ぜんぜnわかんなくて。

もうそうしたらいいか・・。

このままだと故郷に残してきた祖母より先に現世とおさらばかと思われます・・・。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 英語の文書の一番長い単語

#14

投稿記事 by softya(ソフト屋) » 13年前

アドバイスを受けて自分で勉強してする気はもう無いということでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

高橋

Re: 英語の文書の一番長い単語

#15

投稿記事 by 高橋 » 13年前

あります。

ですがなにからやればいいのかわからないのです。

さきほどC言語を学びました。

そんな僕が出された課題がこれです。

すこしでいいんです。

char型なのかとか おしえてください。

ごごごわわ

Re: 英語の文書の一番長い単語

#16

投稿記事 by ごごごわわ » 13年前

あああああ

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 英語の文書の一番長い単語

#17

投稿記事 by softya(ソフト屋) » 13年前

解決されたようですが、折角書いたので。
名前をコロコロ変えないでください。
それと配列とポインタを学んでいるはずです。
さきほど学んだといえる内容ではないので学校から何週間か何ヶ月はC言語を勉強しているはずですよね?

下記サイトの内容で言えば、「17.ファイルの取り扱い」まで学んでいないと出されない課題だと思います。
「苦しんで覚えるC言語」
http://9cguide.appspot.com/

ちなみに現状は
c:int型 → 読み込んだ一文字
f:int型 → 意図不明
i:int型ポインタ → 未初期化なので使ってはいけません。
p:int型ポインタ → 未初期化なので使ってはいけません。
t:int型 → 意図不明。多分表示する最長単語のポインタが欲しい?

456:出所不明
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る