09/01/12 11:24:14
早急のお返事ありがとうございます。
>>702
long huga(int n, int maximum){
int i;
long ret=0;
for(i=min(n, maximum);i>0;i--){
if(n-i>0) ret+=huga(n-i, min(i, maximum));
else ret++;
}
return ret;
}
の処理は何を表しているのでしょうか?
後アルゴリズムがいまいちプログラムから読み取ることができないので簡単に説明していただけると助かるのですが・・・
自分で考えても思いつかなくて。
722:デフォルトの名無しさん
09/01/12 11:27:42
>>719
入力が7桁以下の場合でもOKなら
#include <stdio.h>
int main()
{
int gakuban;
printf("学籍番号??? ");
scanf("%d",&gakuban);
if(0 < gakuban && gakuban < 10000000) {
printf("e-mailアドレス: g%07d@~~~~~~\n",gakuban);
} else {
printf("学籍番号は7桁の数字で入力して下さい\n");
}
return 0;
}
723:デフォルトの名無しさん
09/01/12 11:32:28
>>682
#include <stdio.h>
#include <ctype.h>
#define BUFFSIZE 16
#define N 7
int main(void)
{
char buff[BUFFSIZE];
int i;
printf("学籍番号??? "); fgets(buff, BUFFSIZE, stdin);
for (i = 0; buff[i] != '\0'; ++i) if (!isdigit(buff[i])) break;
if (i != N) {
printf("学籍番号は7桁の数字で入力してください\n");
return 1;
}
buff[N] = '\0';
printf("e-mailアドレス: g%s@~~~~~~~~\n", buff);
return 0;
}
724:デフォルトの名無しさん
09/01/12 11:34:16
どなたか>>666をお願いできませんでしょうか
725:デフォルトの名無しさん
09/01/12 11:54:35
>>721
二つ目以降の数字についてはすでに使用した数字以下の数字を使うことで
順列を並べ替えたものを除外しています。そのために引数 maximum を使ってます
例) n=4 のとき
4 採用
3 1 採用
1 3 除外
2 2 採用
2 1 1 採用
1 2 1 除外
1 1 2 除外
1 1 1 1 採用
今、huga という関数が自然数 n および maximum を満たす
すべての組み合わせの数を数え上げることができると*仮定*します
ある数 i (1≦i≦n かつ i≦maximum) を使用すると決定したときの
組み合わせ数は huga(n-i, min(i, maximum)) で求まります(仮定より)
n=4 の時
4 0 → 1通り (これが else ret++;)
3 1 → huga(1, 1) 通り
2 2 → huga(2, 2) 通り
1 3 → huga(3, 1) 通り
ということで n=4 の時の総組み合わせ数は
1 + huga(1, 1) + huga(2, 2) + huga(3, 1)
になります
仮定を証明するのは自分でどうぞ
726:デフォルトの名無しさん
09/01/12 14:05:36
>>666
問1
URLリンク(kansai2channeler.hp.infoseek.co.jp)
727:585 ◆i9Dvbn/Lf6
09/01/12 14:25:48
お願いします。
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
二重振り子を微小振動させるとして、厳密な数値解及び解析的な近似解を初期振れ角Θを機動時に指定して、
アニメーション表示させるプログラムを表示しなさい。
グラフィックはgnuplotでもEGGXでもどちらでもよい。
教材の一部を貼っておきます。
URLリンク(up2.viploader.net)
URLリンク(up2.viploader.net)
URLリンク(up2.viploader.net)
zipで専用ロダにもあげておきます
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: ([2009年1月22日まで]
さっぱりわからないので少しだけでもお願いします
728:デフォルトの名無しさん
09/01/12 14:27:11
>>666
問1
出遅れたけど、せっかく作ったから
URLリンク(kansai2channeler.hp.infoseek.co.jp)
問2は実行結果の何がどう間違っているかを教えてくれると解が早いんだけど。
729:デフォルトの名無しさん
09/01/12 14:40:41
>>726>>728
助かりました本当にありがとうございます。
>>728
失礼しました
実行結果が
総文字数:296
単語数:83
行数:16
となるのが正しいのですが、
自分が作ったものでは
総文字数 :315
単語数 :87
行数 :20
と、異なった結果が出てしまいます。
730:デフォルトの名無しさん
09/01/12 14:56:03
>>729
>>666 を見る限り、「文章の終端」 == 「空行が2つ連続」としているから、
char word[][50] の最後にもう一つ空行を入れてやればそのコードで正しく動く。
731:デフォルトの名無しさん
09/01/12 15:13:49
>>730
分かりました、ありがとうございます。
助かりました
732:デフォルトの名無しさん
09/01/12 15:25:47
初めまして、今Cを勉強してて。
問題文というか、ポインタと構造体が理解できなくて苦しんでいます。
URLリンク(codepad.org)
このようなプログラムを組んだのですが。
mainでのAA[0]、AA[1]の値が、関数に行くとmainのAA[0]がAA[1]に入ってしまいます。
全く原因が分からず苦戦してます。
もしよろしければご教授願います。
やりたいこととしては32bit×32bit=64bitの桁あふれを解消するということです。
733:デフォルトの名無しさん
09/01/12 15:27:06
>>732
スレ違い
帰れ
734:デフォルトの名無しさん
09/01/12 15:32:17
>>733さん
一応課題なのでこのスレに来たのですが・・・
期限は明日です・・・
735:デフォルトの名無しさん
09/01/12 15:36:20
>>732
ああもうマルチうざい
これやるから帰れ
URLリンク(codepad.org)
736:デフォルトの名無しさん
09/01/12 15:39:18
>>734
死ね。
737:デフォルトの名無しさん
09/01/12 15:39:59
>>735さん
有難うございます。
すぐに出来るってすごいですね・・・
多倍長やるのに構造体って必要ないんですか?
738:デフォルトの名無しさん
09/01/12 15:43:24
>>736
やっ、やめて下さい、殺さないで下さい、通報しますよ?
739:デフォルトの名無しさん
09/01/12 15:54:39
>>722
ありがとうございます
やはり配列使うしかないのでしょうか・・・
>>723
できるのですが、残念ながらbuffや、stdin,breakは習ってないのです。ごめんなさい。
740:デフォルトの名無しさん
09/01/12 16:19:09
>>1
>・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
741:デフォルトの名無しさん
09/01/12 16:22:30
>>739
>>722でダメなのか?