[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 09/20 09:59 / Filesize : 235 KB / Number-of Response : 742
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++の宿題を片付けます 121代目



1 名前:デフォルトの名無しさん [2008/12/31(水) 08:02:03 BE:378684285-PLT(43140)]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

前スレ
C/C++の宿題を片付けます 120代目
pc11.2ch.net/test/read.cgi/tech/1229424329/

641 名前:デフォルトの名無しさん [2009/01/11(日) 10:49:58 ]
>>632
あれはどうも自然数全体じゃなくて、要は小数点と分数以外の数える数を使ってって意味みたいですよ。
例えば
n=3なら
5,16,3
てな感じで。
だから、分数と小数以外で、かつ変な文字を使わない普通の数値を入れてってことみたいです。
だから変に考えないで、普通の整数だけ使えばいいかと


642 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 11:00:11 ]
>>641
プログラムを書くには、扱う数の範囲は重要だよ

643 名前:デフォルトの名無しさん [2009/01/11(日) 11:38:22 ]
#include <stdio.h>
int main(void)
{
int i, amari;
for (i = 100; i >= 1; i--){
amari = 100 % i;
if( amari == 0)
printf("100 は %d で割り切れる\n", i);
i--;
}
return 0;
}

これだと100は1で割り切れるとでないのですが
なぜですか?

644 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 11:40:03 ]
>>643
i-- が二箇所にあるから

645 名前:デフォルトの名無しさん [2009/01/11(日) 11:40:58 ]
>>644
あっ
さんきゅ

646 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 12:10:25 ]
>>642
範囲って言うと
異なる正の数とかそういう表現ならなんとかなったってことですか?

647 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 12:12:22 ]
>>646
最大値、最小値の問題じゃないかな?
総和が long の範囲内で収まるかどうか

648 名前:デフォルトの名無しさん [2009/01/11(日) 12:36:40 ]
[2]
逆ポーランド記法で(正しく)書かれた式が入力として与えられた時、その式を評価した値を出力する、実際に動作するプログラムをC言語で作成せよ。
そのうえで、この問題を解くためのアルゴリズムの説明も書け。
[3]
 [3.1] Windows
 [3.3] C
[4] 1月13日正午

※データ構造として必ずスタックを使って実現させてください

よろしくお願いします。

649 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 12:40:53 ]
>>647
そういわれると、確に1〜∞じゃ普通にきついですよね…


周りは適当に、一年の時に習う配列の問題みたいに好きな数をポンポン入れて出来たーなんて言ってたから、そんな感じに出来ると思ってたけど、こんなに難しかったのか……orz



650 名前:学生 [2009/01/11(日) 12:59:18 ]
1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク): 単語を入力するとその単語にeがいくつ含まれているか数えてくれるプログラム。
               また、単語の中に含まれるeを抜かしたものも表示せよ。
               実行例
               単語を入力せよ:december
                単語にeが3こ含まれます。
               単語のeを抜かすとd c mb r
[3] 環境
 [3.1] OS: Windows xp
 [3.2] VC 6.0
 [3.3] #include<stdio.h>
    main()
    {
ではじめてください。


[4] 期限: 急ぎです。できれば今日の20時くらいまで
[5] その他の制限:while if for char int double sum * - + / ++ %= sqrt pow
         != && switch case などを習いました。

よろしくお願いします。


651 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 13:01:27 ]
おいwwww

652 名前:デフォルトの名無しさん [2009/01/11(日) 13:02:46 ]
#include <stdio.h>
int main(void)
{
char str1[100], str2[100];
int i = 0;
printf("文字列入力 ");
scanf("%s", str1);
do {
str2[i] = str1[i];
} while(str1[i++] != '\0');
printf("str2 = %s", str2);
return 0;
}

このプログラムのwhileの条件式って
どうゆう意味の判定ですか?

653 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 13:04:58 ]
>>652
文字列の終わりまでループする

654 名前:デフォルトの名無しさん [2009/01/11(日) 13:08:01 ]
鏡を見るとさ、ちょ〜〜〜イケメソな面が映るわけよ。
これ、誰なんだろうなぁ〜って長年、思っていたけど、よく考えたらそれ、
俺じゃ〜〜ん。道理で、女性からチラチラ見られたわけだ。
よく注目されて、あれ?俺なんか変なことしたかな?って思っていたけど、
なんだ、見とれていたのかw

655 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 13:23:18 ]
>>650
表示の仕方は何も習ってないわけか
無理だな

656 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 13:24:07 ]
入力もできないじゃないか

657 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 13:25:38 ]
入力といっても、別にキーボードを打って文字を記入する以外に、
プログラムは何かデータを受け付ける手段はあるわけで。屁理屈すまそw

658 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 13:26:21 ]
sumなんて予約語か関数あったっけ

659 名前:585 ◆i9Dvbn/Lf6 mailto:sage [2009/01/11(日) 13:29:24 ]
お願いします。

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
二重振り子を微小振動させるとして、厳密な数値解及び解析的な近似解を初期振れ角Θを機動時に指定して、
アニメーション表示させるプログラムを表示しなさい。
グラフィックはgnuplotでもEGGXでもどちらでもよい。
教材の一部を貼っておきます。
up2.viploader.net/pic3/src/vl2_093082.png
up2.viploader.net/pic3/src/vl2_092922.png
up2.viploader.net/pic3/src/vl2_092923.png
zipで専用ロダにもあげておきます
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8603.zip
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2009年1月22日まで]

>>628
>シンプレックス積分でも使うのか?
よくわかりません…
>速攻で落ちるvipロダを選ぶ理由も全く分からん
他に長持ちするロダを知らないので



660 名前:A mailto:sage [2009/01/11(日) 13:30:23 ]
>>650
#include<stdio.h>
main()
// int main(int argc, char* argv[])
{
  int loop, count;
  char ch;
  char input[256], output[256];

  printf("単語を入力せよ :");
  scanf("%s", input);
//  strcpy(output, input);
  count=0;
  for(loop=0; ;loop++) {
    ch = input[loop];
    output[loop] = ch;
    if (ch == NULL) {
      break;
    }
    if (ch == 'e') {
      output[loop] = ' ';
      count++;
    }
  }
  printf("単語のeを抜かすと:%s\n", output);
  printf("単語にeが%d個含まれます。\n", count);
  return 0;
}

661 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 13:32:43 ]
>>657
>>636によると習ってないものは使っちゃいけないらしい。
さすがに>>650に挙げられているものだけでデータ入出力は無理じゃね?

#include <stdio.h>
main()
{
char s[128];
int i, c = 0;
printf("単語を入力せよ:"); scnaf("%s, s);
for (i = 0; s[i] != '\0'; i++) if (s[i] == 'e') { s[i] = ' '; c++; }
printf("単語にeが%dこ含まれます。\n", c);
printf("単語のeを抜かすと%s\n", s);
return0;
}



662 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 13:36:50 ]
>>661
つ コピペ
つ リダイレクト
つ 内部でファイルなどを指定する
まぁ、それらも習っていなければそれまでだがw

663 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 13:39:36 ]
>>662
コピペとかリダイレクトとか関係なくね?

664 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 13:41:29 ]
>>662
それにしても>>650を見る限りでは使っていい関数はsqrt()とpow()だけっぽいんだが・・・w

>>661がgdgdだったので直した
#include <stdio.h>
main()
{
char s[128];
int i, c = 0;
printf("単語を入力せよ:"); scanf("%s", s);
for (i = 0; s[i] != '\0'; i++) if (s[i] == 'e') { s[i] = ' '; c++; }
printf("単語にeが%dこ含まれます。\n", c);
printf("単語のeを抜かすと%s\n", s);
return 0;
}


665 名前:565 mailto:sage [2009/01/11(日) 13:44:47 ]
>>575
ありがとうございます
いろいろ書き方が悪くて申し訳ないです

666 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 15:16:01 ]
[1] 授業単元:C
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8605.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[5] その他の制限
 [5.1]配列を使う

どなたかよろしくお願いします

667 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 15:29:57 ]
[1] 授業単元: プログラミング言語V
[2] 問題文(含コード&リンク):

次のプログラムで本来入れるべき処理は何か。指摘せよ。

char *pstr;

pstr = malloc(100);
sprintf(pstr,"123");
pstr=malloc(10);
sprintf(pstr,"456");
free(pstr);

[3] 環境
 [3.1] OS: Windows xp
 [3.3] 言語: C
[4] 期限: 1月15日

よろしくお願いいたします。

668 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:00:57 ]
>>667
char *pstr;

pstr = malloc(100);
sprintf(pstr,"123");
free(pstr);          /*ここにfree()*/
pstr=malloc(10);
sprintf(pstr,"456");
free(pstr);

669 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:10:03 ]
>>667
ひでえ問題だ。



670 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:11:08 ]
>>667
char *pstr;

goto skip_label
pstr = malloc(100);
sprintf(pstr,"123");
pstr=malloc(10);
sprintf(pstr,"456");
free(pstr);
skip_label:

671 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:11:41 ]
セミコロン忘れたorz

672 名前:667 mailto:sage [2009/01/11(日) 16:14:48 ]
どうもありがとうございます。

673 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:16:45 ]
>>667
pstrを使う何らかの処理だろJK

674 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:17:36 ]
[1] プログラミング言語 c
[2]
Q1
現在の地域時間から15時間後の日時を表示するプログラムを作成せよ。
表示形式は時間が表示されれば自由とします。


Q2
以下の問いに○×で答えよ。
1.複数のソースファイルによりプログラムを作成するとき、機能や目的ごとに
ソースファイルを分割すると、長いソースと短いソースファイルができてしまうので
均等になるように作成したほうがよい。

2.プログラムを機能分割して考えるときコンピュータの話なので、プログラミングに
都合のいいように機能を考え、ユーザの業務内容を無視してもよい。

[3] 環境
 [3.1] OS: Windows xp
 [3.3] 言語: C
[4] 期限: 1月17日

よろしくお願いいたします。

675 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:19:26 ]
>>674
Q2
1.×
2.○ ベストプラクティスとか言っとけば、ありがたがる。

676 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:24:20 ]
>>674
Q1
#include<stdio.h>
#include<time.h>

int main(void){
time_t t;

t=time(NULL)+15*60*60;
puts(asctime(localtime(&t)));

return 0;
}

677 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:59:16 ]
>>674
#include <stdio.h>
#include <time.h>
int main(void) {
time_t t;
t=time(0);
t+=15*3600;
printf("%s",ctime(&t));
return 0;
}


678 名前:学生 [2009/01/11(日) 18:52:26 ]
たくさんの方々

色々とすいませんでした。
どうもありがとうございました。

679 名前:デフォルトの名無しさん [2009/01/11(日) 19:16:24 ]
#include <stdio.h>
int main(void)
{
double data1 = 100.0, data2;
int i = 1;
while (i <= 10){
printf("実数値を入力 ");
scanf("%f", &data2);
if (data2 == 0.0)
continue;
data1 = data1 / data2;
printf("data1 = %f\n", data1);
if ( data1 < 1.0)
break;
else
i++;
}
return 0;
}

間違ってるとこ教えてください。



680 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 19:24:15 ]
scanf("%f", &data2);

scanf("%lf", &data2);

681 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 19:26:06 ]
>>680
あざす。

682 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 21:30:56 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8606.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC2005EE
 [3.3] 言語:C++
[4] 期限:09/01/15迄
[5] その他の制限:配列を使ってやる方法もある、と先生が言っていたので、intを使ったときと、配列を使ったときの2通りのものを知りたいです。
よろしくお願いします。

683 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:07:31 ]
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク):
・関数mainから配列のアドレスを受け取ってその中の最大値を返す関数maxを作成せよ.

#include <stdio.h>
int max(int a[ ]);
int main(void)
{
int x[ ] = {3,1,2,5,4};
printf("最大値は%d\n",max(x));
return 0;
}
int max(

int max(の後をお願いします。

実行例
最大値は5

[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2009年1月12日(月)まで
[5] その他の制限: 値渡し、参照渡しは習いました。
宜しくお願いします。

684 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:16:11 ]
配列の大きさはどうすんの?

685 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:19:09 ]
> int max(int a[ ]);
ちょっwwwwwwwwおまっwwwwwwwww

686 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:20:53 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8608.txt
3] 環境 
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: visualc++2005
 [3.3] 言語:C
[4] 期限:2009年1月12日AM7時
[5] その他の制限:できるだけ簡単な関数でお願いします


687 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:37:01 ]
>>686
もとからバグってるとかないだろ。
原文でよこせ

688 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:40:23 ]
>>686
do{
printf("入力して下さい\n");
scanf("%d",&n);
}while(n<0);

689 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:42:46 ]
>>688
こんなじゃね?
#include<stdio.h>
int main(){
int n;
int flag=2;

do{
printf("入力して下さい\n");
scanf("%d",&n);
if(n<0){
flag--;
}else{
printf("%d\n",2*n);
flag=2;
}
}while(flag);
printf("終了します\n");
return 0;
}




690 名前:585 ◆i9Dvbn/Lf6 mailto:sage [2009/01/12(月) 00:23:57 ]
お願いします。

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
二重振り子を微小振動させるとして、厳密な数値解及び解析的な近似解を初期振れ角Θを機動時に指定して、
アニメーション表示させるプログラムを表示しなさい。
グラフィックはgnuplotでもEGGXでもどちらでもよい。
教材の一部を貼っておきます。
up2.viploader.net/pic3/src/vl2_093082.png
up2.viploader.net/pic3/src/vl2_092922.png
up2.viploader.net/pic3/src/vl2_092923.png
zipで専用ロダにもあげておきます
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8603.zip
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2009年1月22日まで]

691 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 00:30:43 ]
>>690
数式みると拒否反応が出る
現役の時でも怪しかったというのに今となってはどうにもならんw

692 名前:674 mailto:sage [2009/01/12(月) 00:41:03 ]
>>675>>676>>677

ありがとうございます。

693 名前:675 mailto:sage [2009/01/12(月) 00:44:18 ]
>>692
待て!

694 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 00:51:01 ]
>>693
自分でまいた種だw

695 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 00:53:07 ]
>>690
ぶっちゃけ式も読めない。
3枚目の1も2も付いてないΦは何の角度?

696 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 00:59:31 ]
>>695
二枚目の式に対して三枚目の近似を適用した結果だから…
どうなるんだろう
紙に書かないとわからんw

697 名前:sage [2009/01/12(月) 00:59:35 ]
[1] 授業単元: c言語
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8610.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C言語
[4] 期限: 2009年 1月 13日
[5] その他の制限:できるだけ単純なプログラムにてお願いいたします。

後できればアルゴリズムを簡単でよければプログラムの下の方に書いていただけると助かります。
まる投げとはいっても一応自分で理解できなければ意味がないと思うので。

是非よろしくお願いいたします。


kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8610.txt

698 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 01:01:56 ]
>>686
2回連続で負の数が入力されたら終了ってことでいいんだよな?

#include <stdio.h>

int main(void)
{
int n;
int flag = 0;

do {
printf("入力してください\n");
scanf("%d", &n);
if (n < 0) flag++; else { flag = 0; printf("%d\n", 2 * n); }
} while (flag != 2);
printf("終了します\n");

return 0;
}

699 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 01:02:02 ]
ほんとに3枚目の式合ってるんかな。
もしくは情報不足か



700 名前:585 ◆i9Dvbn/Lf6 mailto:sage [2009/01/12(月) 01:16:14 ]
とにかくさっぱりわからないので、少しでもお願いします
これで最後なんです

701 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 01:33:22 ]
[1] 授業単元: c言語
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8611.txt
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン:visualc++2005
 [3.3] 言語: C言語
[4] 期限: 2009年 1月12日 12:00まで
[5] その他の制限:特になし

よろしくお願いします。



702 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 01:47:26 ]
>>697 1問目 枝狩りしてないので n=100 (190569292 通り) くらいが限界。ついでにすぐに計算結果が long を超える
#include<stdio.h>
#include<stdlib.h>

int min(int a, int b){
if(a<b) return a;
return b;
}

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;
}

long hoge(int n){
return huga(n, n);
}

int main(int argc, char *argv[]){
int n=4;

if(argc==2) n=atoi(argv[1]);
printf("払い方は %ld 通り (n=%d)\n", hoge(n), n);

return 0;
}

703 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 02:02:34 ]
>>697 3問目
#include<stdio.h>
#include<stdlib.h>
#define ADJUST(v) (((v)=='1' || (v)=='0')?(v):'X')
int myNOT(int A){
if(A=='1') return '0';
if(A=='0') return '1';
return 'X';
}
int myOR(int A, int B){
if(A=='1' || B=='1') return '1';
if(A=='0' && B=='0') return '0';
return 'X';
}
int myAND(int A, int B){
if(A=='0' || B=='0') return '0';
if(A=='1' && B=='1') return '1';
return 'X';
}
int myRSFF(int S, int R, int Q){
if(S=='0' && R=='0') return ADJUST(Q);
if(S=='1' && R=='0') return '1';
if(S=='0' && R=='1') return '0';
return 'X';
}
int main(void){
char buf[3][10];
scanf("%9s%9s%9s", buf[0], buf[1], buf[2]);
printf("S=%c R=%c Q=%c --> Q'=%c\n", buf[0][0], buf[1][0], buf[2][0], myRSFF(buf[0][0], buf[1][0], buf[2][0]));
return 0;
}

704 名前:703 mailto:sage [2009/01/12(月) 02:04:19 ]
>>703 は無しで^^;

705 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 02:13:30 ]
>>695
プログラム無知の数学科出身のおれの意見を書かせてくれ
おそらく二重振り子の原理はφ_1の角度にある玉が原点方向に向かって振れる運動と
φ_2の角度にある玉が原点方向に振れる運動で初期の角度に大きな違いがある
なので一枚目の画像の青い玉の連結が連立微分方程式において重要な役割を得る
が、しかしもしΔφ=φ_1-φ_2=φ≒0ならば、青い玉の部分を考えず(二重振り子にならない)
φ_1≒φ_2になるので考える振り子の運動方程式は直線OQの単振り子のそれに近似できる
φはΔφの限りなく0に近い値のことを指していると思われる

706 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 02:14:28 ]
今後、宿題に答えてもらうには、一問1,000円の課金にしない?

707 名前:703 mailto:sage [2009/01/12(月) 02:17:30 ]
>>697 3問目
#include<stdio.h>
#include<stdlib.h>
#define ADJUST(v) (((v)=='1' || (v)=='0')?(v):'X')
int myNOT(int A){
if(A=='1') return '0';
if(A=='0') return '1';
return 'X';
}
int myOR(int A, int B){
if(A=='1' || B=='1') return '1';
if(A=='0' && B=='0') return '0';
return 'X';
}
int myAND(int A, int B){
if(A=='0' || B=='0') return '0';
if(A=='1' && B=='1') return '1';
return 'X';
}
int myNOR(int A, int B){ return myNOT(myOR(A, B)); }
int myNAND(int A, int B){ return myNOT(myAND(A, B)); }
int myXOR(int A, int B){ return myOR(myAND(myNOT(A), B), myAND(A, myNOT(B))); }
int myRSFF(int S, int R, int Q){
return myXOR(myOR(myAND(myNOR(S, R), Q), myAND(myXOR(S, R), S)), myAND(myAND(S, R), 'X'));
}
int main(void){
char buf[3][10];
scanf("%9s%9s%9s", buf[0], buf[1], buf[2]);
printf("S=%c R=%c Q=%c --> Q'=%c\n", buf[0][0], buf[1][0], buf[2][0], myRSFF(buf[0][0], buf[1][0], buf[2][0]));
return 0;
}

708 名前:703 mailto:sage [2009/01/12(月) 02:31:05 ]
>>707 は S=0 R=X Q=0 --> Q'=0 になっちまうけど
X 出すべきかな?www

709 名前:不完全なソース mailto:sage [2009/01/12(月) 03:11:21 ]
>>682
頭に0がつく数字を考慮しない場合

#include <stdio.h>

void main(){

int gakuban;

printf("学籍番号??? ");
scanf("%d",&gakuban);
if(999999<gakuban<10000000)
printf("学籍番号は7桁の数字で入力して下さい\n");
else
printf("e-mailアドレス: g%d@〜〜〜〜〜〜\n",gakuban);
}

で動くが、例を見る限り0が頭につく数を考慮しなきゃダメそうだね



710 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 04:01:02 ]
>>697 2問目
#include<stdio.h>
#include<math.h>

#define PI (3.1415926535897932384626433832795)
#define DELTA (0.01)

double Calc(double t, double digree){
double radian, x, y, vx0, vy0, v0=138000/3600.0, x0=0.0, y0=1.80, g=9.8;

radian=digree/180*PI;
vx0=v0*cos(radian);
vy0=v0*sin(radian);
x=x0+vx0*t;
y=y0+vy0*t-g*t*t/2;
printf("%e,%e\n", x, y);

return y;
}

int main(void){
double t, digree=0.0, *pdigree;

pdigree=&digree;
scanf("%lf", pdigree);
for(t=0.0;Calc(t, digree)>=0.0;t+=DELTA);

return 0;
}

711 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 04:40:23 ]
>>701 以下、2問目の解答。main内のwhileの行と不要な関数を消せば1問目になるよ。
#include<stdio.h>
#include<stdlib.h>
typedef struct node_ { int v; struct node_ *l, *r; } node, *pnode;
pnode root = NULL;
void insert_r(pnode *t, pnode n) { if (*t) insert_r(n->v < (*t)->v ? &(*t)->l : &(*t)->r, n); else *t=n; }
void insert(int v) { pnode n = malloc(sizeof(node)); n->v=v; n->l=n->r=NULL; insert_r(&root, n); }
void erase_r(pnode *t, int v) {
if (*t)
if ((*t)->v == v) { pnode l = (*t)->l, r = (*t)->r; free(*t); *t = r; if (l) insert_r(t, l); }
else erase_r(v < (*t)->v ? &(*t)->l : &(*t)->r, v);
}
void erase(int v) { erase_r(&root, v); }
void print_r(pnode n) { if (n) { print_r(n->l); printf(" %d", n->v); print_r(n->r); } }
void print() { printf("data ="); print_r(root); printf("\n"); }
int input_value() { int v=0; printf("数値>"); scanf("%d", &v); return v; }
int menu() {
char s[100]; printf("a=追加、b=削除、c=表示 >"); scanf("%99s", s);
switch(s[0]) {
case 'a': insert(input_value()); break;
case 'b': erase(input_value()); break;
case 'c': print(); return 0;
}
return 1;
}
int main() {
int i; for (i = 0; i < 20; i ++) insert(rand()%101); print();
while (root && menu());
return 0;
}

712 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 06:01:16 ]
>>711
不要な関数とはどれのことですか?

713 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 06:40:22 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8607.txt
[3] 環境 
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: visualc++2005
 [3.3] 言語:C
[4] 期限:2009年1月12日AM10時
[5] その他の制限:できるだけ簡単な関数でお願いします



714 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 08:47:46 ]
>>648
お願いします

715 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 09:06:40 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8612.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Stdio 2005
 [3.3] 言語: C
[4] 期限: 1/12 22:00
[5] その他の制限:ヒントを参考に作成して下さい

よろしくお願いします

716 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 09:55:21 ]
>>695
クソすぎる
そのφはφ_2のTypoだしD'とかいらないし
氏ねばいいのに

717 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 10:26:10 ]
>>713
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8613.txt

718 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 10:36:54 ]
>>715
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8614.txt

719 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 11:06:48 ]
>>709
おっしゃるとおり、0の場合も考えないといけないんです・・・
どうもintでやると先頭0だと0が消えちゃうのでintは無理なんでしょうか?



720 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 11:12:03 ]
>>715
#include <stdio.h>
#define BUFFSIZE 256
#define FGETS(buff) fgets(buff, BUFFSIZE, stdin); *(strchr(buff, '\n')) = '\0'
int main(void)
{
FILE *ifp, *ofp;
char buff[BUFFSIZE];
int i = 0;

printf("入力ファイル名を入力:");
FGETS(buff);
ifp = fopen(buff, "r");
printf("%sを入力しました。\n", buff);


printf("出力ファイル名を出力:");
FGETS(buff);
ofp = fopen(buff, "w");
printf("%sを出力しました。\n", buff);

while (fgets(buff, BUFFSIZE, ifp) != NULL)
fprintf(ofp, "%4d: %s", ++i, buff);

fclose(ifp);
fclose(ofp);
return 0;
}

721 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 11:34:16 ]
どなたか>>666をお願いできませんでしょうか

725 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:05:36 ]
>>666
問1
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8615.txt

727 名前:585 ◆i9Dvbn/Lf6 mailto:sage [2009/01/12(月) 14:25:48 ]
お願いします。

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
二重振り子を微小振動させるとして、厳密な数値解及び解析的な近似解を初期振れ角Θを機動時に指定して、
アニメーション表示させるプログラムを表示しなさい。
グラフィックはgnuplotでもEGGXでもどちらでもよい。
教材の一部を貼っておきます。
up2.viploader.net/pic3/src/vl2_093082.png
up2.viploader.net/pic3/src/vl2_092922.png
up2.viploader.net/pic3/src/vl2_092923.png
zipで専用ロダにもあげておきます
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8603.zip
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2009年1月22日まで]

さっぱりわからないので少しだけでもお願いします

728 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:27:11 ]
>>666
問1
出遅れたけど、せっかく作ったから
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8616.txt

問2は実行結果の何がどう間違っているかを教えてくれると解が早いんだけど。

729 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:40:41 ]
>>726>>728
助かりました本当にありがとうございます。

>>728
失礼しました

実行結果が

総文字数:296
単語数:83
行数:16

となるのが正しいのですが、
自分が作ったものでは

総文字数 :315
単語数 :87
行数 :20

と、異なった結果が出てしまいます。



730 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:56:03 ]
>>729
>>666 を見る限り、「文章の終端」 == 「空行が2つ連続」としているから、
char word[][50] の最後にもう一つ空行を入れてやればそのコードで正しく動く。

731 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 15:13:49 ]
>>730
分かりました、ありがとうございます。
助かりました

732 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 15:25:47 ]
初めまして、今Cを勉強してて。
問題文というか、ポインタと構造体が理解できなくて苦しんでいます。

codepad.org/H4wmHhPj
このようなプログラムを組んだのですが。

mainでのAA[0]、AA[1]の値が、関数に行くとmainのAA[0]がAA[1]に入ってしまいます。
全く原因が分からず苦戦してます。
もしよろしければご教授願います。

やりたいこととしては32bit×32bit=64bitの桁あふれを解消するということです。

733 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 15:27:06 ]
>>732
スレ違い
帰れ

734 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 15:32:17 ]
>>733さん
一応課題なのでこのスレに来たのですが・・・
期限は明日です・・・

735 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 15:36:20 ]
>>732
ああもうマルチうざい
これやるから帰れ
codepad.org/GIUMvCMC

736 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 15:39:18 ]
>>734
死ね。


737 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 15:39:59 ]
>>735さん
有難うございます。
すぐに出来るってすごいですね・・・

多倍長やるのに構造体って必要ないんですか?

738 名前:デフォルトの名無しさん [2009/01/12(月) 15:43:24 ]
>>736
やっ、やめて下さい、殺さないで下さい、通報しますよ?

739 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 15:54:39 ]
>>722
ありがとうございます
やはり配列使うしかないのでしょうか・・・
>>723
できるのですが、残念ながらbuffや、stdin,breakは習ってないのです。ごめんなさい。



740 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 16:19:09 ]
>>1
>・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。

741 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 16:22:30 ]
>>739
>>722でダメなのか?






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<235KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef