C/C++の宿題を片付けます 104代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/02/04(月) 23:32:19【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう.
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
【前スレ】
C/C++の宿題を片付けます 103代目
http://pc11.2ch.net/test/read.cgi/tech/1200318925/
0951940
2008/04/11(金) 16:26:17一応作ってみた。
動かしてないんで期待通りか分からない。
修正箇所の目安程度に見て。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6219.c
ところで、この仕様ってそれぞれ別コマンド?
あとxcpoutの場合、解凍した後アーカイブ内にもとファイルが残ったままになるでOK?
0952デフォルトの名無しさん
2008/04/11(金) 20:04:08基本的には書き込むデータを増やしたなら読み込み時にも対応する位置に対応する処理を追加すればよいです。
すでに951(940)氏が出して下さっているので不要かもですが、
バグ修正含めちょこちょこ変更してみたので一応うpしときます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6221.txt
0953934
2008/04/12(土) 13:14:31解決しました。ありがとうございますー
>>940様
わざわざありがとうございます。ですが、元を使わなくていけなかったので;
あと、�@がコンパイルできたのですが、入力結果がでませんでした;
0954デフォルトの名無しさん
2008/04/12(土) 13:24:39[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6222.txt
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン:CPad for Borland
[3.3] 言語: (C)
[4] 期限:4/14まで
[5] その他の制限:入力はgetcharで行う。
よろしくお願いしますm(_ _)m
あと、文章構成見にくかったら言ってください。
0955936
2008/04/12(土) 13:38:54おめ。3つ目のは以下の間違いだったので今更だけど訂正
if (s[0] == '\0') { puts("エラー"); exit(0); }
あと、2進数変換は>>940氏のアルゴリズムのほうがエレガントなので
余力があるなら書き換えたほうが良さそう
0956940
2008/04/12(土) 14:17:59問題文に「�@0〜255の整数を入力し、数値に変換して unsigned char型配列に格納する。」
とあるので、0〜255を入力し終えるまで何も出力されないです。
そこら辺はソース見てもらった方がいいと思います。
0957>954�@
2008/04/12(土) 15:30:46int main(void)
{
int dst=0;
int cnt;
for(cnt=0; ; ++cnt){
char in = getchar();
if(in=='0' || in=='1'){
if(cnt<8)
dst = dst*2 + (in - '0');
}else{
if(in=='\n'){
if(cnt>0)
break;
else
printf("エラー\n再入力せよ\n");
}
dst=0;
cnt=-1;
}
}
printf("%d\n", dst);
return 0;
}
元の仕様には明記されていないんだが、エラー文字があった場合はエラーメッセージが何度も表示されないようにしてみた。
0958940
2008/04/12(土) 16:38:04http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6224.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6225.c
�Bは「float型に格納可能な範囲」の判定をどうすればいいのか分からなかったとです。
どうすればいいんですかね?
0959デフォルトの名無しさん
2008/04/12(土) 16:51:440961デフォルトの名無しさん
2008/04/12(土) 19:59:56> float 型に格納可能な範囲
FLT_MIN FLT_MAX
ttp://www.cc.kyoto-su.ac.jp/~yamada/pB/float.html
0962デフォルトの名無しさん
2008/04/12(土) 20:19:45一応できたけど、何で動いてるのかよくわからない。(笑
とくに3個目があってるかよくわからない。誤差を許容すると言うことなので誤差出まくりだけど大丈夫だよね。
提出するなら、一回検算してください。修正はご自分で!
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6230.zip
0963940
2008/04/12(土) 21:16:42とりあえずfloatの範囲を有効桁数7桁と、小数点以下38桁までならゼロが連続してOKって感じで作ってみました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6228.c
ゼロの入力に関して仕様がよく分からないところがあります。
今のところ 0、0.0、.0、0.、. でゼロが入力できます。
>>961
floatの32ビットをちゃんと意識して、floatで扱える範囲を考えないとダメっぽいですね。
0965デフォルトの名無しさん
2008/04/12(土) 22:48:550966953,954
2008/04/12(土) 22:54:22了解です。わざわざどもですー。
>>940、958様
説明が下手で申し訳ありません。つまり入力した数が255なら、
こんな感じで表示するようにしたかったのです;
『ビット処理前 dec:255 hex:ff bin:11111111 〜』
こっちのほうはすいません、ちょっとよく判らないです;
あと、�Aは問題なく動いてると思うのですが、0のとき何もおきなかったですー。
>>957様
問題なく動いてます。ありがとうございますー。
>>962
ツッコめるLvならいいのですが、修正できればここには来ないです;;
とりあえず動いていて、気になったのは03を例にすれば、
警告 W8068 main.c 34: 比較において定数が範囲外(関数 main )
警告 W8004 main.c 30: 'Pow' に代入した値は使われていない(関数 main )
警告 W8004 main.c 30: 'Answer' に代入した値は使われていない(関数 main )
警告 W8004 main.c 29: 'ch' に代入した値は使われていない(関数 main )
警告 W8004 main.c 28: 'Point' に代入した値は使われていない(関数 main )
警告 W8004 main.c 28: 'L' に代入した値は使われていない(関数 main )
警告 W8004 main.c 28: 'i' に代入した値は使われていない(関数 main )
と、こんな感じで警告文が出るのですが問題ないでしょうか?
0967デフォルトの名無しさん
2008/04/12(土) 23:54:32(3) だけ解いてみた
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6232.txt
よかったらどうぞ
gcc で確認したから警告でるかもしれないけどw
0968962
2008/04/13(日) 01:56:58初期化時の値は大体つかってない。途中でかわってるはず。習慣なんでね。
一点だけ、EOFが現状-1だと気づかなくって、確認漏れなんだけど、
unsigned charでは比較できない。ので、intに変更してくだちい。
それだけかな?何で動いてるのかよくわかってないもんでね。。。
うごいててよかったよ。あっはっは〜。
0970966
2008/04/13(日) 16:09:28>>967様
警告 W8065 ParseFlt.c 84: プロトタイプ宣言のない関数 'parse_input' の呼び出し(関数 main )
とでて、数字を入力するとerror3が出たり、英数を入力すると、入力のループになってるようです;;
>>962様
変えて見たのですが、iとhが残ってますね。でも、動いてよかったですー。
そして少々特殊?な問題なのですが、
こちらのフローチャートを見てプログラムしなさいという問題があったので、
できれば今日中でよろしくお願いします。
ワードもエクセルもないので、オープンオフィスで申し訳ないのですが;
[1] 授業単元:プログラミング
[2] 問題文:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6234.zip
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: CPad for Borland
[3.3] 言語:C
[4] 期限:2008年4月14日提出
[5] その他の制限:getcharで入力
0971967
2008/04/13(日) 17:48:29ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6235.txt
0972デフォルトの名無しさん
2008/04/14(月) 00:55:10[1] 授業単元:プログラム
[2] 問題文(含コード&リンク):ttp://www.pref.fukushima.jp/pc-concours/2008/03/03_reidai.html(2006本戦の問5です)
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:VC++
[3.3] 言語:C++
[4] 期限:4月16日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6238.c
ここまであるのですが、0が入力された場合
0
0
0
0
と出力されるのではなく、プログラムを終了するようにしたいのですが、どう追加すればいいのでしょうか?
0973デフォルトの名無しさん
2008/04/14(月) 01:12:39scanf("%d", &s);
}while(s<0 || s>=10000);
if ( s == 0 ) { return 0; }
0974デフォルトの名無しさん
2008/04/14(月) 01:32:49なんかめんどくさいことやりすぎじゃね?
#include <stdio.h>
int f( int s_ ) { return ( ( s_ * s_ ) % 1000000 ) / 100; }
int main(){
int i,s;
do { scanf( "%d", &s ); } while ( s < 0 || s > 10000 );
if ( s == 0 )
return 0;
for ( i = 0; i < 10; ++i )
printf( "%d\n", ( s = f( s ) ) );
return 0;
}
0975デフォルトの名無しさん
2008/04/14(月) 01:43:05終了できました、ありがとうございます
0976デフォルトの名無しさん
2008/04/14(月) 12:57:40#include <math.h>
#include <stdlib.h>
#define DATASIZE 10
#define RANDS 4
int main()
{
int s,rank=2,base;
int RandInt[DATASIZE] = {0};
int i,j;
char *RandStr;
puts("初期値(10000未満の正の整数");
scanf("%d",&s);
if( s == 0 )
return 0;
RandStr = malloc(sizeof(char)*((rank * RANDS) + 1));
s = (int)pow(s,rank);
for(i = 0; i < DATASIZE; i++){
sprintf(RandStr,"%0*d",rank * RANDS,s);
for(j = - (RANDS/2) ; j < (RANDS/2); j++){
RandInt[i] *= 10;
RandInt[i] += RandStr[(rank * RANDS)/2 + j] - '0';
}
s = RandInt[i];
s = (int)pow(s,rank);
}
for(i = 0; i < DATASIZE; i++)
printf("%d\n",RandInt[i]);
free(RandStr);
return 0;
}
0977デフォルトの名無しさん
2008/04/14(月) 22:31:13[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6244.txt
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:visual studio 2003
[3.3] 言語: C言語
[4] 期限:4月15日18:00(急ですいません)
[5] その他の制限:
前に(>>704)スタックやキューでやってもらった宿題の続きなのですが、
よろしくお願いします orz
0978デフォルトの名無しさん
2008/04/15(火) 03:41:36ラベルと親の意味がわかりません
0979デフォルトの名無しさん
2008/04/15(火) 11:57:52ラベル付けとは根付き木を作ってそれを深さ優先探索では先行順に番号を振っていくことです。
幅優先探索では幅優先順に番号を振っていくことです
親とは根付き木を作ったとしたら自分の上にいるのが親です。
たぶんわかりにくいですがすいません orz
0980デフォルトの名無しさん
2008/04/15(火) 12:25:08なかなか必死だな
0981デフォルトの名無しさん
2008/04/15(火) 12:29:55明日までに出さなければいけないので必死なんです;;
0982デフォルトの名無しさん
2008/04/15(火) 14:27:14http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6245.c
サービスで幅優先探索も入れといた
0983デフォルトの名無しさん
2008/04/15(火) 20:05:08おぉ!どうもありがとうございます orz
助かりました
0984デフォルトの名無しさん
2008/04/15(火) 23:08:04C/C++の宿題を片付けます 105代目
http://pc11.2ch.net/test/read.cgi/tech/1208268461/
0985デフォルトの名無しさん
2008/04/16(水) 02:41:53[2] 問題文
配列を用いたスタックを用いて、C言語のプログラムに含まれる括弧
{と}、(と)、[と]
が文法上正しい位置にあるかどうかチェックし、全ての括弧が正しい位置にある場合は、
「正しい位置にあります」、1つでも間違っていたら「間違っている」と表示するプログラムを書け。
そのプログラムはファイルとして保存されており、ファイル名を入力すると読み込めるとする。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語:C言語
[4] 期限: 4月15日までにお願いします。
[5] その他の制限:
出来るだけ簡単な関数のみでお願いします。
逆ポーランド法と同じようにすればできるのでしょうか?
0986985
2008/04/16(水) 02:53:190987デフォルトの名無しさん
2008/04/16(水) 03:24:54文法上正しい位置にあるっていうのは、(1) 単に括弧がバランスしているっていう意味?
それとも、(2) Cの文法として受理されない括弧の使い方をしているものがないという意味?
また、(2)の場合は当然として、(1)の場合でも、コメントや文字列リテラル中の括弧はチェックの対象外でいいの?
0988デフォルトの名無しさん
2008/04/16(水) 03:44:27[2] 問題文(含コード&リンク):a[100][100]を宣言し、2重のfor文を用いて、a[0][0]に0+0を入れて、
a[0][1]に0+1を入れて、a[0][2]に0+2を入れて、a[1][2]に1+2を入れて、
・・・a[99][99]に99+99を入れるようなプログラムを作れ。次にこれらの
配列変数の値が赤色の値で、緑と青の値は0であるような画像を表示する
プログラムを作成しろ。
[3] 環境
[3.1] OS: (Windows/Linux/等々) Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 4月16日午後9時までにお願いします。
[5] その他の制限: 習った単元はfor文、if文、1次元配列変数、2次元配列変数です。
基礎なのでできるだけ簡単なプログラミングでお願いします。
0989デフォルトの名無しさん
2008/04/16(水) 04:52:08画像表示に使うライブラリの指定とかないの?
0990デフォルトの名無しさん
2008/04/16(水) 05:23:39>>987さんへの回答がまだ出てませんが、とりあえず>>987さんの(1)の一番簡単なやつをつくってみました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6249.c
0991デフォルトの名無しさん
2008/04/16(水) 05:29:04すんません。リンクミスりました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6250.c
0992デフォルトの名無しさん
2008/04/16(水) 06:25:57ここでやってもらって得た単位は将来使い物になるかな?
0993デフォルトの名無しさん
2008/04/16(水) 06:31:42簡単なんだよこんなの
0994デフォルトの名無しさん
2008/04/16(水) 06:43:33このスレの存在意義は、他力本願な学生が血迷ってこっちにくることのないよう啓蒙してあげることにあります。
0995デフォルトの名無しさん
2008/04/16(水) 07:01:00簡単ならやってみたら?
画像表示の部分をどうするか明記されてないから、やりようがないわけだが。
0996993
2008/04/16(水) 11:11:16#define UNICODE
#include <windows.h>
char a[100][100];
LPCWSTR g_ClassName = L"GarbageClass";
LPCWSTR g_WindowName = L"Garbage";
void Paint(HWND hWnd)
{
HDC hdc;
PAINTSTRUCT ps;
int x, y;
hdc = BeginPaint(hWnd, &ps);
for(x = 0; x < 100; x++) {
for(y = 0; y < 100; y++) {
SetPixel(hdc, x, y, RGB((BYTE)a[x][y], 0, 0));
}
}
EndPaint(hWnd, &ps);
}
0997993
2008/04/16(水) 11:12:17{
switch(uMsg)
{
case WM_PAINT:
Paint(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return(DefWindowProc(hWnd, uMsg, wParam, lParam));
}
return (0L);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASSEX wndClass;
int i, n;
for(i = 0; i < 100; i++) {
for(n = 0; n < 100; n++) {
a[i][n] = i + n;
}
}
0998993
2008/04/16(水) 11:13:02wndClass.style = CS_HREDRAW | CS_VREDRAW;
wndClass.lpfnWndProc = (WNDPROC)WindowProc;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hInstance = hInstance;
wndClass.hIcon = NULL;
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndClass.hbrBackground = GetStockObject(BLACK_BRUSH);
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = g_ClassName;
wndClass.hIconSm = NULL;
if(RegisterClassEx(&wndClass) == 0) { return FALSE; }
hWnd = CreateWindowEx(WS_EX_APPWINDOW, g_ClassName, g_WindowName,
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
0999985
2008/04/16(水) 12:34:42おそらく前者でよいと思います。
文字リテラルやコメントはプログラム中にないという前提でした。
申し訳ありません。
>>990
ありがとうございます。
わかrない部分がたくさんありますが、頑張ってみます!
ありがとうございました
1000990
2008/04/16(水) 12:57:01malloc()した領域をfree()しなかったり、fclose()し忘れてたりしたので、ちょっと修正しました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6251.c
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。