C/C++の宿題を片付けます 40代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
05/02/06 02:38:42――【注意点】―――――――――――――――――――――――――
・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
・複雑なAAはスレが荒れたり問題が埋もれる原因になりますので使用を控えてください。
―――――――――――――――――――――――――――――――
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで/無期限 のいずれか
[5] その他の制限:
【アップローダー】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【歴代スレは>>1-10辺り】
39代目: http://pc5.2ch.net/test/read.cgi/tech/1106650397/
38代目: http://pc5.2ch.net/test/read.cgi/tech/1105541524/
37代目: http://pc5.2ch.net/test/read.cgi/tech/1103913840/
36代目: http://pc5.2ch.net/test/read.cgi/tech/1102753497/
35代目: http://pc5.2ch.net/test/read.cgi/tech/1101568895/
34代目: http://pc5.2ch.net/test/read.cgi/tech/1100530682/
33代目: http://pc5.2ch.net/test/read.cgi/tech/1097932699/
32代目: http://pc5.2ch.net/test/read.cgi/tech/1097592876/
31代目: http://pc5.2ch.net/test/read.cgi/tech/1095075678/
30代目: http://pc5.2ch.net/test/read.cgi/tech/1091954342/
0153デフォルトの名無しさん
05/02/08 23:07:07コンパイラを見た…目を疑った…
0154デフォルトの名無しさん
05/02/08 23:10:24日本の未来はダメだな
お前らもアメリカにこいよ
0155進級かかってます。。
05/02/08 23:14:03レスありがとうございます。
ニュートン法とは、紙と鉛筆で解けない、代数方程式の近似解を求める手法
らしいです。
ニュートン法でといてもらわなくてもよいので回答お願いします。。
問題文には数式とかかいてなくて・・・すみません。
>>152
冗談は俺の顔だけでお願いします。
>>153
真性バカですみません。。
0156デフォルトの名無しさん
05/02/08 23:15:410157デフォルトの名無しさん
05/02/08 23:18:400158デフォルトの名無しさん
05/02/08 23:19:36プログラムをねだればいい
0159デフォルトの名無しさん
05/02/08 23:23:040160デフォルトの名無しさん
05/02/08 23:23:460161デフォルトの名無しさん
05/02/08 23:25:030162デフォルトの名無しさん
05/02/08 23:26:290163デフォルトの名無しさん
05/02/08 23:28:570164進級かかってます。。
05/02/08 23:29:340165デフォルトの名無しさん
05/02/08 23:57:18o 頂点名と頂点番号の関係は以下の通りとする.
+ 頂点名:頂点番号
+ A:0
+ B:1
+ C:2
+ D:3
+ E:4
+ F:5
+ G:6
+ H:7
+ I:8
+ J:9
+ K:10
+ L:11
+ M:12
1.#defineを使って,以下の仕様に基づいたマクロ定義をせよ.
(文中の「」記号は強調のために記述したものである.)
* 頂点の最大数を表わす識別子「MAX_V」を,置換リスト「13」に置き換える.
* 未訪問を表わす識別子「UNSEEN」を,置換リスト「-999」に置き換える.
* 接続関係データのファイル名を表わす識別子「FNAME」を,置換リスト「"Data3.dat"」に置き換える.
2.以下の仕様に基づいて自己参照構造体を宣言せよ.
* 構造体タグ名:ELEMENT
* メンバ:
o 隣接頂点の頂点番号を表すint型の変数:変数名 Num
o ELEMENT型へのポインタ型変数:変数名 Next
* typedefによって再定義する型名:NODE
0166デフォルトの名無しさん
05/02/08 23:59:05NODE型へのポインタ配列:
* 配列名:adj
* 要素の数:MAX_V(問題1参照)
以下の仕様に基づいて,ファイル(ファイル名 FNAME(問題1参照))から接続関係を読み込んで,上記のポインタ配列で定義した隣接リスト(adj[])に追加する関数
void input_data_from_file()
を定義せよ.そして,main()関数への必要な記述をおこなって,関数を実行できるプログラムを作成せよ(必要に応じて,ヘッダー・ファイルをインクルードすること.).また,この関数の処理内容を説明せよ.
* 関数名:input_data_from_file
* 仮引数:なし
* 戻り値:なし(void型)
* 機能:接続関係を記したデータファイル(FNAME)を開いて,ファイルの先頭から読み込みながら,隣接リストadj[]にNODE型のノードとして追加する.
ファイルには,接続関係が以下のように記述されている.
AB(頂点Aと頂点Bとが隣接していることを表わす.)
AF
BC
BD
BE
CE
DE
DF
EF
隣接リストに追加するとき,頂点名を頂点番号に変換して追加する(データ処理に関する前提を参照).
隣接リストへの追加処理において,頂点Xと頂点Yとを結ぶ辺(XY)が読み込まれると, Yの隣接リストadj[Y]にXを,そして, Xの隣接リストadj[X]にYをそれぞれ追
加する.
例:ABを読み込んだ場合,隣接リストadj[0]の先頭ノード(NODE型)として,メンバNumが1のノードを追加する.
さらに,隣接リストadj[1]の先頭ノード(NODE型)として,メンバNumが0のノードを追加する.
0167デフォルトの名無しさん
05/02/09 00:00:35void enqueue(int dt)
を定義せよ.(必要に応じて,ヘッダー・ファイルをインクルードすること.)
* 関数名:enqueue
* 仮引数int dt:キューに追加するデータとして,int型のデータ(頂点番号)を受け取る.
* 戻り値:なし.
* 機能:int型のデータ(頂点番号)を追加・取り出しできるキューに,頂点番号を追加する.仮引数として受け取ったint型のdtをメンバNumの値としてもつ NODE型のノードを,連結リストの先頭ノード
として追加すること.また,キューの先頭ノードを指すポインタとして,
以下のグローバル変数を使用すること(必要であれば初期化すること).
NODE *q_head;
5.以下の仕様に基づいて,キューからデータ(頂点番号)を取り出す関数
int dequeue()
を定義せよ(必要に応じて,ヘッダー・ファイルをインクルードすること.).
* 関数名: dequeue
* 仮引数:なし.
* 戻り値 (int型):キューのデータ構造に基づいて取り出されるint型のデータ(頂点番号)
※キューにデータがない場合,他の関数および機能の実行に影響のない戻り値を返すこと.
* 機能:呼び出し側にキューから取り出したデータ(頂点番号(int型))を返す.上記のvoid enqueue(int dt)のデータ構造に基づいて,連結リストの操作をおこない,末
尾ノード(ノードがひとつの場合は先頭ノード)を取り出すこと.
0168デフォルトの名無しさん
05/02/09 00:02:29void visit(int k)
を定義し,main()関数への必要な記述をおこなって,関数を実行できるプログラムを作成せよ.(必要に応じて,ヘッダー・ファイルをインクルードすること.)
また,この関数のアルゴリズムを説明せよ.
* 関数名:visit
* 仮引数int k:探索を開始する頂点番号
* 戻り値なし(void型)
* 機能:探索を開始する頂点番号kを受け取り,キュー(void enqueue(int dt)およびint dequeue())を使用した幅優先探索をおこなって,訪問可能な全ての頂点を訪問
し,訪問した頂点を表示する.
7.以下の仕様に基づいて,隣接リスト(問題3参照)から指定された接続関係(辺)を削除する関数 void delete_edge(int v1, int v2)
を定義し,main()関数への必要な記述をおこなって,関数を実行できるプログラムを作成せよ.
(必要に応じて,ヘッダー・ファイルをインクルードすること.)
* 関数名:delete_edge
* 仮引数int v1, int v2:v1とv2との間の接続関係を削除する.
* 戻り値なし(void型):
* 機能:受け取ったv1とv2との接続関係を削除するために,隣接リストから,v1とv2との接続関係に対応するノードを削除する.
隣接リストへの追加(問題3参照)と同様に,adj[v1]からv2のノードを削除し,
adj[v2]からv1のノードを削除すること.
0169デフォルトの名無しさん
05/02/09 00:02:40>1を読めないか?読めないのか?読もうとしてないのか?読みたくないのか?
0170デフォルトの名無しさん
05/02/09 00:03:26一見見たところ、不都合が無いが、バカじゃないのw
もっと面白い具体的な、例題作れ。
0171デフォルトの名無しさん
05/02/09 00:12:15画像認識ではリスト構造は必須だし、変だ。
0172デフォルトの名無しさん
05/02/09 01:09:19テーマは各自で決めよ、との事です。
0173デフォルトの名無しさん
05/02/09 01:15:15過去ログ漁って自分の好きなテーマのやつをコピーしろ
0174デフォルトの名無しさん
05/02/09 01:17:32ふむ、それじゃ出来るだけ短いコードを書くというテーマで行きますか。
main(){}
0175デフォルトの名無しさん
05/02/09 01:18:04先公も見てんだな、いい事だ。
でも課題出されたやつには厳しくお願い、糞プログラマー卒業させるな
0176デフォルトの名無しさん
05/02/09 01:39:23七行プログラミング part4
http://pc5.2ch.net/test/read.cgi/tech/1051703369/
( ・ω・)?
0177デフォルトの名無しさん
05/02/09 08:07:14添削する院生を困らせるために、IOCCCに出せるようなヤツにしようぜ。
017837
05/02/09 08:59:090179デフォルトの名無しさん
05/02/09 11:10:46#include <stdio.h>
void shell_sort(int data[],int n){
int i,j,t,d;
for(d=1; d<n/9; d=3*d+1);
for(; d>0; d/=3){
for(i=d; i<n; i++){
j = i;
while(j>=d && data[j-d]>data[j]){
t = data[j]; data[j] = data[j-d]; data[j-d] = t; j -= d;
}
}
}
}
int main(){
int x[100]; int i,len=1,type=1;
printf("input (max-100):"); scanf("%d",&len);
len = (len>100)?100:len;
printf("s?(1) k?(2):"); scanf("%d",&type);
printf("input please\n");
for(i=0; i<len; i++){
printf("x[%d]:",i); scanf("%d",&(x[i]));
}
shell_sort(x,len);
printf("sort type:%s\n",(type==1)?"s":"k");
for(i=0; i<len; i++)
printf("x[%d]:%d\n",i,(type==1)?x[i]:x[len-i-1]);
return 0;
}
018036
05/02/09 11:44:13よろしければ36のほうもやって欲しいのですが。両方ださないといけないので・・・
0181デフォルトの名無しさん
05/02/09 11:57:36入力項目が固定されているわけだから、>>179から入力処理を省くだけだろう。
main を以下に置き換え。ちゃんと内容確認してから提出してくれよ。間違ってても知らん。
int main(){
int x[10]; int i,len=10;
printf("input please\n");
for(i=0; i<len; i++){
printf("x[%d]:",i); scanf("%d",&(x[i]));
}
shell_sort(x,len);
printf("sort type:s\n");
for(i=0; i<len; i++)
printf("x[%d]:%d\n",i,x[i]);
return 0;
}
0182168
05/02/09 12:09:350183デフォルトの名無しさん
05/02/09 12:20:100184デフォルトの名無しさん
05/02/09 12:22:180185デフォルトの名無しさん
05/02/09 14:07:020186デフォルトの名無しさん
05/02/09 14:28:51[2] 問題文(含コード&リンク): マインスイーパを作成せよ。サイズは9*9とする。
[3] 環境
[3.1] OS: XP pro
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:木曜の夜までに作っていただければ幸いです
[5] その他の制限: なし
です。どうかよろしくお願いします。。。
0187デフォルトの名無しさん
05/02/09 14:38:32Windowsについてるアレをそのまま作れという事か?
0188186
05/02/09 14:48:23配列には
????A
???A
??A
?A
A
?A
??A
???A
????A
といった表記のプログラムを作成し、それを利用する
クリックする位置はscanfで文字入力方式にし、縦を数字、横を
アルファベットで表す。入力毎に状況表示すること。点数表示は
マークに成功した個数とする。配列は一次元配列を使用すること
です。よろしくお願いします。
0189デフォルトの名無しさん
05/02/09 14:54:28せっかく作り始めてたのに!!
すげえムカついた!!!
0190デフォルトの名無しさん
05/02/09 14:56:42・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
・複雑なAAはスレが荒れたり問題が埋もれる原因になりますので使用を控えてください。
―――――――――――――――――――――――――――――――
0191デフォルトの名無しさん
05/02/09 15:14:130192デフォルトの名無しさん
05/02/09 15:15:14019388
05/02/09 15:17:490194デフォルトの名無しさん
05/02/09 15:19:000195デフォルトの名無しさん
05/02/09 15:33:34中学生の知識ありゃ読めるだろ?
コンパイラの言う通りにすれ。
0196デフォルトの名無しさん
05/02/09 15:40:23関数は計算の結果をreturnして渡すべきだ
Main関数を宣言しすぎている
なんか意味違うような…
0197デフォルトの名無しさん
05/02/09 16:01:310198デフォルトの名無しさん
05/02/09 16:03:36たぶん前者はエラーではなく警告。
でも無視しないに越したことはない。
0199デフォルトの名無しさん
05/02/09 17:14:03[2] 問題文 FILE1にある文章(英語-小文字)をFILE2にコピーし、その際 その文章を全て大文字に変換せよ。
[3] 言語:C
[4] 期限: 早ければ早いほどいいです。
#include <stdio.h>
main()
{
FILE *f1 = fopen("file1","r");
FILE *f2 = fopen("file2","w+");
char buff[128];
int br;
while( (br = fread(buff, 1,1, f1)) > 0)
fwrite(buff, 1, br, f2);
fclose(f1) ;
fcpose(f2);
}
上記のプログラムを元に編集お願いします。
0200デフォルトの名無しさん
05/02/09 17:26:58#include <stdio.h>
#include <ctype.h>
int main(void)
{
FILE *f1 = fopen("file1","r");
FILE *f2 = fopen("file2","w+");
char buff[128];
int br;
while( (br = fread(buff, 1,1, f1)) > 0) {
int i;
for (i = 0 ; i < br ; ++i) {
buff[i] = toupper(buff[i]);
}
fwrite(buff, 1, br, f2);
}
fclose(f1) ;
fcpose(f2);
return 0;
}
0201デフォルトの名無しさん
05/02/09 17:36:580202デフォルトの名無しさん
05/02/09 17:54:340203デフォルトの名無しさん
05/02/09 18:13:38char buff[128];
それならなんでこんなことを・・・
0204186
05/02/09 18:18:05余計なお手数おかけして大変申し訳ありませんでした。私用で席を離れておりまして
お詫びがこんな時間になってしまいました。
>>190
テンプレは読んでおりましたが自分の書き込みを確認していなかったために
付けたしをしてしまう結果となってしまいました。
>>191
本当です。課題です。
もし再度検討していただければ幸いです。
>>189さんはじめ、本当にご迷惑おかけしました
0206デフォルトの名無しさん
05/02/09 18:36:53同じですが何か?
0207デフォルトの名無しさん
05/02/09 18:44:46>>188 は全然分からん
0208デフォルトの名無しさん
05/02/09 19:34:09#include <stdio.h>
#define MAX_X 9
#define MAX_Y 9
int main(void)
{
char field[MAX_X][MAX_Y];
int i, j;
char buf[128];
for(j = 0; j < MAX_Y; j++)
for(i = 0; i < MAX_X; i++)
field[j][i] = 0;
do{
printf("--abcdefghi\n");
for(j = 0; j < MAX_Y; j++){
printf("%d:", j + 1);
for(i = 0; i < MAX_X; i++)
printf("%c", field[j][i] ? '0' : '?');
printf("\n");
}
do{
printf("input: ");
fgets(buf, sizeof(buf), stdin);
}while(buf[0] < 'a' || buf[0] > 'i'
|| buf[1] < '1' || buf[1] > '9');
field[buf[1] - '1'][buf[0] - 'a'] = 1;
}while(1);
return 0;
}
0210デフォルトの名無しさん
05/02/09 19:58:58いいのか?それで
0211デフォルトの名無しさん
05/02/09 20:32:30http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/195.zip
0212デフォルトの名無しさん
05/02/09 20:35:380213デフォルトの名無しさん
05/02/09 22:15:18>fcpose(f2);
>上記のプログラムを元に編集お願いします。
#include <stdio.h>
#include <ctype.h>
int fcpose(FILE * f) {return fclose(f);}
int main(void)
{
FILE *f1 = fopen("file1","r");
FILE *f2 = fopen("file2","w+");
char buff[128];
int br;
if (f1 == NULL) return 1;
if (f2 == NULL) {fclose(f1); return 1;}
while((br = fread(buff, 1, 1, f1)) > 0) {
buff[0] = toupper(buff[0]);
fwrite(buff, 1, br, f2);
}
fclose(f1);
fcpose(f2);
return 0;
}
0215デフォルトの名無しさん
05/02/09 22:21:05[2] 問題文(含コード&リンク): 下に書きます。
[3] 環境
[3.1] OS: win xp
[3.2] コンパイラ(バージョン): bcc
[3.3] 言語:C
[4] 期限:2005年2月11日
ガウス・ザイデル法を用いて連立一次方程式
6x+2y+3z=6
2x+3y+4z=9
3x+4y+7z=15
の解を求める。
[5] その他の制限:
係数は自分が入力できるようにしていただきたいです。
どうぞ、よろしくお願いします。
0216デフォルトの名無しさん
05/02/09 22:27:14最近こんなバカが増えたよな。
同一人物か?
0217213
05/02/09 22:33:55気分害したならごめんね
0218デフォルトの名無しさん
05/02/09 22:40:31デリゲートされないよん
0219デフォルトの名無しさん
05/02/09 23:14:44ガウス・ザイデルって収束させるやつだっけ?
ガウス・ジョルダンなら手元にプログラムがあるんだけどなぁ
0220デフォルトの名無しさん
05/02/09 23:18:13列と行でピボットしてな。
0221デフォルトの名無しさん
05/02/09 23:24:42実験用に作ったやつだから入出力とか少し変だけどいいかな?
0222デフォルトの名無しさん
05/02/09 23:33:370223ふぅははー
05/02/09 23:34:25初心者だから変かもしれない。
ゴメン許してもう限界
0224ふぅははー
05/02/09 23:46:54交流回路の解析に便利
0227デフォルトの名無しさん
05/02/10 06:44:16http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
の一番下に修正・削除用のフォームがある
0228デフォルトの名無しさん
05/02/10 09:46:56100うんぬんのネタ(>>84)、出題意図がわかった。
2分木を使って探索ってのは、あれだ。質問したひとが勝手に思ってただけ。
アルゴリズムは幅優先探索で、リスト使うのは、状態登録の場面だけでいいわ。
>>137 のenqueue(),dequeue()みて思ったよ(^^;;
メモリ効率わるいけれど、配列固定や配列の伸張でやるよりは楽かも。
あ、提出期限すぎてるね。
0229デフォルトの名無しさん
05/02/10 12:04:51(C言語入門/ポインター)
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=158
[3] 環境
[3.1] OS: Windows XP
[3.2] Microsoft Visual C++ 6.0
[3.3] C
[4] 2月11日0:00pmまで
[5] その他の制限:
最初のコメントの部分が問題文ですが、全部英語です。
日本語の用語もよくわからないので間違ってたらごめんなさい。
問題を訳すと、
キーボードからintの配列(array)のサイズを読み込んで
(私のコードだとgetData)
そのメモリーをheapに動的に割り当て(dynamically allocate)、
キーボードから配列の中に整数を読み込みます。
(alloInteger)
で、同じサイズのポインター配列を動的に割り当て、
それぞれのポインターがそれぞれの配列の要素を指すようにします。
(alloPointer)
もとの整数配列をいじらないことが条件になっているので、
ポインター配列を挿入ソートして小さい順から並べます。
(interSort ← ここがどうもおかしい感じ)
そして最後に結果を、元の順、小さい順、大きい順に並べます。
(print)
よろしくおねがいします。
0230229
05/02/10 15:29:19いま自宅でやってみたら何も出ませんでした。
どっちにしろソートされてないんですが。
あと、コピペしたらコードのインデントが崩れてしまいました。
読みづらくてすいません。
0231デフォルトの名無しさん
05/02/10 15:47:18http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/201.txt
こんなの普段は絶対に[]演算子使えよ。
0232デフォルトの名無しさん
05/02/10 16:48:34以下のテキストファイルから日付、時間、ファイル名(jpg)をそれぞれ
取り出して別々のテキストファイルに保存して下さい。(ファイル名は任意)
-----------------abc.txt--------------------------
2005/02/01 11:02 5,785 10046a541.jpg
2005/02/02 11:04 22,143 17092705-3.jpg
2005/02/03 11:58 18,156 1994NBS_LG.jpg
-------------------------------------------------
0233デフォルトの名無しさん
05/02/10 16:53:08作るということでいいの?
0234デフォルトの名無しさん
05/02/10 16:54:37そうです。
なんなら日付ファイルだけでもいいですm(_ _)m
0235デフォルトの名無しさん
05/02/10 16:55:140236デフォルトの名無しさん
05/02/10 17:01:47せめて弄るだけ弄ってから放置にしよう
0237デフォルトの名無しさん
05/02/10 17:03:03ひとでなし
0238デフォルトの名無しさん
05/02/10 17:33:44FILE *fin, *fdate, *ftime, *fname;
char date[100], time[100], length[100], name[100];
/* ファイルのオープンくらいは出来るとして。 */
while (fscanf(fin, "%99s%99s%99s%99s", date, time, length, name) == 4) {
fprintf(fdate, "%s\n", date);
fprintf(ftime, "%s\n", time);
fprintf(fname, "%s\n", name);
}
fname と lengthの名前が気に入らんが・・・こんなかんじ。
0239デフォルトの名無しさん
05/02/10 17:38:24それだと100バイト超える場合大丈夫ですか?
0240デフォルトの名無しさん
05/02/10 17:41:330241デフォルトの名無しさん
05/02/10 17:41:49ありがとうございます。ほんと嬉しいですm(_ _)m
0242229
05/02/10 19:17:32ありがとうございます!
参考にさせていただきます。
0243デフォルトの名無しさん
05/02/10 19:36:140244デフォルトの名無しさん
05/02/10 19:47:12「ls」コマンドを入力しても
No such file or directory って出るのですが( TДT)
そのときのプログラムはこれです
intmain()
{
printf( "Hello,World!" );
}
入門でいきまりつまずいて、泣きそうです。。。
0245デフォルトの名無しさん
05/02/10 19:54:59{
printf( "Hello,World!" );
}
これでいけるはず
0246デフォルトの名無しさん
05/02/10 19:58:12int main()
{
printf( "Hello,World!" );
}
0249デフォルトの名無しさん
05/02/10 20:07:26ちょっとまて。lsでそのプログラムになんの関係が?
0251デフォルトの名無しさん
05/02/10 20:10:35何をしたいんだ
0252244
05/02/10 20:13:08それがなぜか出てこないんです・・・
■ このスレッドは過去ログ倉庫に格納されています