(管理人により記事が編集されました(編集した部分は灰色部分です))
(名無しのごんべいさんへ、質問の仕方が利用規約に沿っていないようです。例を書きましたので○○の部分を埋めるように編集し直してみてください。)
例:
皆さんこんにちは。私は今大学でプログラムを勉強しています。
以下のような課題が出たのですが、全く解らず困っているのでわからない所を教えて頂けると幸いです。
プログラム歴は○○で、使っているOSは○○、コンパイラは○○です。
問題1:
整数 n を入力とし,n 以下の整数のうち,2 の倍数でも 3 の倍数でもないものの和を出力する関数 int sum_n_23(int n) を作成せよ.次に main 関数内で整数 2 個をキーボードから入力させ,int 型変数 a, b にそれぞれ代入せよ.最後に,関数 int sum_n_23(int n) を用いて a 以上 b 未満の数のうち,2の倍数でも3の倍数でもないものの和を求めて出力させるプログラムを完成させよ.
補足1:
この問題については○○まで学校で勉強していて、自分としては○○まで理解しています。
しかし○○が解らないので、どうすれば解決出来るか教えてください。
問題2:
2つの int 型変数へのポインタを受け取り, 2 つの変数の値のうち小さい方を 1 番目のポインタの指す変数に, 大きい方を 2 番目のポインタの指す変数にセットする関数 void sort2(int*, int*) を作成せよ. 下のプログラムで動作を確認せよ.
#include <stdio.h>
void sort2(int *a, int *b)
{
}
int main(void)
{
int a, b;
printf("a = ");
scanf("%d", &a);
printf("b = ");
scanf("%d", &b);
printf("a=%d, b=%d → ", a, b);
sort2(&a,&b);
printf("a=%d, b=%d\n", a, b);
return 0;
}
補足2:
この問題については○○まで学校で勉強していて、自分としては○○まで理解しています。
しかし○○が解らないので、どうすれば解決出来るか教えてください。(以下略)
問題3:
2つの自然数 a, b に対し, a と b の最大公約数を求める関数 int gcd(int a, int b) を作成せよ.
2つの自然数 a, b に対し, その公約数をすべて表示する関数 void print_cd(int , int) を作成せよ.
※ 「a と b の公約数」は「a と b の最大公約数の約数」なので, gcd(a,b) を呼び出して 2 数の最大公約数 g を求めてその全約数を表示すればよい. i = 2, 3, …, g について i が g を割り切るかどうかテストし, 割り切ればそれを表示するようにする.
main から gcd と print_cd を呼び出し, キーボードから入力した自然数 a, b に対して, 最大公約数とすべての公約数とを表示するようにせよ (表示形式は任意).
問題4:
double 型の外部変数 dollar (1ドルが何円かを表す) と euro (1ユーロが何円かを表す) を宣言せよ.
円の金額を受け取り, それをドルに両替したとき何ドルになるかを返す関数 double yen2dollar(double) を作成せよ. ただし, 円をドルに両替するときのレートは, dollar+1.0 とする. (例えば, 1ドル110円のとき, 円をドルに両替すると1ドル111円で計算される.)
円の金額を受け取り, それをユーロに両替したとき何ユーロになるかを返す関数 double yen2euro(double) を作成せよ. ただし, 円をユーロに両替するときのレートは, euro+1.0 とする.
ドルの金額を受け取り, それを円に両替したとき何円になるかを返す関数 double dollar2yen(double) を作成せよ. ただし, ドルを円に両替するときのレートは, dollar-1.0 とする.
ユーロの金額を受け取り, それを円に両替したとき何円になるかを返す関数 double euro2yen(double) を作成せよ. ただし, ユーロを円に両替するときのレートは, euro-1.0 とする.
今日のドルのレート (dl) とユーロのレート (er) を受け取り, 次のように両替の金額の例を表示する関数 void kawase_example(double dl, double er) を作成せよ.
dollar に dl を, euro に er を代入する.
"今日のレートは 1 ドル xxx.xx 円, 1 ユーロ xxx.xx 円です." と表示する.
10,000円をドルに両替するといくらになるかを yen2dollar を用いて計算し, "10000 円をドルに両替すると xxx.xx ドルになります." 等と表示する.
同様に 10,000円をユーロに両替した結果を表示する.
100 ドルを円に両替した結果を表示する.
100 ユーロを円に両替した結果を表示する.
100 ユーロを円に両替し, それをドルに両替した結果を表示する.
同様に, 100 ドルを円を経由してユーロに両替した結果を表示する.
main 関数から
kawase_example(112.0, 135.0);
kawase_example(114.5, 139.5);
を呼び出すようにせよ
問題5:
2 次元座標上に k 個(k>0)の点 p0,...,pk-1 が与えられているものとする.キーボードから新しい点のデータ data が入力されたとき, p0,...,pk-1 の中で data との距離がもっとも近いものを求め,その点の識別番号(p0,...,pk-1)とそのときの距離を表示するプログラムを作成せよ.ただし,data からの距離が等しい点が複数ある場合はその中のいずれか一つの識別番号が求められればよいものとする.
問題6:
整数 a, b を入力とし,その最大公約数を計算して出力する関数 int gcd( int a, int b) を [リスト5.17]を参考にして定義せよ.これを利用して,main 関数内で互いに素な(最大公約数が1である)自然数の組 (x, y)を列挙して表示させるプログラムを作成せよ.ただし,x は10以上17未満の整数, y は30以上36以下の整数とする.
問題7:
文字列 s 中の数字の個数を返す関数 int str_num_count(char s[/url]) を作成せよ
問題8:
下のように初期化した文字列 sentence と, キーボードから入力した文字列 str に対し, sentence が str で始まっているかどうか (str が sentence の先頭から一致するかどうか) を判定して表示するプログラムを作成せよ. sentence の方が str より長いと仮定してよい.
char sentence[/url] = "This is a pen. That is an apple.";
次のプログラミングのやり方を教えてください
Re:次のプログラミングのやり方を教えてください
たくさん質問するのは結構ですが、せめて開発環境とか開発言語とか、自分がC言語のことをどの程度理解しえいるかとか、答えだけが欲しいのかとか、自分で解く気があるのかとか、もう少し情報を提示してください。
Re:次のプログラミングのやり方を教えてください
> n 以下の整数のうち,2 の倍数でも 3 の倍数でもないものの和
常にマイナス無限大になると思いますが、intでは表現できませんね。
この辺りはどうお考えですか?
> キーボードから入力させ
キーボードからの入力を受け付ける一般的な実現方法はありません。
また、キーボードが存在するかどうかもプラットフォームしだいです。
> 関数 int sum_n_23(int n) を用いて a 以上 b 未満の数のうち,2の倍数でも3の倍数でもないものの和を求めて
sum_n_23の仕様しだいですが、数学的にはマイナス無限大からマイナス無限大を引いても意味が無いことを指摘しておきます。
常にマイナス無限大になると思いますが、intでは表現できませんね。
この辺りはどうお考えですか?
> キーボードから入力させ
キーボードからの入力を受け付ける一般的な実現方法はありません。
また、キーボードが存在するかどうかもプラットフォームしだいです。
> 関数 int sum_n_23(int n) を用いて a 以上 b 未満の数のうち,2の倍数でも3の倍数でもないものの和を求めて
sum_n_23の仕様しだいですが、数学的にはマイナス無限大からマイナス無限大を引いても意味が無いことを指摘しておきます。
Re:次のプログラミングのやり方を教えてください
問題2についてのお二方の回答。
こちらにまとめさせて頂きました。
Name: バグ ..ハッカー(174,758ポイント) Date: 2009/12/02(水) 15:11 No:43039
2つの int 型変数へのポインタを受け取り, 2 つの変数の値のうち小さい方を 1 番目のポインタの指す変数に, 大きい方を 2 番目のポインタの指す変数にセットする関数 void sort2(int*, int*) を作成して、コンパイルして実行すれば確認できますよ。
Name: non ..比類無きプログラマー(73,618ポイント) Date: 2009/12/02(水) 16:18 No:43045
ほとんどのテキストにポインタを使った参照渡しの例がswapという関数であると
思いますので、それを参考に作ってください。
例えば
http://www1.cts.ne.jp/~clab/hsample/Point/Point12.html
こちらにまとめさせて頂きました。
Name: バグ ..ハッカー(174,758ポイント) Date: 2009/12/02(水) 15:11 No:43039
2つの int 型変数へのポインタを受け取り, 2 つの変数の値のうち小さい方を 1 番目のポインタの指す変数に, 大きい方を 2 番目のポインタの指す変数にセットする関数 void sort2(int*, int*) を作成して、コンパイルして実行すれば確認できますよ。
Name: non ..比類無きプログラマー(73,618ポイント) Date: 2009/12/02(水) 16:18 No:43045
ほとんどのテキストにポインタを使った参照渡しの例がswapという関数であると
思いますので、それを参考に作ってください。
例えば
http://www1.cts.ne.jp/~clab/hsample/Point/Point12.html
Re:次のプログラミングのやり方を教えてください
もう一問あったようなので追加します。
問題9
int t, int h を入力とし, t2*h/3 を計算して出力する関数 double pyramid(int t, int h)を定義せよ. さらに,main から pyramid を呼び出して,その出力(戻り値)を適当な double 型の変数に代入せよ.最後に,5≤i≤10 の整数 i についてi2*(i+2)/3 を計算し, 結果を下記のような形式 (小数点以下 3 桁) で表示するプログラムを作成せよ.
i pyramid
5 58.333
6 96.000
7 147.000
8 213.333
9 297.000
10 400.000
問題9
int t, int h を入力とし, t2*h/3 を計算して出力する関数 double pyramid(int t, int h)を定義せよ. さらに,main から pyramid を呼び出して,その出力(戻り値)を適当な double 型の変数に代入せよ.最後に,5≤i≤10 の整数 i についてi2*(i+2)/3 を計算し, 結果を下記のような形式 (小数点以下 3 桁) で表示するプログラムを作成せよ.
i pyramid
5 58.333
6 96.000
7 147.000
8 213.333
9 297.000
10 400.000
Re:次のプログラミングのやり方を教えてください
さてさて・・、量が多くてどこから回答してよいものやら^^;
利用規約を読んで頂けたらわかると思いますが、課題だけ書いて、誰かやって頂戴っていうのは規約違反になります。
規約どうのこうのよりも自分の為にならないですし、回答者もどう回答してよいか解らず困るので、
質問はなるべく規約に沿った形でお願いしますね。
規約なんて読みたくないかもしれませんが、めんどうなら、画像の部分だけささっと読んでもらえたらと思います^^
まず、いきなり問題を解いてもよく解らないと思うので、
こちらから少し質問させて下さい。
今現在どの程度理解されていますか?
例えば私が
問題A
キーボード入力から文字列を受け取り、その文字数をカウントして表示するプログラムを作りましょう
って問題出したら、解けますか?
それが出来たらいくつか出来そうです。
利用規約を読んで頂けたらわかると思いますが、課題だけ書いて、誰かやって頂戴っていうのは規約違反になります。
規約どうのこうのよりも自分の為にならないですし、回答者もどう回答してよいか解らず困るので、
質問はなるべく規約に沿った形でお願いしますね。
規約なんて読みたくないかもしれませんが、めんどうなら、画像の部分だけささっと読んでもらえたらと思います^^
まず、いきなり問題を解いてもよく解らないと思うので、
こちらから少し質問させて下さい。
今現在どの程度理解されていますか?
例えば私が
問題A
キーボード入力から文字列を受け取り、その文字数をカウントして表示するプログラムを作りましょう
って問題出したら、解けますか?
それが出来たらいくつか出来そうです。