C言語の課題です。

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

C言語の課題です。

#1

投稿記事 by 大学生 » 17年前

問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言語の課題です。

#2

投稿記事 by 大学生 » 17年前

添付できてなかったのでコピペします。

問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言語の課題です。

#3

投稿記事 by 匿名 » 17年前

まずは規約をよく読んでください。
コードを書くときはタグを使って下さい。
また、宿題の答えを要求する行為も規約違反です。
アドバイスを受けて自分で作りましょう。
答えをくれって書くと、きっと答えてくれる回答者の数が減りますよ。

Dixq (管理人)

Re:C言語の課題です。

#4

投稿記事 by Dixq (管理人) » 17年前

まずいっぺんに作ろうとせず、一つ一つパーツを作ってつなげるといいですよ。
まず、

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]

Mist

Re:C言語の課題です。

#5

投稿記事 by Mist » 17年前

> gstudent構造体の配列変数とその値を用意して
とあるから、管理人さんのは答えじゃないんじゃないかな?
(そのまま使われないようにわざとそうしたのかもしれませんけど)

Dixq (管理人)

Re:C言語の課題です。

#6

投稿記事 by Dixq (管理人) » 17年前

そうですね。
理論がわかれば自分で実装出来ると思いますし、その方がいいと思ったので、
問題に対する答えそのものは書きませんでした。

>ここまで出来たら次はつなげるだけですね。

と書いたのはこれが出来たら自分がこれまで書いたプログラムに
当てはめるだけ、あるいは応用するだけですね、という意味だったのですが、
少々誤解を招きますね。
最大値を計算する方法と、最大値のIDが計算できれば後は表示だけなので、
もう自分で出来ますねって意味でした。

閉鎖

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