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

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

ただいまの
回答率

90.48%

  • C

    3841questions

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

  • C++

    3635questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

C言語 構造体の問題

受付中

回答 3

投稿

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

iheanachonpa

score 3

前提・実現したいこと

構造体で jap > math と入力すると、japがmathの点数より高い人の学籍番号を表示するプログラムを作成したい

発生している問題・エラーメッセージ

該当のソースコード

c++、C言語

include<stdio.h>

struct record{ int jap,math,eng; };
struct record database[10];

struct query{
    double p1,p2;
    char op; };

struct query input_calc()
{    
    double p1,p2;
    char op;
    struct query p;
    scanf("%f %c %f",&p1, &op, &p2);

    return p;
}

double exec_query(struct query x)
{
    swhich(x.op)
    {
        case'>': 
        case'<': 
        case'=': 
        default:
    }
}

int main()
{
    int i=0;
    struct record[10]=
    {{58,46,87},
    {55,84,56},
    {96,94,74},
    {28,80,90},
    {57,57,31},
    {65,84,73},
    {60,59,67},
    {47,79,75},
    {75,85,57},
    {60,98,61}};

    struct query cal;
    double ans;
    while(1)
    {
        cal = input_calc();
        ans = exec_query(cal);
        printf("%f\n",ans);
    }
}

試したこと

C言語が苦手なので助けてほしいです

補足情報(言語/FW/ツール等のバージョンなど)

より詳細な情報

前提・実現したいこと

コメントもいただけるとうれしいです。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • Zuishin

    2016/06/25 13:09

    解決したならベストアンサーを決めてください。解決してないなら追記してください。

    キャンセル

回答 3

0

構造体で jap > math と入力すると

とか、ちょっと日本語として通じない部分があるんですが、類推してお答えします。

学籍番号を表示する

とありますけど、学籍番号はどこに格納されているんでしょうか?

main関数の中で、

struct record[10]=


とありますが、recordは構造体の名前なので、変数名が必要です。

query input_calc() 関数でscanfを使って入力してますが、入力した結果をpのメンバー変数にセットしないと、入力値が呼び出し元に返ってきませんよ。

exec_query() 関数が入力した内容に従って学籍番号を返す関数だと思いますが、学籍番号はdouble型なのでしょうか?

今一度、課題文をよく読み返したほうがいいと思います。この前も、読み違えて勘違いしていた人がいましたから。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

日本語、数学、英語の順で点数が来るのは理解しました。コンパイル時決まっているのだからmainの外で宣言しても良いと思いました。While(1)で無限ループさせるのでしょうか、int iと定義してるのに宣言されていません。難解です。
構造体の終わりがrecord[333]={-1,-1,-1}とか、生徒数maxを100人とするなら100回構造体を検査させましょうか。
あ、構造体を外側で宣言してるのですね。それと、「loop_counter_i」より「i」の方が楽ですが、他人に見せる場合やデバッグ時に苦労しますし、以前「i」をグローバル宣言しており、iループの中でCALL(Cでは関数名)してるサブルーチンの中でiを使ってしまって終わらなかった事があります。
それ依頼、関数、変数名は長くしましたし、「a」や「i」と言った短い変数も使いません。ましてや「recode」なる勘違いされやすい名前は使わなくなりました。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

ナニがわからんのか明記されてないので答えようがなく、勝手にC++で実装してみた。

#include <iostream>
#include <string>

using namespace std;

const static int N = 10;
struct record { 
  int id; // 学籍番号(勝手に追加)
  int jap;
  int math;
  int eng; 
};

record database[N] = {
  {100, 58,46,87}, 
  {101, 55,84,56}, 
  {102, 96,94,74}, 
  {103, 28,80,90}, 
  {104, 57,57,31}, 
  {105, 65,84,73}, 
  {106, 60,59,67}, 
  {107, 47,79,75}, 
  {108, 75,85,57}, 
  {109, 60,98,61}
}; 

struct query { 
  string lsubj;
  string op;
  string rsubj;
};

query input_query() {
  query result;
  cin >> result.lsubj >> result.op >> result.rsubj;
  return result;
} 

void exec_query(query x) { 
  for ( int i = 0; i < N; ++i ) {
    record rec = database[i];
    int lhs;
    int rhs;
    bool match = false;
    if      ( x.lsubj == "jap"  ) lhs = rec.jap;
    else if ( x.lsubj == "eng"  ) lhs = rec.eng;
    else if ( x.lsubj == "math" ) lhs = rec.math;
    else continue;
    if      ( x.rsubj == "jap"  ) rhs = rec.jap;
    else if ( x.rsubj == "eng"  ) rhs = rec.eng;
    else if ( x.rsubj == "math" ) rhs = rec.math;
    else continue;
    if      ( x.op == ">" ) match = lhs > rhs;
    else if ( x.op == "<" ) match = lhs < rhs;
    else if ( x.op == "=" ) match = lhs == rhs;
    else continue;
    if ( match ) {
      cout << '#' << rec.id 
           << ":  jap=" << rec.jap  << "  "
           << ":  eng=" << rec.eng  << "  "
           << ": math=" << rec.math << "  "
           << endl;
    }
  }
} 

int main() { 
  while(1) {
    exec_query(input_query()); 
  }
}

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

関連した質問

  • 受付中

    計算機のプログラム

    初めて質問投稿します。質問に対して不足している情報などあるかもしれませんが、ご容赦ください。 Javaで簡単な計算機の仕組みを作ろうとしています。 しかし、いざコンパイルしようと

  • 解決済

    CodeIgniterのActiveRecodeの使用について

    前提・実現したいことCodeIngniterのActiveRecodeを用いて下記のようなSQLを作成・実行したい SELECT `A`.*, `B`.* FROM `TABLE_

  • 解決済

    ActiveRecordの結合検索の表示

    前提・実現したいこと RailsでActiveRecord使って複数のテーブルの結合をしようとしております。 多言語のレストランガイドのイメージです。どの言語でも共通のテーブル

  • 解決済

    プログラムの改善

    前提・実現したいこと C言語で数値計算のプログラムを書きました。 効率が悪いところや、他の書き方がありましたら、アドバイスしていただけると助かります。 該当のソースコード

  • 解決済

    C言語 簡易関数電卓作成 エラーばかり

    プログラミング初心者です。 c言語で電卓を作成してみましたが、うまく動いてくれません。 コンパイルできない。 エラー個所をコメントアウトして実行すると、一文字入力後操作を受

  • 解決済

    構造体のプログラム

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

  • 受付中

    Railsで外部キー制約がBIGINTになる件について

    Rails5.1から外部キーをつけると、そのフィールドはデータ型がbigintとなっていて、 参照キーとうまくいかないのですが、どのようにしたらintegerにすることができますか

  • 解決済

    C言語についての質問

    c言語 このプログラムを動かし足し算~割り算をしたいのですが、動きません。 どこが悪いのか、ここはこうしたほうがいいというところを教えてください。 include <stdio

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

  • C

    3841questions

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

  • C++

    3635questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。