• ベストアンサー

プログラミング関係で

プログラミングで次の問題をどうすればいいのかわかりません。 教えてください 1.配列に次のデータが格納されており、 2,-8,5,-4,6,5,7,-3,-9,-1 奇数、偶数、負の数がそれぞれいくつあるかを数え、表示するプログラムを作成してください。 2.任意の整数Xを入力し、Xの階乗の結果を表示するプログラムを作成しなさい。ただし、Xの階乗の計算は別関数で行い、入力と結果の表示はmain関数で行うようにすること。

質問者が選んだベストアンサー

  • ベストアンサー
  • kakuritsu
  • ベストアンサー率23% (62/261)
回答No.2

えーと、どこがわからないんでしょうか? まさか全部回答を書けということではないでしょう? >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)
回答No.7

>どうすればいいのか プログラムを作ってあげても、本人の解く力、作る能力はあまりつかない。 逆効果になる恐れあり。 奇数偶数の求め方はわかるとして、 アルゴリズムがわからないのか、 変数や配列をどう定義したら処理しやすいのかがわからないのか、 階乗、がわからないのか。 この課題の、1つ前のレベルをクリアできてない?。 この課題はできたとしても、次の課題でまた悩み、質問するのではないだろうか。 悩みは残りそうだし、質問者様はそれを明確にすべきでしょう。

noname#137556
noname#137556
回答No.6

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)
回答No.5

なんでわざわざ accumluate なんて使ったんだろ>#3. 常識的に考えたら count_if(a, a+sizeof a/sizeof a[0], [](int val) { return val % 2 == 0; }) のように count_if を使う場面じゃないか.

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.4

作ってみました。 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)
回答No.3

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)
回答No.1

言語は?

関連するQ&A