ページ 11

昇順に並べ替えるC言語について

Posted: 2012年7月12日(木) 16:10
by ks
ある英作文が書いてあるぶんがあるとして
それらの文の英語をASCIIコードで昇順
に並べ替えるプログラミングを作成
したいのですが、どうすればいいのでしょうか?

Re: 昇順に並べ替えるC言語について

Posted: 2012年7月12日(木) 16:12
by softya(ソフト屋)
課題の丸投げはご遠慮いただいておりますが課題のお手伝いは致しますので、フォーラルルールのテンプレートなどを使って詳細の説明をお願いします。
http://dixq.net/board/board.html
なお、出来上がっている分だけのソースコードは必ず提示して下さい。

Re: 昇順に並べ替えるC言語について

Posted: 2012年7月12日(木) 16:19
by non
ks さんが書きました:それらの文の英語をASCIIコードで昇順
英語をというのは「英単語」をなのでしょうか?
条件を絞ってもらわないと難しいですよ。
大文字、小文字、アポストロフィがついてる短縮形、ハイフォン、複数形etc

Re: 昇順に並べ替えるC言語について

Posted: 2012年7月12日(木) 16:36
by ks
#include<stdio.h>
#include<ctype.h>

#define WORD_MAX 100

struct WordData {
char wd[ WORD_MAX ];
};

void StoreWord(struct WordData *array, int *word_num,char *c)

void SortWord (struct WordData *array, int word_num)
{
arrya
}


void SwapWord (char *w1, char *w2 )
{

int temp = *w1;
*w1 = *w2;
*w2 = temp;

}
void CompareWord (char *wd1, char *wd2)
{
if(wd1 < wd2){
return(1);
}
if else(wd1 = wd2){
return(0);
}
if else{
return(-1);
}

int main(int argc, char *argv[])
{
FILE *fp;
int Word num = 0;
int i;
char c;

if (argc < 2) {
printf("ファイル名が正しく指定されませんでした。\n");
return 0;
}

fp = fopen(argv[1],"rw");

if(fp == NULL){
printf("ファイルは開けませんよ。");

}

while((c = getc(fp)) != EOF){
(array,c);
}
fclose(fp);

ここまでできたんですがどうすればいいでしょう?英単語です。コンマも含みます

Re: 昇順に並べ替えるC言語について

Posted: 2012年7月12日(木) 16:40
by softya(ソフト屋)
フォーラムルールに書いてありますが必ず詳細を記載して下さい。
あとcodeタグも利用して下さい。 

コード:

#include<stdio.h>
#include<ctype.h>

#define WORD_MAX 100
 
struct WordData {
  char wd[ WORD_MAX ];
};

void StoreWord(struct WordData *array, int *word_num,char *c) 

void SortWord (struct WordData *array, int word_num) 
{
  arrya 
}


void SwapWord (char *w1, char *w2 )
{

   int temp = *w1;
   *w1 = *w2;
   *w2 = temp;

}
void CompareWord (char *wd1, char *wd2)
{
  if(wd1 < wd2){
    return(1);
  }
  if else(wd1 = wd2){
      return(0);
    }
  if else{
    return(-1);
  }

int main(int argc, char *argv[])
{
  FILE *fp;
  int Word num = 0;
  int i;
  char c; 

  if (argc < 2) {
  printf("ファイル名が正しく指定されませんでした。\n");
  return 0;
}

  fp = fopen(argv[1],"rw");

  if(fp == NULL){
    printf("ファイルは開けませんよ。");
    
 }

   while((c = getc(fp)) != EOF){
  (array,c);
 }
  fclose(fp);


Re: 昇順に並べ替えるC言語について

Posted: 2012年7月12日(木) 16:44
by softya(ソフト屋)
ご自分で書いた分と元からある部分を説明して下さいね。どこから何処までが課題として元から有った部分ですか?
あとテンプレートでご自身の知識などを説明お願いします。
無指定だと無制限にC言語の機能を使っても良いと判断させていただきますが、きっと困ると思います[補足]。

Re: 昇順に並べ替えるC言語について

Posted: 2012年7月12日(木) 17:16
by non
6~8行の構造体は指定ですか?
同一単語が出た場合はどうしますか?
「コンマも含みます」とはどういう意味ですか?
I'm happy.
の場合、単語は何?
I'm と happy. の2個?

Re: 昇順に並べ替えるC言語について

Posted: 2012年7月12日(木) 17:46
by ks
I am happy.


という文があれば
I
am
happy.


という結果になる
プログラムです。

Re: 昇順に並べ替えるC言語について

Posted: 2012年7月12日(木) 17:48
by ks
codeタグを忘れないで下さいね。 by softya(ソフト屋)

コード:

/*
     * 定数マクロを記述する.
     */
    #define WORD_MAX 100
    /*
     * 構造体を宣言する.
     */
    struct WordData {
        char wd [ WORD_MAX ];  /* 単語 */
    }; 




関数仕様

次の関数を作成し,利用すること.

    /*
     * StoreWord --- 文字列を構造体へ保存する.
     *
     *    引 数
     *        array (I/O)     文字列を記録する配列の先頭アドレス
     *        word_num (I/O)  保存した数(この関数でカウントアップする)
     *        c (I)           保存する文字列 
     *    返り値    なし
     */
    void StoreWord (struct WordData *array,
                    int *word_num,
                    char *c) 



    /*
     * SortWord --- 文字列をソートする.
     *
     *    引 数
     *        array (I/O)  文字列を記録する配列の先頭アドレス
     *        word_num (I) 保存されている文字列の数
     *    返り値  なし
     */
    void SortWord (struct WordData *array, int word_num) 



    /*
     * SwapWord --- 文字列を入れ替える.
     *
     *    引 数  w1 (I/O) 文字列
     *            w2 (I/O) 文字列
     *    返り値  なし
     */
    void SwapWord (char *w1, char *w2 )



    /*
     * CompareWord --- 2つの文字列を比較する. 
     *
     *    引 数  wd1 (I) 文字列
     *            wd2 (I) 文字列
     *    返り値  1 : wd1 < wd2
     *            0 : wd1 = wd2
     *           -1 : wd1 > wd2 
     */
    void CompareWord (char *wd1, char *wd2)

これらは必須で使用します。

Re: 昇順に並べ替えるC言語について

Posted: 2012年7月12日(木) 18:01
by softya(ソフト屋)
(1)質問と違う返答をされてもどう判断して良いかわかりません。
質問: I'm happy.
返答: I am happy.
この2つはデータとして違うものです。
(2)あとピリオドを英単語に含んで良いんですか?

>これらは必須で使用します。

このままのコメントは残して投稿してもらいたかったですね。
(3)あと返り値があるのにvoidになっていますが間違っていませんか?

-------------------------------------------------------------------------------
さて、いつ迄待ってもテンプレートを使ってもらえないのでお尋ねします。
(4)C言語の標準ライブラリは無制限に使って良いのでしょうか? strcmp等。
(5)mallocなどメモリ動的確保の使用可・不可。
(6)英単語を蓄える仕組みは配列ですか?あるいはリスト構造ですか?

あと気になった点。
(7)WORD_MAXって単語の最大長ですよね?
(8)単語数の上限値はなしですか?

Re: 昇順に並べ替えるC言語について

Posted: 2012年7月12日(木) 18:08
by non
なかなか私の疑問に明確に答えていただけないですね。
すべての単語はスペースか改行で区切られているということで限定でいいですか。

英文はファイルから読むのですよね。
まず、ファイルから読んで、単語で区切るプログラムを作ってみてください。
I am happy.
という文があれば
I
am
happy.
のように改行して出力するプログラムです。