よろしくお願いします

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sim
記事: 48
登録日時: 10年前

よろしくお願いします

#1

投稿記事 by sim » 10年前

プログラムについて質問です。入力した分数を構造体に格納して返す関数。引数として分数を受けとり標準出力へ出力する関数。
この二つはどうしたらよいでしょうか?

#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;

}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 10年前

ソースコードを貼り付ける際は、BBCodeを有効にした上でcodeタグで囲んでいただけると、見やすくてありがたいです。
sim さんが書きました:この二つはどうしたらよいでしょうか?
課題なら作って使えばいいと思います。
具体的にどのへんがわからないのですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

sim
記事: 48
登録日時: 10年前

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

#3

投稿記事 by sim » 10年前

構造体において関数を呼び出す定義ってなんですか?

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

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

#4

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

試しに似た回答をしてみます。
これをいじくれば課題は完成すると思います。

コード:

#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;
}
ポイントはポインタを使った時はアロー演算子->で、
ポインタを使わない時はドット演算い.でメンバを指定します。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#5

投稿記事 by みけCAT » 10年前

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

コード:

struct fraction read_fraction(void); /* 入力した分数を構造体に格納して返す関数 */
void print_fraction(struct fraction frac); /* 引数として分数を受けとり標準出力へ出力する関数 */
のような感じでいいと思います(比較的小さい構造体なので、ポインタで渡す必要は無いだろう)。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

sim
記事: 48
登録日時: 10年前

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

#6

投稿記事 by sim » 10年前

皆さんありがとうございます。
ヒントを参考に頑張ってみます。

sim
記事: 48
登録日時: 10年前

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

#7

投稿記事 by sim » 10年前

#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);
}

sim
記事: 48
登録日時: 10年前

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

#8

投稿記事 by sim » 10年前

指摘お願いします。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#9

投稿記事 by みけCAT » 10年前

sim さんが書きました:指摘お願いします。
まず、ソースコードを書き込む際はBBCodeを有効にした状態でcodeタグで囲んでいただけると、見やすくてありがたいです。
次に、27行目の最後に付いているセミコロンが蛇足です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

sim
記事: 48
登録日時: 10年前

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

#10

投稿記事 by sim » 10年前

エラー 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.

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

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#11

投稿記事 by みけCAT » 10年前

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などに乗り換えるといいでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

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