- ベストアンサー
プログラミング関係で
プログラミングで次の問題をどうすればいいのかわかりません。 教えてください 1.配列に次のデータが格納されており、 2,-8,5,-4,6,5,7,-3,-9,-1 奇数、偶数、負の数がそれぞれいくつあるかを数え、表示するプログラムを作成してください。 2.任意の整数Xを入力し、Xの階乗の結果を表示するプログラムを作成しなさい。ただし、Xの階乗の計算は別関数で行い、入力と結果の表示はmain関数で行うようにすること。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
えーと、どこがわからないんでしょうか? まさか全部回答を書けということではないでしょう? >1.配列に次のデータが格納されており、 >2,-8,5,-4,6,5,7,-3,-9,-1 >奇数、偶数、負の数がそれぞれいくつあるかを数え、表示するプログラムを作成してください。 まず配列を定義して問題文のデータを格納する。 奇数の個数をゼロと定義する 偶数の個数をゼロと定義する 負数の個数をゼロと定義する データの個数をカウントする C言語なら for 分とかを使ってデータを一つづつ取り出す 奇数かどうか判定し奇数なら 奇数のカウントを+1する 偶数かどうか判定し偶数なら 偶数のカウントを+1する 負数かどうか判定し負数なら 負数のカウントを+1する データが終了するまでループする それぞれのカウント値を表示する >2.任意の整数Xを入力し、Xの階乗の結果を表示するプログラムを作成しなさい。ただし、Xの階乗の計算は別関数で行い、入力と結果の表示はmain関数で行うようにすること。 メイン関数 整数Xの入力部分作成 関数を呼び出し(パラメータX)結果を取得する 結果を表示する 関数(引数X) 結果を1と定義する for 文を使いXをループ変数としてループする 結果とループ変数を掛け算して保存する ループ変数が1になるまで繰り返す 結果を戻り値として返却する
その他の回答 (6)
- layy
- ベストアンサー率23% (292/1222)
>どうすればいいのか プログラムを作ってあげても、本人の解く力、作る能力はあまりつかない。 逆効果になる恐れあり。 奇数偶数の求め方はわかるとして、 アルゴリズムがわからないのか、 変数や配列をどう定義したら処理しやすいのかがわからないのか、 階乗、がわからないのか。 この課題の、1つ前のレベルをクリアできてない?。 この課題はできたとしても、次の課題でまた悩み、質問するのではないだろうか。 悩みは残りそうだし、質問者様はそれを明確にすべきでしょう。
2.だけ 再帰処理のサンプルとして。 # 普通はループ使う。 C++ です。 #include <iostream> // 自然数 n の階乗を返す。 // n の階乗が INT_MAX を越える場合の動作は未定義。 int factorial(int n) { return (n > 1) ? n * factorial(n - 1) : 1; } int main() { int n; std::cin >> n; std::cout << factorial(n) << std::endl; }
- Tacosan
- ベストアンサー率23% (3656/15482)
なんでわざわざ accumluate なんて使ったんだろ>#3. 常識的に考えたら count_if(a, a+sizeof a/sizeof a[0], [](int val) { return val % 2 == 0; }) のように count_if を使う場面じゃないか.
- hitomura
- ベストアンサー率48% (325/664)
作ってみました。 1. ---------- -module(count_num). -export([count_num1/0, count_num2/0]). %% 偶数・奇数・負値のカウント(listsモジュール使用版) count_num1() -> Number_List = [2,-8,5,-4,6,5,7,-3,-9,-1], {Even_List, Odd_List} = lists:partition(fun (X) -> X rem 2 == 0 end, Number_List), Negative_List = lists:filter(fun (X) -> X < 0 end, Number_List), io:format("# of even : ~b~n", [length(Even_List)]), io:format("# of odd : ~b~n", [length(Odd_List)]), io:format("# of negative : ~b~n", [length(Negative_List)]). %% 偶数・奇数・負値のカウント(listsモジュール未使用版) count_num2() -> Number_List = [2,-8,5,-4,6,5,7,-3,-9,-1], io:format("# of even : ~b~n", [count(Number_List, fun (X) -> X rem 2 == 0 end)]), io:format("# of odd : ~b~n", [count(Number_List, fun (X) -> X rem 2 /= 0 end)]), io:format("# of negative : ~b~n", [count(Number_List, fun (X) -> X < 0 end)]). %% 個数計算 count(L, F) -> count(L, F, 0). %% 個数計算実装 count([], _F, Count) -> Count; count([H | T], F, Count) -> case F(H) of true -> count(T, F, Count + 1); false -> count(T, F, Count) end. ---------- 2. ---------- -module(fact). -export([main/0]). %% main関数 main() -> Value = input_non_negative_integer(), io:format("~b! = ~b.~n", [Value, fact(Value)]). %% 非負整数値入力 input_non_negative_integer() -> case io:fread('input non-negative integer>', "~d") of {ok, [Value]} when Value > 0 -> Value; _Others -> input_non_negative_integer() end. %% 階乗計算 fact(Value) -> fact(Value, 1). %% 階乗計算実装 %% とりあえずモジュール内で呼ばれるのみなので、負値ガード等は行っていない fact(0, Result) -> Result; fact(Value, Result) -> fact(Value - 1, Result * Value). ---------- インデントは全角スペースで行っているので、コピペ後タブに置換してください。 以下の環境で動作確認済です。 OS : Windows Vista Home Premium SP2 Erlang OTP: R14B01 ……言語指定が無かったのですが、その他(プログラミング)カテゴリへの質問ですのでErlang(参考URL参照)だと推察しました。想定の言語と違っていたならお詫びいたします。
- 参考URL:
- http://www.erlang.org/
- Tacosan
- ベストアンサー率23% (3656/15482)
1 の奇数だけ: #include <iostream> #include <numeric> int main() { const int a[] = { 2, -8, 5, -4, 6, 5, 7, -3, -9, 1 }; std::cout << std::accumulate(a, a+sizeof a/sizeof a[0], 0, [](int acc, int val) { return acc + (val % 2 ? 1 : 0); }) << std::endl; }
- Yupa3
- ベストアンサー率37% (190/513)
言語は?