ページ 11

よろしくお願いします

Posted: 2015年7月25日(土) 20:33
by sim
プログラムについて質問です。入力した分数を構造体に格納して返す関数。引数として分数を受けとり標準出力へ出力する関数。
この二つはどうしたらよいでしょうか?

#include<stdio.h>

struct fraction
{
int num; /*分子*/
int den; /*分母*/
};

int main(void)
{
struct fraction fraction1;

printf("分子を入力してください。\n");
scanf("%d",&fraction1.num);

printf("分母を入力してください。\n");
scanf("%d",&fraction1.den);

printf("入力された分数は%d/%dです。\n", fraction1.num, fraction1.den);

return 0;

}

Re: よろしくお願いします

Posted: 2015年7月25日(土) 20:37
by みけCAT
ソースコードを貼り付ける際は、BBCodeを有効にした上でcodeタグで囲んでいただけると、見やすくてありがたいです。
sim さんが書きました:この二つはどうしたらよいでしょうか?
課題なら作って使えばいいと思います。
具体的にどのへんがわからないのですか?

Re: よろしくお願いします

Posted: 2015年7月25日(土) 20:40
by sim
構造体において関数を呼び出す定義ってなんですか?

Re: よろしくお願いします

Posted: 2015年7月25日(土) 20:48
by Dixq (管理人)
試しに似た回答をしてみます。
これをいじくれば課題は完成すると思います。

コード:

#include <stdio.h>

struct Test {
	int mem;
};

void input(struct Test *atest){
	int tmp;
	scanf("%d", &tmp);
	atest->mem = tmp;
}

void myPrint(struct Test atest){
	printf("%d", atest.mem);
}

int main(){
	struct Test test;
	input(&test);
	myPrint(test);
	return 0;
}
ポイントはポインタを使った時はアロー演算子->で、
ポインタを使わない時はドット演算い.でメンバを指定します。

Re: よろしくお願いします

Posted: 2015年7月25日(土) 20:49
by みけCAT
sim さんが書きました:構造体において関数を呼び出す定義ってなんですか?
?????
C++のクラスのことでしょうか?
sim さんが書きました:入力した分数を構造体に格納して返す関数。引数として分数を受けとり標準出力へ出力する関数。
この二つはどうしたらよいでしょうか?
とりあえず型は

コード:

struct fraction read_fraction(void); /* 入力した分数を構造体に格納して返す関数 */
void print_fraction(struct fraction frac); /* 引数として分数を受けとり標準出力へ出力する関数 */
のような感じでいいと思います(比較的小さい構造体なので、ポインタで渡す必要は無いだろう)。

Re: よろしくお願いします

Posted: 2015年7月25日(土) 20:51
by sim
皆さんありがとうございます。
ヒントを参考に頑張ってみます。

Re: よろしくお願いします

Posted: 2015年7月25日(土) 22:21
by sim
#include<stdio.h>

typedef struct fraction
{
int num; /*分子*/
int den; /*分母*/
}fraction;


void show(fraction c);

int main(void)
{
struct fraction fraction1;

printf("分子を入力してください。\n");
scanf("%d",&fraction1.num);

printf("分母を入力してください。\n");
scanf("%d",&fraction1.den);

show(fraction1);

return 0;

}
void show(fraction c);
{
printf("入力された分数は%d/%dです。\n", c.num, c.den);
}

Re: よろしくお願いします

Posted: 2015年7月25日(土) 22:22
by sim
指摘お願いします。

Re: よろしくお願いします

Posted: 2015年7月25日(土) 22:26
by みけCAT
sim さんが書きました:指摘お願いします。
まず、ソースコードを書き込む際はBBCodeを有効にした状態でcodeタグで囲んでいただけると、見やすくてありがたいです。
次に、27行目の最後に付いているセミコロンが蛇足です。

Re: よろしくお願いします

Posted: 2015年7月25日(土) 22:30
by sim
エラー C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

このエラーなんですかね?

Re: よろしくお願いします

Posted: 2015年7月25日(土) 22:31
by みけCAT
sim さんが書きました:エラー C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

このエラーなんですかね?
コンパイラの不都合ですね。
ソースコードの最初の行に

コード:

#define _CRT_SECURE_NO_WARNINGS
というおまじないを書くか、GCCなどに乗り換えるといいでしょう。