回答

下線部2のhave madeは完了系じゃなくて使役のhaveです。
だから have made non-smokers happy は
    タバコ吸わない人は幸せになる(幸せにさせられる) と訳します

下線部3のhaveも使役のhaveなので
have frustrated many smokers は
    タバコを吸う人はイライラする(イライラさせられる) と訳します

ま ゆ

ありがとうございます!
使役動詞は have+目的語+動詞の原形 ではないのですか?

この回答にコメントする

frustrateは、状態動詞だからです。
動作動詞の時はhave been -ing
状態動詞の時はhave done
です。

ま ゆ

ありがとうございます!
なぜ状態動詞を使うのですか?

Tyra()

状態動詞を使うというか、
likeが動作動詞ではなくて状態動詞
であることとともに
frustrateが動作動詞ではなく状態動詞
なのです。
つまり、have likedという形は作ることは出来ますが、have been likingという形は作ることは出来ません。

この回答にコメントする
疑問は解決しましたか?