1 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 03:01:54 ] あなたが解けない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++の宿題を片付けます 99代目 pc11.2ch.net/test/read.cgi/tech/1194262698/
2 名前:デフォルトの名無しさん [2007/11/22(木) 03:06:39 ] l三`ー 、_;:;:;:;:;:;:j;:;:;:;:;:;:_;:;:;_;:-三三三三三l l三 r=ミ''‐--‐';二,_ ̄ ,三三三彡彡l_ lミ′  ̄ ー-'" '=ミニ彡彡/‐、ヽ l;l ,_-‐ 、 __,,.. - 、 彡彡彳、.// _______∧,、_‖ `之ヽ、, i l´ _,ィ辷ァ-、、 彡彡'r ノ/_ ______  ̄ ̄ ̄ ̄ ̄ ̄ ̄'`'` ̄ 1  ̄フ/l l::. ヽこ~ ̄ 彡彳~´/  ̄ ̄ ̄ ̄ ̄ ̄ ヽ ´ :l .l:::. 彡ィ-‐'′ ゝ、 / :. :r-、 彡′ / ィ:ヘ `ヽ:__,ィ='´ 彡;ヽ、 _,,..-‐'7 /:::::::ヽ _: :_ ヽ ィ´.}::ヽ ヽ、 _,-‐'´ { ヽ:::::::::ヘ `'ー===ー-- ' /ノ /::::::ヘ, ヽー、
3 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 03:13:28 ] cmonet.s58.xrea.com/upload/src/up1463.jpg
4 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 05:21:43 ] >>902 #!/usr/bin/env ruby def to_rpol(s) a = s.reverse.split a.each_with_index do |e, i| if e == "(" a[i + 0] = sprintf("%s %s %s", a[i - 3], a[i - 1], a[i - 2]) a[i - 1] = nil; a[i - 2] = nil; a[i - 3] = nil; a[i - 4] = nil end end a.compact! a.each_with_index do |e, i| if e == "*" || e == "/" a[i + 1] = sprintf("%s %s %s", a[i - 1], a[i + 1], e) a[i + 0] = nil; a[i - 1] = nil end end a.compact! a.each_with_index do |e, i| if e == "+" || e == "-" a[i + 1] = sprintf("%s %s %s", a[i - 1], a[i + 1], e) a[i + 0] = nil; a[i - 1] = nil end end a.compact! return a.to_s end puts to_rpol("( 5 - 4 ) / 3 + 2 * 1")
5 名前:デフォルトの名無しさん [2007/11/22(木) 08:36:21 ] [1] 授業単元: c [2] 問題文(含コード&リンク): 名前と点数を格納するデータ部を持つ自己参照型構造体を定義し、 線形リストを実装しなさい。 ・構造体の名前は struct grade とし、新たに glist 型として定義する。 ・構造体のメンバは、char name[40]、int score、及びポインタnext。 ・ノードは3つ作成し、それぞれキーボードからデータを入力する。 ・ポインタに値を代入し、ヘッダhdと3つのノードの間を繋ぐ。 ・読み出し用のポインタpを使って、リストのデータを順に画面に出力する。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VS2005 [3.3] 言語: c [4] 期限: 11/23まで [5] その他の制限: #defineは、なしで
6 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 09:09:49 ] 100オメ!!
7 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 09:18:04 ] 前スレで流れましたが,お願いします。 1つの状態で3つの数値を確保して比較して値を出してその状態の値みたいな プログラムのほうがいいかもしれません。 [1] 授業単元:確率論 [2] 問題文(含コード&リンク): 前に>>246 で宿題をださせていただきました。 これを対数で計算できるように変更していただきたいんですが。 正しい値がでるプログラム(前につくってもらった) と今つくってるプログラムと2つのせました。 この前5回くらいの移動までの数値があってるからそのあとはいいかとおもって できたとおもってたんですけど、7回目くらいから同じ値でとまってしまって。 図はこれです www.borujoa.org/upload/source/upload15106.jpg 以前つくってもらったプログラムの値をlogでだしてみたプログラム kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5311.c 移動確率を対数でだして計算していったプログラム kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5312.c logの計算途中で-infとかnanとかでてくるので それを調べるためにprintf文大量に使ってますけど みにくかったら消してください。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: c [4] 期限: 23日おわるくらいまでには [5] その他の制限: 特になし
8 名前:デフォルトの名無しさん [2007/11/22(木) 09:47:45 ] >>5 #include<stdio.h> typedef struct grade{ char name[40]; int score; struct grade *next; }glist; void kadai13() { glist a,b,*hd,*p; hd = &a; a.next = &b; b.next = NULL; sprintf(a.name,"dummy"); a.score = -1; sprintf(b.name,"tsubasa"); b.score = 60; p = hd; while(p!=NULL){ printf("p->name \t%s\n", p->name); printf("p->score\t%d\n", p->score); printf("p->next \t%p\n", p->next); p = p->next; } return 0; } これを改良お願いします。
9 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 10:12:35 ] 前993 char s1[100] = "asdfghjklmarik";/*検索対象*/ char *s2 = "mariko"; char *p1 = s1; char *p2 = s2; while(*p1 == '\0' || *p2 == '\0'){ if(*p1 == *p2){ p1++; p2++; }else{ p1 = p1 - (p2 - s2 - 1); p2 = s2; } } if(*p2 == '\0') /*有*/; else /*無*/;
10 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 10:36:59 ] 最近プログラム開発系の会社に就職した。 PCを使っていろいろやるのは好きなんだけど、 なにせスキルは皆無。 とりあえずC、VB、C++辺りを勉強することになった。 今はVC++を勉強しようとしてるんだけど、 初心者にお勧めなサイトとかあったら教えてほしい。 Cはかなり簡単なプログラミング(scanfとかprintfとかしか使わない程度) しかやってない。 VBも基礎用の参考書をやった程度。
11 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 10:58:02 ] >>10 会社で聞け。つかスレ違い
12 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 11:27:36 ] >>11 会社で聞ければいいんだけどね。 社長以外は出向してるし、社長はソフト関係できないから。 ググっても大体Cの知識ないとダメだったし。 質問スレが見当たらなかったわけだが。
13 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 11:37:53 ] そんな無能を雇う会社はさっさとつぶれてしまえ
14 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 11:50:11 ] 社長以外は出向、に突っ込むべきだとは思うんだが。 そんなことより100おめ。
15 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 13:20:00 ] [1] 授業単元:C++基礎 [2] 問題文(含コード&リンク):0〜100点までの点数を乱数によって10個表示させるプログラムを作りなさい。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:ming-bit(曖昧…) [3.3] 言語:C++ [4] 期限:2007年11月28日12時まで [5] その他の制限:本当に基礎的な事しかやってないので…出来れば簡単なプログラムでお願いします。
16 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 15:37:38 ] [1] 授業単元:C言語プログラミング [2] 問題文(含コード&リンク): 5人分の身長から、平均と最高と最低を求めるプログラムを作りなさい キーボードから5人分の身長を入力する。 平均、最高、最低を表示する。 平均は、小数点第1位まで表示する。 入力処理途中で「-1」が入力されたら処理を中断し、それまでの入力済みデータを元にして以降の処理を行う。 <実行例> 身長を入力してください。 1人目は?: 165 2人目は?: 143 3人目は?: 149 4人目は?: -1 − 結果 − 平均: 152.3 cm 最高: 165 cm 最低: 143 cm [3] 環境 [3.1] OS:Windows [3.3] 言語:C言語 [4] 期限:2007年11月26日13:00まで [5] その他の制限: テキスト「新訂 新C言語入門(ビギナー編)」の第8章(ポインタ)までやりました。 @ 5人分の身長を格納する配列を利用すること 例) int sinchou[5]; A 次の3つのユーザ関数を作成し、利用すること ・平均を求める関数 ・最高を求める関数 ・最低を求める関数
17 名前:16 mailto:sage [2007/11/22(木) 15:42:17 ] 自分でやったプログラムはこれなんですが #include<stdio.h> double ave (int x[],int y); void max (int x[],int y); void min (int x[],int y); int main (void) { int i,sinchou[5]; double avdt; printf ("身長を入力してください。\n"); for (i=0;i<5;i++){ printf("%d人目は?:",i+1); scanf("%d",&sinchou[i]); if (sinchou[i] == -1) break; } avdt = ave (sinchou,i+1); printf("平均:%.1fcm\n",avdt); max (sinchou,i+1); min (sinchou,i+1); return 0; }
18 名前:16 mailto:sage [2007/11/22(木) 15:42:48 ] double ave (int x[],int y) { int i; int a=0; for (i=0;i<y;i++){ a += x[y]; } return a/y; } void max (int x[],int y) { int i,max=x[0]; for (i=0;i<y;i++){ if (max<x[i]){ max=x[i]; } } printf("最高:%d点\n",max); return; } void min (int x[],int y) { int i,min=x[0]; for (i=0;i<y;i++){ if (min>x[i]){ min=x[i]; } } printf("最低:%d点\n",min); return; }
19 名前:16 mailto:sage [2007/11/22(木) 15:45:06 ] コンパイルはできたんですが、実行すると NTVDM CPU は不正命令を検出しました。 と出てしまいます。 どうかお願いします。
20 名前:>>16 [2007/11/22(木) 16:41:46 ] #include<stdio.h> double ave (int x[],int y); void max (int x[],int y); void min (int x[],int y); int main (void) { int i,sinchou[5]; double avdt; printf ("身長を入力してください。\n"); for (i=0;i<5;i++){ printf("%d人目は?:",i+1); scanf("%d",&sinchou[i]); if (sinchou[i] == -1) break; } avdt = ave (sinchou,i); printf("平均:%.1fcm\n",avdt); max (sinchou,i); min (sinchou,i); return 0; }
21 名前:>>16 [2007/11/22(木) 16:44:48 ] double ave (int x[],int y) { int i; int a=0; for (i=0;i<y;i++){ a += x[i]; } return a/y; } void max (int x[],int y) { int i,max=*x; for (i=0;i<y;i++){ if (max<x[i]){ max=x[i]; } } printf("最高:%d点\n",max); } void min (int x[],int y) { int i,min=x[0]; for (i=0;i<y;i++){ if (min>x[i]){ min=x[i]; } } printf("最低:%d点\n",min); }
22 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 17:18:59 ] >>15 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int i; srand(time(NULL)); for(i =0; i<10; i++) printf("%d\n", (int)(rand * 100)); }
23 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 17:19:11 ] [1] 授業単元:アルゴリズム演習 [2] 問題文(含コード&リンク): 各節点がkey,leftchild,rightchildの値とポインタを保持する二分木において、 根のポインタを受け取り、全ての節点のkeyを表示するプログラムを作れ。節点の数はnとする 再帰を使う事、同じ節点のkeyを2回表示する事、定数個以上のメモリを使う事を禁止する また、その実行時間はnの定数倍で抑えられなければならない [3] 環境 [3.1] OS: win [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:無期限 [5] その他の制限: なし お願いします
24 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 17:45:34 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 各教科名と点数を入力し、点数の大きい順に教科名と点数をソートして表示させなさい。 #include<stdio.h> void main(){ char kyouka[20][10]; int tensu[20],aa,m,n,k; printf("教科の数:"); scanf("%d",&n); for(k=0;k<n;k++){ printf("科目名:"); scanf("%s",&kyouka[k]); printf("点数:"); scanf("%d",&tensu[k]); } for(k=0;k<n;k++){ tensu[k]=0; } for(m=n;m>1;m--){ for(k=0;k<m;k++){ if(tensu[k]<tensu[k+1]){ aa=tensu[k]; tensu[k]=tensu[k+1]; tensu[k+1]=aa; } } } [3] 環境 [3.1] OS: Windows [3.3] 言語: C++ [4] 期限: 2007年11月23日 文字配列のソートがわかりません。初心者ですがよろしくおねがいします
25 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 21:31:08 ] >>24 Cだけど kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5304.txt 前スレと同じ授業のやつか?
26 名前:デフォルトの名無しさん [2007/11/22(木) 23:26:38 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク):最大20桁の整数を5つ入力させ、int型配列にそれぞれ格納。入力終了後 5つの数値の和を求め出力する。なお、20桁までを有効とし21桁以降は無視。負の数、整数以外 改行のみの場合はそれぞれエラー表示をし、終了する。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: BCC [3.3] 言語: C [4] 期限: 11月23日09:00まで 前スレでも質問させていただきましたが、ご回答がなかったので改めて質問させて いただきます。参考書を読んでも自力で出来ないので、わかる方はご回答よろしくお願いします。
27 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 23:32:32 ] >>25 すいません。記入し忘れましたが前スレと同じです。 CはまったくわからないのでC++でおねがいできませんか?
28 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 23:55:41 ] >>27 >>24 の例がC++じゃなくてCなんだけれど。
29 名前:デフォルトの名無しさん [2007/11/23(金) 00:49:59 ] [1] 授業単元: システム解析 [2] 問題文(含コード&リンク):2変数非線形連立方程式の解を求めるnewton-rapson法のプログラムを作成し以下の問題を解け @x^2+y^2-8=0 と x+y=0 で初期点(x(x0),y(y0))∈[-4,-4]×[4,4]を10000個とり、初期点に対する収束値の関係を2次元で図示する。 収束値の関係の座標を出すこと。 Ax^3-3xy^2-8=0 と x^3-3x^2y=0 で初期点(x(x0),y(y0))∈[-1/2,-1/2]×[1/2,1/2]を10000個以上(百万個程度を推奨する)とり、初期点に対する収束値の関係を2次元で図示する。 収束値の関係の座標を出すこと。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: ([2007年11月25日23:00まで] [5]その他:^は累乗を示します。たとえば、x*x=x^2です。 2問ありますが、一問だけでもといていただけると助かります。2変数ということで手も足もでません、、、 よろしくお願いします。
30 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 00:51:12 ] C++が理解できてCが理解できないってどういう事だ? 演算子をオーバーロードしてるからその辺の関数を理解できないって事?
31 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 02:48:28 ] >>26 を作ってみたけど、 >わかる方は と書いてあるから、わからないながらも色々試行錯誤して作った俺は回答する資格無いな。
32 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 03:27:36 ] >>27 ってか基本的に、CであればC++でもある。 C++でコンパイルすればいいじゃん。
33 名前:デフォルトの名無しさん mailto:age [2007/11/23(金) 03:38:20 ]
34 名前:デフォルトの名無しさん mailto:age [2007/11/23(金) 04:05:20 ] >>26 #include <stdio.h> #include <stdlib.h> int main(void) { int i , j , k; int ans[21],tasusuji[5][20],tmp; int ketasu[5],saidaiketa=0; char input[50];
35 名前:デフォルトの名無しさん mailto:age [2007/11/23(金) 04:06:53 ] for(i=0;i<21;i++){ans[i]=0;} for(i=0;i<5;i++){ printf("%dつ目の数字入力>",i+1); scanf("%s",input); for(j=1;;j++){ if(input[j]=='\0'){ ketasu[i]=j; if(j>20){ketasu[i]=20;} //20ケタ以降切り捨て処理 if(ketasu[i]>saidaiketa){saidaiketa=ketasu[i];} for(k=19,j=j-1;k>=20-ketasu[i];k--,j--){ if(input[j]<48 || input[j]>58){ printf("Error\n"); printf("\n\n何かキーを押してください\n"); scanf("%s",input); return 1; } tasusuji[i][k]=(int)input[j]-48; } break; } } }
36 名前:デフォルトの名無しさん mailto:age [2007/11/23(金) 04:07:42 ] for(i=0;i<5;i++){ for(j=19;j>=20-ketasu[i];j--){ans[j+1]+=tasusuji[i][j];} for(j=19;j>=20-saidaiketa;j--){ //繰り上げ処理 if(ans[j+1]>9){ tmp=ans[j+1]; ans[j+1]=tmp%10; ans[j]=tmp/10+ans[j]; } } } printf("\n"); for(i=0;i<5;i++){ if(i==4){ printf("+)"); } for(j=0;j<25-ketasu[i];j++){ if(i==4 && j==0){j+=4;} printf(" "); } for(k=20-ketasu[i];k<20;k++){ printf("%d",tasusuji[i][k]); } printf("\n"); } printf(" ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\n");
37 名前:デフォルトの名無しさん mailto:age [2007/11/23(金) 04:08:49 ] for(i=0;i<24-saidaiketa;i++){printf(" "); } if(ans[20-saidaiketa]==0){printf(" ");} for(i=20-saidaiketa;i<21;i++){ if(i==20-saidaiketa && ans[i]==0){i++;} printf("%d",ans[i]); } printf("\n\n何かキーを押してください\n"); scanf("%s",input); return 0; }
38 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 04:53:44 ] [1] 授業単元:C++実習 前スレで出させてもらったのですがスルーされましたのでもう一度お願いします。 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5291.txt [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語: C++ [4] 期限: 11/25 〜10:00 [5] その他の制限: 特になし よろしくお願いします。
39 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 12:38:02 ] >>38 なんつーか問題に不備がたくさんあってやりにくいんだよね。 いちいち指摘するのも面倒なくらいに細かなところが不明瞭。 本当にこんな問題が出てるのなら、教官を捨てていいと思う。
40 名前:デフォルトの名無しさん [2007/11/23(金) 12:38:28 ] 1] 授業単元プログラミング2 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5307.txt [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語: C言語 [4] 期限: 11/25 [5] その他の制限: 特になし
41 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 12:44:33 ] >>38 FletzHikariクラスはFletzAdslクラスを継承するような図に見えるんだけど クラスの概要って所ではProviderクラスを継承するような文書に読めるし どっちなんだろ?
42 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 12:55:55 ] >>40 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5318.c
43 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 13:12:19 ] >>23 メモリの制約が、かなり厳しいね。 二分木を格納するために O(n) が必要だから 「定数個以上のメモリ」という制限は、普通は達成不能。 木以外の空間が O(1) と解釈しても普通は無理で、 再帰を使うと再帰の深さが木の深さと同じくらいになるから スタック上に O(木の深さ) くらいの空間が必要になる。 俺は、この二分木の表現では O(1) の空間は不可能だと思う。
44 名前:43 mailto:sage [2007/11/23(金) 13:17:17 ] ごめん日本語読み間違えた。再帰を使うことも禁止なんだね。 それでもスタック長が普通は O(木の深さ) になるから、普通は無理。
45 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 13:33:37 ] [1] 授業単元: プログラム演習 [2] 問題文(含コード&リンク): 文字列 s[0], s[1], ..., s[n-1] が与えられる。 これらをすべて含むような最短の文字列を一つ求めよ。 例:s[0] = "abc", s[1] = "bcd" → "abcd" s[0] = "abc", s[1] = "ac" → "abcac" s[0] = "abc", s[1] = "cab" → "cabc" [3] 環境 [3.1] OS:Windows (Cygwin) [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C/C++ どちらでもよし [4] 期限: 2007/11/25 まで [5] その他の制限:とくになし
46 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 13:41:59 ] >>43 すみません、二分木の表現のメモリは無視して構いません。 宿題でなく研究レベルの問題だと言われて出されたんですが、手も足も出ない状態です メモリ使用量をO(lgn)で抑えることはできるんですが・・・
47 名前:デフォルトの名無しさん [2007/11/23(金) 13:49:42 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5320.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland C++ Compiler5.5 [3.3] 言語: C++ [4] 期限: 11/25 24時 [5] その他の制限: 僕には難しいので誰かよろしくお願いします。
48 名前:デフォルトの名無しさん [2007/11/23(金) 14:07:50 ] [1] 授業単元プログラミング2 [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5319.txt [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語: C [4] 期限: 11/27 [5] その他の制限: 特になし
49 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:35:02 ] >>46 表示順序や二分木表現を書き換えてはいけない、という制限が 無いので木を O(1) 空間でリストに変形すればいい。 void show(node *root) { node *tail = root; while (root) { printf("%d ", root->key); while (tail->leftchild) tail = tail->leftchild; tail->leftchild = root->rightchild; root = root->leftchild; } }
50 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:44:51 ] >>48 #define USER 50 /* 登録可能ユーザ数 */ #define NAME 100 /* ユーザ名の最大長 */ int main() { int users; /* 登録されたユーザ数 */ char *user_list[USER]; /* ユーザ名のリスト */ /* ここにプログラムを書く */ char work1[NAME], work2[NAME]; int i; printf("何名登録しますか?"); scanf("%d", &users); for (i = 0; i < users; ++i) { printf("ユーザNo.%d 苗字:"); user_list[i] = (char *)malloc(NAME*sizeof(char)); scanf("%s", work1); printf("ユーザNo.%d 名前:"); scanf("%s", work2); sprintf(user_list[i], "%s %s", work1, work2); } printf("登録された内容を表示します。\n"); /* ここまで */ for(i = 0; i < users; i++) printf("ユーザ[%d]:<%s>\n", i, user_list[i]); }
51 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:46:58 ] 木を壊したままでも良いのか。 何とか復元してからリターンしようとして頭をひねってた。
52 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:48:24 ] >>47 内容はともかく、日本語が難しくて解読に疲れた。
53 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:50:15 ] 木を変形するのはありなのか?確かに制限には書かれてないが 多分出題者の意図からは外れてるだろうな
54 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:53:46 ] ポインタの値が常に偶数だという仮定を置ければ復元もできそうだ。 どっちにしても一時的に木を変形する必要はあるけど。
55 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:57:41 ] 削除の変わりに最下位ビットを立てるとかだね。 あと十分大きな値を足しておくとかでも大丈夫。 まあ計算モデルを仮定しなきゃいけないから綺麗じゃないが。
56 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 15:18:39 ] >>38 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5321.cpp C++を勉強中の俺がためしに書いてみた ツッコミ歓迎
57 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 15:26:59 ] Providerクラスが抽象クラスになってなくね?
58 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 15:27:14 ] >>56 いつのC++を使ってるの?VC6かい? newは失敗するとnothrowバージョンでない限りstd::bad_alloc例外を 返し、NULLとか0は返しません。14882:2003
59 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 16:38:03 ] >>56 そのコードでは、派生クラスのデスクトラクタが実行されないよ
60 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 17:48:39 ] >>47 生産管理のアルゴリズムって、5つくらい前のスレにあったやつじゃダメなのか?
61 名前:56 mailto:sage [2007/11/23(金) 18:09:02 ] いまここで 抽象クラスの定義方法知った。 newとmallocの違いを知った。 デストラクタをちゃんと記述しないといけないことを知った。 ・・・まだまだ勉強が足りないようで ツッコミありがとう
62 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 18:43:13 ] >>56 , 61 全くもって技術的な話ではないが virtual double cale(double a){} は綴りが微妙
63 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 18:51:23 ] >>23 親頂点に帰れるポインタがあれば、直前にいたポインタと比較することで定数メモリで木を周回できるはずだけど。 直前に親頂点にいたら、左の子供頂点に行く。 直前に左の子供頂点にいたら、自分の key を表示して、右の子供頂点に行く。 直前に右の子供頂点にいたら、親頂点に行く。 あとは親頂点親頂点に戻る方法を考えればいいんだけど。 毎回根から今の頂点を探すってできない気がするんだけど、どうなんだろう?
64 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 19:14:40 ] ポインタの付け替え(pointer reversalっていうらしい)を使えば巡回自体はできるんだけど、 そのままだと各節点を3回ずつ表示してしまう。
65 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 19:36:42 ] そりゃ単にやり方が悪いだけだ
66 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 19:50:42 ] [1]授業単元:Cプログラミング入門 [2]問題文:π(=3.14159265)を用いて入力された数値εに対して 次の不等式を満たす最小の自然数Nを求めるプログラム をつくりなさい。 |(π^2/6)-{(k=1 N)1/k^2}|<ε [3]環境 [3.1]OS:Unix [3.2]コンパイラ名とバージョン:gcc [3.3]言語:C [4]期限11/24まで [5]その他の制限 ・配列、数学関数は使ってはいけない ・表示は以下のようにする εの値が: 最小のNは . まったくわからないのでどうかお願いいたします。
67 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 19:51:15 ] >>65 じゃあどうすれば良い?
68 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 21:24:59 ] >>23 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5322.c 貼ってから気付いたけど、なぜか<malloc.h>をincludeしてるので無視してくれ。 ポインタの付け替えで一時的に木を変形する。子が両方ともNULLであるノードを 一時領域として使う。 10万件のランダムテストに合格したから多分合ってる。
69 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 21:58:13 ] >>61 >>59 だが >デストラクタをちゃんと記述しないといけないことを知った。 ~Provider(){} //デストラクタは書いてますやん 俺が言いたかったのは、その書き方が間違いだってことだよ 「知った」ではなくなぜそうなのか理解できてないと、後で苦しむよ Effective C++ 第3版の7項にきちんと、俺が指摘した理由が説明されている。 図書館で借りるか、本屋で立ち読みしてごらん。 さすがメイヤー先生、初学者が犯しやすい間違いをズバリ書いているので びっくりした。 偉そうにかいてごめんね、ガンガッテ
70 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 22:06:45 ] >>61 大ヒント : 仮想関数を持つならばデストラクタは仮想にすべき
71 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 22:08:49 ] >>70 Javaの @Override アノテーションとかあればいいのにな
72 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 22:33:15 ] >>66 ttp://pc11.2ch.net/test/read.cgi/tech/1194262698/962 ttp://pc11.2ch.net/test/read.cgi/tech/1194262698/971
73 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 22:34:37 ] うざいわ。 baseクラスのデストラクタはvirtualにしとけ、でいいじゃん。
74 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 22:41:55 ] C++にはその名のとおりの必殺技 "死のダイヤモンド" が存在するからなぁ……
75 名前: ◆S2Crp49aOM [2007/11/23(金) 22:52:04 ] [1] 授業単元:プログラミング1 [2] 問題文(含コード&リンク): 1〜10000の範囲の乱数値を持つ要素数10000の配列から、キーボードで入力した1〜10000値を探索し、 同じ値をもつ配列要素の数を表示するプログラムを二分探索を用いて作成せよ。 [3] 環境 [3.1] O:Linux [3.3] 言語:C [4] 期限: 2007年11月24日01:30まで [5] その他の制限:
76 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:00:03 ] >>75 あと二時間半www
77 名前:デフォルトの名無しさん [2007/11/23(金) 23:15:25 ] [1] 授業単元:明解C++ [2] 問題文(含コード&リンク):演習10-2 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:.net 2003 [3.3] 言語:C++ [4] 期限:無期限 [5] その他の制限:明解C++で独学しています。単純なクラス作成まで終了。最後の演習問題でつまずいています。
78 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:15:31 ] >>73 こういう鵜呑みにしているヤツに限って肝心な箇所があやふやなんだよなぁ オレの職場にもこういうヤツが一人いたよ
79 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:17:04 ] >>77 「明解C++」の演習10-2だと思われる。 でも、その本を持っていない人間には問題すら分からない。
80 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:19:40 ] >>78 お前のようなうざい奴はどこにでもいるけどな
81 名前: ◆S2Crp49aOM mailto:sage [2007/11/23(金) 23:23:32 ] >>75 [4] 期限: 2007年11月24日11:30まで 打ち間違えました。 申し訳ないです。
82 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:24:25 ] 80=73 図星なので○け犬の遠吠え
83 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:28:06 ] うざい上に粘着質
84 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:28:09 ] その本に答えないの?
85 名前:77 mailto:sage [2007/11/23(金) 23:32:00 ] >>84 ありません。
86 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:34:46 ] >>85 問題書く気はないの?
87 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:35:50 ] 問題を書くのは著作権的にどうよ?
88 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:37:58 ] 学校で先生が出題する問題にも著作権は発生するんだが……。
89 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:38:19 ] つーか、宿題じゃないでしょ、それ。
90 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:40:27 ] 教科書に市販品使うなんて珍しくもない
91 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:40:55 ] >>88 著者人格権はあるけど学校の課題なんだkら複製権くらいあるだろ
92 名前:デフォルトの名無しさん [2007/11/23(金) 23:42:16 ] >>79 クラスDate第2版に抽出子を追加せよ。 問題の意味もいまいちわからなくて考えられることは 1.抽出子の定義(演算子>>の多重定義)を使用してDateオブジェクトを作成する。 2.抽出子の定義(演算子>>の多重定義)を使用してDateオブジェクトの内容を変更する。 だと思います。 しかし、わたしにはどちらであっても解答がわかりません。 クラスDate第2版ソース kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5323.txt
93 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:42:50 ] 著作権=COPY RIGHT=複製権
94 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:44:05 ] イコールじゃないよ
95 名前:77 [2007/11/23(金) 23:44:13 ] >>86 >>92 に問題を書きました。 よろしくお願いします。
96 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 00:48:36 ] >>91 学校の課題なら特別扱いされるという根拠は?
97 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 00:52:40 ] >>96 先生=著者
98 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 00:58:29 ] 2
99 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 00:59:03 ] 1
100 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 00:59:42 ] お前ら著作権法くらい読めよ プログラミングに関係の深い法律だぞ
101 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 00:59:43 ] ▃▅▆▇██▇▅▃ █ ████████▆ █ ████████ ▃▂ ▓▓▓▓▓▓▓▓▓ ▀██▇███████████▇▅ ▼▀█▀██▀▀▀▀■█■▀ ▍ ▋ ▲▃ ▀▅▃▌ ▌▌ ▐◣ ▐▂▅▀ ▀▅▃▀█ ▍▍ ▐▃▀▂▃◢◤ ◥◣▃▂▌ ▎▌ ◥▋ ▐◥▃▆◤ ◥▃▆◤▍ ▋ ▊ ▐◣ ◢▌ ▼ ◢▀▌▀◣ ▆▅ ▃▲ ▋ ▼ ▀▇◣▃◢▇▀ ▼ ▂▃◢◤▀ ▃▅▃▅▃▅ ▐▲▃ ▅▀ ▌▌ ▀█ ◢████▅▀▅▀▋▐▅▀▼ ▅█████ ▊ ▊ ▌
102 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 01:00:30 ] >>97 先生が著作者だから実質的な問題は発生しないと言いたいわけか 複製権関係ねぇ
103 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 01:08:01 ] >>72 同志がいたのか・・。 参考にさせていただきます。 ありがとうございました。
104 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 01:39:30 ] つうか教育目的の場合、著作権は無視されるんじゃなかったか?
105 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 01:47:47 ] 三十五条のことか?
106 名前:デフォルトの名無しさん [2007/11/24(土) 01:56:19 ] >>75 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5324.c
107 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 01:59:13 ] >>104 小学校の教科書だか教材に使われてた詩が、著作権者がクレームつけて使えなくなったって話は聞いたことがあるけど。
108 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 02:12:50 ] >>104 それは三十三条のことか?
109 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 03:00:43 ] ここって教育の場なん?
110 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 03:03:26 ] うん
111 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 03:26:56 ] 丸投げスレも出世したもんだな
112 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 04:05:52 ] でしょ
113 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 11:12:58 ] >>77 >>95 少し、もちつけ コードだけ貼って、問題が全然ナイジャマイカ モマイの貼った↓ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5323.txt これを、どうしろというんだ? エスパー君だったら分かるのかな? 漏れには全然理解できん
114 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 13:43:11 ] >>77 エスパー ostream& operator<<(ostream& s, const Date& x); を ostream& operator<<(ostream& s, const Date& x){s << x.Year() << x.Month() << x.Day();return s;} こう?
115 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 14:52:56 ] 1] 授業単元:コンピュータプログラミング1 [2] 問題文:CD−Rは1枚〜10枚で1枚が100円、11枚から100枚で1枚が90円、101枚以上で1枚が70円とする。 枚数nに対する金額を計算するプログラムを作成しなさい。終了時にはCtrl+Z(Enter)と入力する。 [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン:Fujitsu Fortran & C [3.3] 言語: C [4] 期限: 11/24 [5] その他の制限: なし どうかよろしくお願いします。
116 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 15:07:13 ] [1] 授業単元: システム解析 [2] 問題文(含コード&リンク):2変数非線形連立方程式の解を求めるnewton-rapson法のプログラムを作成し以下の問題を解け @x^2+y^2-8=0 と x+y=0 で初期点(x(x0),y(y0))∈[-4,-4]×[4,4]を10000個とり、初期点に対する収束値の関係を2次元で図示する。 収束値の関係の座標を出すこと。 Ax^3-3xy^2-8=0 と x^3-3x^2y=0 で初期点(x(x0),y(y0))∈[-1/2,-1/2]×[1/2,1/2]を10000個以上(百万個程度を推奨する)とり、初期点に対する収束値の関係を2次元で図示する。 収束値の関係の座標を出すこと。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: ([2007年11月25日23:00まで] [5]その他:^は累乗を示します。たとえば、x*x=x^2です。 2問ありますが、一問だけでもといていただけると助かります。2変数ということで手も足もでません、、、 よろしくお願いします。
117 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 15:27:56 ] >>115 #include <stdio.h> int main() { int i,n,price,pricelist[]={1,10,100, 11,100,90, 101,2147483647, 70}; while (scanf("%d", &n) != EOF) { for (i=0 ; i<3 ; i++) { if (pricelist[i*3]<=n && pricelist[i*3+1]>=n) { price=pricelist[i*3+2]*n; printf("%d円\n", price); } } } return 0; }
118 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 16:07:51 ] >>22 ありがとうございます。 やってみます。
119 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 17:11:28 ] [1] 授業単元:C++実習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5325.txt [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語: C++ [4] 期限: 11/26 〜10:00 [5] その他の制限: 特になし よろしくお願いします。
120 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 17:24:42 ] >>117 ぎりぎり間に合いました。本当にありがとうございます。
121 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 20:02:02 ] >>118 >>22 じゃないけど #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int i; srand(time(NULL)); for(i =0; i<10; i++) printf("%d\n", (int)(rand()%100)); }
122 名前:デフォルトの名無しさん [2007/11/24(土) 23:17:48 ] >>119 当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5326.txt
123 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 00:28:38 ] >>122 ここまで問題を無視できるのもすばらしい.
124 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 00:46:51 ] www.nicovideo.jp/watch/sm1600272 これだな
125 名前:26 [2007/11/25(日) 01:02:17 ] >>34 ありがとうございました。
126 名前:デフォルトの名無しさん [2007/11/25(日) 01:38:31 ] >>5 >>8 どなたかお願いします。
127 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 01:57:17 ] >>126 #include <stdio.h> typedef struct grade{ char name[40]; int score; struct grade *next; }glist; int main(void){ glist header={"", 0, NULL}, node[3], *p; int i; p = &header; for(i=0; i<3; i++){ printf("name->"); scanf("%s", node[i].name); printf("score->"); scanf("%d", &node[i].score); node[i].next = NULL; p->next = &node[i]; p = p->next; } p = header.next; while(p != NULL){ printf("p->name \t%s\n", p->name); printf("p->score\t%d\n", p->score); printf("p->next \t%p\n", p->next); p = p->next; } return 0; }
128 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 02:51:10 ] [1] コンピュータ実験 [2]あるファイル(※)を読み込み、数列の中の0の個数と1の個数、 数列の周期を求めるプログラムを作成せよ。 ※ファイルの中身は0と1の文字が約20万文字と、改行文字\nで終わるものである。 文字列を01の数列としてみたとき、2周期以上の周期系列となっているのがわかっている。 ファイルに保存されている数字は文字として保存されているので、-'0'をして文字から数字に変換すること。 ファイル名は任意(○○.dat)でよい。 [3] 環境 [3.1]Windows XP [3.2]gcc [3.3]C [4] 2007年11月26日(月)12:00まで [5] 0と1が書いてあるファイルを用意できないのですが出来ますでしょうか? よろしくお願いいたします。
129 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 05:38:26 ] >>122 ありがとうございます ですが、ええええ!?
130 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 05:52:16 ] >>128 3,4個でいいから、入力データの性質を簡単に全て現したサンプルくらい書けるだろ かけなきゃまずは問題を理解してここに投下しろ
131 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 07:54:28 ] >>128 まずファイルをてきとーに作る #include <stdio.h> #include <stdlib.h> #include <math.h> #define SIZE 20*10000 #define WAVLEN_MAX 10000 int main() { int p,t,i,m,n,s=SIZE; char *buf,fname[]="test.dat"; FILE *fp; srand(time(NULL)); t = (double)rand()/(RAND_MAX+1)*WAVLEN_MAX+1; p = (double)rand()/(RAND_MAX+1)*t; buf = (char*)malloc(t); m=0;for(i=0;i<t;i++){buf[i] = rand()&1;m+=buf[i];} if((fp=fopen(fname,"wt"))==NULL)exit(1); n=0;for(i=0;i<s;i++){fprintf(fp,"%d",buf[(p+i)%t]);n+=buf[(p+i)%t];} fprintf(fp,"\n"); fclose(fp); free(buf); printf("Total = %d (0:%d 1:%d) / T = %d (0:%d 1:%d)\n",s,s-n,n,t,t-m,m,p); return 0; }
132 名前:131 mailto:sage [2007/11/25(日) 08:01:02 ] >>128 次に作ったファイルを読み込んで処理する #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> int main() { long s,t,i,m,n,*tbl; char *buf,fname[]="test.dat"; FILE *fp; if((fp=fopen(fname,"rt"))==NULL)exit(1); fseek(fp,0,SEEK_END);s=ftell(fp);fseek(fp,0,SEEK_SET); if((buf=(char*)malloc(s))==NULL)exit(1); for(s=0;(m=fgetc(fp))>='0';s++) buf[s]=m-'0'; fclose(fp); tbl=(long*)malloc(s/2*sizeof(long)); tbl[0]=tbl[1]=0; for(t=2;t<s/2;t++){ tbl[t]=0; for(i=t;i<s-t;i++) tbl[t]+=buf[i] & buf[i+t]; } n=0;for(i=0;i<s;i++)n+=buf[i]; m=0;for(i=0;i<s/2;i++)if(tbl[i]>m){m=tbl[i];t=i;} m=0;for(i=t;i<t*2;i++)m+=buf[i]; free(tbl);free(buf); printf("Total = %d (0:%d 1:%d) / T = %d (0:%d 1:%d)\n",s,s-n,n,t,t-m,m); return 0; }
133 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 09:50:24 ] >>5 #include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct grade { char name[40]; int score; struct grade *next; } glist; glist *cons(glist car, glist *cdr) { glist *l; if( (l = malloc(sizeof(glist))) == NULL ) exit( EXIT_FAILURE ); sprintf(l->name, car.name); l->score = car.score; l->next = cdr; return l; } void printList(glist *ptr) { if(ptr == NULL) return; printf("p->name \t%s\n", ptr->name); printf("p->score\t%d\n", ptr->score); printf("p->next \t%p\n", ptr->next); printList(ptr->next); return; }
134 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 09:51:38 ] つづき int main(void) { glist a,b; glist *ptr; sprintf(a.name, "dummy"); a.score = -1; sprintf(b.name, "tsubasa"); b.score = 60; ptr = cons(b, NULL); ptr = cons(a, ptr); printList(ptr); return 0; }
135 名前:128 mailto:sage [2007/11/25(日) 11:00:53 ] >>130 >>131 よく読みなおしたら日本語おかしかった。ごめんなさい。 ファイルはもう.datファイルであるんですが、そこから0と1の数を数えて、 周期探し出すのがわからんのです。 お手数おかけしてすいません。
136 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 11:26:28 ] そのファイルがなければ探しようがないよ
137 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 11:30:02 ] >>135 圧縮したら対してサイズおおきくならないからうp
138 名前:デフォルトの名無しさん [2007/11/25(日) 11:51:20 ] [1] 授業単元プログラミングU [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5327.txt [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語: C言語 [4] 期限: 11/26 [5] その他の制限: 特になし
139 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 12:29:50 ] >>138 なんであだちゆみ?
140 名前:デフォルトの名無しさん [2007/11/25(日) 12:31:40 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 直交座標系の2点A, B のx 座標とy 座標をキーボードから入力し, 三角形OAB の面積を求めるプログラムを作成せよ.ただし点O は 原点(0, 0) とする. 点の名前,x 座標,y 座標を構造体のメンバとせよ. ポインタによる表現を使うこと. 面積を求めるには以下の公式を使うこと. 2点A (x1, y1),B (x2, y2) に対して,三角形の面積S は S =1/2|x1*y2 - x2*y1| [3] 環境 [3.1] OS:Unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: Cのみ [4] 期限: 2007/11/26 18:00 よろしくお願いします。
141 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 12:33:55 ] >>138 #include <stdio.h> #include <string.h> #define USER 5 #define NAME 100 int main() { int c,i,found=0; char m[NAME],n[NAME]; char a_name[USER][NAME]={"Takeuchi Yuko", "Yada Akiko", "Ogura Yuko", "Adachi Yumi", "Yumi Adachi"}; /* 登録済みのユーザのリスト */ /* ここにプログラムを書く */ while(1){ do{ printf("検索?(Y or N):"); fflush(stdin); }while((c=getchar())!='y'&&c!='Y'&&c!='n'&&c!='N'); if(c=='n'||c=='N') break; printf("名字:"); scanf("%s",m); printf("名前:"); scanf("%s",n);
142 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 12:34:27 ] >>140 の続き for(i=0;i<USER;i++){ if(strstr(a_name[i],m)!=NULL&&strstr(a_name[i],n)!=NULL){ printf("Hit! User#%d:[%s]\n",i,a_name[i]); found++; } } if(found==0) printf("入力されたユーザは登録されていません。\n"); else printf("%d件ユーザが見つかりました。\n",found); found=0; } printf("検索を終わります。\n"); return 0; }
143 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 12:35:02 ] >>142 は>>141 の続きの間違い。
144 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 12:53:33 ] >>138 >プログラミングU 進化したプログラミングか
145 名前:デフォルトの名無しさん [2007/11/25(日) 14:28:59 ] [1] 授業単元:暗号理論 [2] 問題文(含コード&リンク): 素数p.qに対してn=p*qが与えられている。 中国人剰余定理を応用して 任意のCとdに対して、modnでのC^dを求めるプログラムを作成せよ。 ヒント C^d mod n ≡ (C^d mod p,C^d mod q) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 明後日 [5] その他の制限:ポインタは習ってない お願いします。
146 名前:128 mailto:sage [2007/11/25(日) 15:00:08 ] >>136 >>137 圧縮してupすれば大丈夫でしたね・・・。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5328.zip この中の0と1の個数と、数列の周期を求めるプログラムをお願いします。
147 名前:コーンポタージュ [2007/11/25(日) 16:21:51 ] 【質問テンプレ】 [1] 授業単元:グラフ彩色問題 [2] 問題文 [2.1]グラフ彩色問題に対する近似解法SEQを作成せよ [2.2].頂点を次数の降順にソートした後にSEQを適用するプログラムを作成せよ [2.3]グラフ彩色問題に対する近似解法RLFを作成せよ ※検索エンジンで“グラフ彩色問題 SEQ”と入力して頂ければ、更に理解が深まるページが見つかるかと思います。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:2007年12月7日 [5] その他の制限:特にありません。 よろしくお願いします。
148 名前:もりもっこり [2007/11/25(日) 16:32:38 ] 基本的なプログラムだと思うのですが、自分でやってみてもうまくいきません。また他にも課題が多く、非常に困っています。詳しい方よろしくお願いします。 1.数値を順番に読み込んで二次元の配列に格納する。 2.その配列を画面に出力する。 3.次に、2つの整数を読み込む。 4.二次元配列のうち、読み込んだ整数に対応する二つの行(あるいは列)の内容を交換する。 配列の内容を画面に出力する。 5.配列の読み込み、交換、出力はそれぞれ関数にすること。
149 名前:KSCN [2007/11/25(日) 16:41:11 ] Mathematica でグラフを描き、EPS 形式で保存する。LaTeX を使ってレポートを作成してその中にグラフを挿入し、PDF ファイルに変換したものを提出すること。 っていう課題がでたのですが質問の意味からわかりません。どなたか質問の意味だけでも教えてください。
150 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 16:43:43 ] どうでもいいけど、名前を出す人の方が少ないんだから別人に見せようとしても逆効果だぞ
151 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 16:49:49 ] >>149 つwww.google.co.jp/
152 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 16:50:15 ] >>149 何がわからないのかがわからない。 1.クラスで使っているMathematicaというソフトを使って数式を処理してグラフ表示、グラフの画像をEPS形式のファイルに保存。 2.いつもやっているようにLatexでレポート作成。EPS形式ファイルの埋め込みに関しては、配布したテキストを参照の事。 3.pdflatexをつかってPDF形式のファイルを出力。 一通り説明されてるはずなのに、なんで分からないとか言ってんの? ずっとサボってたのか?
153 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 18:01:02 ] >>145 マルチ?( science6.2ch.net/test/read.cgi/math/1195081289/156 )
154 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 18:24:20 ] >>128 >>146 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5329.c 結果があってるかはわからんよ。 あと、文字列を数列に直すのは無駄だったから省略しちゃった。 どうしても直したければ、適当にやってくんろ。
155 名前:131 mailto:sage [2007/11/25(日) 19:42:04 ] >>154 自分の環境ではfscanfで32767文字までしか取得できなかったわけだが・・・ ファイルサイズは228793バイトあるわけで >>128 >>132 で答えたつもりだったんだけど間違ってたかな?
156 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 20:30:38 ] >>155 こっちの環境では問題なく scanf で取れたよ。 それ以上に、>>132 は O(n^2) だから、とても終わらないと思うけれど。
157 名前:156=154 mailto:sage [2007/11/25(日) 20:33:55 ] あ、こちらの環境は質問者にあわせて WindowsXP (cygwin) の gcc 。 質問者の環境で、これでうまくいかないようなら対処する。
158 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 20:48:56 ] >>153 プログラムがかけないのでお願いします
159 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 20:56:38 ] >>158 C, d, n, p, q として想定している桁数は? 任意桁なら、GMP の使用の可否は?
160 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 20:59:51 ] >>158 マルチ?って聞かれてそう答えるのって日本語不自由な人だよね。
161 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 21:04:14 ] >>160 留学生です
162 名前:デフォルトの名無しさん [2007/11/25(日) 21:14:03 ] [1] 授業単元: C言語基礎 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5330.txt [3] 環境 [3.1] OS: Windows [3.3] 言語: C言語 [4] 期限: 11月26日0時まで よろしくおねがいします
163 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 21:14:37 ] 帰れ
164 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 21:24:45 ] >>162 int dom[] = {-1,31,28,31,30,31,30,31,31,30,31,30,31}; void yesterday(int *y, int *m, int *d) { --*d; if (*d <= 0) *d = dom[--*m]; if (*m <= 0) --*y, *m = 12; } void tomorrow(int *y, int *m, int *d) { ++*d; if (*d > dom[*m]) *d = 1, ++*m; if (*m > 12) ++*y, *m = 1; } void sort3(int *n1, int *n2, int *n3) { int tmp; if (*n1 > *n2) tmp = *n1, *n1 = *n2, *n2 = tmp; if (*n2 > *n3) tmp = *n2, *n2 = *n3, *n3 = tmp; if (*n1 > *n2) tmp = *n1, *n1 = *n2, *n2 = tmp; }
165 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 21:47:29 ] >>116 当方で確認した環境は WindowsXP, 処理系は gcc 3.4.4 です。 (1) だけでもやってみました。とにかく初期値と収束解を出すだけのプログラムです。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5331.txt この結果をつらつら眺めると、次の関係があると推測できます。 初期値を x0, y0 とするとき、 1) y0 > x0 ならば、収束値は (x, y) = (-2, 2) 2) y0 < x0 ならば、収束値は (x, y) = (2, -2) 3) x0 = y0 ならば、ヤコビ行列の行列式が 0 となるので、収束しない。 初期値から近い方の解に収束するようです。 なお、問題の(2) は、どうもフラクタル図形を描くかと思われます。
166 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:04:40 ] >>116 M教授の課題だろ
167 名前:デフォルトの名無しさん [2007/11/25(日) 22:08:05 ] [1] 授業単元: C言語入門 [2] 問題文(含コード&リンク):(kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5332.txt ) [3] 環境 [3.1] OS: WindowsXP [3.3] 言語: C言語 [4] 期限: 明後日 [5] その他の制限: 今は配列のところを習っています。制限は特にないです。 お願いします
168 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:13:59 ] >>167 404
169 名前:デフォルトの名無しさん [2007/11/25(日) 22:24:46 ] 1から50までの数のうち、素数を表示するプログラムを教えてください。 #difineで50を定義するってのが条件です お願いします
170 名前:デフォルトの名無しさん [2007/11/25(日) 22:33:04 ] >>148 M教授の課題だろ。俺もわかんねえんだおしえてくれ
171 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:34:48 ] >>169 #include <stdio.h> #define 50 int main(void) { printf("2 3 5 7 11 13 17 19 23 29 31 37 41 43 47"); return 0; }
172 名前:>>169 [2007/11/25(日) 22:35:19 ] すみません。>>1 読んでませんでした 書き直します [1] C言語: [2] 1から50までの数のうち、素数を表示するプログラムを作成せよ。 #difineで50を定義せよ [3] 環境 [3.1] WindowsXP [3.2] Visual C++2005 [3.3] C [4] 期限:無期限 [5] 関数は使ってはいけない
173 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:37:23 ] >>172 >関数は使ってはいけない 本当にこう言われたのか?
174 名前:173 mailto:sage [2007/11/25(日) 22:39:11 ] >>173 すみません。違います 関数は使わなかったらできませんね(汗
175 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:40:05 ] ところで >>171 はスルーかね
176 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:40:57 ] あっ!#difineを使うのか!
177 名前:173 mailto:sage [2007/11/25(日) 22:41:37 ] あ、すまんです;; ありがとうございます。こんなやりかたもあるんですね
178 名前:173 mailto:sage [2007/11/25(日) 22:43:44 ] あとdefineですね。間違いだらけですみません
179 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:44:59 ] >>172 #define N 50 main() { int i, j; int primes[N]; for (i = 0; i < N; ++i) { primes[i] = i; } primes[1] = 0; for (i = 2; i*i < N; ++i) if (primes[i]) { for (j = i*i; j < N; j+=i) { primes[j] = 0; } } } for (i = 0; i < N; ++i) { if (primes[i]) { printf("%d ", primes[i]); } } }
180 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:47:39 ] >>179 最悪な方法に比べればましだけどまだしょっぱい。
181 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:47:48 ] >>172 #include <stdio.h> int main() { printf("2 3 5 7 11 13 17 19 23 29 31 37 41 43 47\n"); return 0; }
182 名前:173 mailto:sage [2007/11/25(日) 22:48:17 ] (汗
183 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:51:09 ] >>180 改善点があったら教えてください
184 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:52:10 ] >>172 #include <stdio.h> #include <stdlib.h> #define N 50 int main(void){ int border, i, k; char *num; border = N/2; if((num = malloc( N+1 )) == NULL)return -1; for(i=0; i<N; i++)num[i] = 1; i = 2; while(i <= border){ for(k=i*2; k<=N; k+=i)num[k] = 0; while(1){ i++; if(num[i])break; } } for(i=2; i<=N; i++)if(num[i])printf("%d ", i); free(num); return 0; }
185 名前:122 mailto:sage [2007/11/25(日) 22:53:42 ] >>119 >>129 ごめんなさい。訂正いたします。 なお、厳密には「有効桁数 4 桁で表示」っていうのは、このやり方ではうまくないです。 SEED に与える定数で、具合のいいものしか表示しないようにしています。すみません。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5333.txt
186 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:59:55 ] >>172 #include <stdio.h> int main() { int i,j,num[51]={0}; for (i=2 ; i<51 ; i++) { if (num[i]==0) { printf("%d\n", i); for (j=i ; j<51 ; j+=i) { num[j]=1; } } } return 0; }
187 名前:122 mailto:sage [2007/11/25(日) 23:00:07 ] >>119 >>129 訂正:具合のいいものを表示するように SEED の値を変えてください。 重ね重ねすみません。
188 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 23:04:03 ] >>186 //ちょっとだけ高速化 #include <stdio.h> int main() { int i,j,num[51]={0}; for (i=2 ; i*i<51 ; i++) { if (num[i]==0) { printf("%d\n", i); for (j=i ; j<51 ; j+=i) { num[j]=1; } } } for (i=2 ; i<51 ; i++) { if (num[i]==0) { printf("%d\n", i); } } return 0; }
189 名前:コーンポタージュ [2007/11/26(月) 00:15:01 ] >>147 ちなみにサンプルプログラムは以下の通りです。 /* グラフ彩色問題に対する近似解法(サンプルプログラム) */ #include <stdlib.h> #include <stdio.h> #include <time.h> #define MAX_N 2000 /* 最大の頂点数 */ int n; /* 頂点数 */ int m; /* 辺数 */ double x[MAX_N], y[MAX_N]; /* 各頂点の座標 */ int a[MAX_N][MAX_N]; /* 隣接行列 */ int color[MAX_N]; /* 色 */ int max_color; /* 最大の色番号 */ /* アルゴリズム本体 */ void sample(){ int i; for(i = 0; i < n; i++){ color[i] = i % 6; } }
190 名前:コーンポタージュ [2007/11/26(月) 00:15:42 ] /* メインプログラム */ int main(int argc, char *argv[]){ FILE *input_file, *output_file; double start_time, search_time; int i,j,k1,k2; /* 引数のチェック */ if(argc <= 1){ fprintf(stderr,"Please input the name of data file!\n"); exit(1); } /* 入力データの読み込み */ input_file = fopen(argv[1],"r"); fscanf(input_file, "%d %d\n",&n, &m); for(i = 0; i < n; i++){ fscanf(input_file,"%lf %lf\n",&(x[i]),&(y[i])); } for(i = 0; i < n; i++){ /* 隣接行列の初期化 */ for(j = 0; j < n; j++){ a[i][j] = 0; } } for(i = 0; i < m; i++){ fscanf(input_file,"%d %d\n",&k1,&k2); a[k1][k2] = a[k2][k1] = 1; }
191 名前:コーンポタージュ [2007/11/26(月) 00:16:16 ] /* 解の初期化 */ for(i = 0; i < n; i++){ color[i] = -1; } /* 入力データの表示 */ printf("n= %d\n",n); printf("m= %d\n",m); /* for(i = 0; i < n; i++){ printf("%f\t%f\n",x[i],y[i]); } for(i = 0; i < n; i++){ for(j = i+1; j < n; j++){ if(a[i][j] == TRUE){ printf("%d\t%d\n",i,j); } } } */ /* 開始時刻の設定 */ start_time = (double)clock()/CLOCKS_PER_SEC; /* アルゴリズム本体 */ sample();
192 名前:コーンポタージュ [2007/11/26(月) 00:16:50 ] /* 実行時間の測定 */ search_time = (double)clock()/CLOCKS_PER_SEC - start_time; /* 制約条件のチェック */ for(i = 0; i < n; i++){ if(color[i] == -1){ printf("No color is assigned!: %d\n",i); } } for(i = 0; i < n; i++){ for(j = i+1; j < n; j++){ if(a[i][j] == 1 && color[i] == color[j]){ printf("%d and %d have the same color %d!\n",i,j,color[i]); } } }
193 名前:コーンポタージュ [2007/11/26(月) 00:17:23 ] /* 入力データおよび解をファイルに出力 */ output_file = fopen("result.txt","w"); fprintf(output_file,"%d\t%d\n",n,m); for(i = 0; i < n; i++){ fprintf(output_file,"%f\t%f\n",x[i],y[i]); } for(i = 0; i < n; i++){ for(j = i+1; j < n; j++){ if(a[i][j] == 1){ fprintf(output_file,"%d\t%d\n",i,j); } } } for(i = 0; i < n; i++){ fprintf(output_file, "%d\n",color[i]); }
194 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:18:48 ] レスを跨るようならアップローダを使ってくれないかな。
195 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:26:22 ] アップローダなら半角スペースが残るので、カットアンドペーストできれいなソースが手元にわたりますし。
196 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:30:38 ] どこの誰が管理してるかわからないようなものを使えるか!
197 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:36:13 ] ん、それもそうですね。でもアップローダ経由じゃないソースは 私は基本的にはみません。だってめんどくさいから。
198 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:41:44 ] 1レス内に自然に入るなら入れて欲しいけどね。空白を 置換して。
199 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:51:45 ] 新しい宿題のネタになりますでしょうーか。< 変換
200 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:56:28 ] sed -e 's/&/\&/g' -e 's/^ /\ /g' -e 's/ / \ /g' -e 's/</\</g' -e 's/>/\>/g'
201 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:15:24 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):() ===memo.txt=== DATA52/a DATA52/u DATA52/chi ============= とかかれたmemo.txtのファイルがあるとして そのファイルを読み込み"DATA52/"という 文字列を取り除く. 次にa,u,chiをくっつけてauchiとして表示せよ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 11/26 12:00 [5] その他の制限: ちなみに構造体配列を使い、struct tfield tdata[1]を宣言し tdata[0].filenameに"memo.txt"を格納しているとする。 そのmemo.txtをよみこみ処理してtdata[0].wordとして"auchi"を表示してほしいです。 メンバのfilename,wordはchar型です
202 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:17:18 ] >>184 これは不思議。 アルゴリズムの名前とかある?
203 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:20:40 ] >>202 エラトステネスのふるい
204 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:26:06 ] >>203 まじか……。 調べる数をリストとして扱うと、こういう処理になるのか。
205 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 07:30:51 ] ちょ、ふるいってプログラムで素数求めるときに必ずやるもんだろw
206 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 08:16:47 ] 確かに出てくる確率は多いけど、 ただ単に素数を求めるプログラムを作れって言われたら、 エラトステネスを思いつかなければ、別の手段を使うだろ。
207 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 08:20:35 ] 可能性ではなく、教養として知っておくべきだろうな。 教養なんて高尚なもんでもない。常識だ。
208 名前:デフォルトの名無しさん [2007/11/26(月) 08:21:07 ] [1] 授業単元: プログラム数学 [2] 問題文(含コード&リンク):sinx は x - x**3/3! + x**5/5! -x**7/7! + ---- (1) と級数展開される. 式(1)で7項まで取った場合と組み込み関数で求めたsinxの値の差を, 0度から360度まで,プログラムを作成して求めろ 注意1:式(1)をプログラム化する際に,定義関数を利用し,項数と角度を渡すと値を返すような関数 を作成のこと. [3] 環境 [3.1] OS:windowsXP [3.2] コンパイラ名とバージョン: bcpad [3.3] 言語: C++ [4] 期限: 11月26日12:00 [5] その他の制限: 特にありませんが定義関数を使うようです お願いします
209 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 08:37:54 ] >>205 ごめん俺、確率的判定アルゴリズムしか知らない・・・ こういう演習で確率的アルゴリズム書いて提出するとどうなるんだろうな
210 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 08:56:55 ] #Define Pi 3.14 double series_sin(double degree,int num){ double radian=degree * Pi/180; double tmp=0; for(int i=1;i<=num;i++ ){ tmp+=Pow(-1,i+1)*Pow(radian,i*2-1)/Factorial(i*2-1); } return tmp; } テストも糞も無いけどこれを修正してmath.hのSinと比べればOK factorialの演算子がC++にあるかどうかは分からんので。
211 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 09:15:06 ] >>145 何を求める問題なのかがさっぱり分からないから 問題を書き直したほうがいい
212 名前:デフォルトの名無しさん [2007/11/26(月) 10:28:06 ] 期限過ぎちゃいましたけど、 >47お願いします。
213 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 11:51:43 ] >>209 なんで謝るの?
214 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 14:12:00 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5335.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: なし [5] その他の制限:なし
215 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 15:42:30 ] >>214 #include <stdio.h> #include <time.h> void gput(const char *s, int speed) { clock_t c; while(*s) { putchar(*s++); c = clock(); while(clock() - c < speed); } }
216 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 15:53:26 ] [1] 授業単元: プログラミング [2] 問題文 数字の点数を読んで、クラスの平均点、最低点と最高点を求めるプログラムを書け [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: 不明 [3.3] 言語: C#なんだけど、ほかのスレタイ調べても頼めないからみんなたのむ。 [4] 期限: 今週の金曜 [5] その他の制限:結構レベルが低いので複雑なプログラムはご遠慮願います。
217 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 16:20:24 ] #include<stdio.h> int main(){ int n; printf("数字の点数を入力してください ",n); scanf("%d",&n); printf("平均点 %d\n",n); printf("最低点 %d\n",n); printf("最高点 %d\n",n); return 0; }
218 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 16:28:01 ] int ClassMenberNum = 1;
219 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 16:48:02 ] >>214 while(clock() - c < speed); → while(1000*(clock() - c) / CLOCK_PER_SEC < speed);
220 名前:学生 [2007/11/26(月) 16:50:23 ] 大学の授業で課題が出ました。初めてプログラミングやるので分かりません。 お願いします。自分は全くの初心者ですお願いします。 【C言語・質問】 以下、課題です。 @課題内容 駐車場のシュミュレーション・課題先リンク www.trpt.cst.nihon-u.ac.jp/processing/2006/parking.html ※貴方自身がコンビニやパチンコ店の管理者となり、 イメージして以下の条件は各自自由な値としてよい。 ・駐車場の台数 ・平均駐車時間(s) ・駐車時間の標準偏差(s)・駐車車両発生条件(開始時間 s ) ・その時間における発生確率(台/s)・駐車車両発生条件(中間時間 s ) ・その時間における発生確率(台/s) 例:パチンコ店 駐車場の台数=200台 来店頻度=400秒に1台 平均駐車時間=120分 等 上記の設定で、グラフも出る様にすること。 A課題の参考場所 www.trpt.cst.nihon-u.ac.jp/processing/parkingsim.c 上記の言語がベースになる様です。
221 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 16:53:28 ] >>220 ログインできないのでユーザー名とパスワードを教えてください。
222 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 16:54:27 ] >>220 >>1 のテンプレに則ってください
223 名前:学生 [2007/11/26(月) 16:57:21 ] >>221 すみません ユーザー:1424 PASS:1424 両方同じです。 >>222 すみませんでした。以後注意します
224 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 16:57:39 ] >>215 >>219 ありがとう!助かります!
225 名前:学生 [2007/11/26(月) 17:08:27 ] テンプレに沿って書き直しました。 [1] 授業単元:情報処理 [2] 問題文:上記に掲載しました。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: bcPad [3.3] 言語: C言語 [4] 期限:本日中 [5] その他の制限: 自分はプログラミング素人です。各文字の意味は知っています
226 名前:デフォルトの名無しさん [2007/11/26(月) 17:08:48 ] [1] 授業単元:C言語(システムコール) [2] 問題文(含コード&リンク): 10から0までの整数を1秒ごとに表示する親プロセスと子プロセスを生成しなさい。 備考 ・fork() を用いること ・getpid() を用いて、親プロセスと子プロセスのプロセスIDを表示すること ・wait() を親プロセスで用いない場合と用いた場合を作成すること [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: なし [5] その他の制限: なし
227 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 17:10:30 ] >>223 大学の鯖に入れって事だろ? なんか、ギリギリアウトな気がするんだが・・・w
228 名前:学生 [2007/11/26(月) 17:12:26 ] >>227 大丈夫です。過去にも依頼した事がありあす。 このページ作っているのは大学院生です。見ていません
229 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 17:18:01 ] すげぇなぁ、おいw
230 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 17:19:11 ] 基本技術者試験とかの設問で、不正アクセスになるのはどれか? という選択肢にありそうだなw
231 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 17:25:44 ] 不正アクセスでタイーホ
232 名前:学生 [2007/11/26(月) 17:26:50 ] >>230 多分不二家ですねw 大学の鯖は、情報処理を履修している学生200名が利用していますよ
233 名前:デフォルトの名無し [2007/11/26(月) 17:44:19 ] [1] 授業単元: プログラム演習 [2] 問題文:入力された正の2整数の最大公約数と最小公倍数を算出する。 1(異常) ・キーボードからの入力が空の場合は処理を終了する。 ・キーボードからの最大入力桁数は4バイトとする。 ・キーボードからの入力が4バイトを超える場合は処理を終了する。 ・キーボードからの入力が正の整数に変換できない場合は処理を終了する エラーメッセージ 未入力 :入力されていません、桁あふれ:4文字以下で入力してください、数値以外:半角数字以外入力できません、ゼロ入力:0は入力できません 文字列を正数に変換する関数はatoiを使用。 引数 char data[] 文字列 戻り値 : 正数 エラー値 -1 未入力 -2 桁あふれ -3 数値以外-4 ゼロ入力 最大公約数を算出の関数名はgcdでユークリッドの互除法を使用。 引数 int data1 データ1 int data2 データ2 戻り値 : 最大公約数 最小公倍数を算出する関数名はlcm。最小公倍数を算出する際、最大公約数の関数を使用する。 引数 int data1 データ1 int data2 データ2 戻り値 : 最小公倍数 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 11・27まで [5] その他の制限: なし
234 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 18:34:03 ] >>232 利用者は関係なくてだね アクセス制限してる以上、君が公開したところで罪になるのは見た人なんだよ
235 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 19:27:26 ] 好奇心から侵入してしまった俺は2chの歴史に刻まれるのか
236 名前:デフォルトの名無し [2007/11/26(月) 19:36:51 ] 1] 授業単元: ぷろぐらむ [2] 問題文:入力された「対象文字列(s)」の中から、「検索文字列(t)」を検索し、 該当した「対象文字列」の添字を戻り値とする関数「search(s,t)」を作成しなさい。 ただし、「対象文字列」が「検索文字列」を含まない場合には「-1」を戻り値とする。 なお、関数「search(s,t)」は別ファイルに分け(main関数とそれ以外の関数)、 分割コンパイルできるように作成しなさい。 このとき、main関数以外の関数宣言が記述されたヘッダファイルを作成し、 main関数のソースファイルにて利用すること。 (例) 以下の値で動作した場合は、「3」を返す。 文字列s = “aababcbaa” 文字列t = “abc” 入力は最大128バイトとする。128バイトを超える入力があった場合は処理を終了する [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限:11月27日まで [5] その他の制限: なし
237 名前:デフォルトの名無し [2007/11/26(月) 19:44:50 ] 1] 授業単元: プログラミング言語 [2] 問題文:与えられた数字文字列を数値(int型)へ変換する関数 AsciiToIntを、ポインタを使用して作成せよ。 さらに、この関数を使用し、入力された文字列が実際に数値変換されたことを確認するプログラムを作成せよ。 引数 char *s 文字列のポインタ int *value 変換結果 戻り値 : 結果 文字列が空または8桁以上の場合はエラー値を返す。 文字列が数値に変換できない場合はエラー値を返す。 処理手順 文字列が空または8桁以上の場合はエラー値を返す。 先頭の文字列が符号+/-の場合、それを取り除いた文字列をチェック対象とする。 文字列の桁数を取得。 文字列を読み込んで、以下の処理を行う。 先頭文字列が+/-の場合は、符号情報を保持しておく。また、桁数が1の場合は、エラー値を返す。 ASCIIコードを使用し文字列をチェックし、数値以外であった場合はエラー値を返す。 取得した入力文字列の桁数、読み込んだ数値とその桁数より、数値計算を行う。 計算した結果を合計値に加算する。 入力値がマイナスであった場合、合計値に符号を付加する。 合計値を返す。場合は、エラー値を返す。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C言語 [4] 期限: 11/27 [5] その他の制限:なし
238 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 21:16:55 ] >>216 「読む」の意味がいまいちわからないけどこんなんかな using System; class Sample{ public static void Main(){ int[] point = new int[5]; int max=int.MinValue, min=int.MaxValue; double avg=0.0; try{ for(int i=0; i<5; i++){ Console.Write("{0}人目の得点->", i+1); point[i] = int.Parse(Console.ReadLine()); } for(int i=0; i<5; i++){ if(max < point[i]) max = point[i]; if(min > point[i]) min = point[i]; avg += point[i]; } Console.WriteLine("最高点:{0}点\n最低点:{1}点\n平均点:{2}点", max, min, avg/5); } catch{ Console.WriteLine("なんか例外"); } } }
239 名前:デフォルトの名無しさん [2007/11/26(月) 21:18:15 ] [1] 授業単元プログラミング [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5336.txt [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語: C言語 [4] 期限: 11/27 [5] その他の制限: 特になし
240 名前:デフォルトの名無しさん [2007/11/26(月) 21:25:29 ] (1)C言語 (2)問題 ・与えられた個数の正の整数を格納している配列のうち、最大となる値を検出して、その値を 格納している配列要素の値を0に書き換える。すると新しい配列においては、もとの配列で 大きい方から数えて2番目の数値が最大値となっている。さらにもう一度、この新しい配列 における最大値を格納している配列要素の値を0に書き換える。するとこの時点でのさらに 新しい配列では、最初の配列において大きい方から数えて3番目の数値が最大となってい る。このことを利用して、下記のプログラムを作成せよ。 (ここで示した方法は、いわゆる整列(ソーティング)問題の1つの解法となり得るが、効率的 な方法ではない) まずメイン関数において、キーボードから正の整数の個数(100以内)を入力し、次いで実 際の数値を配列に入力する。そしてメイン関数はサブ関数に、入力した個数と配列を引数とし て渡す。 サブ関数は、これらの配列から、まず1番目に大きい数を見つけて、それを別途設けた配列 の先頭の要素に格納し、次に2番目に大きい数を見つけてこれをこの配列の先頭から数えて 2番目の要素に格納し、という処理を最後の数に至るまで繰り返す。これにより新しい配列に は大きい数から順に並んでいることになるので、これを引数を利用してメイン関数に渡す。(す なわちサブ関数は引数を3つ持つことになる。1つはデータの個数を示す変数、1つは入力デ ータを格納する配列、残りの1つはサブ関数で計算した結果を格納する配列である) 最後にメイン関数はサブ関数で計算された新配列の値を若い方の要素から順に(即ち大き い数から順に)画面に表示する。またこの数列の中央値を表示する(中央値に小数が含まれ る場合は、その小数を切り捨てた整数を表示することとする)。 (3)環境 (3.1) OS:Windows (3.2)コンパイラ名とバージョン: 不明 (3.3) (3.4)C言語 (4)期限 :11月30日 (5)基礎的なことしか習っていないのですがよろしくお願いします。
241 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 21:35:49 ] >>236 関数だけ作った #include <string.h> int search(const char *s, const char *t); int search(const char *s, const char *t){ char *p; p = strstr(s, t); if(p == NULL)return -1; return p-s; }
242 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 21:41:55 ] >>241 >入力は最大128バイトとする。128バイトを超える入力があった場合は処理を終了する この部分の仕様を満たしてなくね? if ( strlen( s ) > 128 ) exit( 0 );とか追加すればいいだけど。
243 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 21:44:04 ] >>242 何ぃ!その部分はmain側だと思ってた! じゃあそれつけといて下さい
244 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:08:23 ] >>237 関数だけ作った valueの使い道がわからなかった #include <stdio.h> #include <string.h> #define ERROR_INT 100000000 int AsciiToInt(char *s, int *value){ int calc = 1, cnt, i, ans=0; cnt = strlen(s); if(cnt > 8 || cnt <= 0)return ERROR_INT; if(*s=='+' || *s=='-'){ calc = *s=='+' ? 1 : -1; s++; cnt--; } if(cnt <= 0)return ERROR_INT; for(i=0; i<cnt; i++){ if(strchr("0123456789", s[i]) == NULL)return ERROR_INT; ans = ans*10 + s[i]-'0'; } return ans * calc; }
245 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:20:15 ] >>244 valueに値を格納して返す値は正常or変換結果じゃないか? 「変換結果を返す」ってあるけど、普通は正常or異常を返して 正常ならvalueに変換された値が格納されているって感じだな。
246 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:25:25 ] >>240 #include <stdio.h> #define N 10 void subfunc(int cnt, int *num, int *ans){ int i, k, pos; for(i=0; i<cnt; i++){ for(k=1, pos=0; k<cnt; k++){ if(num[pos] < num[k])pos = k; } ans[i] = num[pos]; num[pos] = 0; } } int main(void){ int i, num[N], ans[N], sum=0; for(i=0; i<N; i++){ printf("%d個目->", i+1); scanf("%d", &num[i]); } subfunc(N, num, ans); for(i=0; i<N; i++){ printf("%d ", ans[i]); sum += ans[i]; } printf("\n中央値:%d\n", sum/N); return 0; }
247 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:39:13 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): www.vipper.org/vip677010.txt "sample.txt"というファイルを読み込み、グラフにしたとき山になる点を順番と大きさを"result.txt"に出力するプログラムを書け。 ファイルオープンに失敗した場合は失敗した旨を表示させること。 ※[3, 10] [6, 6] [9, 9] をresult.txtに出力できるようになればいいみたいです。 [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: VisualC++2005ExpressEdition [3.3] 言語: C [4] 期限: 11/27 [5] その他の制限:とくになし よろしくお願いします。
248 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 23:24:31 ] >>233 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5339.txt
249 名前:デフォルトの名無しさん [2007/11/26(月) 23:25:04 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): (1)malloc()を用いて元のリストの構造をコピーしたリストを返すプログラム ※再帰的なプログラムをすること。以下を使用。 MyList *cpMyList(MyList *ptr); (2)malloc()を用いて元のリストの先頭からn個のnodeをコピーしたリストを 返すプログラム ※nがリスト長より長いときにはそこまでの長さんのリストを返せばよい ※再帰的なプログラムにすること。 MyList *cpnMyList(MyList *ptr, int n); (3)malloc()を用いて与えられた二つのリストをつなげたリストを返すプログラム MyList *mergeMyList(MyList *ptr1, MyList *ptr2); ----------------------------------------- 冒頭は以下を使用 #include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct node { int data; struct node *next; } MyList; [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 11/28 なにとぞ、よろしくお願いします。。
250 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 23:29:37 ] ↓第1回、国際ニコニコ映画祭 大賞作品 www.nicovideo.jp/watch/sm1493205 はっきりいって糞暴力動画 これでいいのか?ニコニコ動画!??
251 名前:128 mailto:sage [2007/11/26(月) 23:47:54 ] >>131 >>154 >>132 のでは実行してもなぜか何も表示されませんでした。 自分の環境では>>154 のプログラムで正しい答えが出ました。 ありがとうございました。 あと数列に直すために色々試したのですができません・・・ これもお願いしていいでしょうか?
252 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 23:52:10 ] よくあんな巨大配列で動いたもんだ
253 名前:コーンポタージュ [2007/11/27(火) 00:40:29 ] >>147 追加・変更があるので、改めて掲載します。 【質問テンプレ】 [1] 授業単元:グラフ彩色問題 [2] 問題文 [2.1]グラフ彩色問題に対する近似解法SEQを作成せよ [2.2].頂点を次数の降順にソートした後にSEQを適用するプログラムを作成せよ [2.3]グラフ彩色問題に対する近似解法RLFを作成せよ 問題の詳細(pdfなので少々重いです。最後の方のプログラミング課題です) www-2ch.net:8080/up/download/1196004537765593.vEHtcV サンプルプログラム(これを参考にプログラムを解くそうです) www-2ch.net:8080/up/download/1196004323585273.o4l1bm [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:2007年12月7日 [5] その他の制限:特にありません。 よろしくお願いします。
254 名前:デフォルトの名無しさん [2007/11/27(火) 00:42:17 ] >>249 はいよっと、一応条件満たしてると思うけど MyList *cpMyList(MyList *ptr) { MyList* pRet; if(!ptr) return NULL; pRet = malloc(sizeof(MyList)); memcpy(pRet, ptr, sizeof(MyList)); pRet->next = cpMyList(pRet->next); return pRet; } MyList *cpnMyList(MyList *ptr, int n) { MyList* pRet; if(!ptr || n==0) return NULL; pRet = malloc(sizeof(MyList)); memcpy(pRet, ptr, sizeof(MyList)); pRet->next = cpnMyList(pRet->next, n-1); return pRet; }
255 名前:デフォルトの名無しさん [2007/11/27(火) 00:42:58 ] >>249 マージする部分ね MyList *mergeMyList(MyList *ptr1, MyList *ptr2) { MyList* pRet; MyList* pIdx; if(!ptr1) return cpMyList(ptr2); pRet = cpMyList(ptr1); pIdx = pRet; while(pIdx->next) pIdx = pIdx->next; pIdx->next = cpMyList(ptr2); return pRet; }
256 名前:デフォルトの名無しさん [2007/11/27(火) 00:51:55 ] >>249 うっぷろーだがあったんだ、こっちに上げといた kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5340.txt
257 名前:216 mailto:sage [2007/11/27(火) 01:33:08 ] >>238 すまない・・・せっかくといてもらったんだけど、CじゃなくてC#なんだ・・・。 スレッド自体はCかC++なんだけど、 C#のスレッドがなくてここの住人に頼るしかなくてね・・・。
258 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 01:45:34 ] >>247 #include <stdio.h> main() { int x , y, old_x = 0, old_y = 0, a = 0; char line[1000]; FILE *fin,*fout; if((fin=fopen("sample.txt","r"))==NULL){ printf("sample.txt can't open.\n"); exit(1); } if((fout=fopen("result.txt","w"))==NULL){ printf("result.txt can't open.\n"); exit(1); } while(fgets(line,1000,fin)!=NULL){ sscanf(line,"%d,%d",&x,&y); if(y - old_y >= 0){ old_x = x; old_y = y; a = 1; }else{ if (a == 1){ fprintf(fout,"[%d,%d]\n",old_x,old_y); } old_x = x; old_y = y; a = 0; } } fclose(fin); fclose(fout); }
259 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 01:59:18 ] >>257 大丈夫か?>>238 はcscでコンパイル・実行可能だぞ?
260 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 02:04:02 ] >>257 むしろ、C/C++じゃコンパイルすら通らないと思うんだが
261 名前:デフォルトの名無しさん [2007/11/27(火) 02:43:36 ] >>254 >>255 >>256 さん ありがとー!!助かります!
262 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 02:48:59 ] 次スレからはスレタイにC#も入れとこう。
263 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 03:05:38 ] >>258 ありがとうございました。
264 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 09:17:17 ] >>220 これは善意の人間を犯罪者にするかのような誘導。 不正アクセスに繋がるから、このページに行く必要は全く無い。
265 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 09:38:45 ] >当該アクセス管理者若しくは当該利用権者の承諾を得てする場合は、この限りでない。 正規の利用者からパスワード教えられてアクセスする場合って 不正アクセスになるんだっけ?法律にはうといからよくわからん・・・
266 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 09:51:00 ] >>265 そもそも>>220 が正規利用者だという確証は一つも無い。 下手をするとhackingを行った犯罪者だということすら考えられる。 そしてそのhackerからpassを教えてもらってアクセスすれば、 我々は立派な犯罪者になってしまう。
267 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 10:02:58 ] 故意かどうかって関係ないんだっけ? まぁアクセスしないのが一番確実だけど。
268 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 10:17:33 ] >>220 が、そのIDとパスワードの所持者"本人"であれば、以下の法律 不正アクセス行為の禁止等に関する法律 law.e-gov.go.jp/htmldata/H11/H11HO128.html 第四条に該当し"許可を得た"ということになるんだが、本人であるという証明がなされていない。 2ちゃんねるにパスワードを掲載する=Web検索のロボットにキャッシュされる。 それと、ログインした人間のIPや環境情報はサーバーログを見ればすぐに判る。 管理していないとしても、しっかり残るので後で掘り返すことが可能。 逮捕者の実例 News:速報:“2ちゃんねらー”6人逮捕,不正アクセスで www.itmedia.co.jp/news/bursts/0109/27/2ch.html 第3者が"権利者の許可なく"そのパスワードでログインした場合は不正アクセス。
269 名前:デフォルトの名無しさん [2007/11/27(火) 10:42:40 ] [-3、3] fx=1/(1+5X^2) 分点10 (n=9) この条件を使ってラグランジュ補間のプログラムを作れって問題なんですけどさっぱりです。ちなみにC言語です
270 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 10:44:38 ] >>269 とりあえず>>1 にテンプレートという便利なモノがあるからそれを大いに活用したほうが良い
271 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:16:08 ] >>253 せめて問題例データくらい作って置いたらどうかな 頂点10で辺数27でしょ、PG作ってデータまで作るとなると、相当な暇人でもやらんと思う
272 名前:デフォルトの名無しさん [2007/11/27(火) 11:16:32 ] >>270 OSはLinux 知識はCとC++なら多少は分かる とにかく提出したらいいので多少自己流で解かれても大丈夫です
273 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:17:46 ] >>272 質問の仕方も自己流にこだわるのかw
274 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:31:34 ] 数式も自己流だしなあ。せめて人に通じる式で書こうよ。
275 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:48:09 ] >>269 ラグランジュ補間は、本来、N点のデータが与えられた時、 それらの点を繋ぐことのできるxの多項式の係数を求めるという方法です。 プログラミング以前に、数学的な理解がおろそかだと思われます。 もっと言うと、補間に関するソースは至る所に掲載されています。 それを用いれば簡単に目的は達成できます。
276 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:48:56 ] え、あれで通じないとは、どんだけ数学弱者なんだよ 俺は解かないけど。
277 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:53:03 ] >>276 そこまで言ったら解いてやれよw
278 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:02:55 ] >>277 どこがわかんないか質問してくれれば、その回答はするよ
279 名前:デフォルトの名無しさん [2007/11/27(火) 12:12:41 ] 要は難しすぎて僕らには解けません。僕らがわかるのは文字の出力だけです。参りました。
280 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:30:53 ] >>272 には是非そのままの態度で自分の求める解答を引き出すテクニックを見せてもらいたい
281 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:35:37 ] つまり>>269 は、与えられたfxと範囲から10個の点をまず生成して、 その生成された点からラグランジュ補間を行うxの多項式の係数を求め、 元のfxと比較しろという問題なのか?
282 名前:デフォルトの名無しさん [2007/11/27(火) 12:37:24 ] [授業単元]プログラミング [問題文] #include <stdio.h> #include <math.h> #define EPS 1e-7 /* 収束判定の許容誤差ε */ /* ★ 関数 f(x) とその導関数 df(x) を定義する*/ int main() { int n; double x, y; printf("n x f(x)\n"); printf("--- ---------- ----------\n"); n = 0; x = /* ★ 初期値を設定 */ y = f(x); printf("%3d %10.7f %10.7f\n", n, x, y); while (/* ★ |f(x)|<ε となったとき終了 */) { /* ★ 途中の計算結果も出力するように、適切な位置に printf 文を追加せよ */ n++; x = /* ★ ニュートン・ラフソン法の漸化式 */ y = f(x); } return 0; } /* end of kadai_8_sample.c */ 方程式 x^3 = 2 の解をニュートンラフソン法で求めよ。 収束判定は |x^3 - 2|<10^-7 とする。 初期値は各自で決める [os] linux [言語] c [期限]本日14:00 宜しくお願いします
283 名前:デフォルトの名無しさん [2007/11/27(火) 12:44:23 ] ごめん。俺が間違ってたわ。もういいわ
284 名前:デフォルトの名無しさん [2007/11/27(火) 12:52:30 ] m < 30000 、n< 16 が与えられたとき、mがnで割り切れるか調べるプログラム ただし、/や%や10回以上のループは使えない
285 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:54:59 ] >>284 mの因数分解表をあらかじめ作っておいて判定する
286 名前:デフォルトの名無しさん [2007/11/27(火) 12:55:16 ] 訂正 m < 30000 、n< 16 が与えられたとき、mがnで割り切れるか調べるプログラム ただし、/や%や16回以上のループは使えない
287 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:57:28 ] 別にループが使えないならループを展開しとけば良いだろ
288 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:59:47 ] >>286 2 ・・・ 一の位が2の倍数 3 ・・・ 各位の数の和が3の倍数 4 ・・・ ・ 下二桁が4の倍数 ・ 一の位を2で割った数を十の位に足した数が偶数 5 ・・・ 一の位が5の倍数 6 ・・・ 2かつ3の倍数 7 ・・・ 3桁毎に交互に足したり引いたりしてできた数が7の倍数 8 ・・・ ・ 下3桁が8の倍数 ・ 一の位を2で割り十の位に足して2で割った数を百の位に足した数が偶数 9 ・・・ 各位の数の和が9の倍数 10 ・・・ 一の位が0 11 ・・・ 各位の数を交互に足したり引いたりしてできた数が11の倍数 12 ・・・ 3かつ4の倍数 13 ・・・ 7の倍数の判定と同じ 14 ・・・ 2かつ7の倍数 15 ・・・ 3かつ5の倍数 16 ・・・ 下4桁を2で割った数が8の倍数(下4桁を4で割った数が4の倍数 ttp://www004.upp.so-net.ne.jp/s_honma/number/multiple.htm
289 名前:デフォルトの名無しさん [2007/11/27(火) 13:01:44 ] >>288 各位って10進数ですよね どうやってその値をゲットするんですか
290 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:04:47 ] >>289 Cの文字列で一文字ずつmを取得する
291 名前:デフォルトの名無しさん [2007/11/27(火) 13:07:32 ] >>290 整数を文字列に変換する関数とかは使わないで下さい
292 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:10:01 ] >>291 は?後付してんじゃねえよ
293 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:12:38 ] 最初から誤解の余地が無い言い方で訊けってのは無茶だろ。 問題に対する疑問に答える過程で条件を追加するのは当然のことだと思うが。
294 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:13:23 ] 文字列で受け取って、「文字のまま」演算を行うようなプログラムを書けばいい。 たとえば、tasu('A', 'B')の戻り値が'C'になるとか、 kakeru('A', 'B')は'B'とか。
295 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:13:51 ] テンプレに制限やら書く所まであるのに、完全に無視してそれか? とっとと帰れ帰れ
296 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:16:36 ] テンプレの利用は任意だ。 そもそも、答えたくないならお前が黙って帰れよ。
297 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:20:28 ] だから、文字のまま判定を行うプログラムを書く。そうすれば10進数の演算と同じ。 例えば tasu(char a, char b) なら、 if ((a=='A' && a=='B') || (a=='B' && a=='A')) return 'C'; っていう式を延々と書けば、これは10進数の演算と全く同じになる。
298 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:21:20 ] #include<stdio.h> int mod(int m, int n) { int i, num[16]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768}; if(m<0 || n<0) return -1; for(i=16-1;i>=0;i--) if(m>=num[i]*n) m-=num[i]*n; return m; } int main(void) { mod(20000, 15); return 0; }
299 名前:デフォルトの名無しさん [2007/11/27(火) 13:26:53 ] >>298 サンクス
300 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:33:25 ] >>284 = >>296 = >>298 = >>299
301 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:50:54 ] >>300 残念、>>296 だけ俺だ。
302 名前:コーンポタージュ [2007/11/27(火) 15:11:18 ] >>253 問題例 頂点i に色i mod 6 を割当てるプログラム •ランダム幾何グラフUn,d を作成 •頂点数n,パラメータd を入力とし,単位正方形[0,1]2内に一様かつ独立にn 個の頂点をランダムに分布させ,距離がd 以下の2頂点間に辺を結ぶ •各頂点の平均次数がnπd2となることが知られている 問題例のプログラム www-2ch.net:8080/up/download/1196004323585273.o4l1bm
303 名前:デフォルトの名無しさん [2007/11/27(火) 15:26:14 ] うわぁ糞スレ ニート風情が偉そうにε−(´・`)
304 名前:デフォルトの名無しさん [2007/11/27(火) 15:31:12 ] 【質問テンプレ】 [1] 授業単元:プログラム言語2 [2] 問題文:課題A で作成したプログラムを以下のように修正する. * gcc kadai08b.c でコンパイルすると5パーセントの商品価格だけ表示される. * gcc -DZEI=*** kadai08b.c でコンパイルすると***パーセントの商品価格だけ表示される. * gcc -DDEBUG kadai08b.c でコンパイルすると5パーセントの消費税と商品価格が表示される #include <stdio.h> #include <stdlib.h> #define a 5 #define TAX(x,y) (x+y)*a/100 #define PRICE(x,y) (x+y)+(x+y)*a/100 int main(void) { int x,y; printf("tax of x+y %d \n", TAX(x,y)); scanf("%d",&x); printf("lnput an integer y:"); scanf("%d",&x); printf("tax of x+y: %d \n",); printf("price of x+y %d \n", PRICE(x,y)); return0; } [3] 環境 [3.1] OS: (Linux/) [3.2] コンパイラ名とバージョン: (gcc) [3.3] 言語: (C) [4] 期限: ([2007年11月28日まで] [5] その他の制限: (Cプリプロセッサぐらいまで) 課題Aはなんとか出来ましたが、課題Bがわからないので、宣しくお願いします。 貼りつけたプログラムは、課題Aが完成したものです。
305 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 15:40:23 ] >>304 ついでにいろいろ修正した。 #include <stdio.h> #include <stdlib.h> #ifdef ZEI # define a ZEI #else # define a 5 #endif #define TAX(x,y) (x+y)*a/100 #define PRICE(x,y) (x+y)+(x+y)*a/100 int main(void) { int x,y; printf("lnput an integer x:"); scanf("%d",&x); printf("lnput an integer y:"); scanf("%d",&y); #ifdef DEBUG printf("tax of x+y %d \n", TAX(x,y)); #endif printf("price of x+y %d \n", PRICE(x,y)); return 0; }
306 名前:デフォルトの名無しさん [2007/11/27(火) 15:54:20 ] 修正までありがとうございました。 本当に助かりました。 またの機会がありましたら、よろしくお願いします。
307 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:08:10 ] [1] 授業単元: C言語 [2] 問題文: 1.正三角形の面積を求めるマクロ定義を作る。一辺の長さをaとする 2.課題1で作ったマクロを使って、1辺の長さが5mの正三角形の面積を求めるプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual C++2005 [3.3] 言語:C [4] 期限:11月28日午後10時まで [5] その他の制限:特にありません。 よろしくお願いします
308 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:23:12 ] [1] 授業単元:C言語基礎 [2] 問題文(含コード&リンク):色々な整数値a,bに対してtを媒介変数として、 座標がx=cos(2πat)、y=sin(2πbt)であらわされる曲線を描くリサージュ関数を作成しなさい。 [3] 環境 [3.1] OS: Windows [3.2] Astex(?) [3.3] 言語:C [4] 期限: 2007/11/29 19時 [5] その他の制限: 配列・ポインタの使い方、簡単な数式の入力まで習いました。 どこから手をつけてよいか分かりません。お力添え頂ければと思います。
309 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:24:47 ] >>307 #include <stdio.h> #define TRI(a) ((a)*(a)*1.7320508/4.0) int main( ){ return printf( "%lf\n", TRI(5)); }
310 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:32:04 ] [1] 授業単元: C言語 [2] 問題文:入力された文字列のそれぞれの文字をカウントし、出現回数と生起確率を表示させよ。 またそのエントロピーも表示させよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual C++ 6.0 [3.3] 言語:C [4] 期限:11月28日午前2時まで。 [5] その他の制限:特にありません。 以前ご教示頂いたのですが、データが壊れてしまいました。
311 名前:310 mailto:sage [2007/11/27(火) 16:32:53 ] 途中送信orz 何卒よろしくお願いいたします・・・。
312 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 17:20:20 ] >>308 ソース ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5343.txt csvを表計算ソフトで描画した図形 ttp://www15.axfc.net/uploader/90/so/l/119615151025982656815/Img_5482.jpg
313 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 17:59:13 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): メイン関数において、キーボードから正の整数の個数(100以内)を入力し、次いで実 際の数値を配列に入力する。そしてメイン関数はサブ関数に、入力した個数と配列を引数とし て渡す。 サブ関数は、これらの配列から、まず1番目に大きい数を見つけて、それを別途設けた配列 の先頭の要素に格納し、次に2番目に大きい数を見つけてこれをこの配列の先頭から数えて 2番目の要素に格納し、という処理を最後の数に至るまで繰り返す。これにより新しい配列に は大きい数から順に並んでいることになるので、これを引数を利用してメイン関数に渡す。(す なわちサブ関数は引数を3つ持つことになる。1つはデータの個数を示す変数、1つは入力デ ータを格納する配列、残りの1つはサブ関数で計算した結果を格納する配列である) 最後にメイン関数はサブ関数で計算された新配列の値を若い方の要素から順に(即ち大き い数から順に)画面に表示する。またこの数列の中央値を表示する(中央値に小数が含まれ る場合は、その小数を切り捨てた整数を表示することとする)。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: Visual Studio .NET 2003 [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: 12月3日 [5] その他の制限: 現在、関数・ポインターについて学んでるところです。 よろしくお願いします。
314 名前:デフォルトの名無し [2007/11/27(火) 18:03:09 ] 以前236でプログラムをお願いしたものです。 ポインタではなく配列でお願いしたいのですが、もう一度お願いできないでしょうか。 できればmainもお願いします。 [1] 授業単元: プログラム演習 [2] 問題文:入力された「対象文字列(s)」の中から、「検索文字列(t)」を検索し、 該当した「対象文字列」の添字を戻り値とする関数「search(s,t)」を作成しなさい。 ただし、「対象文字列」が「検索文字列」を含まない場合には「-1」を戻り値とする。 なお、関数「search(s,t)」は別ファイルに分け(main関数とそれ以外の関数)、 分割コンパイルできるように作成しなさい。 このとき、main関数以外の関数宣言が記述されたヘッダファイルを作成し、 main関数のソースファイルにて利用すること。 引数 char s[] 対象文字列 char t[] 検索文字列 (例) 以下の値で動作した場合は、「3」を返す。 文字列s = “aababcbaa” 文字列t = “abc” 入力は最大128バイトとする。128バイトを超える入力があった場合は処理を終了する [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限:11月27日まで [5] その他の制限: なし
315 名前:デフォルトの名無し [2007/11/27(火) 18:04:22 ] [1] 授業単元: プログラム演習 [2] 問題文:入力された正の2整数の最大公約数と最小公倍数を算出する。 ・キーボードからの入力が空の場合は処理を終了する。 ・キーボードからの最大入力桁数は4バイトとする。 ・キーボードからの入力が4バイトを超える場合は処理を終了する。 ・キーボードからの入力が正の整数に変換できない場合は処理を終了する エラーメッセージ 未入力 :入力されていません、桁あふれ:4文字以下で入力してください、数値以外:半角数字以外入力できません、ゼロ入力:0は入力できません 文字列を正数に変換する関数はatoiを使用。 引数 char data[] 文字列 戻り値 : 正数 エラー値 -1 未入力 -2 桁あふれ -3 数値以外-4 ゼロ入力 最大公約数を算出の関数名はgcdでユークリッドの互除法を使用。 引数 int data1 データ1 int data2 データ2 戻り値 : 最大公約数 最小公倍数を算出する関数名はlcm。最小公倍数を算出する際、最大公約数の関数を使用する。 引数 int data1 データ1 int data2 データ2 戻り値 : 最小公倍数 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 11・28まで [5] その他の制限: なし
316 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:06:06 ] >>310 #include <stdio.h> #include <string.h> #include <math.h> int main() { int i=0,l,c[256]={0}; char buf[256]; double h=0,p; scanf("%s",buf); l=strlen(buf); for(i=0;i<l;i++) c[buf[i]]++; for(i=0;i<256;i++) if(c[i]>0) { p=(double)c[i]/l; printf("\"%c\" %lf\n",i,p); h-=p*log(p); } printf("H = %lf\n",h); return 0; }
317 名前:デフォルトの名無し [2007/11/27(火) 18:14:32 ] [1] 授業単元: プログラミング [2] 問題文: 入力された整数0〜9のn個の文字列に対応したヒストグラムを出力するプログラムを作成せよ。 例:(n個の整数文字列=0050011050) 数値0が6個、1が2個、5が2個の場合、以下のように出力する。 <出力例> a[0] = 6 ****** a[1] = 2 ** a[2] = 0 a[3] = 0 a[4] = 0 a[5] = 5 ** a[6] = 0 a[7] = 0 a[8] = 0 a[9] = 0 ただしキーボードからの入力は最大128バイトとし、それを超える場合129バイト以降のデータはカウントしない。 入力データは半角数字のみとし、全角数字の入力は考えない。 文字列カウント関数 count 引数 char inputdata[] 入力データ int outputdata[] 出力データ 算出結果をヒストグラムで描写する関数名 hist 引数 int outputdata[] [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C言語 [4] 期限: 11月28日まで [5] その他の制限: なし