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

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

新規登録して質問してみよう
ただいま回答率
87.20%
ポインタ

ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。

解決済

構造体とポインタについて

HYYH
HYYH

総合スコア6

ポインタ

ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。

2回答

0評価

0クリップ

249閲覧

投稿2022/01/22 10:12

名前と国語、数学、英語の成績をキーボードから入力すると、各人毎に、3 科目の平均値が出力されるプログラムを作成せよ。但し、構造体のポインタを用いた場合(代入と出力の両方で構造体のポインタを用いること)の コーディングを行うこと。

以上のことを念頭に、コードを書いてみたのですが、コアダンプになってしまいます。
きっと代入のところで失敗していると思うのですが、具体的にどこがいけないのかが調べてもわかりませんでした。
どうしたら、うまく代入できるか教えていただきたいです。

c

#include<stdio.h> int main(void) { typedef struct{ char name[50]; int japa; int math; int engl; double ave; }Grade; int n,i; printf("人数を入力してください。"); scanf("%d",&n); Grade *gs,grade[n]; for(i=0;i<n;i++){ printf("%d人目\n",i+1); printf("名前:"); scanf("%s",gs->name); printf("国語の点数:"); scanf("%d",&gs->japa); printf("数学の点数:"); scanf("%d",&gs->math); printf("英語の点数:"); scanf("%d",&gs->engl); gs->ave=((double)gs->japa+gs->math+gs->engl)/3; gs++; } gs=grade; //構造体のポインタを用いる for(i=0;i<n;i++){ printf("%d人目\n",i+1); printf("(国語,数学,英語)=(%d,%d,%d)\n" ,gs->japa,gs->math,gs->engl); printf("三教科の平均=%f\n",gs->ave); gs++; } return 0; }

しかし、ポインタを用いずに、配列だけでコードを書くことはできました。

c

#include<stdio.h> int main(void) { typedef struct{ char name[50]; int japa; int math; int engl; double ave; }Grade; int n,i; printf("人数を入力してください。"); scanf("%d",&n); Grade grade[n]; for(i=0;i<n;i++){ printf("%d人目\n",i+1); printf("名前:"); scanf("%s",grade[i].name); printf("国語の点数:"); scanf("%d",&grade[i].japa); printf("数学の点数:"); scanf("%d",&grade[i].math); printf("英語の点数:"); scanf("%d",&grade[i].engl); grade[i].ave=((double)grade[i].japa+grade[i].math+grade[i].engl)/3; } //構造体のインデックス for(i=0;i<n;i++){ printf("%d人目\n",i+1); printf("(国語,数学,英語)=(%d,%d,%d)\n" ,grade[i].japa,grade[i].math,grade[i].engl); printf("三教科の平均=%f\n",grade[i].ave); } return 0; }

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

YT0014

2022/01/22 10:26

ポインタgsの値が、どのタイミングでどんな値になっているか、ご確認のうえ、ご提示ください。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

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

ポインタ

ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。