ページ 1 / 1
お願いします
Posted: 2011年2月03日(木) 14:16
by りょう
C言語が全くわかりません。どうか教えてくださいませんか?早めがいいです;;
構造体では、代入は可能であるが、等価演算子(==と!=)による比較を直接行うことができないので、メンバ単位で等しいか否かを判断する必要がある。いま、複素数を表す構造体型complexを定義し、以下に示すような、メンバreとimが共に等しければ1(int型)を、そうでなければ0(int型)を返す関数complex_eqを考えた。次の番号を埋めなさい。
typedef struct {double re, im;} ① ;
int complex_eq(complex x, complex y)
{
int flag = 1;
if (x.re ② y.re ③ x.im ② y.im)
flag = ④ ;
return (⑤);
}
Re: お願いします
Posted: 2011年2月03日(木) 14:32
by softya(ソフト屋)
同じ方だと思いますが違いますか?
http://dixq.net/forum/viewtopic.php?f=3&t=7760
名前を変えて投稿することやマルチポストは掲示板の規約に違反しています。
フォーラムルールを御覧ください。
Re: お願いします
Posted: 2011年2月03日(木) 22:13
by Dixq (管理人)
> りょうさん
こんにちは。
この時期いろんな宿題に追われて大変だと思いますが、あせらずに少しずつ解いてみましょう。
難しいと思ってしまう問題も、少しずつ分解して解けば案外簡単になるものですよ。
とりあえずりょうさんの現在の理解はどの程度でしょうか?
関数の作り方、構造体のメンバの参照の仕方、条件式、返り値、引数・・このあたりの理解は大丈夫でしょうか?
もし「aとbを引数にとり、aとbが同じなら0を、異なるなら1を返す関数を作りなさい」という問題があったらとけますか?
解らなければ問題を簡単にして少しずつ解いてみましょう。
解らないことがあれば聞いて下さい。
Re: お願いします
Posted: 2011年2月03日(木) 22:20
by softya(ソフト屋)
こちらの件なんですがテスト中に回答を求めていたみたいです。
http://dixq.net/forum/viewtopic.php?f=3&t=7761
全て同じ大学からのアクセスでした。
Re: お願いします
Posted: 2011年2月04日(金) 20:11
by さかまき
実際問題ではこのルーチンは使えないと思いますがどうでしょう?
イコールになる事は、ほとんど起こり得ないと思いますよ。
もし、この比較でOKなら、
>メンバ単位で等しいか否かを判断する必要がある。
全然必要なくて、単に構造体変数をmemcmpで比較するだけでよい事です。
課題としてはあまり良問とは思えません。
Re: お願いします
Posted: 2011年2月04日(金) 21:40
by へろりくしょん
memcmp() だと、パティングされたゴミデータを正しく比較出来ないのでは?
Re: お願いします
Posted: 2011年2月05日(土) 18:49
by h2so5
へろり さんが書きました:memcmp() だと、パティングされたゴミデータを正しく比較出来ないのでは?
確かにパディングがある構造体だと正しく比較できないようです。
http://ideone.com/ApANe
Re: お願いします
Posted: 2011年2月07日(月) 08:59
by さかまき
構造体変数は、いつもmemsetで全体をクリアして使っているので、そこまで気が回っていませんでした。
今まで無意識で使っていました。ご指摘ありがとうございます。