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

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

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

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

Q&A

解決済

3回答

2679閲覧

C++、構造体の書き換え

haniwa-0000

総合スコア11

C++

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

0グッド

0クリップ

投稿2018/07/04 15:07

二つの整数の和と差を求めるプログラムを構造体を用いて書く方法を教えてください。

#include <stdio.h> void sum_diff(int n1, int n2, int *sum, int *diff) { *sum = n1 + n2; *diff = (n1 > n2) ? n1 - n2 : n2 - n1; } int main(void) { int na, nb; int wa = 0, sa = 0; puts("二つの整数を入力してください。"); printf("整数A:"); scanf("%d", &na); printf("整数B:"); scanf("%d", &nb); sum_diff(na, nb, &wa, &sa); printf("和は%dで差は%dです。\n", wa, sa); return 0; }

これを構造体を用いたものに書き換えてほしいです。

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

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

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

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

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

guest

回答3

0

回答ではありません・・・下記リンクを参考に質問して下さい。
質問する時は・・・

投稿2018/07/04 16:27

cateye

総合スコア6851

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

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

0

こんにちは。

折角C++のタグがついてますので、少し無理やりC++らしくしてみました。

C++

1#include <iostream> 2#include <boost/format.hpp> 3 4struct SumDiff 5{ 6private: 7 int n1; 8 int n2; 9 int sum; 10 int diff; 11public: 12 SumDiff(int i1, int i2) : n1(i1), n2(i2) { } 13 void operator()() 14 { 15 sum = n1 + n2; 16 diff = (n1 > n2) ? n1 - n2 : n2 - n1; 17 } 18 int getSum() const { return sum; } 19 int getDiff() const { return diff; } 20}; 21 22int main() 23{ 24 int na, nb; 25 26 std::cout << u8"二つの整数を入力してください。\n"; 27 std::cout << u8"整数A:"; 28 std::cin >> na; 29 std::cout << u8"整数B:"; 30 std::cin >> nb; 31 32 SumDiff sum_diff(na, nb); 33 sum_diff(); 34 35 std::cout << boost::format("和は%dで差は%dです。\n") % sum_diff.getSum() % sum_diff.getDiff(); 36}

無駄に様々な機能を使ったので無駄に難しくなってしまいました。ご勘弁下さい。
wandboxで見ることができます。

あと、C++にはprintf()が無いのが辛い場合もあります。それっぽいことができるboost::formatは結構便利なので使ってみました。boostを実際に使うのはちょっとだけ手間がかかります。
Visual Studio
linux系OS

投稿2018/07/05 03:24

Chironian

総合スコア23272

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

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

haniwa-0000

2018/07/07 06:41

ご回答ありがとうございます! 最近プログラミングの勉強を始めたばかりで、恥ずかしながら基本もままならないので、私には少し難しく感じてしまいました。 今後、もう少し勉強が進んできたら、 このようなプログラムを自分で作成したり、読んだりできるようになりたいです。
guest

0

ベストアンサー

質問が抽象的だったので細かい注文はわからないですが

C

1#include <stdio.h> 2struct sum_diff{ 3 int n1; 4 int n2; 5 int sum; 6 int diff; 7}; 8 9int main(void){ 10 int na, nb; 11 struct sum_diff test; 12 printf("整数A:"); 13 test.n1 = scanf("%d", &na); 14 printf("整数B:"); 15 test.n2 = scanf("%d", &nb); 16 test.sum = na + nb; 17 test.diff = (na > nb) ? na - nb : nb - na; 18 printf("和は%dで差は%dです。\n", test.sum, test.diff); 19}

こんな感じになるかと。
struct 関数名{};←セミコロンを忘れずに!

上記の通りで構造体を宣言します。

構造体のなかで宣言したものをメンバと言います。

また構造体のメンバは、実体からドット演算子「.」を使って呼び出します。

詳しいことはこのサイトをご覧ください。
https://www.sejuku.net/blog/24473#struct

あと他の方もおっしゃっていますが、質問をする際の心がけること、回答してくれる方に対してできるだけ具体的に質問内容を説明するのはルールかと思います。丸投げは持っての他です。

自分自身もこのサイトを使い始めたばかりなのでまだ至らぬ点もありますが、指摘・アドバイスしていただいたことはしっかり訂正や修正をしてこのサイトの環境に慣れようと心がけています。ですのでhaniwa-0000さんも心がけていただけると幸いです。長文失礼しました。

投稿2018/07/04 17:48

Lana1114

総合スコア25

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

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

LouiS0616

2018/07/04 18:00

横から失礼します。気になる点が二か所。 ・ scanfがどんな値を返すのか、ググって確認された方が良いです。 ・ これは明らかに変ですね ⇒『struct 関数名{};』 構造体の使い方についてももうちょっと洗練できる気がしますが、こればっかりは質問があまりに曖昧なので判断のしようがないですね。
haniwa-0000

2018/07/07 06:43

ご回答ありがとうございます。 つい先日構造体を習ったばかりで、構造体についてあまりよくわからないまま質問してしまいました。申し訳ありません。 もう少し自分で調べて身につけてから質問するべきだったと反省しています。 ご指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問