- 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/
- 587 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 16:06:30 ]
- [1] 授業単元:C++プログラミング
[2] 問題文: (処理の中身ではなく、ファイルの読み込みに関してなのですが) 1. フォルダ内に複数存在する "***.dat"(***は数字ではない)を読み込んでそれぞれについて同じ処理を行なう。 2. 処理の中でそれぞれのファイル名(***)とその処理結果(これは2つの数値です)をまとめて別の1つのファイルに出力する。 3. フォルダ内の全ての "***.dat" について処理し終わったらプログラムを終了する。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ:Visual Studio 2005 [3.3] 言語:C++ [4] 期限:1/28 AM10:00 上のようなことがしたいのですが、いい方法が思いつきません… どなたかよろしくお願いします。
- 588 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 16:22:49 ]
- コマンドラインからhoge *.datとでも入力して、
好きなように繰り返しをすればいい ここは丸投げスレなんだからもっと具体的に書け
- 589 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 17:38:07 ]
- >>588
ファイルは"(生徒の名前).dat"となっていて各教科のテストの点が書かれているのでそれを合計し 1つのファイルに全員の分を"生徒の名前:合計点 \n"みたいな感じで出力したいのですが、 おっしゃっている「コマンドラインから〜」というやり方がわからないんです。 すいません
- 590 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 18:29:04 ]
- >>589
#include <iostream> #include <fstream> void main(int argc, char *argv[]) { std::ofstream output( "output.dat" ); for(int i=1; i<argc; i++){ //argv[i]を読み込んで名前と合計点をoutputに書き出す。格納形式が分からんから書けん } cout << "オワタ" << endl; } 実行ファイルをhoge.exeとするとコマンドラインから hoge.exe *.dat と入力すればよい
- 591 名前:587,589 mailto:sage [2008/01/25(金) 19:04:28 ]
- >>590
>>588をみて同じようなことをしたのですが、 Output.dat には "* : 0" としか出力されないんです… コマンドラインでワイルドカード使うために何か特別な作業が必要だったりしますか?
- 592 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 19:12:38 ]
- ファイルの書式も書かずに・・・
- 593 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 19:25:42 ]
- inputファイルには、"国語: 74"みたいに
"(教科名):(半角スペース)(数値)"というのが7行ならんでいます。 すいません。
- 594 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 19:38:38 ]
- >>591
#include <stdio.h> int main(int argc, char *argv[]) { int i; for(i = 1; i < argc; i++) printf("%s\n", argv[i]); return 0; } これでも a.exe *.dat *.dat とかになる?
- 595 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 20:45:43 ]
- そもそもwinで実行引数にワイルドカードで一括指定ってできたっけ?
- 596 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 20:52:30 ]
- 標準ではできる。シェルによって対応がまちまちだからなあ
- 597 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 20:54:23 ]
- あと、>>587は引数の形でなしにプログラム内でディレクトリを掘って探すのが題意かもね。指定されてないけど
- 598 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 20:59:39 ]
- >>596
そうだったか、それならワイルドカードで指定する際に カレントディレクトリに該当ファイル置いてないとかかね。
- 599 名前:デフォルトの名無しさん [2008/01/25(金) 21:54:47 ]
- @アルゴリズムとデータ構造
Aパズルの世界では、1 から 9 までの数字を 1 個ずつすべて使った数字(たとえば、123456789 とか 321654987)を 小町数 と呼ぶ。1 から 9 までの数字を順番に並べ、 数字の間に演算記号をつけて計算結果が 100 になるような計算式を求めることを 小町算 という。 加算と減算のみからなる小町算の解は、下記のようになる。 12-3-4+5-6+7+89 = 100 123-4-5-6-7+8-9 = 100 123-45-67+89 = 100 123+4-5+67-89 = 100 123+45-67+8-9 = 100 12+3-4+5+67+8+9 = 100 12+3+4+5-6-7+89 = 100 1+23-4+56+7+8+9 = 100 1+23-4+5+6+78-9 = 100 1+2+3-4+5+6+78+9 = 100 1+2+34-5+67-8+9 = 100 9から1までの数を降順に並べ、加算と減算のみで計算式を構成し、計算結果が 0 になるものを全て求めよ。 9 □ 8 □ 7 □ 6 □ 5 □ 4 □ 3 □ 2 □ 1 = 0 上の問題を解くプログラムを作成しなさい。 3、 3,1 windows 2 gcc 3 C 4、明日の午後8時まで 5、特にないです。 よろしくお願いします^
- 600 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 22:20:15 ]
- >>262です
遅れてすいませんやっと発言ができました(プロバがアク禁食らってました) 本当に感謝ですー ありがとうございました!
- 601 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 22:47:19 ]
- >>599
ソフ開試験の午後1問5に同じ問題がある ttp://www.jitec.jp/1_04hanni_sukiru/mondai_kaitou_2007h19_1/2007h19h_sw_pm1_qs.pdf ttp://www.jitec.jp/1_04hanni_sukiru/mondai_kaitou_2007h19_1/2007h19h_sw_pm1_ans.pdf
- 602 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 22:54:45 ]
- >>599
int main(void) { puts("98+7-65-43+2+1"); puts("98-76+5+4-32+1"); puts("98-7-6-54-32+1"); puts("9+8+7+6+5-4-32+1"); puts("9+8+7+6-54+3+21"); puts("9+8-76-5+43+21"); puts("9-87+6+54-3+21"); return 0; }
- 603 名前:デフォルトの名無しさん [2008/01/25(金) 23:11:16 ]
- [1] 授業単元: C言語
[2] 問題:関数 f は f=√x * √(1 - 2.5 * 10^-5 * x^2)で表される。 xの初期値4.0から0.5刻みで20.0まで変化させたときの xとfの値をExcelに出力せよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: Visual C++ 2005 [3.3] 言語: C [4] 期限: 2008年1月27日 [1] 授業単元: C言語 [5] その他の制限:出力はcsvファイル可。
- 604 名前:591 mailto:sage [2008/01/25(金) 23:30:58 ]
- >>594
そのプログラムでやってみても *.dat となりますね・・・ >>598のせいだ!と思ったので、.exeのあるディレクトリに .datを全部移してみたのですが、 それでも結果は変わらなかったです。 これはもう手書きで1個1個ファイル指定していくしかないんでしょうか・・・
- 605 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:32:43 ]
- カレントディレクトリの意味分かってるか?
一度exeのあるパスまでcdコマンドで移動してから実行しないとダメだぞ。
- 606 名前:591 mailto:sage [2008/01/25(金) 23:42:57 ]
- あ、それはさすがに・・・。
すいません
- 607 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:44:26 ]
- >>599
#include<stdio.h> int calc(char *str){ int ret=0, value, idx; while(sscanf(str, "%d%n", &value, &idx)>0){ ret+=value; str+=idx; } return ret; } char *top(char *str){ while(*--str); return str+1; } void check(char *work, int depth){ if(depth<=0){ *work='\0'; if(calc(top(work))==0) puts(top(work)); return; } *work++='0'+depth; if(depth>1){ *work='+';check(work+1, depth-1); *work='-';check(work+1, depth-1); } check(work, depth-1); } int main(void){ char str[20]=""; check(str+1, 9); return 0; }
- 608 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:54:23 ]
- >>584
mixiはやっていないので、私ではないです。
- 609 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:58:54 ]
- >>591
Windows のコマンドプロンプトはワイルドカードを展開しないようだ 解決案 1.コマンドプロンプトで動作するシェル(bash とか)を一段かませる 2.実行ファイルのスタートアップルーチンでワイルドカードを展開するコンパイラ(ライブラリ)を使う 3.dir /b の結果を実行ファイルに渡す 4.自力でファイル検索ルーチンを作る 5.手作業でやる
- 610 名前:591 mailto:sage [2008/01/26(土) 00:13:33 ]
- >>609
そうですか。 わかりました。 1,2,4は今の自分には荷が重そうなので とりあえず "dir /b > temp.dat" で temp.dat を読ませる感じにしようかと思います。 ありがとうございます。 他の方もありがとうございました。
- 611 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:46:38 ]
- 【時間切れ】 (1/25)
>577 【未解決問題】 >>603 1/27 >>581 1/28 9:00 pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31 >79 無期限 >144 無期限 問題文>148 >404 期限切れだがやって欲しい
- 612 名前:599 mailto:sage [2008/01/26(土) 01:18:08 ]
- >>601
本当ですね。参考にします。 >>607 非常に助かりました。ありがとうございます^^
- 613 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 01:18:46 ]
- >>599
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5905.txt
- 614 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 02:15:02 ]
- [1] 授業単元:プログラミング
[2] 問題文 3問あります kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5908.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Visual C++ 2005 [3.3] 言語: C [4] 期限: 1月28日 午前8時まで [5] その他の制限:特にないですが 考察も書かないといけないので何をやっているか軽い注訳をつけてくれるとありがたいです(これはなくても構いません)
- 615 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 02:22:27 ]
- >>614
課題1と課題2は現行スレで見た気がするぞ。
- 616 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 02:37:23 ]
- >>615
本当ですか? ちょっと探してみます レス番のあてつけとか出来ませんか
- 617 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 03:07:10 ]
- >>404
つくりかけで忘れていた。もう見れたもんじゃない。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5909.zip
- 618 名前:478 mailto:sage [2008/01/26(土) 03:18:22 ]
- >>616
それぐらい自分で探してくれ・・・と言いたい所だが、 自分がうpした課題1だけ。
- 619 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 03:20:41 ]
- >>618
本当にありがとうございます(´;ω;`)
- 620 名前:デフォルトの名無しさん [2008/01/26(土) 08:00:09 ]
- 前スレの231と同じ+αなのですが、落ちちゃって見れません、再度お願いできませんでしょうか?お願いしますorz
問題下[1]プログラミングU [2] (1) 次の学生の成績表を元に,出力結果のように合計点と平均点を出力するプログラムを作成せよ。ただし,for文を使うこと。 (成績表) 学籍番号 5001 5002 5003 数学 62 45 76 英語 75 65 93 国語 54 82 63 (出力結果) 数学の合計点=177点,数学の平均点=59.0点 英語の合計点=233点,英語の平均点=77.7点 国語の合計点=199点,国語の平均点=66.3点 (2) (1)で作成したプログラムを元に,学生別の合計点を出力するプログラムを作成せよ (出力結果) 学籍番号5001の合計点は,191点です。 学籍番号5002の合計点は,192点です。 学籍番号5003の合計点は,226点です。
- 621 名前:デフォルトの名無しさん [2008/01/26(土) 08:02:59 ]
- (3)
(1)で作成したプログラムを元に,科目別の最高得点を表示するプログラムを作成せよ。 (出力結果) 数学の最高得点は70点です。 英語の最高得点は93点です。 国語の最高得点は82点です (4) (1)で作成したプログラムを元に,70点以上を得点した学生の人数を科目別に表示するプログラムを作成せよ。 (出力結果) 数学:1人 英語:2人 国語:1人 (5) (1)で作製したプログラムを元に、出力結果をユーザ関数を使って表示するプログラムを作成せよ。 (ユーザ関数の概要) main()関数から成績データを渡し、そのデータを(1)の(出力結果)どおりに表示する。 また、ユーザ関数はhyouji()とする。 (6) (1)で作製したプログラムを元に、次の構造体をつかって(出力結果)を表示するプログラムを作成せよ。 (構造体) typedef struct{ int no; int suugaku; int eigo; int kokugo; }seiseki;
- 622 名前:デフォルトの名無しさん [2008/01/26(土) 08:05:18 ]
- [3]環境
[3.1]XP [3.2]visual studio 2005 [3.3]C++ [4]今日中 [5]なし sageソコね、長文申し訳ないです、期間も短いので、困難かもしれませんが出来る限りでいいのでお願いできませんか?
- 623 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 08:06:33 ]
- 最後までsage損ねてる俺ばっかす・・・すいませんでしたorz
- 624 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 09:07:17 ]
- >>614 B
#include <stdio.h> #include <math.h> main(int argc,char *argv[]) { int point,i=0; double x,y,old_x,old_y,distance=0.0; char line[1000]; FILE *fp; if(argc!=2){ printf("Usage: %s <filename>\n",argv[0]); exit(1); } if((fp=fopen(argv[1],"r"))==NULL){ printf("file can't open.\n"); exit(1); } while(fgets(line,999,fp)!=NULL){ if(sscanf(line,"%lf %lf",&x,&y)==1){ point=x;//データが1つしかない=点の数なのでpointに代入 continue; } if(i==0){ old_x=x; old_y=y; }//初回は以前の点がないので同じにする distance+=sqrt(((x-old_x)*(x-old_x))+((y-old_y)*(y-old_y)));//2点間の距離の公式 old_x=x; old_y=y;//前回座標の保存 i++; } printf("point = %d distance = %lf\n",point,distance); } 前回の点から今回の点まで移動した距離の合算でいいんだよね?
- 625 名前:デフォルトの名無しさん [2008/01/26(土) 12:05:11 ]
- [1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5910.zip kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5911.zip [3] 環境 [3.1] OS:windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:1/26 [5] その他の制限:なし 分かりません、よろしくお願いします。
- 626 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 12:40:18 ]
- zipの場合は簡単に説明を書いてくれ
落として解凍するのダルいし
- 627 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 12:55:02 ]
- なぜzipなんだ・・・やる気うせる
ウィルス恐いよ〜・゚・(つД`)・゚・。
- 628 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:17:54 ]
- ウィルス恐いよ〜(笑)
- 629 名前:625 [2008/01/26(土) 13:37:03 ]
- 内容は点電荷の電位を計算して、電荷の分布と電位の関係を求めるとありました。
もしかしたらこんな課題やらせるようなスレじゃなかったりして(汗) ZIPは安心して、ウィルスなんかないから(´∀`)
- 630 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:38:13 ]
- 俺は電磁気学は興味ないからやってないしな。
力学なら余裕なんだがすまんね
- 631 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:40:10 ]
- >>624
そうです、ありがとうございました
- 632 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:55:33 ]
- 電磁気しらんで方程式くそくらえ、電磁気のラウンド微分はどうし様
- 633 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:57:47 ]
- へん微分と数論は違うんだからね、ふん
- 634 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:31:59 ]
- (´∀`)
- 635 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:47:17 ]
- X+とX++の違いをわかる奴は天才だろ
- 636 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:49:25 ]
- バグを作らないグループとバグをツクリヤスイグループってあるわ、人のいうこと聞かない
- 637 名前:デフォルトの名無しさん [2008/01/26(土) 15:31:15 ]
- [1] 授業単元:離散数学
[2] 問題文(含コード&リンク): 格子点上に置かれた任意の4点を結ぶ最小の直線スタイナーツリーを見つけるプログラムを作成せよ。 候補が複数ある場合は、それらを全て表示させるようにさせよ。 [3.1] OS:XP [3.2] コンパイラ名とバージョン:bcc [3.3] 言語:C [4] 期限:2/7 [5] その他の制限: 直線スタイナー木とは、碁盤上の縦横の線の交点に点を置き、 置いた全ての点を、碁盤の直線に沿って作る線分によって結ぶネットワークの事です。 例 www.dotup.org/uploda/www.dotup.org2826.jpg.html 閉路(ある点を出て、またその点に帰ってくる道がある状態)を作ってはいけません。 その直線スタイナー木の中で、最も距離の短いものを探せというものです。 もちろん、答えは複数候補ある場合が圧倒的に多いです。 とりあえず、自分で4点の座標を適当に置いてやれ、という事です。 どんなに泥臭い方法でも構わないので、ご協力お願いします。
- 638 名前:579 mailto:sage [2008/01/26(土) 16:00:26 ]
- >>585さん
本当にありがとうございます!
- 639 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 16:06:02 ]
- [1] 授業単元:プログラミング論
[2] 問題文(含コード&リンク): <問題1> 1からnまで加算して、その和が1000を超えるのはnがいくつのときか。 また、そのときの合計はいくつになるか。 <問題2> 1から30までの整数の中から奇数だけを取り出して配列に格納し、 その合計を求めるプログラムを作れ。 <問題3> 10個のデータをキーボードから入力し、合計を求めるプログラム を作れ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:LCC-Win32 [3.3] 言語:C [4] 期限:2/5 [5] その他の制限:なし お願いします。
- 640 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 16:26:34 ]
- おまいら、マジデ、ノードが増えたら手におえなくなるという答えを期待している先生を
裏切るんだな
- 641 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 16:41:54 ]
- >>639
問題1 #include <stdio.h> int main(void) { int i, sum; for(i=sum=0;sum<=1000;sum+=++i); printf("%d, %d\n", i, sum); return 0; }
- 642 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 16:43:18 ]
- まあ動的計画法でも使うんだろうな。
- 643 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 16:56:39 ]
- >>639
2 #include <stdio.h> int main(void) { int odd[30/2+30%2] = {0}, n, i; for(i=n=0;n<=30;++n) { if(1 == n%2) { odd[i++] = n; } } for(i=n=0;i<sizeof(odd)/sizeof(int); ++i) { n+=odd[i]; } printf("%d¥n", n); return 0; }
- 644 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 16:58:50 ]
- ちなみにodd eyeなのは狙ってやった。
- 645 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 17:08:39 ]
- そこでORアルゴリズム
- 646 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:07:34 ]
- >>620
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5913.txt 組んだ後にC++だと気づいたorz なんでCだけど・・・一応うpしておきます。
- 647 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:58:08 ]
- >>639
<問題3> 整数限定で。 #include <stdio.h> #include <limits.h> int main(void) { int sum=0, i; char sz[LINE_MAX]; const char * psz; for(i=1; i<=10;) { while(1) { printf("input %d:", i); if(fgets(sz, sizeof(sz), stdin)) { int nTmp = strtol(sz, &psz, 10); if('¥n' == *psz && sz != psz) { sum += atol(sz); ++i; break; } } printf("error¥n"); } } printf("sum = %d¥n", sum); return 0; }
- 648 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:59:40 ]
- すまん、パッチ。
- sum += atol(sz); + sum += nTmp;
- 649 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 23:26:00 ]
- >>637
出力フォーマットが分からないと何とも。 あと入力されうる点の上下限値は示されてないのか。 4点からの最短共有点を列挙するプログラムを書いたので好きに変えてくれ。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5914.txt 入力フォーマットは雰囲気で把握してくれ。
- 650 名前:デフォルトの名無しさん [2008/01/27(日) 00:11:26 ]
- [1] デジタル画像処理
[2] 直線補間法を用いて、[256x256]画素の画像を、[512x512]画素の画像になるよう 拡大するプログラムの作成 [3.1] Linux [3.2] gcc [3.3] C言語 [4] 明後日までです 制限はないです! お願いします。
- 651 名前:デフォルトの名無しさん [2008/01/27(日) 00:12:38 ]
- [1] デジタル画像処理
[2] 直線補間法を用いて、[256x256]画素の画像を、[512x512]画素の画像になるよう 拡大するプログラムの作成 [3.1] Linux [3.2] gcc [3.3] C言語 [4] 明後日までです 制限はないです! お願いします。
- 652 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 00:32:44 ]
- 【時間切れ】 (1/26)
>625 【未解決問題】 >>603 1/27 >>614 1/28 8:00 残:課題2 >>581 1/28 9:00 >>650 1/29 pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31 >79 無期限 >144 無期限 問題文>148
- 653 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 01:28:32 ]
- >>603
#include <stdio.h> #include <math.h> double f(double x) { return sqrt(x)*sqrt(1.0-2.5e-5*x*x); } main() { double x; FILE *fp; if((fp=fopen("dat.csv","w"))==NULL){ printf("file can't open\n"); exit(1); } fprintf(fp,"x,f\n"); for(x=4.0;x<=20.0;x=x+0.5){ fprintf(fp,"%lf,%lf\n",x,f(x)); } fclose(fp); }
- 654 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 15:11:07 ]
- >>583
スイマセン、ポインタも使わないという条件を書くのを 忘れていました。 もう一度お願いしてもいいでしょうか?
- 655 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 15:15:38 ]
- >>654
条件後付けして再度やってくれって・・・。 つか、”ちゃんとソース見た"のか?
- 656 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 15:16:43 ]
- >>654
#include<stdio.h> int main(void){ int year, month, day, week, tmpm, tmpy, i; int daymax[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; year = tmpy = 2008; month = tmpm = 1; day = 1; if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) daymax[1] = 29; if (tmpm < 3) { tmpy--; tmpm += 12; } week = (tmpy + tmpy/4 - tmpy/100 + tmpy/400 + (13*tmpm+8)/5 + day) % 7; for(; month <= 12; day++, week++){ if(week == 7) week = 0; if(day == 1){ printf("\n***** %04d / %2d *****\n", year, month); for(i=0; i < week; i++) printf(" "); } printf(" %2d", day); if(day == daymax[month-1]){ putchar('\n'); day = 0; month += 1; continue; } if(week == 6) putchar('\n'); } return 0; }
- 657 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 15:27:44 ]
- ワロタ
- 658 名前:デフォルトの名無しさん [2008/01/27(日) 17:23:15 ]
- >>581
(1)の問題のみ www.aki7.com/cgi/up/file/whakei.zip
- 659 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 17:56:42 ]
- OS Mac言語C言語
課題 13.3 キーボードから 5 個の英単語を入力し、辞書順に並べ替えて表示するプログラムを作成せ 但し、 ? main関数内で単語を入力し、並び替える作業を関数 Sort 内で行なう ? 関数 Sortは戻り値がなく、入力した配列 wordを引数に持つ ? 結果の表示は main関数内で行なう ? 完全に辞書順にするのは難しいため、1 文字目のみを見て並び変えれば良いものとする ? 入力する単語は apple、peach、banana、grape、melonとせよ 自分で製作したのですが、無理でした。 基本これに、似た形を作ってもらって。 間違えも指摘してください。 #include<stdio.h> #define N 5 void Sort(char input[][]); main() { int i; char array[N[6];
- 660 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 17:58:01 ]
- printf("Input %d numbers\n", N);
for(i=0; i<N; i++) { printf("array[%d] = ", i); scanf("%s", (array+i)); } Sort(array); printf("Sort result.\n"); for(i=0; i<N; i++) { printf("array[%d] = %s\n", i, array[i]); } } void Sort(char input[][]) { int i, j; char temp; for(i=1; i<N; i++) { for(j=N-1; j>=i; j--) { if(input[j-1][0] > input[j][0]) { temp = input[j-1]; input[j-1] = input[j]; input[j] = temp; } } } }
- 661 名前:デフォルトの名無しさん [2008/01/27(日) 18:32:35 ]
- >>583ってポインタ使ってないよね?
- 662 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:55:05 ]
- >>656
printf()って、引き数にポインタをとるんですよね? ポインタを使わないでくださいって書いているんですけど読めないんですか?
- 663 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:55:54 ]
- >>659
>間違えも指摘してください。 「間違え」ではなくて、「間違い」ですね。
- 664 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:08:53 ]
- 一次配列の中身をランダムに置換して更に、それを
逆置換するプログラムを教えてください。 ある係数を渡すことで毎回同じ並びになるようにして 暗号のように使えるようにしないといけないみたいです。 例えば「1」という係数を渡すと [3 2 4 1]を[2 4 1 3]にシャッフルして それをもう一度[3 2 4 1]に戻したいです
- 665 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:25:04 ]
- >>664
> 一次配列の中身をランダムに置換して更に、それを逆置換する ・一次配列って一次元配列ってこと? ・ランダムに置換の,「ランダムに」ってどの程度のことを言っているの?
- 666 名前:664 mailto:sage [2008/01/27(日) 19:36:22 ]
- >>665
すみません「元」が抜けてましたね。 ランダムがどの程度か…そこまで指定されてないんですが 簡単な規則性が無ければ良いと思います。
- 667 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:38:22 ]
- >>664
#include <stdio.h> #include <stdlib.h> #include <string.h> #define ARRAY_SIZE 32 void shift(int *p, int v) { int *buf = (int*)malloc(sizeof(int)*v+1); memcpy(buf, p, sizeof(int)*v); memmove(p, p+v, sizeof(int)*ARRAY_SIZE); memcpy(p+(ARRAY_SIZE-v), buf, sizeof(int)*v); } void print(int *p) { int i = 0; printf("array[%d] = {", ARRAY_SIZE); do { printf("%d", p[i]); } while (++i < ARRAY_SIZE && putchar(',')); printf("}\n"); } int main () { int i, in, array[ARRAY_SIZE]; for (i = 0; i < ARRAY_SIZE; ++i) array[i] = i; print(array); scanf("%d", &in); shift(array, in%=ARRAY_SIZE); print(array); shift(array, ARRAY_SIZE-in); print(array); return 0; }
- 668 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:39:11 ]
- 例の
> [3 2 4 1]を[2 4 1 3]にシャッフルして これがモロ規則性あるからその通りに作った。
- 669 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:54:07 ]
- >>659
Sort関数内に printf("%d,%d\n",i,j); を追加して、ちゃんとソートが行われているかどうか確認するといい
- 670 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:03:38 ]
- >>664
#include<stdio.h> #include<stdlib.h> typedef struct tag_dataset{int index, data;}dataset_t; void swap_int(int *a, int *b){int c;c=*a;*a=*b;*b=c;} void swap_dataset(dataset_t *a, dataset_t *b){dataset_t c;c=*a;*a=*b;*b=c;} void encode(int data[], int datanum, int seed){ int i; srand(seed); for(i=0;i<datanum;i++) swap_int(&data[i], &data[rand()%(i+1)]); } void decode(int data[], int datanum, int seed){ int i; dataset_t *tmp; srand(seed); tmp=malloc(sizeof(*tmp)*datanum); for(i=0;i<datanum;i++) tmp[i].index=i; for(i=0;i<datanum;i++) swap_dataset(&tmp[i], &tmp[rand()%(i+1)]); for(i=0;i<datanum;i++) tmp[i].data=data[i]; for(i=0;i<datanum;i++) data[tmp[i].index]=tmp[i].data; free(tmp); } void prt(int data[], int datanum){ int i; for(i=0;i<datanum;i++) printf(" %d", data[i]); printf("\n"); } int main(void){ int data[]={1,2,3,4, 5, 6, 7, 8, 9, 10}, datanum=sizeof(data)/sizeof(data[0]); encode(data, datanum, 0); prt(data, datanum); /* 0 の部分が乱数seed */ decode(data, datanum, 0); prt(data, datanum); /* 0 の部分が乱数seed */ return 0; }
- 671 名前:581 mailto:sage [2008/01/27(日) 20:12:35 ]
- >>658さん
解析サンプルまで付けてくださってありがとうございます(T_T) 本当に困っていたので助かりました!! これを元に(2)と(3)にも挑戦します・・・ でも期限には絶対間に合う予感がしない・・・orz
- 672 名前:670 mailto:sage [2008/01/27(日) 20:13:10 ]
- >>664
>>670 を書き直した #include<stdio.h> #include<stdlib.h> void swap(int *a, int *b){int c;c=*a;*a=*b;*b=c;} void encode(int data[], int datanum, int seed){ int i; srand(seed); for(i=0;i<datanum;i++) swap(&data[i], &data[rand()%(i+1)]); } void decode(int data[], int datanum, int seed){ int i, *tmp; srand(seed); tmp=malloc(sizeof(int)*datanum); for(i=0;i<datanum;i++) tmp[i]=rand()%(i+1); for(i=datanum-1;i>=0;i--) swap(&data[i], &data[tmp[i]]); free(tmp); } void prt(int data[], int datanum){ int i; for(i=0;i<datanum;i++) printf(" %d", data[i]); printf("\n"); } int main(void){ int data[]={1,2,3,4, 5, 6, 7, 8, 9, 10}; int datanum=sizeof(data)/sizeof(data[0]); encode(data, datanum, 0); /* 0 の部分が乱数seed */ prt(data, datanum); decode(data, datanum, 0); /* 0 の部分が乱数seed */ prt(data, datanum); return 0; }
- 673 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:13:23 ]
- [1] 授業単元: cプログラミング入門」
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5918.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:c言語 [4] 期限:1/31まで [5] その他の制限;特になし どうかよろしくお願い致します。
- 674 名前:659 mailto:sage [2008/01/27(日) 20:14:55 ]
- 自分でもう一度やってみたけど。分けわからなくなってきた。
もう本当に無理っぽい。 誰か、答えを教えてください。
- 675 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:38:56 ]
- 死ねカス
- 676 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:53:40 ]
- [1] 授業単元:C言語演習
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5919.txt [3.1] OS:Linux [3.2] コンパイラ名:gcc [3.3] 言語:C言語 [4] 期限:1月28日中 [5] その他の制限:特にありません。 よろしくお願いします!
- 677 名前: ◆LnG.2EAY0A mailto:sage [2008/01/27(日) 21:01:19 ]
- 【質問テンプレ】
[1] 授業単元:C言語 [2] 問題文(含コード&リンク):以下のゲームプログラムで、最初に設定する石の数を ファイル操作を使って一括設定できるようにする。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5920.txt [3] 環境 [3.1] OS:WindowsVista [3.2] コンパイラ名とバージョン:VC 6 [3.3] 言語:C [4] 期限:2008年01月28日午前まで [5] その他の制限:ファイル操作を習う所まで授業で進みました。 自分でも試行錯誤してみたのですが中々うまく行かず・・・ 皆さんの知恵をお借りしたいと思います、よろしくおねがいします。
- 678 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 21:08:28 ]
- >>659
ここは宿題スレだ。 組んで欲しいならテンプレ使って正式に頼め。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5921.txt ギャーギャー騒がれると目障りだし、これ持って去りな。
- 679 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 21:36:04 ]
- >>678
なんというツンデレw
- 680 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 21:55:48 ]
- >>676
showpidがおかしくないか? #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/wait.h> int main() { pid_t pid; int i, status, flg = 0; for (i = 0; i < 10; ++i) { if ((pid = fork()) < 0) { fprintf(stderr, "error\n"); exit(1); } if (pid == 0) { execv("showpid", NULL); exit(1); } else { if (flg == 0) { flg = 1; printf("I am a parent with pid = %d.My child is %d.\n",getpid(),pid); } waitpid(pid, &status, 0); } } return 0; }
- 681 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 21:57:02 ]
- ## showpid ##
#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { printf("I am a child with pid = %d,My parent pid is %d.\n",getpid(),getppid()); exit(EXIT_SUCCESS); }
- 682 名前:664 mailto:sage [2008/01/27(日) 22:07:09 ]
- >>870
助かりました☆ ありがとうございます!
- 683 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 22:08:13 ]
- >>870
やるじゃん
- 684 名前:637 [2008/01/27(日) 22:08:40 ]
- >>649
ありがとうございます! あとはなんとかしてみようと思います。
- 685 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 22:16:07 ]
- 簡単なゲームを作れといわれたのですがわかりません
誰か助けてください
- 686 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 22:16:43 ]
- >>685
>>677
- 687 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 22:50:20 ]
- >>686
むつかしくてわかりません、もっと簡単なのお願いします ポーカーとかでいいです
|

|