ページ 1 / 1
C言語の課題です。
Posted: 2008年10月29日(水) 15:18
by 大学生
問2(基礎):gstudent構造体
struct gstudent {
char name[20]; /*氏名*/
int height; /*身長*/
float weight; /*体重*/
long schols; /*奨学金*/
};
この各メンバに値を設定し,その構造体を返す関数
struct gstudent set_gstudent(char name[/url], int height, float weight, long schols){ }
を作成し,main()において適当な値を設定せよ.また,gstudent構造体へのアドレスが与えられたとき,そのメンバの値を表示する関数
void show_gstudent(struct gstudent *gs){ }
を作成し,main()において設定した内容を1行で表示せよ.
表示例:Mike 165 72.0 70000
問3(応用):問2のgstudent構造体の配列変数とその値を用意して,最も身長が高い学生のメンバを表示するプログラムを書け.
よろしくお願いします。
一応問2は自力でやりました添付しときます。問3がわかりません。解答例載せてくれるとうれしいです。
Re:C言語の課題です。
Posted: 2008年10月29日(水) 15:20
by 大学生
添付できてなかったのでコピペします。
問2
#include <stdio.h>
#include <string.h>
struct gstudent {
char name[20];
int height;
float weight;
long schols;
};
struct gstudent set_gstudent
(char name[/url],int height, float weight,long schols)
{
struct gstudent a;
strcpy(a.name,name);
a.height = height;
a.weight = weight;
a.schols = schols;
return (a);
}
void show_gstudent(struct gstudent *gs)
{
printf("%s %d %f %ld\n",(*gs).name,(*gs).height,(*gs).weight,(*gs).schols);
}
int main ()
{
char x[100];
int y;
float z;
long w;
printf("namae : "); scanf("%s",&x);
printf("sincyou : "); scanf("%d",&y);
printf("taijuu : "); scanf("%f",&z);
printf("shougakukin : "); scanf("%ld",&w);
struct gstudent b = set_gstudent(x,y,z,w);
show_gstudent (&b);
return 0;
}
Re:C言語の課題です。
Posted: 2008年10月29日(水) 15:27
by 匿名
まずは規約をよく読んでください。
コードを書くときはタグを使って下さい。
また、宿題の答えを要求する行為も規約違反です。
アドバイスを受けて自分で作りましょう。
答えをくれって書くと、きっと答えてくれる回答者の数が減りますよ。
Re:C言語の課題です。
Posted: 2008年10月29日(水) 15:58
by Dixq (管理人)
まずいっぺんに作ろうとせず、一つ一つパーツを作ってつなげるといいですよ。
まず、
1. 5個の要素を持った配列を用意し、適当に値を代入し、その最大値を表示するプログラムを作る
2. 1のプログラムを拡張して、値の代入はscanfで行うようにする。
3. 2のプログラムを拡張して、何番目の値が最大か表示するようにする。
ここまで出来たら次はつなげるだけですね。
一応3の回答例を書いておきます。
まずは自分でやってみて、出来たら照らし合わせてみて下さい。
[color=#666666>
#include <stdio.h>
int main (){
int i,id,height[5],max;
for(i=0 ; i<5; i++){
scanf("%d",&height);
if(i == 0){
max = height[0];
id = i;
} else {
if(max < height){
max = height;
id = i;
}
}
}
printf("最大は%d番目に入力した%dの値\n", id+1, max);
return 0;
}
実行結果例
100
-20
349
38
200
最大は3番目に入力した349の値
[/color]
Re:C言語の課題です。
Posted: 2008年10月29日(水) 16:06
by Mist
> gstudent構造体の配列変数とその値を用意して
とあるから、管理人さんのは答えじゃないんじゃないかな?
(そのまま使われないようにわざとそうしたのかもしれませんけど)
Re:C言語の課題です。
Posted: 2008年10月29日(水) 16:38
by Dixq (管理人)
そうですね。
理論がわかれば自分で実装出来ると思いますし、その方がいいと思ったので、
問題に対する答えそのものは書きませんでした。
>ここまで出来たら次はつなげるだけですね。
と書いたのはこれが出来たら自分がこれまで書いたプログラムに
当てはめるだけ、あるいは応用するだけですね、という意味だったのですが、
少々誤解を招きますね。
最大値を計算する方法と、最大値のIDが計算できれば後は表示だけなので、
もう自分で出来ますねって意味でした。