構造体(structure)のプログラムについて。

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

構造体(structure)のプログラムについて。

#1

投稿記事 by skcl » 7年前

コード:

#include <stdio.h>

struct dr {
  int quotient;
  int remainder;
};
typedef struct dr DivideResult;

DivideResult Divide(int a, int b);

int main() {
  DivideResult dr = Divide(11, 3);
  printf("商=%d, 剰余=%d\n", 
    dr.quotient, dr.remainder);
  return 0;
}

DivideResult Divide(int a, int b) {
  DivideResult dr;
  dr.quotient = a / b;
  dr.remainder = a % b;
  return dr;
}
このプログラムでaとbだけでなくcdeと増やしたり商と乗余だけでなく、和や差も入れるプログラムにするには、どこを変えれば良いのでしょうか。windows10 64bit visual studio 2015communityです。

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

Re: 構造体(structure)のプログラムについて。

#2

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

skcl さんが書きました:このプログラムでaとbだけでなくcdeと増やしたり
Divide関数の宣言(9行目)、定義(18~23行目)、呼び出し(12行目)を変えればいいでしょう。
skcl さんが書きました:商と乗余だけでなく、和や差も入れる
構造体の定義(4~5行目)、Divide関数の定義(20~21行目)、結果の出力(13~14行目)を変えればいいでしょう。

[hr]
質問の意図がよくわかりません。
試してみてエラーになったコードなどはありますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

skcl
記事: 34
登録日時: 7年前

Re: 構造体(structure)のプログラムについて。

#3

投稿記事 by skcl » 7年前

すみません。色々なプログラムを組みたいと思うのですがなかなか進歩しなくてまだ初心者なんです。

skcl
記事: 34
登録日時: 7年前

Re: 構造体(structure)のプログラムについて。

#4

投稿記事 by skcl » 7年前

Divide関数の宣言てどうやるんですか?和や差を入れる場合12行目は変えなくていいのですか?

box
記事: 2002
登録日時: 13年前

Re: 構造体(structure)のプログラムについて。

#5

投稿記事 by box » 7年前

割り算用の関数が意図どおりに動いているのであれば、それには手を触れずに
「新たに」足し算用の関数(名前の例:Add)と引き算用の関数(名前の例:Sub)を用意するのがよいと思います。
1つの関数で足し算も引き算も割り算も実行する、というのは避ける方がよいと思います。

なお、構造体に、商とあまりの他、和と差のためのメンバーを追加する必要があると思います。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

skcl
記事: 34
登録日時: 7年前

Re: 構造体(structure)のプログラムについて。

#6

投稿記事 by skcl » 7年前

足し算用の関数add引き算用の関数subとはどの様に用意すれば良いのでしょうか?私サンプルプログラム等を試していてどのようにしたらプログラムを変化させられるかと思って投稿しました。

アバター
purin52002
記事: 235
登録日時: 7年前
連絡を取る:

Re: 構造体(structure)のプログラムについて。

#7

投稿記事 by purin52002 » 7年前

なにも難しいことはありません。
落ち着いて考えればわかるはずです。

aとbを引数にとってa+bやa-bをreturnします。
余りは出ないから整数の値を一つ返すだけの関数ができると思います。
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

アバター
purin52002
記事: 235
登録日時: 7年前
連絡を取る:

Re: 構造体(structure)のプログラムについて。

#8

投稿記事 by purin52002 » 7年前

あ、もしかして構造体に四則演算の結果を入れたいんですかね?
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

skcl
記事: 34
登録日時: 7年前

Re: 構造体(structure)のプログラムについて。

#9

投稿記事 by skcl » 7年前

このプログラムをもっとバリエーションを増やすことってできるのですか?まだまだ初心者でわからないのですが変数をint a int bをint c int dとか増やしていくことは出来ますか?

アバター
purin52002
記事: 235
登録日時: 7年前
連絡を取る:

Re: 構造体(structure)のプログラムについて。

#10

投稿記事 by purin52002 » 7年前

func(a,b,c,/*何個でも引数をとれる*/);ってことですかね?
一応できると思いますよ。
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

skcl
記事: 34
登録日時: 7年前

Re: 構造体(structure)のプログラムについて。

#11

投稿記事 by skcl » 7年前

funcなんてないのですが、どこで宣言するのでしょうか?intは増やせますか?

アバター
purin52002
記事: 235
登録日時: 7年前
連絡を取る:

Re: 構造体(structure)のプログラムについて。

#12

投稿記事 by purin52002 » 7年前

すみませんでした。もう少し詳しく書きますね^^;

コード:

#include <stdio.h>
 
struct dr {
  int quotient;
  int remainder;
};
typedef struct dr DivideResult;
 
DivideResult Divide(int a, int b);
 
int main() {
  DivideResult dr = Divide(11, 3);
  printf("商=%d, 剰余=%d\n", 
    dr.quotient, dr.remainder);
  return 0;
}
 
DivideResult Divide(int a, int b) {
  DivideResult dr;
  dr.quotient = a / b;
  dr.remainder = a % b;
  return dr;
}
intを増やしたいというのはDivide(int a,int b)の引数のことでよろしいでしょうか?
printf関数のようにいくらでも引数を渡せるようにしたいということでしょうか?

もしそうでないのなら(引数がabcdeの5個でいいよー)、

コード:

#include <stdio.h>
 
struct dr {
  int quotient;
  int remainder;
};
typedef struct dr DivideResult;
 
DivideResult Divide(int a, int b,int c,int d,int e);
 
int main() {
  DivideResult dr = Divide(11, 3, 0, 0 ,0);
  printf("商=%d, 剰余=%d\n", 
    dr.quotient, dr.remainder);
  return 0;
}
 
DivideResult Divide(int a, int b,int c,int d,int e) {
//好きな処理を書く
}
のようにすればどうでしょう?
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

skcl
記事: 34
登録日時: 7年前

Re: 構造体(structure)のプログラムについて。

#13

投稿記事 by skcl » 7年前

すみません具体的なコードまで書いてくださって。quotientとremainderは変えなくていいんですか。好きなように記述するところをやったら、商と剰余の所を変えればいいのですか?

アバター
purin52002
記事: 235
登録日時: 7年前
連絡を取る:

Re: 構造体(structure)のプログラムについて。

#14

投稿記事 by purin52002 » 7年前

よろしければどういうことがしたいか教えてもらってもいいですか?

いまのところ私の認識では、
  • 四則演算した結果を構造体に格納したい。
  • 引数を増やしてa+b+cやa-b-cなどにも対応できるようにしたい。
というのがskclさんのやりたいことなのかなと思っています。

これなら四則演算(いまだと割り算だけ)の結果であるquotientとremainderは特に変えなくてもいいんじゃないかなーと思いました。
商と剰余の所を変えればいいのですか?
というのがよくわからなかったので、そこには触れないでおきます^^;
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

skcl
記事: 34
登録日時: 7年前

Re: 構造体(structure)のプログラムについて。

#15

投稿記事 by skcl » 7年前

商と剰余の所を変えないと商とした所に足し算の結果等が出てきてしまいますよね。

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

Re: 構造体(structure)のプログラムについて。

#16

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

習うより慣れよです。
あれこれ聞くより、まずは自分の予想でコードを書き換えてみてください。
コンパイルエラーなどが出てこんがらがってしまったら、そのエラーが出るコードを貼って質問してください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

skcl
記事: 34
登録日時: 7年前

Re: 構造体(structure)のプログラムについて。

#17

投稿記事 by skcl » 7年前

分かりました。自分で予想コードを書いてみます。またお願いします。

skcl
記事: 34
登録日時: 7年前

Re: 構造体(structure)のプログラムについて。

#18

投稿記事 by skcl » 7年前

コード:

#include <stdio.h>

struct DivideResult {
  int quotient;
  int remainder;
};

struct DivideResult Divide(int a, int b, int c, int d, int e);

int main() {
  struct DivideResult dr = Divide(11, 3, 6, 7, 4);
  printf("商=%d, 剰余=%d\n",
    dr.quotient, dr.remainder);
  return 0;
}

struct DivideResult Divide(int a, int b, int c, int d, int e) {
  struct DivideResult dr;
  dr.quotient = a / b / c / d / e;
  dr.remainder = a % b % c % d % e;
  return dr;
ってやってみました。とりあえず少し広がりました。

アバター
purin52002
記事: 235
登録日時: 7年前
連絡を取る:

Re: 構造体(structure)のプログラムについて。

#19

投稿記事 by purin52002 » 7年前

おめでとうございます^^

あとは足し算とか引き算ですね^^^
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

skcl
記事: 34
登録日時: 7年前

Re: 構造体(structure)のプログラムについて。

#20

投稿記事 by skcl » 7年前

新しいプログラムの質問このまましてはいけないのでしょうか?

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

Re: 構造体(structure)のプログラムについて。

#21

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

skcl さんが書きました:新しいプログラムの質問このまましてはいけないのでしょうか?
「新しいプログラム」が具体的にどのようなプログラムなのかによると思います。
今の「構造体(structure)のプログラム」と全く関係ない新しいプログラムの質問は、新しいトピックでするべきでしょう。
このトピックで質問されている「和や差も入れるプログラムにする」がまだ解決していないようなので、それに関する質問はこのトピックの続きとしてするべきでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

skcl
記事: 34
登録日時: 7年前

Re: 構造体(structure)のプログラムについて。

#22

投稿記事 by skcl » 7年前

コード:

#include <stdio.h>

struct DivideResult {
  int sum;
  int diff;
  int mul;
  int quotient;
  int remainder;
};

struct DivideResult Divide(int a, int b, int c, int d, int e);

int main() {
  struct DivideResult dr = Divide(11, 3, 6, 7, 4);
  printf("和=%d, 差=%d, 積=%d, 商=%d, 剰余=%d\n",
    dr.sum, dr.diff, dr.mul, dr.quotient, dr.remainder);
  return 0;
}

struct DivideResult Divide(int a, int b, int c, int d, int e) {
  struct DivideResult dr;
  dr.sum = a + b + c + d + e;
  dr.diff = a - b - c - d - e;
  dr.mul = a * b * c * d * e;
  dr.quotient = a / b / c / d / e;
  dr.remainder = a % b % c % d % e;
  return dr;
}
ってやったのですが、和と差と積はあってるのですが、商は確か、割り切れないと0になると思ったので、あってると思うのですが、剰余は2でいいのですかね。たぶんしょうがないとおもうのですが。

アバター
purin52002
記事: 235
登録日時: 7年前
連絡を取る:

Re: 構造体(structure)のプログラムについて。

#23

投稿記事 by purin52002 » 7年前

実際に計算してみると

//()で囲っているところから計算しています
(11/3)/6/7/4=(3/6)/7/4=(0/7)/4=(0/4)=0

(11%3)%6%7%4=(2%6)%7%4=(2%7)%4=(2%4)=2

となります。

計算自体は間違ってないと思いますよ。
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

skcl
記事: 34
登録日時: 7年前

Re: 構造体(structure)のプログラムについて。

#24

投稿記事 by skcl » 7年前

これでもう終わりでいいのですかね?

アバター
purin52002
記事: 235
登録日時: 7年前
連絡を取る:

Re: 構造体(structure)のプログラムについて。

#25

投稿記事 by purin52002 » 7年前

skclさんの疑問が晴れたのならもういいのではないでしょうかね?
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

skcl
記事: 34
登録日時: 7年前

Re: 構造体(structure)のプログラムについて。

#26

投稿記事 by skcl » 7年前

でも少しプログラムができて良かったです。またお願いします。

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

Re: 構造体(structure)のプログラムについて。

#27

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

skcl さんが書きました:商は確か、割り切れないと0になると思ったので
もしも割り切れないだけで0になったら、使い物にならないでしょう。
整数の割り算では小数点以下が切り捨てられるだけで、割り切れなくても0になるとは限りません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

skcl
記事: 34
登録日時: 7年前

Re: 構造体(structure)のプログラムについて。

#28

投稿記事 by skcl » 7年前

そうなんでしたよね。間違った解釈をしてました。

閉鎖

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