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

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

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

#1

投稿記事 by ks » 13年前

ある英作文が書いてあるぶんがあるとして
それらの文の英語をASCIIコードで昇順
に並べ替えるプログラミングを作成
したいのですが、どうすればいいのでしょうか?

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

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

#2

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

課題の丸投げはご遠慮いただいておりますが課題のお手伝いは致しますので、フォーラルルールのテンプレートなどを使って詳細の説明をお願いします。
http://dixq.net/board/board.html
なお、出来上がっている分だけのソースコードは必ず提示して下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

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

#3

投稿記事 by non » 13年前

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

ks

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

#4

投稿記事 by ks » 13年前

#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);

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

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

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

#5

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

フォーラムルールに書いてありますが必ず詳細を記載して下さい。
あと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);

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

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

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

#6

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

ご自分で書いた分と元からある部分を説明して下さいね。どこから何処までが課題として元から有った部分ですか?
あとテンプレートでご自身の知識などを説明お願いします。
無指定だと無制限にC言語の機能を使っても良いと判断させていただきますが、きっと困ると思います[補足]。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

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

#7

投稿記事 by non » 13年前

6~8行の構造体は指定ですか?
同一単語が出た場合はどうしますか?
「コンマも含みます」とはどういう意味ですか?
I'm happy.
の場合、単語は何?
I'm と happy. の2個?
non

ks

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

#8

投稿記事 by ks » 13年前

I am happy.


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


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

ks

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

#9

投稿記事 by ks » 13年前

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)

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

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

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

#10

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

(1)質問と違う返答をされてもどう判断して良いかわかりません。
質問: I'm happy.
返答: I am happy.
この2つはデータとして違うものです。
(2)あとピリオドを英単語に含んで良いんですか?

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

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

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

あと気になった点。
(7)WORD_MAXって単語の最大長ですよね?
(8)単語数の上限値はなしですか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

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

#11

投稿記事 by non » 13年前

なかなか私の疑問に明確に答えていただけないですね。
すべての単語はスペースか改行で区切られているということで限定でいいですか。

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

閉鎖

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