質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • C

    3711questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

SerchScore, 偏差値の出し方、そして全般的にこのプログラムが作動できるかお聞きしたいです。

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 553

問題!データファイル (rep_data2016.txt) には,「学籍番号,科目 A の点数」が学籍番号順に並んでいる.
そのデータファイルを元に,平均値 (average) と標準偏差 (deviation) を表示し, キーボードから入力されたボーダーライン以上にいる学生のデータ(順位,学籍番 号,得点,偏差値)を下記のように表示するプログラムを作れ.
探索は二分探索を使い,ソートにはクイックソートを使うこと.
標準偏差は次頁を参考にして求めること.
表示は以下のようにせよ
イメージ説明
そして標準偏差と偏差値をもとめる式は以下の図です。
イメージ説明

プログラムの基本仕組み

#include <math.h>
#include <stdlib.h>
#define Num 100

struct student{


};


void swap(){

}


void readDataFile(){

}

void QuickSortBase(){


}

void QuickSort() {

}


int SerchScore(){

}


void CalcAveDev(){

}

void PrintData(){

}

int main(void){
   struct student Data[Num];
   int border, number;

   printf("Input a borderline (Score) (0<x<400):");
   scanf("%d",&border);

   readDataFile(Data);
   QuickSort(Data,Num);
   CalcAveDev(Data,Num);

   number = SerchScore(border,Data,Num);

   if(number <0||number>400){
          printf("Not Exist!\n");
   }else{
   PrintData(Data,number);
   }

  return 0;
}

下記のプログラムは私が作成したものです。


#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define Num 100

/* データの型は構造体により定義をする*/
struct student{
    int number;
    int point;
    double ave;
    double deviation;
    double hensachi;
    int Rank;
};


void swap(struct student*x,struct student *y){
    struct student temp;

    temp = *x;
    *x = *y;
    *y = temp;
}


void readDataFile(struct student *Data){
    int i;
    int scannum;

    FILE *file=fopen("rep_data2016.txt","r");
    if(file ==NULL){
        fprintf(stderr,"cannot open file 'rep_data2016.txt'\n");
        exit(1);
    }

    for(i=0;i<Num; i++){
        scannum = fscanf(file,"%d%d%lf%lf",&Data[i].number,&Data[i].point,&Data[i].ave,&Data[i].deviation);
        if (scannum !=4){
            fprintf(stderr,"cannot read file\n");
            exit(1);
        }
        Data[i].number =Data[i].ave+Data[i].deviation+Data[i].hensachi;
    }

    fclose(file);

}


void QuickSortBase(struct student *data, int left, int right){

    int pl,pr;
    double pivot;

    pl = left; pr =right;
    pivot = data[(pl+pr)/2].point;

    while(pl <= pr){
        while (data[pl].point > pivot) {
            pl++ ;
        }
        while (data[pr].point < pivot) {
            pr--;
        }
        if(pl<=pr){
            swap(&data[pl],&data[pr]);
            pl++;pr--;
        }
    }
    if(pl-left>=2){
        QuickSortBase( data, left, pr);
    }

    if(right-pr>=2){
        QuickSortBase( data, pl,right);
    }

}

void QuickSort(struct student *Data, int N) {
    if (N >= 2) {
        QuickSortBase(Data,0,N-1);
    }
}



int SerchScore( int point, struct student *Data, int N){
    struct student Result={0};
    int head=0,tail=N-1,mid;

    while(head<tail){

        mid=(head+tail)/2;
        if(point >= Data[mid].ave){
            tail =mid;
        }

        if(point < Data[mid].ave){
            head =mid+1;
        }
    }

    if(Data[head].point==point){
           return Data[head];
    }else{
        printf("We don't have this student number:\n");
        return Result ;
    }

}

void CalcAveDev(){

}

void PrintData(double *Data, int N){
    int i;
    for(i=0;i<N;i++){
        printf("%.0f,",Data[i]);
    }
    printf("\n");

}


int main(void){
    struct student Data[Num];
    int border, number;

    printf("Input a borderline (Score) (0<x<400):");
    scanf("%d",&border);

    readDataFile(Data);
    QuickSort(Data,number);
    CalcAveDev(Data,number);

    number = SerchScore(border,Data,Num);

    if(number <0||number>400){
        printf("Not Exist!\n");
    }else{
        PrintData(Data, number);
    }

    return 0;
}```ここに言語を入力  
**> ここに言語を入力  
> コード  
> ```

**

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • WoodenHamlet

    2017/02/02 11:28

    「下記のように表示するプログラムを作れ. 」「表示は以下のようにせよ」などと回答者に高圧的な物言い、不敬であるぞ。課題の丸投げにしか見えぬのは気のせいか?少なくとも自分で解決しようとしたうえで、「何をした」が、「何が起きる/起きない」ために問題を解決できないかを言わなければ、「課題は自分でやれ」以上の回答をしてくれる人は少ないだろうね。

    キャンセル

  • 退会済みユーザー

    2017/02/02 11:29

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 1

0

こんにちは。

SerchScore, 偏差値の出し方、そして全般的にこのプログラムが作動できるかお聞きしたいです。

SearchScore(?)については該当する課題がないようです。

偏差値の出し方は「そして標準偏差と偏差値をもとめる式は以下の図です。」に記載されていますが、何が不明なのでしょうか? 不明点を具体的に質問されると回答が付くと思いますよ。

プログラムが作動するかどうかはまずはご自身で確認しましょう。思うように動作しなかった時はその理由を考えましょう。
そして、考えても分からない時に質問すると良いですよ。そうすれば具体的な質問ができますので、回答も付きやすいです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    linux 処理時間の表示

    C言語でLinuxを使っています。メモリを確保したりするプログラムなのですが、以下のプログラムを修正して 、5秒間で何回の入れ替えを行えるかを計測できるようにしてもらいたいです。初

  • 解決済

    出席番号などの情報を表示するプログラム

    #include <string.h> struct student { int year; /* 学年 */ int clas; /* クラ

  • 受付中

    解決策が分かりません・・・

    5人の点数をキーボードから読み込んで、合計点、平均点、最高点、最低点を表示したいのですが(点数は0以上100以下)、 実行例 5人の点数を入力してください。 1番:95 2

  • 解決済

    構造体のプログラム

    いつもお世話になっています。C言語初心者でただいま勉強中です。構造体について質問させていただきます。ファイルから構造体配列に読み込んで以下のように出力するプログラムを作りたいんです

  • 解決済

    結果の表示について

    課題で、 キーボードから入力された数値の平均を計算して表示し、平均以上の数値、平均より小さい数値を表示するプログラムを考えているのですが、 実行例 ./a.out

  • 解決済

    準備された入力ファイルをもとに、合計、平均、偏差値を表示(合計点降順)させたプログラム作成

    レポート課題でわからない問題があります。 問題:入力ファイルmotofile.datを事前に用意し、出力ファイルresult.datを生成するC言語ソースプログラムファイルhen

  • 受付中

    移動平均法 C言語

    前提・実現したいこと 初心者です。 C言語でCSVファイルを読み込み、移動平均法で値を抽出し、また別のCSVファイルに出力するという処理を行いたいのですが、データ処移動平均法を

  • 受付中

    C言語:探索アルゴリズムのファイル読み込みについて

    学校の課題で迷路探索のプログラムを動かすアルゴリズムの問題に取り組んでいるのですが、課題のファイルを読み込むとコアダンプをおこしてしまい動作しませんでした。 読み込む配列を減

同じタグがついた質問を見る

  • C

    3711questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • トップ
  • Cに関する質問
  • SerchScore, 偏差値の出し方、そして全般的にこのプログラムが作動できるかお聞きしたいです。