1 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:55:25 ] あなたが解けない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++の宿題を片付けます 102代目 pc11.2ch.net/test/read.cgi/tech/1197132472/
463 名前:デフォルトの名無しさん [2008/01/22(火) 22:25:56 ] 問2 4個の変数 a 整数 b 実数 c 精度の高い実数 d 文字 を宣言し、それぞれに 適当なデータを代入する。 そして次のように画面表示 するプログラム a の値は ... です b の値は ... です c の値は ... です d の値は ... です @$--------------------- [解答] #include <stdio.h> #include <conio.h> void main(){ getch(); }
464 名前:デフォルトの名無しさん [2008/01/22(火) 22:27:09 ] 37から229までの整数を加算し その結果を表示するプログラム @$--------------------- [解答] #include <stdio.h> #include <conio.h> void main(){ for( ) { } printf( ); getch(); }
465 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:30:03 ] 山下さんおつかれさまです
466 名前:デフォルトの名無しさん [2008/01/22(火) 22:33:08 ] x = 0 から出発し、x の値を 0.001 づつ増加させることを 繰り返し、x^2 + 7x - 1 の値 が初めて正となった時点で 繰り返しを終了し、そのときの x の値を表示するプログラム @$--------------------- [解答] #include <stdio.h> #include <conio.h> void main(){ while( ) { } printf( ); getch(); }
467 名前:デフォルトの名無しさん [2008/01/22(火) 22:33:51 ] キーボードから整数を入力させ その数を x に代入する。 x が 100 より大きいとき、 「入力した数は 100 より大きい」 と表示し、x が 100 以下のとき、 「入力した数は 100 以下です」 と表示するプログラム @$--------------------- [解答] #include <stdio.h> #include <conio.h> void main(){ getch(); }
468 名前:デフォルトの名無しさん [2008/01/22(火) 22:38:11 ] キーボードからアルファベットを1文字入力させ、それが「a」のとき、「a です」「b」のとき、「b です」 「c」のとき、「c です」「d」のとき、「d です」「e」のとき、「e です」 と表示し、それ以外のとき「a,b,c,d,e 以外の文字」と表示するプログラム @$--------------------- [解答] #include <stdio.h> #include <conio.h> void main(){ switch( ) { } getch(); }
469 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:40:01 ] 死ねカス
470 名前:デフォルトの名無しさん [2008/01/22(火) 22:40:12 ] 問10 縦 100m、横 120mのグランド がある。 縦横それぞれ同じ長さ x だけ 長くして面積が 13000u と なるようにしたい。 x を少数点以下1桁までの精度 で求めるプログラム。 @$--------------------- [解答] #include <stdio.h> #include <conio.h> void main(){ float x=0; while( ) { x = x + 0.01; } printf("縦横 %5.1f b広げればよい\n",x); getch(); }
471 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:42:01 ] >>462-470 問7 キーボードから実数を一つ入力させ、それを x に代入する。 x ≦ 100 のとき「A」、 100 < x ≦ 350 のとき「B」、 350 < x ≦ 600 のとき「C」、 600 < x のとき「D」と表示するプログラム 問8 1 + 4 + 9 + 16 + ・・・と加えて行き、 和が初めて 10000を超えたとき、 その和の値、および最後に加えた数を求めて表示するプログラム 問9 次に書かれた数の総和を求め、結果を表示するプログラム: 1 1+2 1+2+3 1+2+3+4 ・ ・ ・ 1+2+3+4+5+・・・+ 10
472 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:48:04 ] >>463 ,464,466,477 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5863.txt 丸投げスレだから問題丸投げはいい。でも>>1 に長いならうpろだ使えってかいてあるよね?
473 名前:455 mailto:sage [2008/01/22(火) 22:52:54 ] >>461 さん 問題文をそのまま記述したのですが、そうなりますかね? でも私には判断できないです....。
474 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:54:16 ] >>473 おそらく1〜1000の書き間違いだろ 気にするな
475 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:56:31 ] >>473 1から1000までの範囲にしといた #include <stdio.h> #define N 300 int f(int); int k=0,array[N]={0}; int main(void) { int n,a,b=0,c; for(n=1;n<=1000;n++) { a=f(n);k=0; if(a>b) { b=a; c=n; } } printf("%d %d\n\n",c,f(c)); for(n=0;n<=b;n++) printf("%d ",array[n]); return 0; } int f(int n) { array[k++]=n; if(n==1) return k-1; if(n%2==0) f(n/2); else f(3*n+1); }
476 名前:472 mailto:sage [2008/01/22(火) 23:01:36 ] >>472 の安価>>477 は>>467 の間違い >>468 ,470,471 >>471 の問9に関して題意が不明確なのでこっちで勝手に解釈した。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5864.txt >>472 含めすべてのプログラムの動作未確認、コンパイルもしていない。 間違ってたらごめんちゃい。
477 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 23:06:23 ] 兄です。KRDで弟がお世話になっています。特定しましたんでヨロシク!
478 名前:461 mailto:sage [2008/01/22(火) 23:08:43 ] >>473 >>474 が言ってるように、1〜1000なら正しい。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5865.txt
479 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 23:11:57 ] Lets to the best today! マジで?
480 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 23:17:31 ] >>470 #include <stdio.h> #include <conio.h> #include <math.h> void main(){ float x=0; while(0) { x = x + 0.01; } x=floor((-110+10*sqrt(131.0))*10+0.5)/10; printf("縦横 %5.1f b広げればよい\n",x); getch(); }
481 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 23:20:33 ] 明日もビジネスマナー研修頑張ってください by兄
482 名前:455 mailto:sage [2008/01/22(火) 23:28:36 ] すみませんでした!私の書き間違いでした。 1≦n≦10000の範囲で大きな関数を求めることは正しいのですが、 ちなみに〜の下りの問題文の方では皆さんのおっしゃる通り 「1≦n≦1000の範囲」においてはnは871でした。 >>474 さん よく確認してから記述するよう以後気を付けます。すみませんでした。 >>475 さん>>478 さん ありがとうございます!今自分でもプログラムを組んでいたのですが、 教えて頂いたプログラムを参考にして正しく実行できました。 本当に助かりました。
483 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 23:45:52 ] >>480 x = -110 + sqrt(13100);
484 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 23:55:24 ] >>483 >>480 さんの、顔に、泥を、塗るな!!!!。
485 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 23:56:56 ] >>484 なんで、そんな、しゃべり方、なの?
486 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 00:22:45 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5868.txt [3] 環境 [3.1] OS:windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:1/25 [5] その他の制限:なし よろしくお願いします
487 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 00:28:45 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5869.txt [3.1] OS:windows [3.2] コンパイラ名とバージョン:visual studio 2005 [3.3] 言語:C [4] 期限:1月25日 [5] その他の制限: どなたかよろしくお願いします
488 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 00:36:44 ] [1] 授業単元: プログラミング入門 [2] 問題文(含コード&リンク): コマンドラインから入力された文字列に小文字のアルファベット が含まれていた場合は全て大文字に変換し、文字列を昇順にソー トして表示するプログラムを作成して下さい パラメータ文字列が2つ以上入力されなかった場合には、エラー メッセージうぃ表示して終了させて下さい sample One usage : sample STRING1 STRING2 [STRING3 ... ] sample matsui ichiro ** String data ** matsui ichiro ** Changed string ** ICHIRO MATSUI sample sample1 sample2 sample3 ** String data ** sample3 sample2 sample1 ** Changed string ** SAMPLE1 SAMPLE2 SAMPLE3 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual C++ 2005 [3.3] 言語: C [4] 期限:1月24日 お願いしますm(_ _)m
489 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 00:53:53 ] >>487 #include<stdio.h> #define MAX 5 int main(){ int a[MAX]={1},i,j; for(i=1;i<=30;i++){ for(j=0;j<MAX;j++) a[j]*=i; for(j=0;j<MAX-1;j++) a[j+1]+=a[j]/10000000, a[j]%=10000000; } for(i=0;i<MAX;i++) printf("%08d",a[MAX-i-1]); printf("\n"); return 0; }
490 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 01:10:09 ] 【時間切れ】 (1/22) >335 【未解決問題】 >>488 1/24 >>404 1/25 >>453 1/25 >>486 1/25 >>395 1/27 23:59 pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31 >79 無期限 >144 無期限 問題文>148
491 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 01:11:10 ] >>490 まとめおつん
492 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 01:16:21 ] >>487 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5871.txt
493 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 04:03:32 ] >>488 #include <stdio.h> #include <ctype.h> #include <stdlib.h> #include <string.h> int cmp( const void * l, const void * r ) { return strcmp( *((char **)l), *(( char **)r) ); } int main( int argc, char **args ) { int i; if ( argc < 3 ) { fprintf( stderr, "usage: sample STRING1 STRING2 [STRING3 ... ]\n" ); exit( 1 ) ; } argc --; args ++; puts( "** String data **" ); for ( i = 0; i < argc; ++i ) puts( args[ i ] ); puts( "** Changed string **" ); qsort( args, argc, sizeof( char * ), cmp ); for ( i = 0; i < argc; ++i ) { char *p; for ( p = args[ i ]; *p != '\0'; ++p ) putchar( toupper( *p ) ); puts(""); } return 0; }
494 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 04:48:22 ] >>453 #include <stdio.h> #define N 10 int get_gcd( int m, int n ) { return ( m < n ) ? get_gcd( n, m ) : ( n == 0 ) ? m : ( m % n == 0 ) ? n : get_gcd( n, m % n ); } int get_lcm( int m, int n ) { return ( m == 0 || n == 0) ? 0 : m * n / get_gcd( m, n ); } int main( int argc, char ** args ) { int nums[ N ] = {0}, i, l, gcd, lcm; puts( "input numbers. " ); for ( i = 0; i < N; ++i ) { scanf( "%d", &nums[ i ] ); if ( nums[ i ] < 1 ) { break ; } } l = i; gcd = lcm = nums[ 0 ]; for ( i = 1; i < l; ++i ) { gcd = get_gcd( gcd, nums[ i ] ); lcm = get_lcm( lcm, nums[ i ] ); } for ( i = 0; i < l; ++i ) { printf( "%d ", nums[ i ] ); } printf( "\nLCM:%d, GCD:%d\n", lcm, gcd ); return 0; } 10個入れるか,0以下の数を入れるかで入力をやめるようにしてみた
495 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 07:36:23 ] >>486 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5872.c
496 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:23:18 ] [1] 授業単元:プログラミング [2] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5873.txt このプログラムを実行すると1つのxにつき100個の誤差付きのyが出てくるので それぞれのxにおけるyの平均値(=(狽凵j/100)を求めたい [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:Visual C++ [3.3] 言語: C [4] 期限: 2008/1/24 [5] その他の制限: よろしくお願いします
497 名前:デフォルトの名無しさん [2008/01/23(水) 11:29:13 ] #include <stdio.h> #include <stdlib.h> void fileread(int,char *); void filewrite(int,char *); int main(int argc ,char *argv) { if(argc!=3){ printf("次回から引数を入力してください\n"); return 0; } fileread(argc,argv); filewrite(argc,argv); return 0; } void fileread(int argc,char *argv){ FILE *fp; char *buffer; fpos_t start_fpos; int filesize; if(!strcmp(argv[2],"r")){ fp=fopen(argv[1],"r"); fgetpos(fp,&start_fpos);
498 名前:デフォルトの名無しさん [2008/01/23(水) 11:29:44 ] fseek(fp,0,SEEK_END); filesize=ftell(fp); fsetpos(fp,&start_fpos); buffer=(char *)malloc(sizeof(char)*filesize); while(fgets(buffer,filesize,fp))printf("%s",buffer); free(buffer); } } void filewrite(int argc,char *argv){ FILE *fp; char *buffer,*stock; int buffer_size=1000,count=0; if(!strcmp(argv[2],"w")){ fp=fopen(argv[1],"w"); buffer=(char *)malloc(sizeof(char)*buffer_size); while(fgets(buffer,buffer_size,stdin)){ count++; stock=realloc(buffer,sizeof(char)*count); sscanf(buffer,&stock[count-1]); } fputs(stock,fp); free(buffer); } fclose(fp); }
499 名前:497 [2008/01/23(水) 11:33:24 ] >497-498 コンパイルエラーが出ます。 passing argument 1 of ‘fopen’ makes pointer from integer without a cast fopenの箇所が整数値を吐き出してるのだとは分かるのですが、 どう修正していいのか理解できません。ご教授ください。
500 名前:390 mailto:sage [2008/01/23(水) 11:53:55 ] >>437 大変参考になりました、ありがとう御座います。 strcmp()とstrcpy()については授業でそれを教えたから とにかくそれを使わせて習得させるという方針っぽいです。 構造体structも次回の講義で始めて習うという初歩っぷりですので 基礎的な部分から稚拙さが漂ってくるのかもしれませんが… structの勉強もできて非常にためになりました、多謝です
501 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 12:04:02 ] >>497 スレ違い. main( int argc, char * argv ) ;じゃなくて main( int argc, char * argv[] ) ; void fileread(int argc,char *argv) じゃなくて void fileread(int argc,char *argv[]) にしないと
502 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 12:38:41 ] >>496 #include <stdio.h> int main(int argc, char *argv[]) { int i, j; double x, y, sum; char buf[100]; FILE *fp; if (argc != 2) return 1; fp = fopen(argv[1], "r"); if (fp == NULL) return 1; for (i = 0, sum = 0.0; i <= 10; i++) { for (j = 0; j < 100; j++) { fgets(buf, sizeof(buf), fp); sscanf(buf, "%lf %lf\n", &x, &y); sum += y; } printf("%lf\t%lf\n", x, sum/100); } return 0; }
503 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 12:55:40 ] >>501 馬鹿発見。スレ違いと言う点には同意するので、どこら辺が馬鹿なのかは割愛。
504 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:13:10 ] >>503 501じゃないけど解説求む
505 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:15:49 ] そこだけ変えても意味がないってことだろ。根本的に作りがおかしいんだから。
506 名前:デフォルトの名無しさん [2008/01/23(水) 13:40:59 ] >>494 ありがとうございます。 因みにLCMが最大公約数でGCMが最小公倍数なんですかね?
507 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:42:12 ] >>506 いいえ。
508 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:42:41 ] >>506 lcm と gcd でググれば何の略か分かる
509 名前:デフォルトの名無しさん mailto:sage!=501 [2008/01/23(水) 16:17:14 ] >>503 fopenの引数が間違ってる、という説明に留めろという理解でよろしい? 確かに、 >main( int argc, char * argv ) ;じゃなくて >main( int argc, char * argv[] ) ; というのは先走り感が否めないが。
510 名前:395 mailto:sage [2008/01/23(水) 16:29:49 ] >>444 argument error と出てしまいます
511 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 16:33:20 ] プログラム実行時に data.txt を後に加えて実行すればおk
512 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 17:55:25 ] [1] 授業単元:プログラム入門 [2] 問題文:2つあるので下に書いていきます [3] 環境 [3.1] OS:Windows [3.2] gcc 3.4 [3.3] 言語:C [4] 期限: 明後日 1.0から1000までの数を1行に10個ずつカンマ区切りで表示する。 末尾にはカンマを加えない。 実行例 0,1,2,3,4,5,6,7,8,9 10,11〜〜〜〜 〜〜〜〜〜〜998,999 1000 2.文字列を入力して、その文字列の中にアルファベットと数字をそれぞれカウントして結果を表示する。 実行例 入力して:nurupo ga!!!!1111 アルファベットは8文字 数字は4文字 それ以外は4文字 2つも出してしまい、申し訳ないですがかなり切羽詰ってます。 プログラムに関しては先月始めたばかりで初心者中の初心者です、なのでそこまで難しいことは習ってないと思います。 ですが分からないのでお力を貸してください。
513 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 18:01:12 ] >>512 スペースは普通その他だろ
514 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 18:04:17 ] >>513 すいません、見落としてました。スペースもそれ以外に追加します。
515 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 18:34:24 ] >>512 #include<stdio.h> int main(void){ int i; for(i=0;i<=1000;i++){ if(i%10==0) printf("%d", i); else printf(",%d", i); if((i+1)%10==0) printf("\n"); } return 0; } #include<stdio.h> #include<ctype.h> int main(void){ char buf[256]; int i, alphanum=0, digitnum=0, othernum=0; printf("入力して:"); fgets(buf, sizeof(buf), stdin); for(i=0;buf[i]!='\0';i++){ if(isalpha(buf[i])) alphanum++; else if(isdigit(buf[i])) digitnum++; else othernum++; } printf("アルファベットは%d文字\n", alphanum); printf("数字は%d文字\n", digitnum); printf("それ以外は%d文字\n", othernum); return 0; }
516 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 18:41:40 ] >>515 >for(i=0;buf[i]!='\n';i++){ の方がいいかもNE!
517 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 18:48:57 ] >>515 、516 ありがとうございます。 今、外なんで家に帰ってから実行してみようと思います。
518 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 19:01:42 ] [1] 授業単元: C言語 [2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5874.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:visual studio 2005 [3.3] 言語: C言語 [4] 期限: 今日中です。。。 [5] その他:長くてめんどくさいかもしれませんが、どうかよろしくお願い致します。
519 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 19:22:42 ] 1] C言語 [2] 台形公式を用いて∫0^2 √4-x^2 の近似値を求めるプログラミングを作成しなさい [3] 環境 [3.1] OS: Linux [3.3] 言語: (C言語 [4] 期限:明日 [5] その他の制限: お願いします
520 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 19:32:49 ] >>519 #include <iostream.h> void main(){cout << "どう見ても0です << endl;}
521 名前:デフォルトの名無しさん [2008/01/23(水) 20:47:29 ] >>519 #include <stdio.h> #include <math.h> #define E 0.00001 double TrapMethod(double (*f)(double), double a, double b, double e) { if (fabs(b - a) < e) return 0.5 * (f(a) + f(b)) * fabs(b - a); else { double t = 0.5 * fabs(b - a); return TrapMethod(f, a, a + t, e) + TrapMethod(f, a + t, b, e); } } double func(double x) { return sqrt(4 - x * x); } int main(void) { printf("%.10f\n", TrapMethod(func, 0.0, 2.0, E)); return 0; }
522 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 20:54:30 ] >>487 つ265252859812191058636308480000000
523 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:41:10 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5879.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:1/26 [5] その他の制限:特になし よろしくおねがいします
524 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:44:04 ] [1] 授業単元:C言語 [2] 問題文:ファイル中の文字数,単語数,行数をカウントするプログラムを作成せよ。 単語の切れ目はアルファベット以外の文字、行の終わりは改行文字またはファイルの終端とします。 この課題のソースファイルで動作確認しなさい。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:1/25 [5] その他の制限:特になし お願いします
525 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:53:51 ] >>523 #include <stdio.h> int main(void) { int i, j, n, num[] = {1000, 500, 100, 50, 10, 5, 1}; char roman[] = "MDCLXVI"; while(1) { printf("Input integer (0 quit) ====>"); scanf("%d", &n); if(n==0) break; printf("%d ====> ", n); for(i=0; n; i++) { int c = n / num[i]; for(j=0; j<c; j++) putchar(roman[i]); n %= num[i]; } putchar('\n'); } return 0; }
526 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:10:52 ] >>523 繰り返しでやってみた kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5881.txt
527 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:12:42 ] 去年と同じ問題だw
528 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:18:31 ] >>524 適当 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5882.txt
529 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:27:37 ] >>524 ミスあった >>528 修正 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5883.txt
530 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:31:13 ] >>526 勘違いしてたから修正 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5884.txt
531 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:45:02 ] [1] 授業単元:cprograming2 [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5885.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:VC 6.0 [3.3] 言語:C [4] 期限:2008/1/25 am 0:00 [5] その他の制限: 特に無し よろしくお願いします
532 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:31:43 ] 【時間切れ】 (1/23) >518 【未解決問題】 >>531 1/25 0:00 >>404 1/25 pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31 >79 無期限 >144 無期限 問題文>148
533 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:38:17 ] >>529 なんで、そんなに括弧で囲む必要があるんだい?
534 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:39:28 ] >>518 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5887.c すでに時間切れ 且つ なぜかリスト構造を使ってしまったけど、一応動いたのでうp
535 名前:デフォルトの名無しさん [2008/01/24(木) 01:39:57 ] [1] 授業単元:アルゴリズム2 [2] 問題文 最小全域木問題 で以下のコメント文の e[i] を、e[t[0]], ..., e[t[k - 1]]に加えても閉路ができない をどうやって書くのか分かりません。トレースの問題で躓いてしまいます。 プログラムが分かればトレース出来そうなのでよろしくお願いします。 void mst(int i, int k, int weight) { if (k == n - 1) { if (weight < best_weight) { best_weight = weight; 配列 best_tree に t をコピー; } } else if (i <= m) { if (e[i] を、e[t[0]], ..., e[t[k - 1]]に加えても閉路ができない){ t[k] = i; mst(i + 1, k + 1, weight + w[i]); } mst(i + 1, k, weight); } } [4] 期限:1/24 9am test..!
536 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:46:51 ] 一応情報はランダムにこんな感じで与えられます。 これをどう利用して記述して求めているのかが分かりません。 辺の番号 1 2 3 4 5 6 7 8 9 10 11 12 端点1 4 3 1 2 4 6 1 8 5 6 7 5 端点2 6 7 5 3 5 1 2 4 4 2 8 2 重み 9 16 13 8 7 12 10 5 11 15 4 2
537 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:56:17 ] >>533 データ(変数)を尊重し、できるだけそのデータが使われるときに、宣言し使う。 こうすることで、必要のないデータを他のブロックで誤って書き換えられることを防いでいる。 いわゆる、データ指向プログラミング。 >>529 fclose忘れてるな。別にいいけど。
538 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 02:05:12 ] >>534 ありがとうございます!!!
539 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 02:42:42 ] >>529 >>537 {NULL};が気になる。普通{0}じゃね?残りは0で埋められるわけだし。 NULLだとアドレスかと思ってしまうな まぁ実用上はまったく問題ないと思うけど
540 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 02:43:52 ] >>535 配列eのメンバがわからないことには何とも言えない。 つーか、ソースうp。
541 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 02:54:33 ] スイマセン 再うp。 まず、バックトラックによって、グラフGの最小全域木を求める 次のようなアルゴリズムを考えます。ここで、n はGの 頂点数、m は辺の数で、e[i] (i = 1, ..., m) はGのi番目の 辺を表し、w[i] はその重み(正整数)を表すものとします。 また、int 型の配列 t と best_tree は大域変数であるとします。 void mst(int i, int k, int weight) { if (k == n - 1) { if (weight < best_weight) { best_weight = weight; 配列 best_tree に t をコピー; } } else if (i <= m) { if (e[i] を、e[t[0]], ..., e[t[k - 1]]に加えても閉路ができない){ t[k] = i; mst(i + 1, k + 1, weight + w[i]); } mst(i + 1, k, weight); } } 関数mstへの呼び出しと戻りを「イベント」と呼ぶことにします。 n = 8, m = 12 であり、Gの頂点が 1, 2, ..., n であって、 Gの m 本の辺の各端点と重みが次のように与えられるとします。 辺の番号 1 2 3 4 5 6 7 8 9 10 11 12 端点1 6 7 5 4 3 1 6 7 8 4 5 2 端点2 7 5 4 3 1 2 4 3 6 8 3 8 重み 14 11 15 12 4 9 6 16 8 7 10 2
542 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 03:36:47 ] >>537 そこまでするならサブルーチン化した方がいいような気もするが。読みづらいしな。
543 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 04:12:22 ] >>531 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5888.txt ヘロンの公式は使ってないけど。眠い。
544 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 04:17:09 ] >>531 純粋な興味として聞きたいんだが、どうして座標が整数値で与えられているのにヘロンの公式を使うんだろう。
545 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 04:36:59 ] >>543 ちょ、間違ってる。
546 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 08:21:22 ] [1] 授業単元:C入門 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5876.txt [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン:study C [3.3] 言語:C [4] 期限:今日の15時 [5] その他の制限:入門科目なので簡単なコードでお願いします。
547 名前:デフォルトの名無しさん [2008/01/24(木) 10:54:30 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク):0<N <100,000,000の整数を入力したとき、Nの素因数分解結果を出力するプログラムを作成せよ。 [3.1] OS:XP [3.2] コンパイラ名とバージョン:bcc [3.3] 言語:C++ [4] 期限:1/25 15時 [5] その他の制限: 2から √Nまでの素数について、小さい順にNを割ってみて割り切れたらその素数aはNの素因数である。 割り算の結果N1についてa から √N1 までの素数について小さい順にN1を割り切れたらその素数b も Nの素数である。以上を割り算の結果Nxが素数になるまで繰り返す。Nx もNの素因数である。 ということを使ってやれと言われました。 簡単なコードでお願いします。
548 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 10:56:22 ] >>546 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5889.txt 入力チェックはしてない。
549 名前:デフォルトの名無しさん [2008/01/24(木) 11:24:20 ] q
550 名前:546 mailto:sage [2008/01/24(木) 12:25:04 ] >>548 助かりした 無事単位を取得できそうです ありがとうございました!
551 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 12:35:11 ] 単位wwwどんだけしょぼい大学だよ
552 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:04:35 ] 大学行ってないから基準が分からないんだね。
553 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:06:27 ] 本来なら大学は自分で勉強するべきとか考えないとすれば 90分×14回 = 21時間 だから、無理もない たったの二日で何が習得出来るって話だ
554 名前:548 mailto:sage [2008/01/24(木) 13:14:10 ] >>550 これで単位か・・・羨ましいような羨ましくないような。 >>547 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5891.txt
555 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 14:09:37 ] >>502 ちょっと解説してもらえませんか?
556 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 14:43:55 ] >>555 回答した本人じゃないが、 for (i = 0, sum = 0.0; i <= 10; i++) { for (i = 0, sum = 0.0; i <= 10; i++, sum=0.0) { にすれば問題ないのでは?
557 名前:デフォルトの名無しさん [2008/01/24(木) 15:30:11 ] >>550 ちょっWwおまWw どこの大学だよ それで単位認定って 笑った
558 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 15:33:44 ] 文系が理系をちょっとかじるようなゼミだとそんなもんじゃね?
559 名前:デフォルトの名無しさん [2008/01/24(木) 15:40:41 ] 【質問テンプレ】 [1] 授業単元:CG [2] 問題文(含コード&リンク):対戦型シューティングゲームを作ったんですけど、 もう1つのポットから、玉が出ないんです。どうしたら、出るようになるんでしょうか? 教えてください。あと、当たり判定も作ったんですが、これよりもっといいプログラムは ありますか? kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5893.c [3] 環境 [3.1] OS: UNIX [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: Cで書いてあります [4] 期限: 今日の18時まで [5] その他の制限:なし
560 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 15:42:32 ] >>559 よくあるのはベクトルのノルムで判定する方法
561 名前:デフォルトの名無しさん [2008/01/24(木) 15:43:21 ] [1] 授業単元: プログラミング [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5892.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:BCC [3.3] 言語:C [4] 期限: 今日中 [5] その他の制限:特にないです。。。 お願いします。
562 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 16:51:24 ] >>561 ファイルに書き出すときのテキストのフォーマットは?
563 名前:デフォルトの名無しさん [2008/01/24(木) 18:13:49 ] >>562 txt形式でお願いします。