関数の受け渡し
関数の受け渡し
関数の受け渡しの問題で
次のアイウの手順を参考にプログラムを作成せよ
(ア) 氏名,出身地,年齢,体重のそれぞれの変数名をname,hc,age,weightとして,それらの情報を持つ構造体profを宣言する.また,それぞれの変数に以下の3名分の情報を代入する.
 山本一郎,東京都,22才,65.3 kg
 近藤次郎,福岡県,21才,98.2 kg
 岡田三郎,北海道,19才,72.1 kg
(イ) 氏名を引数として戻り値をprof型とする関数rirekiを作成する.
(ウ) main関数内でgets関数を用いて氏名を入力し,関数rirekiに引数として渡し,氏名,出身地,年齢,体重の各情報を戻り値として得て,それらを画面に表示する.
最初の各メンバーの部分はこのような感じになるのでしょうか
char name
int hc
float age
どなたか模擬解答をお願いできませんでしょうか
char weight
次のアイウの手順を参考にプログラムを作成せよ
(ア) 氏名,出身地,年齢,体重のそれぞれの変数名をname,hc,age,weightとして,それらの情報を持つ構造体profを宣言する.また,それぞれの変数に以下の3名分の情報を代入する.
 山本一郎,東京都,22才,65.3 kg
 近藤次郎,福岡県,21才,98.2 kg
 岡田三郎,北海道,19才,72.1 kg
(イ) 氏名を引数として戻り値をprof型とする関数rirekiを作成する.
(ウ) main関数内でgets関数を用いて氏名を入力し,関数rirekiに引数として渡し,氏名,出身地,年齢,体重の各情報を戻り値として得て,それらを画面に表示する.
最初の各メンバーの部分はこのような感じになるのでしょうか
char name
int hc
float age
どなたか模擬解答をお願いできませんでしょうか
char weight
Re:関数の受け渡し
確かにaさんの言うことは一理ありますね・・・
maiさんもある程度自分で考えて作ってみて、
作ったソースを見せていただければ、
「こうした方がいいよ」等のアドバイスもできると思いますよ。
まずは自分で挑戦してみましょう!
なぁんてぴよぴよレベルが偉そうに言える事ではないんでしょうけど・・・
maiさんもある程度自分で考えて作ってみて、
作ったソースを見せていただければ、
「こうした方がいいよ」等のアドバイスもできると思いますよ。
まずは自分で挑戦してみましょう!
なぁんてぴよぴよレベルが偉そうに言える事ではないんでしょうけど・・・
Re:関数の受け渡し
> 最初の各メンバーの部分はこのような感じになるのでしょうか
> char name
> int hc
> float age
> char weight
名前と出身地は文字列、年齢は整数値、体重は実数値ですよね?
そうなると以下のようになります。
char name[20]; <--- 20は適当です
char hc[20]; <--- 20は適当です
int age;
float weight;
> char name
> int hc
> float age
> char weight
名前と出身地は文字列、年齢は整数値、体重は実数値ですよね?
そうなると以下のようになります。
char name[20]; <--- 20は適当です
char hc[20]; <--- 20は適当です
int age;
float weight;
Re:関数の受け渡し
最初の部分はこんな感じで大丈夫でしょうか
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct prof {
char name[20];
char hc[20];
int age;
float weight;
};
struct prof a(char c[/url])
{
struct prof x;
if (strcmp(c, "山本一郎") == 0) {
strcpy(x.name, "山本一郎");
x.hc = 東京都;
x.age = 22才;
strcpy(x.weight, "65.3Kg");
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct prof {
char name[20];
char hc[20];
int age;
float weight;
};
struct prof a(char c[/url])
{
struct prof x;
if (strcmp(c, "山本一郎") == 0) {
strcpy(x.name, "山本一郎");
x.hc = 東京都;
x.age = 22才;
strcpy(x.weight, "65.3Kg");
}
Re:関数の受け渡し
> 最初の部分はこんな感じで大丈夫でしょうか 一部が正しくありません。 > x.hc = 東京都; 出身地は文字列データです。名前と同じようにstrcpyを使ってください。 > x.age = 22才; 数値データをセットするときに、単位(才)は不要です。 > strcpy(x.weight, "65.3Kg"); 体重は数値データです。strcpyを使ってはいけません。
Re:関数の受け渡し
このようになおしてみたのですが大丈夫でしょうか
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct prof {
char name[20];
char hc[20];
int age;
float weight;
};
struct prof a(char c[/url])
{
struct prof x;
if (strcmp(c, "山本一郎") == 0) {
strcpy(x.name, "山本一郎");
strcpy(x.hc, "東京都");
x.age = 22;
x.weight=65.3;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct prof {
char name[20];
char hc[20];
int age;
float weight;
};
struct prof a(char c[/url])
{
struct prof x;
if (strcmp(c, "山本一郎") == 0) {
strcpy(x.name, "山本一郎");
strcpy(x.hc, "東京都");
x.age = 22;
x.weight=65.3;
}
Re:関数の受け渡し
アドバイスありがとうございます 全体的には以下のように作ってみました どうでしょうか
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct ken {
char chiji[80];
int pop;
float tmp;
char flw[30];
};
struct prof a(char c[/url])
{
struct prof x;
if (strcmp(c, "山本一郎") == 0) {
strcpy(x.name, "山本一郎");
strcpy(x.hc, "東京都");
x.age = 22;
x.weight=65.3;
}
if (strcmp(c, "近藤次郎") == 0) {
strcpy(x.name, "近藤次郎");
strcpy(x.hc, "福岡県");
x.age = 21;
x.weight=98.2;
}
if (strcmp(c, "岡田三郎") == 0) {
strcpy(x.name, "岡田三郎");
strcpy(x.hc, "北海道");
x.age = 19;
x.weight=72.1;
return x;
}
int main(void)
{
struct prof data;
char rireki[10];
while (1) {
printf("を入力してください:");
scanf("%s", rireki);
if (strcmp(rireki, "end") == 0) {
break;
}
data = a(rireki);
printf("氏 名:%s\n", data.name);
printf("出身地:%d\n", data.hc);
printf("年齢:%.1f\n", data.age);
printf("体重:%s\n\n", data.weight);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct ken {
char chiji[80];
int pop;
float tmp;
char flw[30];
};
struct prof a(char c[/url])
{
struct prof x;
if (strcmp(c, "山本一郎") == 0) {
strcpy(x.name, "山本一郎");
strcpy(x.hc, "東京都");
x.age = 22;
x.weight=65.3;
}
if (strcmp(c, "近藤次郎") == 0) {
strcpy(x.name, "近藤次郎");
strcpy(x.hc, "福岡県");
x.age = 21;
x.weight=98.2;
}
if (strcmp(c, "岡田三郎") == 0) {
strcpy(x.name, "岡田三郎");
strcpy(x.hc, "北海道");
x.age = 19;
x.weight=72.1;
return x;
}
int main(void)
{
struct prof data;
char rireki[10];
while (1) {
printf("を入力してください:");
scanf("%s", rireki);
if (strcmp(rireki, "end") == 0) {
break;
}
data = a(rireki);
printf("氏 名:%s\n", data.name);
printf("出身地:%d\n", data.hc);
printf("年齢:%.1f\n", data.age);
printf("体重:%s\n\n", data.weight);
}
return 0;
}
Re:関数の受け渡し
> struct prof a(char c[/url])
問題文に
「(イ) 氏名を引数として戻り値をprof型とする関数rirekiを作成する.」
とあります。
関数名はaではないですね。
> return x;
return文を書く場所が正しくありません。
> printf("を入力してください:");
何の入力を求めているのか、正しく書いてください。
> scanf("%s", rireki);
問題文に
「(ウ) main関数内でgets関数を用いて氏名を入力し」
とあります。
scanfは使えないですね。
また、名前に対する変数名がrirekiというのは、ふさわしくないですね。
問題文に
「(イ) 氏名を引数として戻り値をprof型とする関数rirekiを作成する.」
とあります。
関数名はaではないですね。
> return x;
return文を書く場所が正しくありません。
> printf("を入力してください:");
何の入力を求めているのか、正しく書いてください。
> scanf("%s", rireki);
問題文に
「(ウ) main関数内でgets関数を用いて氏名を入力し」
とあります。
scanfは使えないですね。
また、名前に対する変数名がrirekiというのは、ふさわしくないですね。
Re:関数の受け渡し
すみませんちゃんと貼れていませんでした 失礼しました
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct ken {
char chiji[80];
int pop;
float tmp;
char flw[30];
};
struct prof rireki(char c[/url])
{
struct prof x;
if (strcmp(c, "山本一郎") == 0) {
strcpy(x.name, "山本一郎");
strcpy(x.hc, "東京都");
x.age = 22;
x.weight=65.3;
}
if (strcmp(c, "近藤次郎") == 0) {
strcpy(x.name, "近藤次郎");
strcpy(x.hc, "福岡県");
x.age = 21;
x.weight=98.2;
}
if (strcmp(c, "岡田三郎") == 0) {
strcpy(x.name, "岡田三郎");
strcpy(x.hc, "北海道");
x.age = 19;
x.weight=72.1;
}
{
printf("正しい名前を入力して下さい\n");
exit(0);
}
return x;
}
int main(void)
{
struct prof data;
char rireki[10];
while (1) {
printf("名前を入力してください:");
gets(ss, rireki);
if (strcmp(rireki, "end") == 0) {
break;
}
data = rireki(name);
printf("氏 名:%s\n", data.name);
printf("出身地:%d\n", data.hc);
printf("年齢:%.1f\n", data.age);
printf("体重:%s\n\n", data.weight);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct ken {
char chiji[80];
int pop;
float tmp;
char flw[30];
};
struct prof rireki(char c[/url])
{
struct prof x;
if (strcmp(c, "山本一郎") == 0) {
strcpy(x.name, "山本一郎");
strcpy(x.hc, "東京都");
x.age = 22;
x.weight=65.3;
}
if (strcmp(c, "近藤次郎") == 0) {
strcpy(x.name, "近藤次郎");
strcpy(x.hc, "福岡県");
x.age = 21;
x.weight=98.2;
}
if (strcmp(c, "岡田三郎") == 0) {
strcpy(x.name, "岡田三郎");
strcpy(x.hc, "北海道");
x.age = 19;
x.weight=72.1;
}
{
printf("正しい名前を入力して下さい\n");
exit(0);
}
return x;
}
int main(void)
{
struct prof data;
char rireki[10];
while (1) {
printf("名前を入力してください:");
gets(ss, rireki);
if (strcmp(rireki, "end") == 0) {
break;
}
data = rireki(name);
printf("氏 名:%s\n", data.name);
printf("出身地:%d\n", data.hc);
printf("年齢:%.1f\n", data.age);
printf("体重:%s\n\n", data.weight);
}
return 0;
}
Re:関数の受け渡し
学校のパソコンルームを先生に無理を言ってお願いしてあけてもらい、コンパイルしてみましたが、以下の部分でエラーが多く確認されましたが修正不可能でした 一部を直すと前の部分でエラーが出てしまいエラーの連鎖となってしまいます
while (1) {
printf("名前を入力してください:");
gets(ss, rireki);
if (strcmp(rireki, "end") == 0) {
break;
}
data = rireki(name);
printf("氏 名:%s\n", data.name);
printf("出身地:%d\n", data.hc);
printf("年齢:%.1f\n", data.age);
printf("体重:%s\n\n", data.weight);
}
while (1) {
printf("名前を入力してください:");
gets(ss, rireki);
if (strcmp(rireki, "end") == 0) {
break;
}
data = rireki(name);
printf("氏 名:%s\n", data.name);
printf("出身地:%d\n", data.hc);
printf("年齢:%.1f\n", data.age);
printf("体重:%s\n\n", data.weight);
}
Re:関数の受け渡し
> エラーが修正できずこまっています どなたかたすけてください お願いします
そもそも、構造体の定義が正しくないですよ。よく確認してください。
知事名や県花名などの定義は、以前の問題のものです。
そもそも、構造体の定義が正しくないですよ。よく確認してください。
知事名や県花名などの定義は、以前の問題のものです。
Re:関数の受け渡し
あら^^;
私がアドバイスした結果 ちゃんとprofという構造体を定義できていたじゃないですか。
> 最初の部分はこんな感じで大丈夫でしょうか
> #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
>
> struct prof {
> char name[20];
> char hc[20];
> int age;
> float weight;
>
>
>
> };
> ...
私がアドバイスした結果 ちゃんとprofという構造体を定義できていたじゃないですか。
> 最初の部分はこんな感じで大丈夫でしょうか
> #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
>
> struct prof {
> char name[20];
> char hc[20];
> int age;
> float weight;
>
>
>
> };
> ...
Re:関数の受け渡し
大変ご迷惑をおかけしもうしわけありませんでした。 以下のようになりましたどうでしょうか
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
>
> struct prof {
> char name[20];
> char hc[20];
> int age;
> float weight;
>
};
struct prof rireki(char c[/url])
{
struct prof x;
if (strcmp(c, "山本一郎") == 0) {
strcpy(x.name, "山本一郎");
strcpy(x.hc, "東京都");
x.age = 22;
x.weight=65.3;
}
if (strcmp(c, "近藤次郎") == 0) {
strcpy(x.name, "近藤次郎");
strcpy(x.hc, "福岡県");
x.age = 21;
x.weight=98.2;
}
if (strcmp(c, "岡田三郎") == 0) {
strcpy(x.name, "岡田三郎");
strcpy(x.hc, "北海道");
x.age = 19;
x.weight=72.1;
}
{
printf("正しい名前を入力して下さい\n");
exit(0);
}
return x;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
>
> struct prof {
> char name[20];
> char hc[20];
> int age;
> float weight;
>
};
struct prof rireki(char c[/url])
{
struct prof x;
if (strcmp(c, "山本一郎") == 0) {
strcpy(x.name, "山本一郎");
strcpy(x.hc, "東京都");
x.age = 22;
x.weight=65.3;
}
if (strcmp(c, "近藤次郎") == 0) {
strcpy(x.name, "近藤次郎");
strcpy(x.hc, "福岡県");
x.age = 21;
x.weight=98.2;
}
if (strcmp(c, "岡田三郎") == 0) {
strcpy(x.name, "岡田三郎");
strcpy(x.hc, "北海道");
x.age = 19;
x.weight=72.1;
}
{
printf("正しい名前を入力して下さい\n");
exit(0);
}
return x;
}
Re:関数の受け渡し
いえ、投稿内容に問題があると申し上げているのではないのです。
何が規約違反かわからないのでしたら、お伝えしますので、dixqhp@gmail.comまでご連絡下さい。
何が規約違反かわからないのでしたら、お伝えしますので、dixqhp@gmail.comまでご連絡下さい。