質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

2回答

1280閲覧

C++,構造体について質問です。

haniwa-0000

総合スコア11

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/07/04 15:04

編集2022/01/12 10:55
#include <stdio.h> struct xyz{ int x; long y; double z; }; struct xyz scan_xyz(int x, long y, double z) { struct xyz temp; temp.x = x; temp.y = y; temp.z = z; return temp; } int main(void) { int a, b, c; struct xyz s = { 0, 0, 0 }; printf("x:"); scanf("%d", &a); printf("y:"); scanf("%ld", &b); printf("z:"); scanf("%lf", &c); s = scan_xyz(a, b, c); printf("xyz.x = %d\n", s.x); printf("xyz.y = %ld\n", s.y); printf("xyz.z = %f\n", s.z); return 0; }

上のコードを「int型、long型、double型の値をキーボードから読み込んで、その値をメンバとして持つxyz構造体の値を返却する関数」に直してほしいです。

x、yはうまく実行できたのですが、zだけ全く違う値が出てきてしまうので、どこをどう直せばいいのか教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

PineMatsu

2018/07/05 08:08

少しは「自分で考えた」「自分でググって調べた」、コードを書いてみたけどうまく動かない、そのコードについて何が悪いのか教えてほしい、というのであれば答える気にもなるが、課題をそのままここで質問するのは控えたほうが良い。
guest

回答2

0

int型、long型、double型の値をキーボードから読み込む方法はわかるんでしょうか


C

1// 2// 標準入力でxyzを設定 3// 4void scan_xyz(struct xyz* arg) 5{ 6 char bff[80]; 7 char* s; 8 9 printf("int :"); 10 fgets(bff, sizeof(bff), stdin); 11 arg->x = strtol(bff, &s, 10); 12 13 printf("long :"); 14 fgets(bff, sizeof(bff), stdin); 15 arg->y = strtol(bff, &s, 10); 16 17 printf("double :"); 18 fgets(bff, sizeof(bff), stdin); 19 arg->z = strtod(bff, &s, 10); 20} 21 22としておいて、 23main関数の中で、 24 25 scan_xyz(&s); 26 27とします

これでやってみましょう

投稿2018/07/04 23:37

編集2018/07/07 06:56
y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

PineMatsu

2018/07/05 08:11

もし低評価をつけたのが投稿者ならこんな悲しいことはないですね。 回答を期待してたのに逆に質問されて「くそっ!」とでも感じたんでしょうか?
haniwa-0000

2018/07/07 06:37

int型、long型、double型の値をキーボードから読み込む方法はわからなかったので、私なりにわかるところまでは書いてみたつもりです。 s = scan_xyz(); の()の中に何を書けばいいのか、他に何か関数が必要なのか、調べてみてもわからなかったので、手も足も出ない状況です。 また、前半のプログラムも合っているのかわからないので、直すべき点があれば教えていただけたら嬉しいです。
y_waiwai

2018/07/07 07:00

Windowsを使ってるなら、VisualStudioや、Eclipseなどをいれれば、途中で実行を止めて変数を参照したり、1行づつ実行させたりとかできるようになります。
guest

0

変数cがint型で宣言されてるからでは。

c

1int a, b, c; 23int a, b; 4double c;

投稿2018/07/07 08:47

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問