C/C++の宿題を片付けます 106代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/05/03(土) 19:34:21【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう.
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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++の宿題を片付けます 105代目
http://pc11.2ch.net/test/read.cgi/tech/1208268461/
0002デフォルトの名無しさん
2008/05/03(土) 19:36:310003デフォルトの名無しさん
2008/05/03(土) 19:37:580004デフォルトの名無しさん
2008/05/03(土) 19:43:39回数数えて引けばいいって言ってるけど、nが1000なら引く前の数が2^1000で
intの範囲にはとても入りきらない数だって理解してないだろ。
0005デフォルトの名無しさん
2008/05/03(土) 19:45:020006デフォルトの名無しさん
2008/05/03(土) 19:54:020007デフォルトの名無しさん
2008/05/03(土) 19:54:08問題はs_mの重複除外で、ヤツの言う方法だとO(2^m)の計算量になる。
そこのところの解決方法を是非教えていただきたい。
0008デフォルトの名無しさん
2008/05/03(土) 19:55:50形式言語・形式文法
http://science6.2ch.net/test/read.cgi/informatics/1170914378/
0009デフォルトの名無しさん
2008/05/03(土) 20:05:36というのも、abbも含む文字は、abを含む文字全体に含まれる為。
A=ab、B=aaaとおき、AとBが少なくとも一回含まれるn桁の文字全体は、
A、Bをn桁に配置できる場合の数は、(n-1)(n-4)くらいとおもう。あとは{a,b}を適当に埋める。
するとたとえばAとAが重複して現れる場合の数が余分数えてしまうので除外する。
これは、たとえばAが2回、Bが1回含まれる場合の数を求めて引く。全ての場合に対して計算する必要あり。
0010デフォルトの名無しさん
2008/05/03(土) 20:13:300011デフォルトの名無しさん
2008/05/03(土) 20:14:470012デフォルトの名無しさん
2008/05/03(土) 20:15:550013デフォルトの名無しさん
2008/05/03(土) 20:21:19n = 10
S = {aaaa, aaab, baaa, abba}
のときの答えをその手法で出してみてくれる?
0014デフォルトの名無しさん
2008/05/03(土) 20:21:47解決する。聴いてみてくれれば教えるのでやってくれ。
0015デフォルトの名無しさん
2008/05/03(土) 20:22:12> 気に入らない質問やその他や発言はスルーの方向で。
0016デフォルトの名無しさん
2008/05/03(土) 20:24:150017デフォルトの名無しさん
2008/05/03(土) 20:25:22aaaaとaaabを含む文字が最低5桁で実現できる事を考慮していなかった
0018デフォルトの名無しさん
2008/05/03(土) 20:30:0917の場合は、aaaaとbaaab、aaaa(とaaaab)の場合を数える事で解決できるとは思うが
コードを書くのも手計算も面倒だ。
0019デフォルトの名無しさん
2008/05/03(土) 20:31:06前スレ702でも709でも一瞬だぜ
0020デフォルトの名無しさん
2008/05/03(土) 20:36:13smに何が入力されるかもわかんないのに手計算ってw
0021デフォルトの名無しさん
2008/05/03(土) 20:39:510022デフォルトの名無しさん
2008/05/03(土) 20:42:08とりあえずランダム入力を生成する部分だけアップローダにあげてみた
できた人は、この入出力があってるか確認してくれんかね?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6417.c
0023デフォルトの名無しさん
2008/05/03(土) 20:48:260024デフォルトの名無しさん
2008/05/03(土) 20:55:45http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6418.c
>>23
m と l は、m 個の文字列(それぞれ長さl)を
線形合同法で生成してるってこと
0025デフォルトの名無しさん
2008/05/03(土) 20:58:500026デフォルトの名無しさん
2008/05/03(土) 21:00:24誰かに結果検証してもらうために結果だけ張ってるんじゃねーか わかってくれよ
0027デフォルトの名無しさん
2008/05/03(土) 21:01:01そんなはずがない。
同じ文字列はいくつ入れても1つとかわらないので。
0028デフォルトの名無しさん
2008/05/03(土) 21:01:54何を入れたかわからないんじゃあってるかどうかなんてわからないだろ
0029デフォルトの名無しさん
2008/05/03(土) 21:02:550030デフォルトの名無しさん
2008/05/03(土) 21:04:090031デフォルトの名無しさん
2008/05/03(土) 21:05:1213のを手入力で入れて答えが288ならあってるんじゃね?
0032生ハム の代理人
2008/05/03(土) 21:09:52[2] 問題:ある英語の文章が規則に従って変換されてファイルに保存されています。
その文章をファイルとして読み込み、正しい英文に復元し、ファイルに出力する
プログラムを作成せよ。です。規則を解読したところ、単語の文字数の分だけ
(ASCIIコード表でいう)引数?が下げられています。つまり本文でaは、
ファイルではb,ofはqh,TheはWkhで表示されています。また、zはaに戻ります。
willはamppです。数字やピリオド等はそのままです。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名:gcc
[3.3] 言語:C
[4] 期限:2008年5月10日まで
[5] その他の制限:プログラムでポインタを用いて文字列を定義し、既存の文字列操作
関数(strxxx(),例えばstrlen()など)は使わずに、自分で作成すること。
よろしくおねがいします。
流れぶった切って、まだ期限があるから俺はやるぞ!
003322
2008/05/03(土) 21:11:49乱数で生成する部分も張ったから大丈夫かなと思ったけど
そうでもないのか 入力したものを直接張るからできた人頼む
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6419.txt
>>30-31
前スレのが終わるくらい(20くらい)までは確かめたけどそれ以上が分からんのよ
0034デフォルトの名無しさん
2008/05/03(土) 21:12:460035デフォルトの名無しさん
2008/05/03(土) 21:14:400036デフォルトの名無しさん
2008/05/03(土) 21:16:15それ終わってなかった?
0037デフォルトの名無しさん
2008/05/03(土) 21:16:22一応前スレで解決してんじゃねーの?
0038デフォルトの名無しさん
2008/05/03(土) 21:21:30コンパイルして実行してみた?本人のレス見た?
0039デフォルトの名無しさん
2008/05/03(土) 21:21:460040デフォルトの名無しさん
2008/05/03(土) 21:25:15で、なんで>>32?
0041デフォルトの名無しさん
2008/05/03(土) 21:28:26危うく吊られるとこだったZE
0042デフォルトの名無しさん
2008/05/03(土) 23:16:02初心者丸出しのソースならできた
前スレに出したのは単語毎じゃなくて文単位で変換してしまってたorz
0043デフォルトの名無しさん
2008/05/03(土) 23:39:16> あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。
> 気に入らない質問やその他や発言はスルーの方向で。
0044C++コンパイラ
2008/05/03(土) 23:57:30Microsoft Visual C++ Toolkit 2003
ftp://195.252.112.9/programiranje/programski-jezici/VCToolkitSetup.exe
VCToolkitSetup.exe
size 32952488
sha1sum 956c81c3106b97042c4126b23c81885c4b5211f4
edonkey checksum
ed2k://|file|VCToolkitSetup.exe|32952488|c534888fa7605403dcb183d2d15282d1|/
0045C++
2008/05/03(土) 23:58:41Visual Studio 2005 Express Edition CD イメージからのインストール方法
http://www.microsoft.com/japan/msdn/vstudio/express/maninstall/
Visual C++ 2005 Express Edition 日本語版 サイズ 611,540 KB CRC 0xB3AD1A2F
http://download.microsoft.com/download/8/E/8/8E85D539-2255-4CFD-AA97-440AE6C6F44A/vc.iso
Visual Studio 2008 Express Edition の DVD イメージからのインストール
http://www.microsoft.com/japan/msdn/vstudio/express/maninstall/2008/default.aspx
http://download.microsoft.com/download/F/A/6/FA693F60-97D1-44EB-AC7F-6A44AC42B10E/VS2008ExpressJPNX1428694.iso
0046デフォルトの名無しさん
2008/05/04(日) 00:20:04ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6421.c
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6422.c
6421.cは変換用。file1.txtを読み込み、file2.txtに変換したものを出力。
6422.cは復元用。file2.txtを読み込み、file3.txtに復元したものを出力。
ファイルが存在しない場合、その場で標準入力に切り替え。終了はEOF。
0047デフォルトの名無しさん
2008/05/04(日) 00:33:25違う気がするよ
0048デフォルトの名無しさん
2008/05/04(日) 01:02:11少なくとも、任意のa,bにおいて成り立つ理論ではないからね。
0049デフォルトの名無しさん
2008/05/04(日) 01:09:52例、
int ar[5];
ar[0]=15;
ar[1]=20;
このとき定義した大きさ5のうち2つは値を入れたので2となって欲しい。
0050デフォルトの名無しさん
2008/05/04(日) 01:15:02別の変数で数えておけばいつでも取得できるよ。
0051デフォルトの名無しさん
2008/05/04(日) 01:22:57あと大きさを越えたar[7]とかでは何が入ってるの?
0052デフォルトの名無しさん
2008/05/04(日) 01:24:00ar[0]から順番に入れる事前提で
ar[2]に「プログラム中で使わない数字」入れる
とか>>50とか
0053デフォルトの名無しさん
2008/05/04(日) 01:30:37配列確保してから何も入れてない状態だと何が入ってるか分からない
0 かも知れないし -8000万 かも知れない
メモリの中の物がそのまま残ってる
確保してない部分に何が入ってるかは分からないけど、
他のアプリケーションが使ってたりするから、ar[7]とかは使っちゃいけない
0054デフォルトの名無しさん
2008/05/04(日) 02:23:010番目に個数を入れるとか
0055デフォルトの名無しさん
2008/05/04(日) 09:37:05C++ で STL の map を使えば数えられる
0056デフォルトの名無しさん
2008/05/04(日) 10:26:51>>50の方法が一番賢い方法
他の関数でその値をいじるなら、
使用する関数にカウントしている変数をアドレス渡しにすれば
関数から呼び出し元の変数を書き換えられる。
まあグローバル変数でもいいんだけどね^^;
0057デフォルトの名無しさん
2008/05/04(日) 10:44:04iostream より printf の方が楽なので cstdio 使ってるけどこんな感じ
#include<cstdio>
#include<map>
typedef std::map< int, int > mymap;
int main(void)
{
mymap::const_iterator n;
mymap ar;
int search_index=5;
ar[0]=15;
ar[1]=20;
printf("ar.size()=%d\n", ar.size());
printf("ar[%d]=%d\n", print_index, ar[print_index]);
n = ar.find(search_index);
if(n != ar.end()) printf("ar[%d]=%d\n", search_index, n->second);
else printf("ar[%d] not exist!\n", search_index);
return 0;
}
0058デフォルトの名無しさん
2008/05/04(日) 10:48:52SetPixel(hdc,x,y,c);
だと普通に表示されるのが
x1=cos(s)*x-sin(s)*y;
y1=sin(s)*x+cos(s)*y;
SetPixel(hdc,x1+350,y1,c);
だと白ドットがたくさん入って表示されます。
なぜでしょうか?
0059デフォルトの名無しさん
2008/05/04(日) 10:50:51投影される側から計算すればおk
0060デフォルトの名無しさん
2008/05/04(日) 11:12:04暇と飢えで死にそうだ
0061デフォルトの名無しさん
2008/05/04(日) 11:15:42http://pc11.2ch.net/test/read.cgi/tech/1208268461/872
0062デフォルトの名無しさん
2008/05/04(日) 11:23:010063デフォルトの名無しさん
2008/05/04(日) 11:29:160064デフォルトの名無しさん
2008/05/04(日) 11:57:30しかし >>62 の言うとおり問題不備だったりするのが多いな
【未回答一覧】
>>398 2008/04/27 ヘッダに記載された内容を把握し、ヘッダを使用したプログラムを作成
>>609 2008/04/27 02:12:23 の明日 コードを説明する
>>557 2008/04/29 00:00 <copying-GCをC言語で作成 >
>>558 2008/04/29 for文を使用して、15パズルを作成せよ。
>>784 2008/05/01 22:00 5日分の気温データを最高気温の高い順に並び替えるプログラム
>>651 2008/05/04 ペイントソフトの作成
>>719 2008/05/09 waveOutGetPositionを使用して、非同期で再生中のwavの再生位置を取得する
>>826 2008/05/10 配線経路を導く配線アルゴリズム
>>629 指定なし パズル http://www2u.biglobe.ne.jp/~shunbook/omocha/tlwin4.htm
>>929 指定なし グレースケールPNGの画像位置(i,j)における値
006558
2008/05/04(日) 12:00:08投影される側から計算とは
具体的にどうすればよいのでしょう??
0066デフォルトの名無しさん
2008/05/04(日) 12:05:33転送元の x,y が x1,y1 になるという計算をしてる
x1=cos(s)*x-sin(s)*y;
y1=sin(s)*x+cos(s)*y;
でもこの場合には整数に直した時に異なる複数の(x,y)に対して同一の(x1,y1)になる可能性がある
0067デフォルトの名無しさん
2008/05/04(日) 12:15:49転送元座標を(x,y)とし転送先座標を(x1,y1)とするとき (つまり>>58の条件と同じ時)
x=cos(-s)*x1-sin(-s)*y1;
y=sin(-s)*x1+cos(-s)*y1;
SetPixel(x1,y1,GetPixel(x,y));
となる
006863
2008/05/04(日) 12:23:34まあ作ってみたら簡単だったから、解決されてて当たり前か。
ということで、
【未解答問題一覧(期限切れ・問題不備除く)】
>>651 2008/05/04 ペイントソフトの作成
>>719 2008/05/09 waveOutGetPositionを使用して、非同期で再生中のwavの再生位置を取得する
>>826 2008/05/10 配線経路を導く配線アルゴリズム
この中に俺が出来る問題はないと断言できるので、CLIの課題クレ
0069デフォルトの名無しさん
2008/05/04(日) 12:58:33いまいち要求が分からなかったので、始点終点を与えるたびに
その間に配線するプログラムを作ってみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6426.c
0070デフォルトの名無しさん
2008/05/04(日) 15:18:58[2] 問題文(含コード&リンク):
キーボードから実数a,b,c,と式d(x),f(x,y)を入力し、
a≦x≦b,c≦y≦d(x)からなる領域Dにおけるf(x,y)の2重積分を求めるプログラムを作成せよ。
計算結果は小数点以下第12位まで表示すること。
ただし、f(x,y)は必ず2重積分可能で、d(x),f(x,y)には文法的に正しい式が入力される
ことが保証されているものとする。広義積分が必要な場合もあるので注意すること。
式に入力可能な文字は数値とx,y,+[加算],-[減算],*[乗算],/[除算],^[べき乗],([括弧],)[閉じ括弧]とする。
なお、変数はいくらでも使ってよく、関数はいくらでも作ってよい。
[3] 環境
[3.1] OS: 任意
[3.2] コンパイラ名とバージョン: gcc3以上
[3.3] 言語: C言語
[4] 期限: 平成20年5月12日 午後5:00まで
[5] その他の制限:
・scanf関数とfloat型は使用禁止(sscanf関数は可)
・数値積分にはシンプソンの1/3公式を使う事
授業中の補足説明では、
・式の入力は「x^2+2*x*y+y^2」や「(x^2-4*x+3)*(4*y-5)」みたいに入力する
・式の解析はスタックを用いて逆ポーランド記法に直すと簡単になる
とのことです。
ポインタや構造体、動的変数など、C言語の基本は一応習い終わっています。
また、2重積分については昨年やりました。
もう頭が沸きました。どうかよろしくお願いします。
0071デフォルトの名無しさん
2008/05/04(日) 17:05:46> 広義積分が必要な場合もあるので注意すること。
a,b,c,d(x)やf(x,y)が無限大に発散する場合でも正しく計算せよ、ってこと?
シンプソンの公式でそんなことできる?
それとも俺の理解が間違ってるかもしれないが。
0072デフォルトの名無しさん
2008/05/04(日) 17:44:49>広義積分が必要な場合もあるので注意すること。
すみません、それは先生の間違いだそうです。
去年出した問題では広義積分が必要だったそうです。
今年は去年から問題を少し変えたので、広義積分は必要なくなったようですが、
その行が残ったままになってしまっていたそうです。
0073デフォルトの名無しさん
2008/05/04(日) 19:41:40アフィン変換 画素補間
0074デフォルトの名無しさん
2008/05/04(日) 19:44:59念のため確認。
許される関数の条件に「多項式」とかそういうのは無いんだよね?
たとえば d(x) = 1/x, f(x,y) = x^y みたいなのもアリなんだよね?
0075デフォルトの名無しさん
2008/05/04(日) 19:47:19とりあえず、逆ポーランドへの変換と、式の評価までは作った。
続きは誰かお願い。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6427.txt
0076デフォルトの名無しさん
2008/05/04(日) 20:02:02そのとおりです。
>>75
すごすぎます。
0077デフォルトの名無しさん
2008/05/04(日) 20:33:1075様のコードに数値積分部分を付け足した.
いくつかの関数について,mathematica による数値積分結果と
ほとんど一致しているので、たぶん合っていると思われる.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6428.c
0078デフォルトの名無しさん
2008/05/04(日) 20:53:31readExprで式が変換されていない。
a,b,cは実数なのに、atoiでは整数しか読めない。
0079デフォルトの名無しさん
2008/05/04(日) 21:00:310080デフォルトの名無しさん
2008/05/04(日) 21:25:32デバッグくらい自分でやれよ。
0081デフォルトの名無しさん
2008/05/04(日) 21:40:29atoi は完全にミスでした.直したので許してくだせえ.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6429.c
0082デフォルトの名無しさん
2008/05/04(日) 21:56:32軽率でした、すみません。
>>81
ありがとうございます。今デバッグしています。
0083デフォルトの名無しさん
2008/05/04(日) 22:15:12あと、積分区間がh=0.001程度に小さいときにも誤差を出さないようにした。
#define DIV 1024
double integrateInner(ExprElement *fexpr, double c, ExprElement *dexpr, double x) {
double d = eval( dexpr, x, 0 ); // 第二引数 (y) は使わない
double y, S = 0;
double h = (d-c)/DIV;
int i;
for (i = 0; i < DIV; i ++) {
y = c+h*i;
S += eval( fexpr, x, y )
+ 4*eval( fexpr, x, y+h/2 )
+ eval( fexpr, x, y+h );
}
return S * h / 6;
}
double integrateOuter(ExprElement *fexpr, double a, double b, double c, ExprElement *dexpr) {
double x, S = 0;
double h = (b-a)/DIV;
int i;
for (i = 0; i < DIV; i ++) {
x = a+h*i;
S += integrateInner(fexpr, c, dexpr, x)
+ 4*integrateInner(fexpr, c, dexpr, x+h/2)
+ integrateInner(fexpr, c, dexpr, x+h);
}
return S * h / 6;
}
0084デフォルトの名無しさん
2008/05/05(月) 06:43:32[2] 問題文(含コード&リンク):()
アルファベット小文字からなる文字列 s が与えられる.
s から何文字か削除して回文(左から読んでも右から読んでも同じ)にしたい.
最小何文字削除すれば回文となるか計算するプログラムを作れ.
なお,s の文字数は 100000 以下としてよい.
例:
s = ababba → 1 (右から 2 番目の b を消して ababa)
s = abcdef → 5 (1 文字残して残りを削除する)
[3] 環境
[3.1,2] OS,コンパイラ: 問わず
[3.3] 言語: どちらでも可
[4] 期限: 2008/06/08
[5] その他の制限: 特に無し
0085デフォルトの名無しさん
2008/05/05(月) 08:05:29#include <stdio.h>
#include <string.h>
int min(int x,int y) { return ((x < y) ? x : y); }
int kaibun_ntake(char *str,int f,int l) {
if(l - f <= 0) return 0;
else if(str[f] == str[l]) return kaibun_ntake(str,f + 1,l - 1);
else return 1 + min(kaibun_ntake(str,f + 1,l),kaibun_ntake(str,f,l - 1));
}
int main(int argc,char **argv) {
printf("%d\n",kaibun_ntake(argv[1],0,strlen(argv[1]) - 1)); return 0;
}
これでどうよ?まあ長いと相当かかるが。。
0086デフォルトの名無しさん
2008/05/05(月) 09:36:380087826
2008/05/05(月) 15:16:45>>69様
GoldenWeekで忙しいところ見て頂きどうも有難うございます。
早速、確認してみます。
また、分からないことがあったら聞くかもしれません。
宜しくお願い致しますm(__)m
0088デフォルトの名無しさん
2008/05/05(月) 15:52:28[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6433.cpp
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:visual studio 2006
[3.3] 言語: C言語
[4] 期限:2008年5月6日まで
前に解いてもらった宿題なのですがわからないところがあったので
教えていただけないでしょうか?どうぞよろしくお願いします
0089デフォルトの名無しさん
2008/05/05(月) 16:16:05循環リストを用いてスタックとキューを実装している
スタックは深さ優先検索、キューは幅優先検索で使われる
0090デフォルトの名無しさん
2008/05/05(月) 16:31:34>>85氏のを発展させてみた。
1000文字程度なら余裕。
テストパターンの生成処理もついてます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6434.txt
0091826
2008/05/05(月) 17:03:39http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6435.txt
C言語ではbool型は使えるのでしょうか??
17行目で宣言の構文エラーになるのですが・・
教えて下さい(´・ω・`)
0092デフォルトの名無しさん
2008/05/05(月) 17:05:250093デフォルトの名無しさん
2008/05/05(月) 17:06:180094デフォルトの名無しさん
2008/05/05(月) 17:13:350095デフォルトの名無しさん
2008/05/05(月) 17:14:11そのboolをintにすればおk
あとはmain内のstatus変数の宣言を関数の先頭でおこなえばいける。
0097826
2008/05/05(月) 17:32:24>>95様
レス有難うございます。
bool型からint型に変えてみたところ
構文エラーが消えました!!
また、分からないことがあったら質問するかもしれません(´・д・`)
0098デフォルトの名無しさん
2008/05/05(月) 18:08:560099826
2008/05/05(月) 19:18:36★36行目の!valid_position(src)のビックリマークは否定を表している
即ち値が0のことを示しているのでしょうか。
★42行目のdist[i][j] = (grid[i][j] == '.' ? MAX_X*MAX_Y : 0);
がどういう操作がなされているのかが分かりません。
?は何の意味でしょうか??
教えて下さいm(__)m
0100デフォルトの名無しさん
2008/05/05(月) 19:25:00#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SRC_LEN 1000
int search_match_max(const char *a, const char *b){
int count=0, maximum=0;
for(;*a && *b;a++,b++){
if(*a==*b) count++;
else count=0;
if(count>maximum) maximum=count;
}
return maximum;
}
int main(void){
char src[SRC_LEN+1], tmp[SRC_LEN+1];
int i, srclen, count, maximum=0;
for(i=0;i<SRC_LEN;i++) src[i]=(rand()%3)+'a'; // テスト用文字列生成
src[i]='\0';
srclen=strlen(src);
for(i=0;i<srclen;i++) tmp[i]=src[srclen-1-i]; // 反転文字列生成
tmp[srclen]='\0';
for(i=0;i<srclen;i++){
count=search_match_max(&src[i], &tmp[0]);
if(count>maximum) maximum=count;
count=search_match_max(&src[0], &tmp[i]);
if(count>maximum) maximum=count;
}
puts(src);
printf("%d\n", srclen-maximum); // (削る文字数) = (文字列長) - (最大一致長)
return 0;
}
0101デフォルトの名無しさん
2008/05/05(月) 19:29:06> 36行目
そのとおり。valid_positionの条件が偽であるとき、continueする。
> 42行目
3項演算子 (条件式 ? 値1 : 値2) は、条件式が真なら値1、偽なら値2に評価される。
すなわち、
if(grid[i][j] == '.') dist[i][j] = MAX_X*MAX_Y;
else dist[i][j] = 0;
と同じ動作をする。
0102デフォルトの名無しさん
2008/05/05(月) 19:34:26"abcbca"に対して結果が3になる。
正解は1(5文字目の'c'を消す)。
0103100
2008/05/05(月) 19:35:320104826
2008/05/05(月) 19:50:53レス有難うございます。
そのような表記の仕方があるんですね。
分かりました。
あともう2つ質問なのですが・・・
★46行目のqueue[front++] = src;はfrontをインクリメントすることで
queueに1個1個srcの値を入れているのでしょうか??
★47行目のwhile (front != bottom)とありますが
frontとbottomは何を表しているのかがよく分かりません。
これは一体何を比較しているのでしょうか。
教えて下さいm(__)m
0105デフォルトの名無しさん
2008/05/05(月) 20:02:56> 46行目
その行はループしていないので、1個1個という表現はおかしいが。
queue[front] = src; front++;
と同じ。
> 47行目
配列queueは、探索すべき位置がずらっと格納される。
bottomは未探索データの先頭をあらわし、
frontは配列の未使用部分の先頭をあらわす。
すなわち、queue[0]〜[bottom-1]は探索済み、
queue[bottom]〜queue[front-1]は未探索、
queue[front]以降は配列自体が未使用。
したがって、(front!=bottom)は、「未探索データが残っている」という条件になる。
0106デフォルトの名無しさん
2008/05/05(月) 20:08:19もしかして、「キュー」や「幅優先探索」を知らないのかな?
もしそうだったら、
http://ja.wikipedia.org/wiki/幅優先探索
とかを先に一読すると良いかも。
0107826
2008/05/05(月) 21:19:39>>106様
レス有難うございます。
配列queueは探索済み・未探索・配列未使用の順で
並んでいるのですね。
キューの仕組みがよく分からないので教えて頂いた
URLを見てみます。
今日は、もう家に帰宅するので、
また明日、昼頃に学校に来るので教えて下さいm(__)m
ご多忙中のところすみません。。
0108デフォルトの名無しさん
2008/05/05(月) 22:30:412問題:自己相関と相互相関について説明と自己相関と相互相関を行うプログラムを作成
3環境OS:Linux、コンパイラ:gcc、言語:C
4期限:5月14日
制限は特にありません。
言葉の意味もまだよく理解できていないのですが、よろしくお願いします。
0109デフォルトの名無しさん
2008/05/05(月) 22:42:47それだけでは問題として成立していない。
(何の自己相関・相互相関を計算するか、など)
まずは言葉の意味をきちんとあなたが理解して、
何があればプログラムが書けるかを認識してから、もう一度質問をどうぞ。
その際に、何か与えられたデータなどがあるなら、それもアップロードすること。
0110108
2008/05/05(月) 23:24:03問題は
振り幅が1で周波数100Hzの正弦波を自己相関処理し
グラフで表現するというものと
振り幅が1で周波数100Hzの正弦波と振り幅が1で周波数100Hzの余弦波を相互相関処理しグラフで表現する
というもので
どちらも標本間隔0.1[ms]、標本の個数は200個です
また
http://www4.plala.or.jp/tamo/dsp/07cross-corr.pdf
↑にほとんど同じ問題があったのでこれを参考にと思ったのですがあまり理解できませんでした。
011188
2008/05/05(月) 23:57:26nodeinfo_t infoary[NODENUM] = {0};
pushstack(&stack, start);
flags[start-1] = 1;
infoary[start-1].label = 1;
infoary[start-1].parent = start;
label = 2;
ノードのラベルと親ノードを、ノード-1の位置に記憶するということ
だと思うのですが、なんでノード-1の位置なのかが理解できませんでした。
教えていただけないでしょうか?よろしくお願いします。
0112デフォルトの名無しさん
2008/05/06(火) 00:08:50http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6438.zip
自己相関、相互相関についての説明は自分でやってくれ
0113デフォルトの名無しさん
2008/05/06(火) 02:41:23>>http://pc11.2ch.net/test/read.cgi/tech/1208268461/719
2008/05/09 waveOutGetPositionを使用して、非同期で再生中のwavの再生位置を取得する
0114デフォルトの名無しさん
2008/05/06(火) 03:01:08[2] 問題文(含コード&リンク)
ASCIIコード(10進数)を使って、50と入力したら本当は2が表示されるところをAが表示されるように、入力した数字+15の文字が表示したい場合はどうしたらいいでしょうか?
例 55と入力→(本当は7と表示されるが)Fと表示される 55+15=70なので
例 77と入力→(本当はMと表示されるが)\と表示される 77+15=92なので
#include <stdio.h>
int main(void)
{
}
[3] 環境
[3.1] vista
[3.2] gcc
[3.3] C
[4] 期限;今日中
習ったのはprintf int for scanf %d とかですか?初歩的なことしか習ってません。
この問題を簡単に解く基本的なことは習っているようです
0115デフォルトの名無しさん
2008/05/06(火) 03:12:10[2] 問題文: 親プロセスと子プロセスをつくり読み込みと書き込みを並行処理する。
親プロセスはfork()とexecl()を使い子プロセスを作成する。
その後親プロセスはキーボードから文章1行ずつを読み取り、一時ファイルに書き込む。
この読み込みと書き込みはユーザーがquitと入力するまで行われる。
子プロセスは一時ファイルから文章を1行ずつ読み取り、出力ファイルに書き込む。
親プロセスと子プロセスはシグナルを使いは並行処理を行う。
親プロセスは文章を1行一時ファイルに書き込むごとに子プロセスにSIGUSR1を送る。
また、親プロセスは入出力が終了した際にSIGUSR2を子プロセスに送る。
子プロセスは、出力ファイルを作成後、SIGUSR1を受け取るまで待機し、受け取り次第一時ファイルから出力ファイルに一行書き込む。
また、書き込みが行われている間はSIGUSR1とSIGUSR2をブロックする。
子プロセスはSIGUSR2を受け取ると終了する。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6439.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: 2008年5月6日まで
[5] その他の制限:sigprockmask()sigsuspend()sigaction()などを使い、
シグナルを受け取るまで待機やシグナルのブロックをしなければなりません。
どうしても子プロセスのSIGUSR1を受け取るまで待機し、SIGUSR1を受け取るごとに入出力するという所がわかりません。
よろしくお願いします。
0116デフォルトの名無しさん
2008/05/06(火) 03:13:34#include <stdio.h>
int main(void) {
char ch;
printf("Input > ");
scanf("%d",&ch);
printf("%c",ch+15);
return 0;
}
0117デフォルトの名無しさん
2008/05/06(火) 03:24:41ありがとうございます
しかしchar ch Inputというのを始めてみたのですが、これを使わないで表すことはできますか?
0118デフォルトの名無しさん
2008/05/06(火) 03:26:43Input って、ただ文字を表示しただけやで・・・
0119デフォルトの名無しさん
2008/05/06(火) 03:29:420120デフォルトの名無しさん
2008/05/06(火) 03:30:190121デフォルトの名無しさん
2008/05/06(火) 03:32:390122デフォルトの名無しさん
2008/05/06(火) 05:10:05int main(void)
{
int ch;
printf("Input > ");
printf("%c",scanf("%d",&ch)+15);
return 0;
}
こんな事してみたり
0123デフォルトの名無しさん
2008/05/06(火) 05:20:580124デフォルトの名無しさん
2008/05/06(火) 05:48:320125デフォルトの名無しさん
2008/05/06(火) 07:16:15まだお待ちしています
0126デフォルトの名無しさん
2008/05/06(火) 11:26:05自分でデバッグもできないのにこんな課題与えられるのかよ
しかもこんな難しい回答提出するつもりでいるの?
0127デフォルトの名無しさん
2008/05/06(火) 12:06:47>>85>>90
と(模範回答かどうかは知らんが)回答は出ているが、
不満ならどこが不満なのか書いたほうがいいのでは?
012888
2008/05/06(火) 13:10:58そしてまた質問になるのですが、探索されたかどうかのチェックはどの変数で
やっているのでしょうか?よろしくお願いします。
0129デフォルトの名無しさん
2008/05/06(火) 13:31:37[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6441.txt
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:CPad for Borland
[3.3] 言語: C言語
[4] 期限:2008年5月7日まで
[5] 基本制限:getcharを使用、atoi,scanf,gets関数など使用不可
その他制限:下記・問題に記載あり
[Ex] 初心者程度の知識なので、その辺ご考慮くれるとありがたいです;
前スレにていろいろ質問させていただいたものですが、前スレが見れなくなってしまったのもあり、
質問させていただきます。
�@前回させてもらったのですが、unsigned charに入れたものをシフトさせて表示しろ、
と言われたのでやってみたのですが、どうも左、右、右のものを反転となってしまい、
うまく直せません。どうすればいいでしょうか?
�Aこれも前回提出したのですが、fgets→getcharに直せ、とのことで判る範囲で修正してみたら
どうも月の部分で2桁目以降も入力を無視して受け付けてしまうようになって
しまいました。(1111/11なら1111/1111111でもエラーを起こさず登録されている。)
�Bこれについてはすごく読みづらいと思いますが、終端に\0を入れろとのことで、
DEL関数のときは全てに\0を入れているので、終端に\0を入れて、クリアしろ、
とのことでした。
0130デフォルトの名無しさん
2008/05/06(火) 13:32:33直していただき、それをこっちの方にも応用させていただきたいのですが、
注意事項として、前回のものを出させていただいた結果、
const使いすぎ、void*とかいらない、c++ならできるがcはできないなどの指摘を受けました。
ちなみに前回参照させていただいたのがこちらです↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6290.txt
�Dこちらは先ほどの派生ですので、先ほどの注意を守りつつ、桁数制限を越えない
ようにとのことでした。前回参照分↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6292.txt
GWラストにこんなに投げさせてもらったのですが、時間があれば付き合ってください・・・。
2つに分けての長文失礼しましたm(_ _)m
0131デフォルトの名無しさん
2008/05/06(火) 13:39:55>前スレにていろいろ質問させていただいたものですが、前スレが見れなくなってしまったのもあり、
>質問させていただきます。
ttp://www.uploda.org/uporg1407193.png.html
0132デフォルトの名無しさん
2008/05/06(火) 13:40:580133デフォルトの名無しさん
2008/05/06(火) 14:11:28�C
> void*とかいらない
strptr_cmp関数をこのように変更。
int strptr_cmp( const char** x, const char** y )
{
return strcmp( *x, *y );
}
> const使いすぎ
意味不明。適切で必要な箇所に使用しているだけだが。
使いたくないなら単純にconstを消せばいい。うちの環境では警告が発生するがな。
>c++ならできるがcはできない
どこのことか不明だが、コメントを/* */形式にするってところしか見当たらない。
0134デフォルトの名無しさん
2008/05/06(火) 14:21:39�D
�Cと基本的に同じ。
person_name_cmp関数を変更。
int person_name_cmp( const Person** x, const Person** y )
{
return strcmp( (*x)->name, (*y)->name );
}
const不要なら片っ端から消すように。
>桁数制限を越えないように
越えないところで適当に改行すればいい。
0135デフォルトの名無しさん
2008/05/06(火) 14:25:06>>111
Cの配列のインデックスが0からで、ノードの番号が1からだから
>>探索されたかどうかのチェックはどの変数で(ry
自分が貼ったソースのコメントに書いてあるじゃ〜ん
0136デフォルトの名無しさん
2008/05/06(火) 14:37:42シグナルあんまり触ってないから自信ないけど、一応できたのでうp
親プロセス
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6444.c
子プロセス
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6445.c
0137デフォルトの名無しさん
2008/05/06(火) 14:58:11バブルソートに変更した。
�C
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6446.txt
�D
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6449.txt
0138デフォルトの名無しさん
2008/05/06(火) 15:50:00[2] 問題文(含コード&リンク):char変数を用いてアルファベットのkeisuke yamanaka
を順番にソートする。
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2008年5月8日まで]
[5] その他の制限:if文,for文を用いて答える
教師が説明なしでいきなりやれといわれて全くわからない…
0139138
2008/05/06(火) 15:51:16014088
2008/05/06(火) 15:58:25>>探索されたかどうかの(ry 自分で書いてますねw
また再度の質問なのですが、infoaryは何の変数なのでしょうか?
そして連結成分分解の説明としては、まず根の数を調べる。ラベル付けされた順に見る。
根でなければ次の木に移行。根でなければ木に付属。頂点をすべて探索したら終了
でいいでしょうか?間違っていたら教えていただけないでしょうか?
よろしくお願いします
0141デフォルトの名無しさん
2008/05/06(火) 16:41:52スペースが一番前に来てしまうが・・・
デバッグ文も残したままだが・・・
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6450.cpp
0142デフォルトの名無しさん
2008/05/06(火) 16:42:57まぁデバッグ文だからいいか(´・ω・`)
0143デフォルトの名無しさん
2008/05/06(火) 16:51:06他人が提出するやつだしどうでもいいか
余計な処理勝手に削除して
これが一番手っ取り早い
0144826
2008/05/06(火) 16:51:2577行目〜81行目にかけて
if (dist[next.x][next.y] > dist[curr.x][curr.y] + 1)でなぜ
1を足しているのかが分かりません。
それと、prev[next.x][next.y] = i;でどうして0〜4の値をprevに
入れる必要があるのかが分かりません。
教えて下さい(´・ω・`)
0145デフォルトの名無しさん
2008/05/06(火) 17:15:42#include <stdio.h>
int main(void)
{
int i, n, c;
char data[] = "keisuke yamanaka";
for (n = 0; data[n]; n++) ;
for (c = n; (c /= 1.3) != 0;) for (i = 0; i + c < n; i++) if (data[i] > data[i + c]) data[i] ^= data[i + c] ^= data[i] ^= data[i + c];
printf("%s\n", data);
return 0;
}
>>143
どこが削除しても大丈夫な部分なのか分からないって可能性も
0146デフォルトの名無しさん
2008/05/06(火) 17:16:11どうもありがとうございます
0147デフォルトの名無しさん
2008/05/06(火) 17:17:17書き込んだ後にまた書き込みが…ありがとうございます
0148おやじPG
2008/05/06(火) 17:21:44SYSTEMTIME構造体の加減算を簡単に行う関数や方法を教えてください。
処理時間をミリ秒3桁まで取りたいのですが、現在
SYSTEMTIME st_s, st_e;
::GetLocalTime(&st_s);
何かの処理・・・
::GetLocalTime(&st_e);
として時間をとっていますが st_s と st_e の差がとれる関数OR方法を知りません。
MSDNなどでみるとFILETIME構造体に変換してなどと書かれていますが、
そのFILETIME構造体の加減算を行う関数を知りません。
どなたか回答おねがいします。
開発環境は MFC VS2008を使用しています。
0149デフォルトの名無しさん
2008/05/06(火) 17:24:59dist[curr.x][curr.y]は、現在位置への到達距離をあらわし、
1を足したものは、その隣接位置nextへの到達距離をあらわす。
しかしdist[next.x][next.y]に、既にそれ以下の到達距離で到達した痕跡があるなら、
そこは探索する必要がない、ということ。
prevの件は、
最後にゴール地点からスタート地点へ向かって経路をgridへ書き込むとき、
戻っていく方向がわかるように記録している。
0150デフォルトの名無しさん
2008/05/06(火) 17:25:05>>infoaryは何の変数
何の変数ってどういう意味?
>>連結成分の分解(ry
ちょっと何言ってるかわかんない (サンド風
プログラムは、
�@未通過ノードのうち1つをルートにして、そのノードから到達可能なノードを探索し、通過済みにする(これが1つの連結成分)
�A未通過のノードがまだあるなら�@を繰り返す
という風に動いてる
0151デフォルトの名無しさん
2008/05/06(火) 17:41:56GetTickCount関数使えばいいかと。
あと、スレ違いですぜ。
0152826
2008/05/06(火) 17:48:52早速のレス有難うございます。
dist[curr.x][curr.y]が、スタートから現在までの距離を
表しているのは分かりました(´・д・`)
currに1を足したものが、nextになるんですよね??
ということは、77行目のdist[next.x][next.y]もdist[curr.x][curr.y]+1も
どっちも同じ値になって、比べられない気がするのですが。。。
prevについては、なんとなく分かりました(´・ω・`)
0153デフォルトの名無しさん
2008/05/06(火) 17:51:16削除可不可判断できなかったら宿題提出の時説明求められたら アッー!
0154デフォルトの名無しさん
2008/05/06(火) 17:54:57生徒が本当に理解してるか判断するため?
馬鹿じゃねーの?きちんと宿題提出してるんだからそれでいいじゃねーかよ。
0155デフォルトの名無しさん
2008/05/06(火) 17:58:38まぁ言ってることは同意する
0156デフォルトの名無しさん
2008/05/06(火) 18:01:33> currに1を足したものが、nextになるんですよね??
「なる」と言うより、
dist[next.x][next.y] = dist[curr.x][curr.y] + 1;
によって、そう「する」。
> ということは、77行目のdist[next.x][next.y]もdist[curr.x][curr.y]+1も
> どっちも同じ値になって、比べられない気がするのですが。。。
dist[next.x][next.y] = dist[curr.x][curr.y] + 1;
を実行する前の段階なので、同じ値とは限らない。
nextに未到達ならば、dist[next.x][next.y]には初期化で代入したMAX_X*MAX_Yが入っているし、
到達済みなら到達距離が入っている。
0157826
2008/05/06(火) 18:29:03レス有難うございます。
77行目のdist[next.x][next.y]が未探索であれば
MAX_X*MAX_Yの値が入っているんですね。
ちょっと気になったのですが、
★どうして未探索の場合は、『MAX_X*MAX_Y』と掛け算した大きな値を
入れているのでしょうか??
★dist[curr.x][curr.y]に隣接するdist[next.x][next.y]が
既に配線されたネットとして到達距離が入っている場合
どんな操作になっているのでしょうか。
★それと87行目のfront == bottomとありますが
frontとbottomが同じ値のときの状況が
イメージできないのですが・・・。
教えて下さい(´・д・`)
0158デフォルトの名無しさん
2008/05/06(火) 18:44:37宿題に関連しているとは言え、あまり立て続けだと反感買いそうだぞ。
自分でよく考えてみれば、解かると思う。
> MAX_X*MAX_Y
未探索の位置nextについて、distが十分大きな値を持っていれば、
if (dist[next.x][next.y] > dist[curr.x][curr.y] + 1)
の条件が成立するから。
> 既に配線された...
(grid[i][j] == '.' ? MAX_X*MAX_Y : 0) でdistは0なので、探索されない。
> front == bottom
上のwhile (front != bottom) のループは、
ゴールに到達したときに、未探索位置をキューに残したままbreakする。
また、ゴールに到達できなかった場合は、
キューの未探索位置が尽きるので、front == bottom が成立して抜ける。
0159826
2008/05/06(火) 18:57:10レス有難うございます。
自分でよく考えたのですが分かりませんでした。
質問ばかりして申し訳ありませんでしたm(__)m
0160デフォルトの名無しさん
2008/05/06(火) 19:07:10いや、頭ひねって、逆立ちして考えてもわからなかったら
また質問すればいい。
聞かれれば俺は教えるから。
0161デフォルトの名無しさん
2008/05/06(火) 19:32:17[2] 問題文(含コード&リンク):自分が使っているコンピュータで評伝できる最少の正の実数を求めるプログラムを作成せよ
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2008年5月7日午前9時まで
どなたかお願いします
0162161
2008/05/06(火) 19:32:480163デフォルトの名無しさん
2008/05/06(火) 19:38:180164デフォルトの名無しさん
2008/05/06(火) 19:48:11#include <stdio.h>
int main()
{
double a, t;
for(t=1; t; a=t, t/=2);
printf("%e\n", a);
return 0;
}
016588
2008/05/06(火) 20:01:54>>infoaryは何の変数 何の変数ってどういう意味?
infoaryが翻訳してもでてこなかったので何なのかがわりませんでした。
教えていただけないでしょうか?お願いします
0166デフォルトの名無しさん
2008/05/06(火) 20:10:35翻訳??
変数名になんでinfoaryってつけたかってことかい? それは気分だ
別にaaaでも良い
変数の型のこといってるなら、ソースで構造体宣言してるし、
どういう使い方するかは、前に説明したし、何が聞きたいのかが分からない
0167デフォルトの名無しさん
2008/05/06(火) 20:15:06ありがとうございます
0168108
2008/05/06(火) 20:32:04亀レスですが、ありがとうございます。
がんばって理解できるようにします.
0170デフォルトの名無しさん
2008/05/06(火) 20:41:060171デフォルトの名無しさん
2008/05/06(火) 21:01:10[2] 問題文(含コード&リンク):
瓶詰めのオレンジジュースを売っている店がある。
今この店では、開店50周年キャンペーンとして、
オレンジジュースの空瓶を5本持って行くと、
新しいオレンジジュース1本と交換してくれるサービスをしている。
キーボードから飲みたいオレンジジュースの本数を入力すると、
最低この店から買わなければならないオレンジジュースの本数と、
最終的に残る空瓶の本数を表示するプログラムを作成せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 5月6日 23:59まで
[5] その他の制限: 読み込んでよいヘッダはstdio.hのみ
メール課題が出ているのを忘れて遊んでいた俺はもうダメ人間です。
よろしくお願いします
0172デフォルトの名無しさん
2008/05/06(火) 21:05:59何度も買いに行く計算?
0173おやじPG
2008/05/06(火) 21:15:24すれ間違えてました。すみませんでした。
0174デフォルトの名無しさん
2008/05/06(火) 21:22:15買うのは最初だけですが、サービスを貰いに行くのは何度でも。
らしいです。
0175デフォルトの名無しさん
2008/05/06(火) 21:43:21#include<stdio.h>
int calc(int num, int *p_empty){
int count=0, empty=0;
while(num){
count+=num;
empty+=num;
num=empty/5;
empty%=5;
}
*p_empty=empty;
return count;
}
int main(void){
int i, num, count, empty;
scanf("%d", &num);
for(i=num*4/5;;i++){
count=calc(i, &empty);
if(count>=num) break;
}
if(count>num) count--,empty+=5;
printf("Require:%d Initial:%d Empty:%d\n", num, i, empty);
return 0;
}
0176デフォルトの名無しさん
2008/05/06(火) 21:57:46int main( void )
{
int wantBuy = 0;
int needBuy = 0;
int serviceTotal = 0;
int serviceEach = 0;
scanf( "%d", &wantBuy );
serviceTotal = wantBuy / 5;
do{
serviceEach = serviceTotal / 5
serviceTotal += serviceEach;
}while( serviceEach != 0 );
needBuy = wantBuy ー serviceTotal;
return 0;
}
ケータイからなので動くか分からん(´・ω・`)
0177デフォルトの名無しさん
2008/05/06(火) 21:59:28printf("%d",needBuy);
↑これ足しといて
0178デフォルトの名無しさん
2008/05/06(火) 22:00:22セミコロン忘れもあるね(´;ω;`)
0179デフォルトの名無しさん
2008/05/06(火) 22:00:24本当にありがとうございました。175さんのお陰でメールが間に合いました。
何故か空瓶が一本余分に出ていましたので、また調べてみます。
0180デフォルトの名無しさん
2008/05/06(火) 22:01:32空き瓶表示か!!!!
孟子にタイ
0181デフォルトの名無しさん
2008/05/06(火) 22:01:44ありがとうございます。今後のプログラムの参考にさせていただきます。
0182デフォルトの名無しさん
2008/05/06(火) 22:17:29空き瓶が5本以上あるとき、交換してもらうかどうか、
またその余分に貰ったジュースを飲むかどうか、それが問題だ。
0183デフォルトの名無しさん
2008/05/06(火) 22:48:12>>174
0184デフォルトの名無しさん
2008/05/06(火) 23:00:45結局、たとえば5本飲みたいので5本買ったとして、
最終的な空き瓶は5本、0本、1本のどれ?
>>174からはどうしても読み取れない。
0185デフォルトの名無しさん
2008/05/06(火) 23:10:42あーそうだね
0186デフォルトの名無しさん
2008/05/06(火) 23:35:30これ以上短くはできないぜ
#include<stdio.h>
int main( void )
{
int a;
scanf( "%d", &a );
printf("buy:%d ",(a/5*4+1)+((a%5)?a%5-1:0));
printf("empty:%d\n",(a%5)?a%5:5);
return 0;
}
0187デフォルトの名無しさん
2008/05/06(火) 23:49:54printf("buy:%d ",a-(a-1)/5);
はどう?
0188デフォルトの名無しさん
2008/05/06(火) 23:52:57って入力したら17が出るお
0189デフォルトの名無しさん
2008/05/06(火) 23:55:080190デフォルトの名無しさん
2008/05/06(火) 23:55:48まだ短縮できる。
a;main(){scanf("%d",&a);printf("buy:%d empty:%d\n",a?a*4/5+1:0,a?(a-1)%5+1:0);}
0を入力したらbuy:0 empty:0になるように修正しておいた。
0191デフォルトの名無しさん
2008/05/07(水) 00:00:33余りは
(a-1)%5+1
だけでどう?
0192デフォルトの名無しさん
2008/05/07(水) 00:04:47VC2008ではそれでいけた。
ただ、C89では負数の剰余は処理系依存らしい。
0193デフォルトの名無しさん
2008/05/07(水) 00:47:47[2] 問題文(含コード&リンク):24時49分31秒ー16時51分40秒の引き算です
[3] 環境
[3.1] OS: Linux
3.2]gcc
[3.3] 言語: (C
[4] 期限: 2008年5月8日
[5] その他の制限: 全く習ってない初歩の初歩の段階です
よろしくおねがいします
0194デフォルトの名無しさん
2008/05/07(水) 00:59:52#include <stdio.h>
int main() {
int time1 = 24*3600 + 49*60 + 31; /* 24時49分31秒 */
int time2 = 16*3600 + 51*60 + 40; /* 16時51分40秒 */
int td = time1 - time2;
printf("%d:%02d:%02d\n", td/3600, (td/60)%60, td%60);
return 0;
}
0195デフォルトの名無しさん
2008/05/07(水) 01:00:290196デフォルトの名無しさん
2008/05/07(水) 01:18:22どうもありがとうございます
>>195
説明が足りなかったみたいで、すいません
0197デフォルトの名無しさん
2008/05/07(水) 02:46:210198デフォルトの名無しさん
2008/05/07(水) 02:49:01ShortCodingという本で知ったがこんなこともできる
main(a){scanf("%d",&a);printf("buy:%d empty:%d\n",a?a*4/5+1:0,a?~-a%5+1:0);}
0199デフォルトの名無しさん
2008/05/07(水) 02:59:45ヤメレ
0200デフォルトの名無しさん
2008/05/07(水) 03:08:30ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6455.c
適切に入力しなかった場合の措置はとってないので、あしからず。
0201デフォルトの名無しさん
2008/05/07(水) 04:11:360202デフォルトの名無しさん
2008/05/07(水) 04:15:09ヽ \ , -┬┬、/. /
\ 7 ヽ ヽ_∨
ヽ l . 二 --`ゝ
/ゝ' _.. '-'´ ・ ・ ヽヽ
j−'´ | = _人 ~ l 〉
/ ̄ ̄l ノ´
/ ̄ ̄~| _.. ィ‐┐
ゝ──'>ー<二○'´i ̄
`ー┐ l
_」 つ
ゝ───…  ̄
ヽ(´・ω・)ノ うるせぇ、ひこにゃんぶつけんぞ
| /
UU
0203デフォルトの名無しさん
2008/05/07(水) 10:03:50time.h使うなら、mktime()とかlocaltime()を使えよ。strftime()も。
0204デフォルトの名無しさん
2008/05/07(水) 10:59:49そこまで言うならお前がソースを書けよw
自分は知ってます、みたいな発言をされても誰も納得しねーよ
あと、あれは struct tm の構造体、変数を使うためにやったようなもんだろ。
指定のライブラリを使わなければいけないというルールは存在しないよ。
0205デフォルトの名無しさん
2008/05/07(水) 11:11:380206デフォルトの名無しさん
2008/05/07(水) 11:30:51#include <stdio.h>
void ToHMS(int t1[3], int t2[3], int result[3])
{
int H = 0,M = 0;
result[2] = t1[2]- t2[2];
if(result[2] < 0){
result[2] = t1[2] + 60 - t2[2];
M = 1; }
if(M == 1) result[1] = t1[1] -1 - t2[1];
else result[1] = t1[1] - t2[1];
if(result[1] < 0){
if(M == 1) result[1] = t1[1] + 60 -1 - t2[1];
else result[1] = t1[1] + 60 - t2[1];
H = 1; }
if(H == 1) result[0] = t1[0] -1 - t2[0];
else result[0] = t1[0] - t2[0];
}
int main()
{
int t1[3] = {0},t2[3] = {0},result[3] = {0};
puts("一つ目の時間を,で区切って入力してください");
scanf("%d,%d,%d",&t1[0],&t1[1],&t1[2]);
puts("二つ目の時間を,で区切って入力してください");
scanf("%d,%d,%d",&t2[0],&t2[1],&t2[2]);
ToHMS(t1,t2,result);
puts("一つ目の時間と二つ目の時間の差分は");
printf("%d,%d,%d\n",result[0],result[1],result[2]);
return 0;
}
0207203
2008/05/07(水) 11:43:39#include <stdio.h>
#include <time.h>
#include <math.h>
static time_t inputTime()
{
char buf[10];
struct tm in = {0, 0, 0, 1, 0, 70};
printf("Input time (hh:mm:ss) > ");
if (fgets(buf, sizeof(buf), stdin) == NULL) return 0;
if (sscanf(buf, "%2d:%2d:%2d", & in.tm_hour, & in.tm_min, & in.tm_sec) < 3)
return 0;
return mktime(& in);
}
int main(int argc, char ** argv)
{
time_t timeA = inputTime();
time_t timeB = inputTime();
time_t diff = (time_t) fabs(difftime(timeA, timeB));
struct tm * result = gmtime(& diff);
char buf[10];
strftime(buf, sizeof(buf), "%H:%M:%S", result);
puts(buf);
return 0;
}
0208デフォルトの名無しさん
2008/05/07(水) 12:02:29if(count>num) count--,empty+=5;
↓
if(count>num) count--,empty+=5-1;
0209デフォルトの名無しさん
2008/05/07(水) 12:05:32大きい数を扱える環境で組み合わせの数出して見れ。
ruby -e 'puts 2**100000'
99900209301438450794403276433003359098042913905418169177152927386314583246425734
(375行中略)
25155304734389883109376
ありえんだろ。
0210デフォルトの名無しさん
2008/05/07(水) 12:47:09[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
1000個までの整数あるいは小数を打ち込み、
その平均と標準偏差を表示することのできるプログラムを作成しなさい。
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン: Microsoft Visual Studio .NET 2003
[3.3] 言語:C言語
[4] 期限:2008年5月9日5時まで
[5] その他の制限: 特に制限はありません。
大学生です。プログラミングの授業で課題が出されましたが、解けませんでした。
ご解答よろしくお願いします。
0211デフォルトの名無しさん
2008/05/07(水) 13:06:10#include <stdio.h>
#include <math.h>
#define SET 1000
int main()
{
int i;
double value[SET] = {0},sum = 0,average=0,hyoujunnhensa;
//数値を格納
for(i = 0; i < SET; i++)
scanf("%lf",&value[i]);
//平均値を出す
for(i = 0; i < SET; i++)
sum += value[i];
average = sum/SET;
printf("平均値 : %lf\n",average);
//ばらつきをみるために
//個々のデータから平均値を引く(偏差)
for(i = 0; i < SET; i++) value[i] -= average;
//次に偏差を2乗する
for(i = 0; i < SET; i++) value[i] = pow(value[i], 2.0);
sum = 0;
//データのばらつきを見るため合計し
//データ数で割って平方根を取る
for(i = 0; i < SET; i++)
sum +=value[i];
hyoujunnhensa = sqrt(sum/SET);
printf("標準偏差は%lf \n",hyoujunnhensa);
return 0;
}
0212デフォルトの名無しさん
2008/05/07(水) 13:44:32そんな全ての方法を試すみたいなアルゴリズム使ったら解けるわけないよ。
n = 100000 だから、だいたい O(n log n) 〜 O(n^{1.5}) くらいの
アルゴリズムなら、それなりにまともな時間で解ける。
実際 >>84 の問題に対しては、そのようなアルゴリズムが存在する。
(>>90 の解法でも O(n^2) だから数日待てば終わるはず)
0213212
2008/05/07(水) 14:15:17参考のために、適当に作った入力と対応する出力をアップロードする。
アップローダの制限のため n = 100000 のデータは1つだけしか入れてない。
ちなみに手元のプログラムでは、10 秒弱で結果が出ている。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6458.zip
0214デフォルトの名無しさん
2008/05/07(水) 14:55:57[2] 問題文(含コード&リンク):
(1)
1 から 10000 までの数字を順番に表示しなさい(1数字ごとに改行)。
ただし、どこかの桁に 3 が現れるか、もしくは 3 の倍数のときは
数字の後に ! (エクスクラメーションマーク)をつけなさい。
(2)
1 から n までの数字の中で、どこかの桁に 3 が現れるか、
もしくは 3 の倍数であるような数字の個数を求めるプログラムを作りなさい。
ただし n は大きな数字(int型の限界程度)でも動くようにしなさい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: どちらでも可
[4] 期限: 2008年05月09日
[5] その他の制限: とくにありません
0215デフォルトの名無しさん
2008/05/07(水) 14:59:09その手元のソースが見たい
0216デフォルトの名無しさん
2008/05/07(水) 14:59:440217デフォルトの名無しさん
2008/05/07(水) 15:09:38#include <stdio.h>
#include <string.h>
int main(int argc, char *args[]) {
char buf[12];
int i;
for (i = 1; i <= 10000; i++) {
sprintf(buf, "%d", i);
if ((i % 3 == 0) || (strstr(buf, "3") != NULL)) {
printf("%d!\n", i);
} else {
printf("%d\n", i);
}
}
}
0218デフォルトの名無しさん
2008/05/07(水) 15:12:59#include <stdio.h>
#include <string.h>
int main(int argc, char *args[]) {
int N = 10000;
int count = 0;
char buf[12];
int i;
for (i = 1; i <= N; i++) {
sprintf(buf, "%d", i);
if ((i % 3 == 0) || (strstr(buf, "3") != NULL)) {
count++;
}
}
printf("%d\n", count);
}
0219デフォルトの名無しさん
2008/05/07(水) 15:18:32ググったらこれO(n)でできるらしい。
古典的な問題として有名らしい。
http://www.prefield.com/algorithm/string/manacher.html
にあった。
よくこんな事思い付くよな。
0220デフォルトの名無しさん
2008/05/07(水) 15:24:21それは違う問題。
最長回文問題は「部分文字列(substring)」を求める問題なので、
>>84 とは違う。84 で求めるのは「部分列(subsequence)」。
substring は連続する部分列で、subsequence は連続しなくてよい。
0221デフォルトの名無しさん
2008/05/07(水) 15:24:57#include <stdio.h>
#include <string.h>
int main()
{
int i;
char n[4];
for(i = 1; i < 1000; i++){
sprintf(n,"%d",i);
if(i % 3 == 0 || strchr(n,'3'))
printf("%s%c\n",n,'!');
else
printf("%s\n",n);
}
return 0;
}
0222デフォルトの名無しさん
2008/05/07(水) 15:25:49あ、ほんとだアリガト
0223デフォルトの名無しさん
2008/05/07(水) 15:35:46#include <stdio.h>
int main(void)
{
int i;
for(i=0;i<=9999;i++)
{
printf("%d,%c\n",i+1,((i+1)%3 == 0) ? '!': ' ');
}
return 0;
}
0224デフォルトの名無しさん
2008/05/07(水) 15:37:3513 でも ! をつけないと
0225デフォルトの名無しさん
2008/05/07(水) 15:39:260226デフォルトの名無しさん
2008/05/07(水) 15:43:09(2)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>
int BuffSize(int n)
{
int num = n;
int size=0;
while(num){
num /= 10;
size++;
};
return ++size;
}
int main()
{
int i,n;
char *nstr;
printf("%dまでの数値を入力\n",INT_MAX);
scanf("%d",&n);
nstr = malloc(sizeof(char)*(BuffSize(n)));
for(i = 1; i < n; i++){
sprintf(nstr,"%d",i);
if(i % 3 == 0 || strchr(nstr,'3')) printf("%s%c\n",nstr,'!');
else printf("%s\n",nstr);
}
free(nstr);
return 0;
}
0227デフォルトの名無しさん
2008/05/07(水) 15:46:400228デフォルトの名無しさん
2008/05/07(水) 16:01:12[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6459.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:わかりません
[3.3] 言語:C++
[4] 期限:5月9日
[5] その他の制限:できる限り簡単なソースで作成
本当に全くわからないので,よろしくお願いします.
0229デフォルトの名無しさん
2008/05/07(水) 16:10:28・西暦紀元1年1月1日からの日数計算は、グレゴリウス暦で行うの? その場合、厳密な意味での日数とは違ってくるけど。
・星座の基準は? これまた厳密には星座の境界は毎年変わるのだけど。
・グラフィック表示の手段は? Windowsだから適当な方法で表示するだけならできるだろうけれど、授業中に指示されていない?
0230デフォルトの名無しさん
2008/05/07(水) 16:12:20これは厳しい
0231デフォルトの名無しさん
2008/05/07(水) 16:19:31・西暦紀元1年1月1日からの日数計算は、グレゴリウス暦で行うの? その場合、厳密な意味での日数とは違ってくるけど。
たぶん,下に書かれている
1年365日
ただし、4で割り切れる年は一般にうるう年(366日)
また、100で割り切れ、かつ400で割り切れない年は365日
を利用して作るのだと考えているので,グレゴリウス暦は関係ないと思います.
まぎらわしくてすみません.
・星座の基準は? これまた厳密には星座の境界は毎年変わるのだけど。
・グラフィック表示の手段は? Windowsだから適当な方法で表示するだけならできるだろうけれど、授業中に指示されていない?
この2つは全く指示されていません.個人個人で考えてくるのでしょうか?
□月□日から△月△日生まれの人・・・○○座
と考えていくと思うので,厳密には考えなくていいと思います.
グラフィックも全く指示されていません,というか
まだこういったグラフィックを作るプログラムも習っていないので
>>229さんがいうような適当な方法でいいと思います.
まぎらわしい文章で本当にすみません.
0232デフォルトの名無しさん
2008/05/07(水) 16:25:58#include <stdio.h>
#include <limits.h>
int main() {
char buff[32];
int i, j, n = 0;
for (i = 0; i < INT_MAX; i++) {
if (i % 3 == 0) {
n++;
} else {
/*sprintf(buff,"%d", i);
if (strchr(buff, '3')) n++;*/
for (j = i; 0 < j; j /= 10) {
if (j % 10 == 3) {
n++;break;
}
}
}
}
printf("%d\n", n);
return 0;
}
/*
1590383305
real 4m7.016s
user 4m5.186s
sys 0m0.108s
四分w
*/
0233デフォルトの名無しさん
2008/05/07(水) 16:33:470234デフォルトの名無しさん
2008/05/07(水) 16:34:47・星座について
3/21 - 4/19 の間に生まれた人・・・おひつじ座
4/20 - 5/20 の間に生まれた人・・・おうし座
5/21 - 6/21 の間に生まれた人・・・ふたご座
6/22 - 7/22 の間に生まれた人・・・かに座
7/23 - 8/22 の間に生まれた人・・・しし座
8/23 - 9/22 の間に生まれた人・・・おとめ座
9/23 - 10/23 の間に生まれた人・・・てんびん座
10/24 - 11/21 の間に生まれた人・・・さそり座
11/22 - 12/21 の間に生まれた人・・・いて座
12/22 - 1/19 の間に生まれた人・・・やぎ座
1/20 - 2/18 の間に生まれた人・・・みずがめ座
2/19 - 3/20 の間に生まれた人・・・うお座
という区別でいいと思います.
0235デフォルトの名無しさん
2008/05/07(水) 16:38:17いつかのFizzBazブームといっしょw
0236232
2008/05/07(水) 16:40:06(2)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>
int BuffSize(int n)
{
int num = n;
int size=0;
while(num){
num /= 10;
size++;
};
return ++size;
}
int main()
{
int i,n,nabeatu=0;
char *nstr;
printf("%dまでの数値を入力\n",INT_MAX);
scanf("%d",&n);
nstr = malloc(sizeof(char)*(BuffSize(n)));
for(i = 1; i < n; i++){
sprintf(nstr,"%d",i);
if(i % 3 == 0 || strchr(nstr,'3')){ printf("%s%c\n",nstr,'!'); nabeatu++;}
else printf("%s\n",nstr);
}
free(nstr);
printf("ナベアツ日%d\n",nabeatu);
return 0;
}
0237デフォルトの名無しさん
2008/05/07(水) 18:34:30{
int repetition; /* 膨張処理の回数 */
int counter; /* 近傍中の図形画素の数 */
int p_x, p_y; /* 近傍の(x,y)座標 */
int i, x, y, m, n; /* ループ変数 */
x_size2 = x_size1; y_size2 = y_size1;
for ( y = 0; y < y_size2; y ++ )
for ( x = 0; x < x_size2; x ++ )
image2[y][x] = image1[y][x];
printf("2値画像の8近傍膨張処理を行います.\n");
printf("膨張処理を行う回数 = ");
scanf("%d", &repetition);
for ( i = 0; i < repetition; i ++ ){
for ( y = 0; y < y_size1; y ++ ){
for ( x = 0; x < x_size1; x ++ ){
if ( image1[y][x] == 0 ){
counter = 0;
0238デフォルトの名無しさん
2008/05/07(水) 18:35:20counter = 0;
for ( m = -1; m < 2; m ++ ){
for ( n = -1; n < 2; n ++ ){
p_x = x + n;
p_y = y + m;
if ( p_x > 0 && p_x < x_size1 &&
p_y > 0 && p_y < y_size1 &&
image1[p_y][p_x] == MAX_BRIGHTNESS )
counter ++;
}
}
if ( counter > 0 )
image2[y][x] = MAX_BRIGHTNESS;
}
}
}
for ( y = 0; y < y_size2; y ++ )
for ( x = 0; x < x_size2; x ++ )
image1[y][x] = image2[y][x];
}
}
0239デフォルトの名無しさん
2008/05/07(水) 18:38:10大丈夫、そのままC++でコンパイルできる。
つーか、>1嫁。
0240デフォルトの名無しさん
2008/05/07(水) 19:26:28[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6461.zip
[3] 環境
[3.1] OS:XP Pro
[3.2] コンパイラ名とバージョン: Microsoft Visual Studio .NET 2003
[3.3] 言語: C++
[4] 期限: 5月7日23時59分まで
[5] その他の制限: 式を導出してプログラムに当て嵌めるだけなので、特に制限はありません。
基礎的な問題で大変申し訳ないです。
どなたか、ご教授願えませんでしょうか。
0241デフォルトの名無しさん
2008/05/07(水) 19:41:150242デフォルトの名無しさん
2008/05/07(水) 19:42:53つ数学板
0243デフォルトの名無しさん
2008/05/07(水) 19:44:560244デフォルトの名無しさん
2008/05/07(水) 20:06:14とりあえずそのグラフを見ただけでは数式は導出できない。
どういう文脈で出題された課題か、とかそういうことが色々無いと
とても解ける課題ではない。
0245デフォルトの名無しさん
2008/05/07(水) 20:12:36グラフだけから式を導出とかw
0246デフォルトの名無しさん
2008/05/07(水) 20:22:58問題のとらえ方次第だけど、削除する文字列が連続する1か所のみだったりしないのかな?
長さxの文字列からy~zの部分を削除した文字列が対象(0 <= y <= z <= x)
問題文と例を見る限りでは、任意の文字を削除できるとも考えられちゃうけど、そうじゃないとすれば
>>209よりかはパターンは少なくなるよね?それでもmax100000なら膨大だろうけど・・・
max100000は2進数表記でしたみたいなオチとかにならないかな。
0247デフォルトの名無しさん
2008/05/07(水) 20:23:04ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6463.c
0248240
2008/05/07(水) 20:28:16理不尽な要求を出して大変申し訳ないですw
グラフについてですが、画像の濃度値を表すグラフなので、
最小値0から最高値は255になるようです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6462.zip
自分自身全然理解出来ていないので、
上手く説明出来なくて大変申し訳ないのですが、
簡単な例を挙げるとこうなるようです。
2番目の図2.5(b)は
z=zm・z'^2/zm^2
z'^2=zm・z
z=√zm・z
と導出出来るようです。
先ほどの問題はこの2つを合わせた式を導出し、
プログラムを作成せよという事になると思うのですが、
導出過程がわからず、混乱してしまったので質問させていただきました。
どうか宜しくお願いします。
0249デフォルトの名無しさん
2008/05/07(水) 20:34:34数学板の質問系スレで
画像ファイルのようなグラフで
できるだけ簡単なものを探しています
がどんなものでしょうか?
と聞くと多分答えてくれる。
0250デフォルトの名無しさん
2008/05/07(水) 20:40:36他に聞けるようなスレがなかったため、
申し訳ないですがここで質問させてください。
【質問テンプレ】
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク)
ポイントを用いた線形リストデータ構造を利用して、
キーボードから順に入力した複数の整数値(int型)を、
空の「スタック」および「キュー」にそれぞれ保存し、
取り出した時、出力される整数値を順に表示するプログラム、
pointlist.cを作成せよ。
また動作確認の結果も報告せよ。
動作確認のために入力する整数値は、作成した日付を入力せよ。
(例、2008年5月11日に作成したならば、
スタックで「1→1→5→0→8→0→0→2」と、出力すること、また、
キューで「2→0→0→8→0→5→1→1」と、出力することを確認し、
動作確認の結果と、ソースファイルを提出せよ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語: C言語
[4] 期限:5/12
[5] その他の制限: 特になし
スタックとキューの理屈は理解しているのですが、
プログラムを書くとなるとどう書いてよいのかわかりません。
0251デフォルトの名無しさん
2008/05/07(水) 20:40:410252デフォルトの名無しさん
2008/05/07(水) 20:43:03imggray.h 内の関数
void non_Linear_Transform(void)
をどうこういう話は無かった?
0253デフォルトの名無しさん
2008/05/07(水) 20:47:45{
int sp;
int reg[256];
STACK() { sp = 0; };
int push(int val) { reg[sp++] = val; return sp; }
int pop() { return sp > 0 ? reg[--sp] : 0; }
};
{
STACK stack;
stack.push(2);
stack.push(0);
stack.push(0);
stack.push(8);
stack.push(0);
stack.push(5);
stack.push(1);
int spmax = stack.push(1)l;
for(int i = 0; i < spmax; i++)
printf("%d ", stack.pop();
}
0254デフォルトの名無しさん
2008/05/07(水) 20:49:380255デフォルトの名無しさん
2008/05/07(水) 20:50:31「導出」ってのはできないね.
それっぽい関数を定義してみて,同じような関数形だね,
と言うくらいしかできない.
ちなみに,答えとなっている関数は,
前半が下に凸,後半が上に凸であることと,
(0,0), (zm/2, zm'/2), (zm ,zm) を通ることに注意して
前半を二次関数,後半を平方根で定めてやると出てくる.
0256デフォルトの名無しさん
2008/05/07(水) 20:51:46> [3.3] 言語: C言語
とはっきり書いてあるじゃないか
0257240
2008/05/07(水) 20:52:03ありがとうございます。一応聞いてみます。
>>252
void non_Linear_Transform(void)は今回全く使用していないので、
スルーで大丈夫そうです。
最終の式は一応問題文.txtで出ているので、
プログラムだけでもおこせる方いらっしゃいませんでしょうか。
0258デフォルトの名無しさん
2008/05/07(水) 20:52:25答えていただいて申し訳ないのですが、Cでやっています。
それとプログラムを起動したときに、
キーボードから数字を入力させるように作れとのことなので、
苦労しています。
すみません、お答いただきありがとうございます。
0259デフォルトの名無しさん
2008/05/07(水) 20:57:22struct QUE
{
int tp, lp;
int reg[256];
QUE() { tp = lp = 0; };
int put(int val) { reg[lp++] = val; return tp; };
int get() { return tp < lp ? reg[tp++] : 0; };
};
// かなり手抜き。後は自分できちんと仕上げてくだされ
{
QUE que;
que.put(2); que.put(0); que.put(0); que.put(8);
que.get(); que.get(); que.get(); que.get(); // 2.0.0.8
}
0260デフォルトの名無しさん
2008/05/07(水) 21:03:13struct STACK {
int tp; int reg[256];
};
STACK stack;
int push(int val) {
stack.reg[stack.tp++] = val;
return stack.tp;
}
int pop() {
if(stack.tp > 0)
return reg[--stack.tp];
return 0;
}
{
int c, i;
stack.tp = 0;
while((c = fgetc(stdin)) != EOF) {
if(! isdigit(c)) // 数値以外なら終わる?
break;
push( c );
}
for(i = 0; i < stack.tp; i++)
printf("%c ", pop());
}
// C はちょっと自信ない
0261デフォルトの名無しさん
2008/05/07(水) 21:07:51[2] 問題文(含コード&リンク):
5組の男女の安定結婚問題
ヒントプログラム http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6465.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: borlandC++
[3.3] 言語: C言語
[4] 期限: 5/8 1200まで
[5] その他の制限: 特になし
よろしくお願いします。
0262デフォルトの名無しさん
2008/05/07(水) 21:10:05void Ensyu2_3c(void)
{
int z,zd;
for(i=0;i<256;i++){
for(j=0;j<256;j++){
z=tmp_Img[i][j];
if (z <= 128) { // (z<=128)の場合の処理
zd = (int)(0.5 + z*z/128.);
} else { // (128<z<=255))の場合の処理
zd = (int)(0.5 + 128 * (1.+sqrt((2.*z-256)/256.)));
}
tmp_Img[i][j]=zd;
}
}
}
しかし答えになってる式,グラフにするとあんまりそれっぽく見えないな
0263デフォルトの名無しさん
2008/05/07(水) 21:37:44http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6466.c
0264240
2008/05/07(水) 21:40:36ありがとうございます。
やはりsqrtを使った上で型を指定しなければならないのですね。
非常に参考になりました。
0265デフォルトの名無しさん
2008/05/07(水) 21:41:07自分で挑戦してみましたがまったく歯が立ちませんでした。
どうぞよろしくお願いします。
0266デフォルトの名無しさん
2008/05/07(水) 21:43:57>>228 2008/05/09 任意の年月日の曜日・星座・月齢(グラフィック表示)
0267デフォルトの名無しさん
2008/05/07(水) 21:45:27テンプレ >>1 をどうぞ
実行環境、期限などの情報をください
0269デフォルトの名無しさん
2008/05/07(水) 22:11:00[1] 授業単元: c言語
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6467.txt
[3] 環境
[3.1] OS: Linux6.2
[3.2] gcc 3.4
[3.3] 言語: C言語
[4] 期限: 5/15
[5] その他の制限: 特にありません。
よろしくお願いします
0270デフォルトの名無しさん
2008/05/07(水) 22:21:45http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6468.c
0271デフォルトの名無しさん
2008/05/07(水) 22:58:33・格納するというのはint型配列なのか?それともchar型配列なのか?
・2の除算については加減算、乗算を使って実現してもいいのか?
0272デフォルトの名無しさん
2008/05/07(水) 23:01:28格納はint型で
加減算 乗算を使ってもらっても大丈夫です。
0273129
2008/05/07(水) 23:08:50わざわざ1つ1つの質問に答えていただきありがとうございますー。
>>137
そして、こちらもありがとうございましたー。
少し気になったのですが�Dの方で警告メッセージ
警告 W8075 57: 問題のあるポインタの変換(関数 input_birthday )
警告 W8065 99: プロトタイプ宣言のない関数 'input_birthday' の呼び出し(関数 main )
と、出るのですが消すにはどうすればいいでしょうか?
残り >>129 �@〜�Bなのですが、かなり切実です;何卒よろしくお願いします。
0274232
2008/05/08(木) 01:17:36http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6469.txt
0275デフォルトの名無しさん
2008/05/08(木) 01:38:040276デフォルトの名無しさん
2008/05/08(木) 01:41:060277デフォルトの名無しさん
2008/05/08(木) 01:57:52とりあえず加算と減算まで作った。
間違ってるかもしれんが。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6470.txt
0278デフォルトの名無しさん
2008/05/08(木) 01:59:340279デフォルトの名無しさん
2008/05/08(木) 02:09:15多項式時間では解けないというやつとおもう。
0280129
2008/05/08(木) 02:37:07全てエラーとなってしまい、結果の表示ができませんでしたので、
修正できる方いればよろしくお願いします;
0281デフォルトの名無しさん
2008/05/08(木) 03:11:38200行程度って読みは鋭い
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6471.c
0282デフォルトの名無しさん
2008/05/08(木) 05:31:560283デフォルトの名無しさん
2008/05/08(木) 07:05:02多項式時間だけだったら >>90 が達成している。
O(n log n) 程度の解法もある。
0284210
2008/05/08(木) 08:07:260285デフォルトの名無しさん
2008/05/08(木) 14:22:1170 名前:名無し名人[sage] 投稿日:2008/05/08(木) 13:41:56 ID:wIxjqk5D
>>68,69
> 7路盤は人間の研究によれば、黒9目勝ちという結果が出ている。
面白そうな話ですね。
よろしければ出典を教えてください。
71 名前:名無し名人[sage] 投稿日:2008/05/08(木) 14:04:42 ID:6HkPsIKA
ttp://olive.zero.ad.jp/qin/7ro/
ほい。日本ルールでも中国ルールでも一緒らしい。
http://game14.2ch.net/test/read.cgi/gamestones/1191324848/
0286デフォルトの名無しさん
2008/05/08(木) 17:31:39[2] 問題文(含コード&リンク):ttp://www.dotup.org/uploda/www.dotup.org0976.zip
[3] 環境
[3.1] OS:vista
[3.2] Visual Studio 2005
[3.3] 言語: C++
[4] 期限: 5/9 18:00
[5] その他の制限:特にありません。
画像が見にくいかと思いますが。このプリントで全部なのでよろしくお願いします
0287デフォルトの名無しさん
2008/05/08(木) 17:55:14[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6478.c
[3] 環境
[3.1] OS: Linux6.2
[3.2] gcc 3.4
[3.3] 言語: C言語
[4] 期限: 5/12
[5] その他の制限: >>277 >>281 さんありがとうございます。
1番の方の提出期限が迫っていますので、
できれば一番の方を優先してもらいたいです。
今現在自分は #include<stdio.h> や int main などから始
めており
#include<string.h> #include<ctype.h> などのものは習
っていないためわからないです。
基本的に for文 配列 if文 ポインタ などを重点的に
使用してもらえないでしょうか?
条件等多数ありますがぜひよろしくお願いします。
0288デフォルトの名無しさん
2008/05/08(木) 17:56:58[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6479.txt
[3] 環境
[3.1] OS: (Windows/Linux/等々)
linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
5月10日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
できるだけ簡単なものでよろしくお願いします。
0289デフォルトの名無しさん
2008/05/08(木) 18:18:23#include <stdio.h>
int main() {
int x = 77;
int y = 115;
int tmp;
int *p = &tmp;
printf("x %p %d\n", &x, x);
printf("x %p %d\n", &y, y);
*p = x;x = y;y = *p;
printf("x %p %d\n", &x, x);
printf("x %p %d\n", &y, y);
return 0;
}
0290デフォルトの名無しさん
2008/05/08(木) 18:18:50#include <stdio.h>
void pinc(int *x, int d) {
printf("仮引数 x %p %p\n", &x, x);
*x += d;
}
int main(void){
int x, d;
printf("整数を入力 x = ");
scanf("%d", &x);
printf("整数を入力 d = ");
scanf("%d", &d);
printf(" アドレス 値\n");
printf("実引数 x %p %d\n", &x, x);
pinc(&x, d);
printf("値を %d だけ増やした値は %d です.\n", d, x);
return 0;
}
0291デフォルトの名無しさん
2008/05/08(木) 18:23:38http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6480.txt
0292デフォルトの名無しさん
2008/05/08(木) 18:36:48ありがとうございました!
0293デフォルトの名無しさん
2008/05/08(木) 18:37:59そんな餌に釣られクマー
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6482.txt
0294デフォルトの名無しさん
2008/05/08(木) 19:02:15[2] 問題文(含コード&リンク):()
256×256の画像ファイルを読み込み、RGB値を2次配列に格納する。
その値から全く同じファイルを作成する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: わかりません
[3.3] 言語: C
[4] 期限:5月9日
↓自分で作ってみたんですが、うまく値が格納できません。
試しに出力をしてみたところred[][]には数字が入っていたんですが
greenとblueは0しか入ってませんでした。
#define M 256
#define N 256
FILE *fa,*fb;
unsigned char red[N][M],green[N][M],blue[N][M];
fa=fopen("ファイル1","rb");
fb=fopen("ファイル2","wb");
fread((unsigned char*)red,1,M*N,fa);
fread((unsigned char*)green,1,M*N,fa);
fread((unsigned char*)blue,1,M*N,fa);
fwrite((unsigned char*)red,1,M*N,fb);
fwrite((unsigned char*)green,1,M*N,fb);
fwrite((unsigned char*)blue,1,M*N,fb);
fclose(fa);
fclose(fb);
0295デフォルトの名無しさん
2008/05/08(木) 19:11:40[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6484.txt
[3] 環境
[3.1] OS:Windous XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2008年5月9日20:00まで
[5] その他の制限: ただ単に昇順に表示するプログラムは与えられました。
ヒントだけでもいいのでよろしくおねがいします。
0296デフォルトの名無しさん
2008/05/08(木) 19:22:51すごすぎて( ゚д゚) ポカーン
よくこんなのつくったね。
0297デフォルトの名無しさん
2008/05/08(木) 19:35:360298デフォルトの名無しさん
2008/05/08(木) 19:42:24デジャヴ?
前スレ830と同じに見える
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6410.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6411.txt
0299デフォルトの名無しさん
2008/05/08(木) 20:28:19ありがとうございます。
前スレは確認できないのですが、
被っていたようなので申し訳ありませんでした。
0300デフォルトの名無しさん
2008/05/08(木) 21:25:10画像ファイルの形式は?
それによって、RGBがどう入ってるか決るから提示しないと
それとも、独自形式?
それはそれで提示が必要
ともかく画像形式とやらの詳細を書かないと、
その上手く行かない自分のサンプルから推理ゲームになるよw
0302デフォルトの名無しさん
2008/05/08(木) 21:48:47いやだから…BMP形式なのかJPEG形式なのか
それとも、ファイルの先頭からRGBが隙間無くファイルの最後までしかない等の
独自形式なのか
ともかく、”画像形式”でググって、君の授業内のローカルルールを
他人に分るように説明してよ…
多分、あっと言う間に出来る問題なのに、そこがボトルネックw
0303デフォルトの名無しさん
2008/05/08(木) 22:25:48バイトで遅れましたが
ありがとうございました!!
こんなに早くやっていただけるとは思いませんでした・・・
0304294
2008/05/08(木) 22:26:360305デフォルトの名無しさん
2008/05/08(木) 23:31:150306デフォルトの名無しさん
2008/05/08(木) 23:35:53やっぱり皆考えることは同じなのかw
0307デフォルトの名無しさん
2008/05/08(木) 23:51:49[2] 問題文 a) 3つの整数変数を引数として,その平均値をdoubleで返す関数average(int a, int b, int c)を作成し
利用例が明らかになるようにしてプログラムを作成しなさい.
b) 配列とそのサイズを示す整数変数を引数として,配列要素の平均値を求める関数averageOfarray(int array[], int size)を作成し,
利用例が明らかになるようにしてプログラムを作成しなさい.
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2008年5月9日
0308デフォルトの名無しさん
2008/05/09(金) 00:08:48[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6489.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:5月10日まで
[5] その他の制限:特になし
問2でbが大きいため結果がうまくいきません。お願いします
0309277
2008/05/09(金) 00:39:56「1」「2」共に完成させた。条件は満たしてると思う。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6490.txt
0310デフォルトの名無しさん
2008/05/09(金) 00:47:31a)
#include <stdio.h>
double average(int a, int b, int c){return (double)(a+b+c)/3;}
int main(){
int a,b,c;
printf("a=");scanf("%d", &a);
printf("b=");scanf("%d", &b);
printf("c=");scanf("%d", &c);
printf("average=%f", average(a, b, c));
}
0311デフォルトの名無しさん
2008/05/09(金) 00:48:23お前さ、ニセモノか
授業の流れを分ってないだろ…、回答で簡単に推測出来るw
JPEGって事は、JPEGLIBとか使うのか?
使わないなら、ハフマン圧縮が必要だぞ?
全て自前のJPEGファイル操作なら、明らかに294の自身の回答サンプルをオーバースペックw
一瞬マジでJPEGLIB使用した回答を、と思ったが…辞めたw
0312デフォルトの名無しさん
2008/05/09(金) 00:55:45b)
#include <stdio.h>
double averageOfarray(int array[], int size){
double sum=0;
int i;
for(i=0; i<size; i++)
sum += array[i];
return sum/size;
}
int main(){
int size, i;
int array[100];
printf("size="); scanf("%d", &size);
for(i=0; i<size; i++){
printf("array[%d]=", i);
scanf("%d", &array[i]);
}
printf("average=%f\n", averageOfarray(array, size));
}
0313デフォルトの名無しさん
2008/05/09(金) 01:07:32[2] 問題文:キーボードから入力された文字列で、使用されているアルファベットの語数をカウントし表示するプログラム
例)oronamin
o---2
r---1 (以下省略
[3.1] OS: Windows XP
[3.2] Ultra-C
[3.3] 言語: C
[4] 期限: [2008/05/09まで]
一応ここまで作ってみましたがよくわからなくなりました。
#include<stdio.h>
#include <string.h>
main(){
int num,i,j,letnum=0;
char letter[50],tmp;
scanf("%s", letter);
for(i=0;letter[i] !='\0';i++){
for(j=i+1;letter[i] !='\0';j++){
if(letter[i]==letter[j]){
letnum++;
}
}
}
printf("%c---%d",letter[i],letnum);
}
レベル低くてすみませんがよろしくお願いします。
0314デフォルトの名無しさん
2008/05/09(金) 01:12:43#include <stdio.h>
int main()
{
char str[50];
int num[256] = {0}, i;
scanf("%s", str);
for(i = 0; str[i] != '\0'; i ++)
num[str[i]] ++;
for(i = 'A'; i <='Z'; i ++)
if(num[i] != 0)
printf("%c---%d\n", i, num[i]);
for(i = 'a'; i <='z'; i ++)
if(num[i] != 0)
printf("%c---%d\n", i, num[i]);
}
0315デフォルトの名無しさん
2008/05/09(金) 01:13:02大文字小文字の区別はあり?
0317294
2008/05/09(金) 01:24:32すいません偽物ではありませんが、特に画像形式の指定がなかったのでJPEGで頼んでしまいました。
簡単にRGB値が取り出せる形式がありましたら、その形式でのプログラムを教えてください。
0318デフォルトの名無しさん
2008/05/09(金) 01:25:160319313
2008/05/09(金) 01:27:13>num[str[i]] ++;
str[i]の部分はアルファベットが入るという認識でよろしいでしょうか?
0320デフォルトの名無しさん
2008/05/09(金) 01:35:38あとfreadの戻り値は各RGBそれぞれ65536になってる?
0321デフォルトの名無しさん
2008/05/09(金) 02:08:18[2] 問題文(含コード&リンク):
次の要求仕様(1)~(3)をすべて満たす単一のプログラムを作りなさい。
(1)標準入力から読み込んだ1行にアルファベット(大文字小文字を問わない)が含まれていなければそのまま標準出力に
出力する。
(2)標準出力から読み込んだ1行にアルファベット(大文字小文字を問わない)が一つでも含まれていれば、それをそのまま
標準出力に出力する。ただし、そのような行で含まれているアルファベット(大文字小文字を問わない)の数の多さの順で
上位25%(概数で良い)は、アルファベットを'?'で置き換えたものを出力する。
(3)標準入力が終端に達したら、1行改行し、次いで(2)でそのまま出力しなかった行をランダムな順番に先頭に通し番号(1から始まる
10進数+':')を付けて出力する。(行毎に改行すること)
※行の記憶にはmalloc関数を利用する。mallocで取得したメモリ領域はプログラム終了した時点ですべて解放されていなければ減点
※ソースコードと、ソースコードをシェルから標準入力リダイレクトで与えたプログラムを実行したものをテキストファイル
にリダイレクト出力したものを試験結果サンプルとして提出。
[3] 環境
[3.1] OS:Linux/Unix
[3.2] コンパイラ名とバージョン:gcc を想定するもgeneric
[3.3] 言語:C
[4] 期限:5月16日正午まで
[5] その他の制限:特になし
問題文そのものをデジカメで撮ったものをアップしようと思いましたが、学校名とかわかっちゃうんで、
そのまま書き込みました。何度も確かめましたが、長文なんで部分的に間違っているかも知れません。よろしくお願いします。
0322321
2008/05/09(金) 02:10:55×(2)標準出力から読み込んだ
======>
○ (2)標準入力から読み込んだ
と読み替えて下さい。すみませんでした。
0323デフォルトの名無しさん
2008/05/09(金) 02:38:27>>317
つまり、画像形式を調べて操作しなさいって宿題?
それなのに画像フォーマットの指定なし?
今までの回答からして、絶対に課題の内容を自分補間してる気がするが…
画像形式 BMPでRGB形式のみ(パレット、モノクロ不可)
RGB情報は加工なし(BGRの順で入ってるから、必要なら自分で反転する)
0324323
2008/05/09(金) 02:43:09#include <stdlib.h>
#define IMAGE_WIDTH (256)
#define IMAGE_HEIGHT (256)
typedef struct _BGR {
unsigned char bgr[3];
} BGR;
0325323
2008/05/09(金) 02:43:29{
BGR pixel[ IMAGE_HEIGHT ][ IMAGE_WIDTH ];
unsigned int offset, size;
unsigned char* header;
FILE* fp;
fp = fopen( "file1.bmp", "rb" );
// ヘッダーの10bytes目にピクセル情報までのオフセットがある
fseek( fp, 10, SEEK_SET );
fread( &offset, sizeof(unsigned int), 1, fp );
// ヘッダーの34bytes目にピクセル情報サイズがある
fseek( fp, 34, SEEK_SET );
fread( &size, sizeof(unsigned int), 1, fp );
// ヘッダーを作成
header = (unsigned char*)malloc( offset );
fseek( fp, 0, SEEK_SET );
fread( header, offset, 1, fp );
// BGR値取得
fseek( fp, offset, SEEK_SET );
fread( pixel, size, 1, fp );
fclose( fp );
// 同じファイルを作成
fp = fopen( "file2.bmp", "wb" );
fwrite( header, offset, 1, fp );
fwrite( pixel, size, 1, fp );
fclose( fp );
free( header );
return 1;
}
0326デフォルトの名無しさん
2008/05/09(金) 02:45:540327デフォルトの名無しさん
2008/05/09(金) 04:02:17取り合えず作ってみた。主な欠陥は以下の通り。
・月齢算出はイマイチ合ってるかわからん。
・年号、及び年月日の範囲チェックが粗雑。
・月齢画像化は未対応(一応視覚化?はしてみた)。
・>>229氏が指摘したような事柄に関してなにもしてない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6493.txt
0328321@12345
2008/05/09(金) 04:11:27※標準入力からは与える行の文字数は最大で256文字で、行数は最大で10000行まで対応すること(原文まま)
0329デフォルトの名無しさん
2008/05/09(金) 04:39:12long doubleで何とかならないか?
0330321 ◆3prheF9ilc
2008/05/09(金) 04:47:380331デフォルトの名無しさん
2008/05/09(金) 05:59:07ありがとう、参考にして提出させてもらいました
0333sage
2008/05/09(金) 11:10:50[2] 問題文(含コード&リンク):次の間違えを正しくしなさい
char name1[] = “Jonathon”;
char name2[5] = “Mark”;
name2 = name1;
puts(name2);
[3] 環境
[4] 期限: 明日くらい
[5] その他の制限:
name2をtempに一度入れてからやるのかなーって思ったんですけどエラーがでてさっぱりです。
間違えは1個だけでないかもしれないのでよくわかりません。どなたかお願いします
0334デフォルトの名無しさん
2008/05/09(金) 11:38:44最初の設問は?
間違えを直すにしても、何をしたいか(条件)位は書こうや
それによってどう直すか違ってくるし
単にエラー取りたいなら
char *name1 = "Jonathon";
char *name2 = "Mark";
name2 = name1;
puts(name2);
変数をポインタにしとけで済む
0335デフォルトの名無しさん
2008/05/09(金) 11:39:07“ → "
” → "
配列への代入はできないので、name2 = name1; はダメ(配列とポインタは違う)
char name2[5] = "Mark"; を、 char *name2 = "Mark"; にして、name2 = name1; ならできる
0337デフォルトの名無しさん
2008/05/09(金) 12:18:48char (*name2)[8] = “moving.”;
という方法もあるな
てか将来のCコンパイラでは、上のように解釈されて
エラーにならないようにして欲しいな
0338デフォルトの名無しさん
2008/05/09(金) 13:03:49お前は何を言っているんだ
0339デフォルトの名無しさん
2008/05/09(金) 13:24:52ありがとうございました!後は自分で頑張ってみます!
0340デフォルトの名無しさん
2008/05/09(金) 13:36:05http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6496.txt
これでエラーがでます;
どうしたらちゃんと動くのか教えてください。
0341デフォルトの名無しさん
2008/05/09(金) 13:50:3616進表示が抜けてる
0342デフォルトの名無しさん
2008/05/09(金) 13:50:37[1] 授業単元:グラフ理論
[2] 問題文:
http://www32.ocn.ne.jp/~graph_puzzle/1no1.htm
ここのサイトにあるハーベル・ハキミの定理を利用して
与えられたグラフ情報(数列情報?)がグラフ的であるかどうかを
しらべるプログラムを作って欲しいです。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名:・・・、ボーランド?bcpad使ってます
[3.3] 言語:どちらでも可
[4] 期限:無期限ですけど、できるだけ早い方がうれしいです。12日月曜とか
[5] その他の制限:無制限です、自由に作ってください
プログラミングできる皆さんのことですから、
定理とかみたいな数理的内容に関しては
サイトみればすぐに分かると思いますけど、
定理関係とかで何かあれば質問に答えます。
申し訳ありませんが、宜しくお願いします。
0343デフォルトの名無しさん
2008/05/09(金) 14:00:12argv[1]やargv[3]は文字列。
strlen()は文字列の長さを測る。
そしてaは文字列ではなくてint。だからstrlen(a)は間違い。
(strlen(a) > 1000)ではなくて、(a > 1000)だろう。
switch(argv[2])が間違い。
文字列(charへのポインタ)を渡すのは間違い。
case "mul":などと書くのもコンパイルできない。
strcmp()を使えと書いてあるので素直にそちらを使う。
if (strcmp(argv[2], "add") == 0) {
printf("%d + %d = %d\n", a, b, a + b);
} else if (strcmp(argv[2], "sub") == 0) {
printf("%d - %d = %d\n", a, b, a - b);
} else if (strcmp(argv[2], "mul") == 0) {
printf("%d * %d = %d\n", a, b, a * b);
} else if (strcmp(argv[2], "div") == 0) {
printf("%d / %d = %d\n", a, b, a / b);
}
で充分。
0344デフォルトの名無しさん
2008/05/09(金) 14:01:42if (strcmp(argv[2], "add") == 0) {
printf("%d + %d = %d %x\n", a, b, a + b, a + b);
} else if (strcmp(argv[2], "sub") == 0) {
printf("%d - %d = %d %x\n", a, b, a - b, a - b);
} else if (strcmp(argv[2], "mul") == 0) {
printf("%d * %d = %d %x\n", a, b, a * b, a * b);
} else if (strcmp(argv[2], "div") == 0) {
printf("%d / %d = %d %x\n", a, b, a / b, a / b);
}
0345デフォルトの名無しさん
2008/05/09(金) 14:38:23どちらが難しいでしょうか?
0346デフォルトの名無しさん
2008/05/09(金) 14:48:410347340
2008/05/09(金) 15:26:03ありがとうございます。ほんとうに助かりました
0348デフォルトの名無しさん
2008/05/09(金) 15:55:280349デフォルトの名無しさん
2008/05/09(金) 18:16:58[2] 問題文(含コード&リンク):5欠けるマスにランダムに配布される1〜25の数字をまず行で
ソートし、次に列でソートする。左上が小さい数で、右下が大きい数になるようにする。
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限: (2008年5月11日まで]
[5] その他の制限:fopenを使用する
0350デフォルトの名無しさん
2008/05/09(金) 18:56:49違ってたらすまそ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6497.c
0351デフォルトの名無しさん
2008/05/09(金) 19:18:42$ ./a.out aabaaba
2
aaaaa
となったが、ちょっと直せばこれでよさそうだな。
0352デフォルトの名無しさん
2008/05/09(金) 20:23:59[2] 問題文(含コード&リンク):
区切り文字で区切られたテキスト形式のファイルを与えると、XML形式のファイルをはき出すプログラムを作りなさい。
[3] 環境:Windows XP、C言語
[4] 期限:なるたけ早く
[5] その他の制限:
最重要項目「決してGPL感染しないこと」「完全に著作権フリーであること」
1) 区切り文字は「,」を標準とする。
2) オプション指定等で区切り文字を空白文字、TAB文字、「;」等に変更できるようにすること。
3) 変換元ファイルの一行目は項目名として扱う。各要素のタグ名として使用すること。
4) 1行を1レコードと扱う。1レコードは<RECORD></RECORD>タグで囲むこと。
5) 変換元のファイル名をルートタグとして使う事。XC200211.CSVならば<XC200211.CSV></XC200211.CSV>で囲む。
6) 各要素の属性値を設定するだけで完成するXMLスキーマファイルを同時に出力すること。
番外) XML形式のファイルをCSV形式に直してはき出すプログラムも作ってよい。
難しすぎて手におえないのでよろしくお願いします><;
0353デフォルトの名無しさん
2008/05/09(金) 20:29:24修正しました。
結局、再帰関数化することに。。。ウゥゥ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6498.c
0354デフォルトの名無しさん
2008/05/09(金) 20:37:15テキストファイルを読み込むってことだよね?
5欠けるって5x5ってことだよね?
つまり↓
3 5 12 24 7
19 18 20 9 8
1 21 2 11 15
23 6 13 17 4
22 25 10 14 16
まず行
3 5 7 12 24
8 9 18 19 20
1 2 11 15 21
・・・
で列
1 2 7 12 4
3 5 11・・・
とかになるよ?
0355デフォルトの名無しさん
2008/05/09(金) 20:37:20zxzxcvcvbnbnで
9
zxz
となる…。
0356355
2008/05/09(金) 20:41:160357デフォルトの名無しさん
2008/05/09(金) 20:49:07スゲエな、勉強になったわ。
0358デフォルトの名無しさん
2008/05/09(金) 21:06:511 2 3 4 5
6 7 …
とするにはどうしたらいいんでしょうか?
0359657
2008/05/09(金) 21:20:41[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6500.txt
[3] 環境
[3.1] OS:(WindowsXP)
[3.2] コンパイラ名とバージョン:VC++2005
[3.3] 言語:C++
[4] 期限: 5月12日
[5] その他の制限:プログラム中の繰り返し処理にはdo〜while 文を使用しなければいけない。
よろしくお願いしますm(__)m 。
0360デフォルトの名無しさん
2008/05/09(金) 21:47:16恥ずかしながらソースを読んで理解するまで一時間かかったw
あなたの知性に敬意を表したい。この問題、解けないと思ってた。
0361デフォルトの名無しさん
2008/05/09(金) 21:56:56ソートする際に行だの列だの分けず5x5とも考えず、25個の数字だと考えれば簡単
だけど「まず行、次に列」っていう問題文なんでしょ?
だとするなら俺にはちょっと思い浮かばない
0362デフォルトの名無しさん
2008/05/09(金) 22:03:18これは解ける問題ではないだろ。 10万文字は絶対無理。
出力
0
abcdedcba
0363デフォルトの名無しさん
2008/05/09(金) 22:06:340364350
2008/05/09(金) 22:20:53一部配列を導入し、高速化しました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6501.c
0365デフォルトの名無しさん
2008/05/09(金) 22:33:08>>90 の実行結果
result=2
>>364 の実行結果
4
adda
0366デフォルトの名無しさん
2008/05/09(金) 22:36:11おおおっ!
0367デフォルトの名無しさん
2008/05/09(金) 22:36:421
badczzcdab
$ ./a.out azxbadczzcdab
9
azza
これもだな。
0368デフォルトの名無しさん
2008/05/09(金) 22:45:54できる方法が全く思いつきませんが。
0369350
2008/05/09(金) 22:58:52すんません、一応修正したつもり、です
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6502.c
0370デフォルトの名無しさん
2008/05/09(金) 23:08:120372デフォルトの名無しさん
2008/05/09(金) 23:32:33間違えが戻ります
0373デフォルトの名無しさん
2008/05/10(土) 00:12:49何文字でも
回文になるには
文字数が偶数の時・・各文字は偶数個。
文字数が奇数の時・・奇数文字数は一種、それ以外は偶個。
なので奇数個の文字が複数有る場合、その数だけ取り除いた組み合わせがある。
奇数個の文字がある場合はそれを中心に置き
偶数個の文字を半分にし並びを発生してミラーするだけ。組み合わせは簡単にできるしそれほど難解ではないと思うけどなぁ。
0374デフォルトの名無しさん
2008/05/10(土) 00:16:1010万文字の文字列が与えられたとき、そこから最小何文字取り除くと回文になるかです。
0375C行為の教師 ◆WBRXcNtpf.
2008/05/10(土) 01:21:580376デフォルトの名無しさん
2008/05/10(土) 01:23:500378デフォルトの名無しさん
2008/05/10(土) 02:00:29ペア数、残文字列は以下の様になる。
0 azxbadczzcdab
1 zxbadczzcd
2 xbadcz
2 czzc
3 zz --> 4
2 zz
1 xbadcz
1 adczzcda
2 dczzcd
3 czzc
4 zz --> 5 <---これが最大ペア数
3 zz --> 4
上記より、最大ペア数は5(5*2文字分)
よって削除文字の最小数は、len("azxbadczzcdab") - 5*2 = 4
0379デフォルトの名無しさん
2008/05/10(土) 02:15:46説明するのが面倒だからキーワードだけ.検索すれば大量に引っかかるはず.
与えられた文字列 s と,s を反転した文字列 r を考えると,
最長回文は s と r の最長共通部分列(longest common subsequence)で求まる.
あとは longest common subsequence を高速に解くアルゴリズムを使えばいい.
0380デフォルトの名無しさん
2008/05/10(土) 02:17:22http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6503.txt
参考
ttp://www.prefield.com/algorithm/dp/lcs_hs.html
>>90のテストパターン生成を付けてます。
1万文字は余裕。10万文字はメモリ馬鹿食いして危ないです。
0381デフォルトの名無しさん
2008/05/10(土) 02:38:39http://www.prefield.com/algorithm/string/manacher.html
0382デフォルトの名無しさん
2008/05/10(土) 02:41:07Hunt-Szymanski は O((r+n) log n) なので,
たとえば s = "aaaaaa....aab" みたいな場合に非常に遅い.
対応するにはヒューリスティクスを入れるか,
Hirschberg などとカップリングすることになる.
まあランダムインプットを仮定してよいならそれでも十分.
ただし 380 の実装では,求める必要のない LCS そのものを計算しており,
LCS の長さだけが欲しい場合には空間使用量を大幅に減らせる.
あと,入力が有限のアルファベットなので map を使う必要もない.
それくらいを直すと次のようになる.n = 100000 でもそれなりの時間で求まる.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6504.cpp
0383デフォルトの名無しさん
2008/05/10(土) 03:00:11手元の処理系では、>>343,>>344の修正だけじゃコンパイル通らなかったけど
他にどういう修正したのかよろしければ教えて下さい。
0384デフォルトの名無しさん
2008/05/10(土) 03:07:51a*b*c*d*e***e*d*c*b*a
として、*には反転したものが一致する部分列を持たないように入れる。
しかし、*を取り除くことで最低でも、abcdeを含む回文が作れる
0385デフォルトの名無しさん
2008/05/10(土) 03:17:160386デフォルトの名無しさん
2008/05/10(土) 08:58:14お前ら仕事しろと
0387デフォルトの名無しさん
2008/05/10(土) 09:30:040388デフォルトの名無しさん
2008/05/10(土) 11:01:43最長共通部分列を誤解してるんじゃね?
a*b*c*d*e***e*d*c*b*a を反転して
a*b*c*d*e***e*d*c*b*a としたら、
abcdeedcba は少なくとも共通部分列。
>>385
具体例を
0389デフォルトの名無しさん
2008/05/10(土) 12:13:24ちなみにだけど、
>左上が小さい数で、右下が大きい数
としか解の制限がないなら行、列の順にソートするだけでも満たせる
1 2 3 4 5
6 7・・・
ってのはむり
1・・・・
・・・・25
にはなる
0390デフォルトの名無しさん
2008/05/10(土) 15:37:11それはfopenを使用する場合どうかけばいいんでしょうか
0391デフォルトの名無しさん
2008/05/10(土) 16:57:49{
整数型二次元配列[5][5]宣言;
ファイルポインタ宣言;
読み込みファイルオープン;
ファイルから読み込みループ;
行の昇順ソート;
列の昇順ソート;
出力ループ;
ファイルクローズ;
リターンゼロ;
}
0392デフォルトの名無しさん
2008/05/10(土) 17:36:17[2] 問題文:http://www4.plala.or.jp/tamo/dsp/07cross-corr.pdf
[3] 環境 :OS、Linux、言語、C言語
です。
よろしくお願いします。
0393デフォルトの名無しさん
2008/05/10(土) 18:17:04丸投げ
0394デフォルトの名無しさん
2008/05/10(土) 18:38:48> 各個人のホームページ(目次ページ)から次のような名前でリンクを張ること
ホームページの場所と編集方法(アカウント)を教えてくんろ
0395392
2008/05/10(土) 18:49:16信号のプログラムとその信号を読み込み相関処理を行うプログラムについて教えてください。
0396デフォルトの名無しさん
2008/05/10(土) 19:06:21(空白)にこれぶっ込めばおk。
fgets(name, 255, stdin);
i = 0; do{}while(name[spaze_index = i++] != ' ');
0397359
2008/05/10(土) 19:27:39実行結果確認しました。
助かりましたありがとうございますm(__)m 。
0398デフォルトの名無しさん
2008/05/10(土) 19:36:00だから奇数個が一つになるようにしたら回文になるっつうことだよ。そんなに面倒?
0399デフォルトの名無しさん
2008/05/10(土) 19:42:50面倒
0400デフォルトの名無しさん
2008/05/10(土) 19:46:39面倒でないと思うなら実装してごらん
0401デフォルトの名無しさん
2008/05/10(土) 19:54:450402デフォルトの名無しさん
2008/05/10(土) 21:26:59関数や配列とか
[2] 問題文(含コード&リンク):()
入力した5つの整数の最大値を求める関数をつくれ
[3] 環境
[3.1] OS: (Windows/Linux/等々) win
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc 3.4
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
特になし
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
配列を使用すること
お願いします。
0403デフォルトの名無しさん
2008/05/10(土) 21:34:53int max_n(const int *a, int n) {
int r = *a;
while(a++, --n)
r = (*a > r) ? *a : r;
return r;
}
0404デフォルトの名無しさん
2008/05/10(土) 21:45:57// 引数は配列と配列数
int GetMaxInt(int array[], int num)
{
int max = 0, i = 0;
for(i = 0; i < num; i++){
if(i == 0)
max = array[i];
else{
if(array[i] > max)
max = array[i];
}
}
}
アドレスとかわからなかったら値渡し
0405404
2008/05/10(土) 21:46:42忘れてた
0406デフォルトの名無しさん
2008/05/10(土) 23:27:47[2] 問題文(含コード&リンク):三行三列の行列の積を求めるプログラムを作れ。
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ名とバージョン: VisualBasic2005
[3.3] 言語: C++
[4] 期限: 5/12 13:00まで
[5] その他の制限: for型繰り返し?を用いる。
お願いします。
C言語があまり理解できてないので、授業単元と[5]の欄が曖昧になっています。すいません。
0407デフォルトの名無しさん
2008/05/10(土) 23:29:48[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6506.txt
[3] 環境
OS:Windows
言語:Visual C++ 2005
[4] 期限: 2008/05/11の夜頃まで
[5] その他の制限: 特に無し
よろしくお願いします。
0408デフォルトの名無しさん
2008/05/11(日) 00:09:16typedef struct _MAT3 {
float m[9];
}MAT3;
MAT3 Matrix3multiply( MAT3 mat0, MAT3 mat1 )
{
MAT3 result;
result.m[0] = mat0.m[0] * mat1.m[0] + mat0.m[1] * mat1.m[3] + mat0.m[2] * mat1.m[6];
result.m[1] = mat0.m[0] * mat1.m[1] + mat0.m[1] * mat1.m[4] + mat0.m[2] * mat1.m[7];
result.m[2] = mat0.m[0] * mat1.m[2] + mat0.m[1] * mat1.m[5] + mat0.m[2] * mat1.m[8];
result.m[3] = mat0.m[3] * mat1.m[0] + mat0.m[4] * mat1.m[3] + mat0.m[5] * mat1.m[6];
result.m[4] = mat0.m[3] * mat1.m[1] + mat0.m[4] * mat1.m[4] + mat0.m[5] * mat1.m[7];
result.m[5] = mat0.m[3] * mat1.m[2] + mat0.m[4] * mat1.m[5] + mat0.m[5] * mat1.m[8];
result.m[6] = mat0.m[6] * mat1.m[0] + mat0.m[7] * mat1.m[3] + mat0.m[8] * mat1.m[6];
result.m[7] = mat0.m[6] * mat1.m[1] + mat0.m[7] * mat1.m[4] + mat0.m[8] * mat1.m[7];
result.m[8] = mat0.m[6] * mat1.m[2] + mat0.m[7] * mat1.m[5] + mat0.m[8] * mat1.m[8];
return result;
}
0409デフォルトの名無しさん
2008/05/11(日) 00:10:26[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6508.txt
この問題文の
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: 2008年05月15日00:00まで
[5] その他の制限:実習を0から数時間習ってみただけのド素人レベル
よろしくお願いします。
0410デフォルトの名無しさん
2008/05/11(日) 00:14:23#include<iostream>
using namespace std;
const int cNum
int main()
{
int NumArray[cNum][cNum]={{0,0,0},{0,0,0}};
int result=1;
for(int i=0;i<cNum;i++){
for(int k=0;k<cNum;k++){
cout << "数字入力" << i+1 << "," << k+1 << ":";
cin >> NumArray[i][k];
}
}
for(int i=0;i<cNum;i++){
for(int k=0;k<cNum;k++){
result*=NumArray[i][k];
}
}
cout << result << endl;
return(0);
}
0411410
2008/05/11(日) 00:16:09コンパイルしてないのがバレる
0412410
2008/05/11(日) 00:17:21const int cNum=3;
ねorz
0413デフォルトの名無しさん
2008/05/11(日) 00:19:08#include<stdio.h>
void product(double c[][3], const double a[][3], const double b[][3])
{
int i, j, k;
for(i = 0; i < 3; i ++) {
for(j = 0; j < 3; j ++) {
double t = 0;
for(k = 0; k < 3; k ++)
t += a[i][k] * b[k][j];
c[i][j] = t;
}
}
}
int main()
{
static const double a[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, };
static const double b[3][3] = { { 1, 0, 0 }, { 0, 1, 0 }, { 0, 0, 1 }, };
double c[3][3];
int i, j;
product(c, a, b);
for(i = 0; i < 3; i ++ ) {
for(j = 0; j < 3; j ++)
printf("%f ", c[i][j]);
printf("\n");
}
}
0414デフォルトの名無しさん
2008/05/11(日) 00:22:36[課題1]
#include <stdio.h>
int main(){
int a,b;
puts("数字を入力して下さい。");
scanf("%d", &a);
puts("もうひとつ数字を入力して下さい。");
scanf("%d", &b);
printf("%dから%dまでの合計値は、%dです。\n", a, b, ((a+b)*(b-a+1))/2);
getchar();getchar();
}
0415デフォルトの名無しさん
2008/05/11(日) 00:23:30getchar();getchar();は消してちょ
0416デフォルトの名無しさん
2008/05/11(日) 00:24:39void search(const int a[], int n, int key)
{
int i;
for ( i=0; i<n; i++ ) {
if (a[i] == key) {
printf("%d番目に見つかりました。\n", i+1);
}
}
}
0417デフォルトの名無しさん
2008/05/11(日) 00:28:41下の1行を、
printf("%dは%d番目にあります。\n", ky, idx + 1);
以下に変更。
do {
int next = search(x+idx+1, nx-idx-1, ky);
printf("%dは%d番目にあります。\n", ky, idx + 1);
idx = (next != -1) ? idx+1+next : -1;
} while(idx != -1);
0418デフォルトの名無しさん
2008/05/11(日) 00:29:52[課題2]
#include <stdio.h>
int main(){
int a,i;
puts("数字を入力して下さい。");
scanf("%d", &a);
printf("入力した数字%dの約数は以下の通りです。\n",a);
for(i=a; i>0; i--)if(a%i == 0) printf("%d\n", i);
}
0419デフォルトの名無しさん
2008/05/11(日) 00:45:11[課題3]
#include <stdio.h>
int main(){
char buf[1000], s, d;
int a,i;
puts("文字列を入力して下さい。");
fgets(buf, 1000, stdin);
puts("置換したい文字を入力して下さい。");
s = getchar();getchar();
puts("置換後の文字を入力して下さい。");
d = getchar();
puts("置換結果を示します。");
for(i=0; buf[i] != '\0'; i++)
if(buf[i] == s) putchar(d); else putchar(buf[i]);
}
0420デフォルトの名無しさん
2008/05/11(日) 00:53:31丸投げされたらそりゃ面倒(正直興味ないからというのも手伝ってしまう)
>>400
>>401
うーん、文字種は alpha (128種くらいにしてみたけど)
struct CIRC_NOTI_LETTER
{
long alpha_count[ 128 ]; // 文字の出現をカウント
int circ_strings[128]; // 使用文字リスト列(alpha_count)
CIRC_NOTI_LETTER () {}; // _count など初期化
int setup(char* src_strings); // 文字読み込んで _count に
int set_tagle(int top_level); // リスト作成・回帰で手抜きする?
};
みたいな。。long 取ってるから 10万文字数とかじゃなくlong数×文字種みたいな感じで。文字の並びはこちらで作り替えて Ok ということで後はいかようにも加工できるけど・・・マジコード書いて欲しいの?。
0421デフォルトの名無しさん
2008/05/11(日) 01:07:48受け取りに来たら誰もやってくれてなくて泣きそうです><;
0422デフォルトの名無しさん
2008/05/11(日) 01:22:56ここって、カンニングよろしく丸投げコーナーなのか?
それにあなた社会人になるまえにおちこぼれじゃん(問題解決能力ゼロじゃないの)
自分で取り組んでどうしてもつまずくところを Help なら0狩るけど。
っていうか中国では入試の代理屋が成り立つ位だから、質問一件解決に5千円〜1万位で請け負う商売成り立つかもしれないな。
0423デフォルトの名無しさん
2008/05/11(日) 01:23:14これがちょっと難しくて
0424デフォルトの名無しさん
2008/05/11(日) 01:24:52丸投げしておいて丸一日以上放置して「受け取りに来た」なんて、虫がよすぎる。
0425デフォルトの名無しさん
2008/05/11(日) 01:25:370426デフォルトの名無しさん
2008/05/11(日) 01:25:59実質、標準ライブラリのみってことになんの?
ライセンス関係は全然知らないから、よく分からんが。
0427デフォルトの名無しさん
2008/05/11(日) 01:28:38まず日本では無理。
著作者人格権を行使しないと契約を交わせば擬似的にフリーになるが、
その契約をどうやって>>352と交わすのかが問題になるな
0428デフォルトの名無しさん
2008/05/11(日) 01:30:15せめてサンプルくらい提示してくれ。できれば実データがいいな。
0429デフォルトの名無しさん
2008/05/11(日) 01:30:170430デフォルトの名無しさん
2008/05/11(日) 01:33:54仕事のにおいがプンプンするがアドバイスだけしとく
5)はXMLの規約違反のハズ
6)込みで11日中は無理
番外)はXSLTで解決しろ
あと「完全に著作権フリーであること」なんだから2chに丸投げした時点でダメ
お前自身でやりなさい
0431デフォルトの名無しさん
2008/05/11(日) 01:37:59非常に書いて欲しいです。
その方法で本当に解けるか疑っているというのと、
単に良いコードを見たいという理由からです。
0432デフォルトの名無しさん
2008/05/11(日) 01:44:50顔文字がむかつくのと最重要項目が意味不明
0433デフォルトの名無しさん
2008/05/11(日) 01:46:23ヒントくらいあげて助けてあげれば良いじゃんw
おれはXMLに付いては素人だから、全部を作ってあげるには時間がかかるが
ファイル操作やバッファ作成、バッファをファイルにする等は教えてあげれる
そんな問題を丸投げするのに、XML形式についても何も知りませんって訳じゃないだろ?<421
自分で空関数でも言いから設計して、その処理パーツ単位で分らない事や内容を聞けばいいんじゃね?
設計なんて初心者ならスマートじゃなくとも良いだろ
それすら分らないレベルなら…大人しく諦めるしかね…
0434321 ◆3prheF9ilc
2008/05/11(日) 01:50:330435デフォルトの名無しさん
2008/05/11(日) 02:06:250436デフォルトの名無しさん
2008/05/11(日) 02:11:160437409
2008/05/11(日) 02:38:51ありがとうございました
この流れで催促じみた事を言って恐縮ですが、4,5の方もお分かりの方がおられましたら、
是非よろしくお願いしますm(_ _)m
0438デフォルトの名無しさん
2008/05/11(日) 02:46:23の問題のテクニカルな難所は、CSVの第一行を読み込んで、項目文字列配列に
分解するところだろな。何項目あるか事前にわからない点が腕の見せ所。
XMLファイル作成は、これが出来たら簡単だと思う。
一行毎にCSVを項目に分解してフォーマットにしたがって出力するだけ。
<?XML version="1.5">
<入力ファイル名>
<record>
........
</record>
<record>
<項目1> CSVのn行目の第一項目</項目1>
<項目2> CSVのn行目の第二項目</項目2>
...................................
</record>
<record>
................................
<;/record>
</入力ファイル名>
てな感じのファイル作ればいいんだと思う(よ).
スキーマXMLファイルも多分、簡単
読み込んだ項目を指定フォーマットで順次書き下すだけ。
番外は、XMLファイルを読み込んで上のフォーマットになっているかチェックする処理が
必須だから、格段に難しくなるよな気がする。
0439デフォルトの名無しさん
2008/05/11(日) 02:49:28お叱りはごもっともですが、ここは実質的に丸投げスレだと思います><;
>>423-427
法的にはあんまり厳密でなくてもいいです。ただ、著作権表示なしに流用できて、
仮にちょっとだけお小遣い程度のお金もらう事になっても怒られない程度なら十分です。
>>428
それはちょっと難しいです。項目数が1桁〜30程度、サイズが数KBから数MB程度の
ファイルが処理できれば大体おkなんですが。
""で囲まれる文字列やASCII文字Shift-JIS以外の文字やなんかは考慮する必要は無いです。
>>430
>5)はXMLの規約違反のハズ
そうなんですか?でも、そうしないと多分受け取ってもらえません。><;
>番外)はXSLTで解決しろ
ごめんなさい、敷居が高いです。
>>432
ごめんなさい、こっちに変えます。( >ω<)
0440デフォルトの名無しさん
2008/05/11(日) 02:57:15>そんな問題を丸投げするのに、XML形式についても何も知りませんって訳じゃないだろ?<421
自慢じゃないですがXMLさっぱりです。( >ω<)
<>で囲んだりしてhtmlに似てるなーくらいしかわかりません( >ω<)
>>438
少し簡単そうに見えてきました。
0441デフォルトの名無しさん
2008/05/11(日) 03:04:49それじゃ
仮にココにソースがアップされても、それが正しいか自分で分らないじゃんw
…まあ、そんなんじゃアップはないと思いなよ
0442デフォルトの名無しさん
2008/05/11(日) 03:12:07自分が請けた仕事だったら、最後まで自分の責任でやれ
それが誠意というものだ。
なお、CはUnix環境寄りの言語であるのに対しXMLはどち
らかというとWindows寄りだから、WSHなどの処理系でも
ライブラリライセンスに抵触しないで作れると思う。
Windows環境だったらCプログラムよりかWSHのほうが
遥かに使い勝手がいいと思う。
ここよりかWSH関連のスレで、質問したほうが早いかも。
0443デフォルトの名無しさん
2008/05/11(日) 03:12:21日本だから「完全に著作権フリーであること」は無理。
0444デフォルトの名無しさん
2008/05/11(日) 03:23:18多分、それらしく動いていれば大丈夫だと思います。( >ω<)
>>442
( >ω<) あい;;
でも、仕事じゃなくて宿題です。
0445デフォルトの名無しさん
2008/05/11(日) 03:34:010446デフォルトの名無しさん
2008/05/11(日) 03:34:12#include<stdio.h>
#include<string.h>
void mygets(char *buf, int size)
{
char *p;
if(fgets(buf, size, stdin)) {
if((p = strchr(buf, '\n')))
*p = '\0';
} else
*buf = '\0';
}
int main()
{
char str[100], s[100], r[100], *p;
printf("文字列を入力して下さい。\n");
mygets(str, sizeof(str));
printf("置換したい文字列を入力して下さい。\n");
mygets(s, sizeof(s));
printf("置換後の文字列を入力して下さい。\n");
mygets(r, sizeof(r));
printf("置換結果を示します。\n");
if((p = strstr(str, s)))
printf("%.*s%s%s\n", p-str, str, r, p+strlen(s));
else
printf("%s\n", str);
return 0;
}
0447デフォルトの名無しさん
2008/05/11(日) 03:36:100448デフォルトの名無しさん
2008/05/11(日) 03:41:10あまりのことにスルーしそうになったが、
宿題を丸投げするスレであって仕事を丸投げする下請け業者じゃないぞ、ここは
ところで誰かが解答した後に「>>xxxだけどやっぱGPLね」と言われたら終わりの気がする
このスレID出ないし。
0449デフォルトの名無しさん
2008/05/11(日) 03:41:23#include <stdio.h>
#include <stdlib.h>
int less_int(const int *x, const int *y)
{
return *x < *y;
}
int grater_int(const int *x, const int *y)
{
return *x > *y;
}
int main()
{
int data[8] = {1,6,10,15,20,15,5,9};
int type, i;
printf("並び替え方法を指定して下さい(1. 昇順2.降順)\n");
if(scanf("%d", &type) != 1 || type < 1 || type > 2)
return 1;
qsort(data, 8, sizeof(int), (type==1 ? grater_int : less_int));
printf("並び替えた数値を一覧で出力します。\n");
for(i = 0; i < 8; i ++)
printf("%d\n", data[i]);
return 0;
}
0450449
2008/05/11(日) 03:44:30○greater_int
動作に変わりないです。
0451デフォルトの名無しさん
2008/05/11(日) 03:45:17こんなんで合ってるかわからんけど一応うpしてみる。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6509.txt
0452デフォルトの名無しさん
2008/05/11(日) 03:47:53その気になって問題見直した。誤解もありですが書いてみたっす。
リストそれなりに長い。ここは整形崩れるからなんだけど
struct AL_CIRC
{
int hf_len; // 見つかった文字数
int center_c; // 中心文字があればそれを...
char circ_res[50002]; // 10万文字の半分
long str_len;
char* circ_src;
// 回文元の文字列
AL_CIRC(char* s)
{
circ_src = s;
str_len = strlen(s);
};
int search(int in); // サーチしては表示
int res_print(); // それなりに結果を表示やつ
};
// つづく
0453デフォルトの名無しさん
2008/05/11(日) 03:48:35int AL_CIRC :: search(int in)
{
hf_len = 0; // 回文の文字数
center_c = 0; // 中心の文字があれば...
if(in >= str_len - 1) // 検索が終端にキタ
return -1; // 終わり
int i;
int out = in + 1; // 次の検索開始位置
int lastp = str_len - 1; // 回文となる終わり側の位置
// 続く
0454デフォルトの名無しさん
2008/05/11(日) 03:50:23{
int bkp = lastp; // 跳んだ時の為に...
for(; i < lastp && circ_src[i] != circ_src[lastp]; lastp--)
;
if(i < lastp) // 一致を見つけたら
{
circ_res[hf_len++] = circ_src[i]; // 文字を覚えて
if(hf_len == 0) // 次の位置を覚える
out = i + 1;
}
else
lastp = bkp; // 跳んだら終わり側をモトイする
}
//つづく
0455デフォルトの名無しさん
2008/05/11(日) 03:52:44{
if(i < lastp) // 中心の一文字がある
center_c = circ_src[i];
res_print(); // それなりに表示
}
return out; // 次の位置を返す
}
// 結果をそれなりに表示
int AL_CIRC :: res_print()
{
if(hf_len == 0) // 見つからなかった..終わり
return 0;
int i;
for(i = 0; i < hf_len; i++)
fputc(circ_res[i], stdout);
if(center_c)
fputc(center_c, stdout);
for(i = hf_len - 1; i >= 0; i--)
fputc(circ_res[i], stdout);
fputc('¥n', stdout);
return hf_len * 2 + (center_c ? 1 : 0); // 回文の文字数を返す
}
0457デフォルトの名無しさん
2008/05/11(日) 03:52:480458デフォルトの名無しさん
2008/05/11(日) 03:53:190459デフォルトの名無しさん
2008/05/11(日) 03:53:39// 引数の文字を回文できるものすべてリストする
int main(int argc, char* argv[])
{
for(int k = 1; k < argc; k++)
{
AL_CIRC drv(argv[k]);
int i = 0;
while((i = drv.search(i)) > 0)
;
}
}
0460デフォルトの名無しさん
2008/05/11(日) 03:54:140462デフォルトの名無しさん
2008/05/11(日) 04:09:290463デフォルトの名無しさん
2008/05/11(日) 04:28:13嘘言ってもダメ
お前の書き込みからXMLの知識も十分あるのがわかるし
仕様がしっかりしすぎてる
あきらかに業務レベルの要求仕様なんだよ
以降スルーな
0464デフォルトの名無しさん
2008/05/11(日) 06:32:340465デフォルトの名無しさん
2008/05/11(日) 06:37:14お金云々は仮の話ですし、この程度のプログラム単体でお金もらえるわけが無いじゃないですか。
学生でよくわかりませんがきっとそうだと思います( >ω<)
0466デフォルトの名無しさん
2008/05/11(日) 07:33:300467デフォルトの名無しさん
2008/05/11(日) 08:39:20ホレ
5までなら、なんちゃってXML?風(WEBで調べた感じ)で作ってやったぞw
エラー処理とかやっつけ&区切り文字変更はデバッグしてない
ここでの表明が有効かどうか知らんが、著作権は放棄してあげる
(これで良いのかww)
スキーマファイルはちょっとWEB見たけど面倒だからやってない
さすがに後は自分でやれw
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6510.txt
0468デフォルトの名無しさん
2008/05/11(日) 12:01:46おお、ねむたで作ったからまともに動くかなんだけど...それ lastp-- いれてくれ。簡単なソースだからわかるっしょ。よろしく。
0469321 ◆3prheF9ilc
2008/05/11(日) 12:04:19どうもありがとうございました。
これほどの短いコードにほぼすべての仕様が詰め込まれて
いて感服しました。(講師は1000行位になる言ってました)
学校と同じ処理系ではありませんが、早速コンパイルしてやってみました。
ただ、ちょっと結果がちがった感じです。幾つかの処理例も渡されてたんで
すが、?が出力される(そのままプリントされない)行は、もう少し少なく、
そのまま出力されない行は、アルファベットを全く含まず全部?に置き換わって
ました。明日、学校でもう一度確かめてみます。
>>451さんのコードを参考にして、自分でも少しやってみようと思いますが
行き詰まったらまたここで相談させて頂くかも知れません。
0470デフォルトの名無しさん
2008/05/11(日) 12:18:16ファイル名の指定はソース内に記述すること。
[4]期限:2008-05-14
test.txt→http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6511.txt
normal.txt→http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6512.txt
よろしくお願いします
0471デフォルトの名無しさん
2008/05/11(日) 12:59:02お願いします。
0472デフォルトの名無しさん
2008/05/11(日) 13:03:31スレ内検索くらいしろ>>1のテンプレに従え氏ね
>>403,>>404-405
0473デフォルトの名無しさん
2008/05/11(日) 13:05:32int main(void){puts("8");return 0;}
0474デフォルトの名無しさん
2008/05/11(日) 13:57:04aabcaaで誤動作。
0475デフォルトの名無しさん
2008/05/11(日) 14:05:43手元のファイル使って動作確認しました。概ね大丈夫なようです。
ありがとうございました、これを元に後は自分でやります( >ω<)
0476デフォルトの名無しさん
2008/05/11(日) 15:17:56「全行を一旦取り込んでから、アルファベットを含む行のうち上位25%の行で置換する」
ということのようなんで作り直してみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6516.txt
まだ違ってるようなら出力例を出しとくれ
0477476
2008/05/11(日) 15:43:00for(i--; i >= 0; i--, lep_num++) if(line_info[i].alpha_count < n) break;
に直して。比較対象が自身とも比較しちゃってた。
あと変数名 lep_num は rep_num (replace) の打ち間違い…。
0478デフォルトの名無しさん
2008/05/11(日) 16:10:26http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6517.txt
0479デフォルトの名無しさん
2008/05/11(日) 16:21:52ありがとうございます!
0480476
2008/05/11(日) 16:37:13「置換する行数」と「最下位タイのカウント」のとこ(ソート後から/*** 1,2 ***/の前まで)は
if(alpha_line_total == 0) lep_num = 0;
else{
...
}
としてアルファベット行が0の時は実行しないようにしといて下さい。
0481側近中の側近 ◆0351148456
2008/05/11(日) 17:05:24(っ´▽`)っ
int getMaxInt(int *a, int count)
{
int *b;
int max;
b = (int *)malloc(sizeof(a[0]) * count);
memcpy(b, a, sizeof(a[0]) * count);
qsort(b, count, sizeof(b[0]), *cmpInt);
max = b[count - 1];
free(b);
return max;
}
int cmpInt(const void *elem1, const void *elem2){
return *(int *)elem1 - *(int *)elem2;
}
0482657
2008/05/11(日) 18:07:29[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6518.txt
[3] 環境
[3.1] OS:(WindowsXP)
[3.2] コンパイラ名とバージョン:VC++2005
[3.3] 言語:C++
[4] 期限:
[5] その他の制限:問題文中に記載してあります。
よろしくお願いしますm(__)m 。
0483デフォルトの名無しさん
2008/05/11(日) 18:11:30制限というか、作りかたがそのまま書いてあるな。
0484デフォルトの名無しさん
2008/05/11(日) 18:18:38あまり良い出題の仕方じゃないな。
ある部分だけがっちり固めて、中では自由にやれというのは。
意外に難しく初心者向けじゃなかったりする。(中上級者向け)
初学者向けの問題は、コードの一部の行を穴埋めさせて、
意味が通り、題意を満たすようにしろというような問題のほうが良い。
後ろに選択枝を提示しておくのは当然。
0485482
2008/05/11(日) 18:31:225月14日までにお願いします。
0486デフォルトの名無しさん
2008/05/11(日) 18:45:50空白部分のみ
if(!fgets(name, sizeof(name), stdin))
return 1;
do sscanf(name, "%s%n", tmp, &space_index); while(0);
name[strcspn(name, "\n")] = '\0';
memmove(name, name + space_index + 1, sizeof(name) - space_index - 1);
strcat(name, " ");
strcat(name, tmp);
0487デフォルトの名無しさん
2008/05/11(日) 18:49:04[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6519.txt
[3] 環境
[3.1] OS:(WindowsXP)
[3.2] コンパイラ名とバージョン:visualstudio6.0
[3.3] 言語:C
[4] 期限:5/13
[5] その他の制限:問題文に記載があります
よろしくお願いします。
0488デフォルトの名無しさん
2008/05/11(日) 18:53:550489デフォルトの名無しさん
2008/05/11(日) 19:15:56PCが出来るからと言って、貴方に3Dポリゴンを作って動かすことが出来ますか?
0490デフォルトの名無しさん
2008/05/11(日) 19:19:15#include<stdio.h>
void lneq(int a, int b, int p, int c, int d, int q) {
int D=a*d-b*c, D1=p*d-q*b, D2=a*q-c*p;
if(D)
printf("%.2f %.2f\n", (double)D1/D, (double)D2/D);
else {
if(!D1 && !D2) {
if(a || b || c || d)
puts("1");
else if(!p && !q)
puts("2");
else
puts("0");
}
else
puts("0");
}
}
int main() {
FILE *fp = fopen("data1.txt", "r");
int n, a, b, p, c, d, q;
if(!fp) return 1;
fscanf(fp, "%d", &n);
while(n--) {
fscanf(fp, "%d%d%d%d%d%d", &a, &b, &p, &c, &d, &q);
lneq(a, b, p, c, d, q);
}
fclose(fp);
return 0;
}
0491482
2008/05/11(日) 19:26:50実行結果確認しました。
ありがとうございます助かりましたm(__)m 。
0492デフォルトの名無しさん
2008/05/11(日) 19:57:09ありがとうございました。
0493デフォルトの名無しさん
2008/05/11(日) 20:04:500494デフォルトの名無しさん
2008/05/11(日) 20:32:09[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6520.txt
[3.1] OS:(WindowsXP)
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:5/13
よろしくお願いします。
0495デフォルトの名無しさん
2008/05/11(日) 20:47:44// Havel-Hakimi
bool is_graphic(int d[], int n) {
while (n > 0) {
sort(d, d+n);
int k = d[--n];
if (k < 0 || k > n)
return false;
for (int j = 0; j <= k; ++j)
d[n - j]--;
}
return true;
}
0496デフォルトの名無しさん
2008/05/11(日) 20:58:43#include<stdio.h>
void show(const int a[][10])
{
int i, j;
for(i = 1; i <= 9; i ++) {
for(j = 1; j <= 9; j ++)
printf("%2d ", a[i][j]);
putchar('\n');
}
putchar('\n');
}
int main()
{
int a[10][10], i, j, w;
for(i = 1; i <= 9; i ++)
for(j = 1; j <= 9; j ++)
a[i][j] = i*j;
show(a);
for(i = 1; i < 10-i; i ++)
for(j = 1; j <= 9; j ++) {
w = a[i][j];
a[i][j] = a[10-i][j];
a[10-i][j] = w;
}
show(a);
}
0497デフォルトの名無しさん
2008/05/11(日) 21:08:22それだしたら怒られるぞw
0498デフォルトの名無しさん
2008/05/11(日) 21:13:34実行できました。ありがとう
0499321 ◆3prheF9ilc
2008/05/11(日) 21:35:50ありがとうございます。
サンプルデータにあってそうなほうを
参考にさせて頂きます。(両方とも参考になりそうですが)
0501デフォルトの名無しさん
2008/05/11(日) 22:53:035の倍数と5がつく数字はナルシストになるプログラムを作れ
0502デフォルトの名無しさん
2008/05/11(日) 23:31:45二番煎じ乙
0503デフォルトの名無しさん
2008/05/11(日) 23:51:54きっ、きさまっ!?ナニヤツ?
0504デフォルトの名無しさん
2008/05/12(月) 00:30:180505デフォルトの名無しさん
2008/05/12(月) 02:49:27当方で確認した環境は cygwin/WindowsXP, 処理系はgcc3.4.4 です。
正弦波出力:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6521.txt
余弦波出力:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6522.txt
ガウスランダム信号出力1:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6523.txt
ガウスランダム信号出力2:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6524.txt
相互相関関数計算:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6525.txt
簡単なグラフ表示:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6526.txt
詳細はソースを読んでいただくとありがたいです。
>>501-504
せっかく質問スレではいい回答を出しているのに、ここでは自演ですか。
0506デフォルトの名無しさん
2008/05/12(月) 10:23:05histの各値は0で初期化すること
実行例
data
3 6 0 4 3 2
5 2 9 8 1 3
1 3 4 1 3 1
6 8 6 4 3 3
hist
0 # 1
1 #### 4
2 ## 2
3 ####### 7
4 ### 3
5 # 1
6 ### 3
7 0
8 ## 2
9 # 1
0507506の続き
2008/05/12(月) 10:25:42int data[4][6]={
{ 3, 6, 0, 4, 3, 2 },
{ 5, 2, 9, 8, 1, 3 },
{ 1, 3, 4, 1, 3, 1 },
{ 6, 8, 6, 4, 3, 3 } };
int hist[10];
for( j = 0; ****** ; j++ ){
****** = 0;
}
printf("data\n");
for( ****** ; ****** ; j++ ){
for( ****** ; ****** ; i++ ){
printf("%2d", data[j][i]);
}
printf("\n");
}
for( j = 0; j < 4; j++ ){
for( i = 0; i < 6; i++ ){
******++;
}
}
printf("\nhist\n");
for( j = 0; j < 10; j++ ){
printf("%d ", j );
for( i = 0; ****** ; i++ ){
printf("#");
}
printf(" %d\n", ****** );
0508デフォルトの名無しさん
2008/05/12(月) 10:37:33それ以前に>>1読んで書き直し
0509デフォルトの名無しさん
2008/05/12(月) 10:45:50int data[4][6]={
{ 3, 6, 0, 4, 3, 2 },
{ 5, 2, 9, 8, 1, 3 },
{ 1, 3, 4, 1, 3, 1 },
{ 6, 8, 6, 4, 3, 3 } };
int hist[10];
for( j = 0; j < 10; j++ ){
hist[j] = 0;
}
printf("data\n");
for( j = 0; j < 6; j++ ){
for( i = 0; i < 4; i++ ){
printf("%2d", data[j][i]);
}
printf("\n");
}
for( j = 0; j < 4; j++ ){
for( i = 0; i < 6; i++ ){
hist[data[i][j]]++;
}
}
printf("\nhist\n");
for( j = 0; j < 10; j++ ){
printf("%d ", j );
for( i = 0; i < hist[i]; i++ ){
printf("#");
}
printf(" %d\n", hist[i] );
}
0510509ごめんミスった
2008/05/12(月) 10:53:26int data[4][6]={
{ 3, 6, 0, 4, 3, 2 },
{ 5, 2, 9, 8, 1, 3 },
{ 1, 3, 4, 1, 3, 1 },
{ 6, 8, 6, 4, 3, 3 } };
int hist[10];
for( j = 0; j < 10; j++ ){
hist[j] = 0;
}
printf("data\n");
for( j = 0; j < 4; j++ ){
for( i = 0; i < 6; i++ ){
printf("%2d", data[j][i]);
}
printf("\n");
}
for( j = 0; j < 4; j++ ){
for( i = 0; i < 6; i++ ){
hist[data[j][i]]++;
}
}
printf("\nhist\n");
for( j = 0; j < 10; j++ ){
printf("%d ", j );
for( i = 0; i < hist[i]; i++ ){
printf("#");
}
printf(" %d\n", hist[i] );
}
0511デフォルトの名無しさん
2008/05/12(月) 11:16:38[2] 問題文:凸多角形の辺から一番遠い点を見つけ、その距離を求めるプログラムを作れ。距離とは最も近い辺までの距離である。
入力データ
多角形の頂点数と、各頂点の座標が反時計回りの順で与えられる。
[3.1] OS:(WindowsXP)
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:5/13
0512デフォルトの名無しさん
2008/05/12(月) 11:29:57よく判らんな。「一番遠い点」とはなんだろ。
凸多角形内の、全ての辺から一番離れた点を求めると言うことなのかな? それだとかなり厄介そうだ。
多角形の頂点から求めるのでは意味が不明だし。
勿論、凸多角形外で求めようとしたら無限の彼方に発散するし。
点の集合が与えられるのなら何とでもなるのだけれどなぁ。
0513デフォルトの名無しさん
2008/05/12(月) 11:37:55例えば正方形なら対角線の交点で、距離は一辺の長さの半分です
0514デフォルトの名無しさん
2008/05/12(月) 11:51:23公式か方針教えてくれ
0515デフォルトの名無しさん
2008/05/12(月) 11:51:240516デフォルトの名無しさん
2008/05/12(月) 11:52:31で、そいつはどうやって見つければいい?
0517デフォルトの名無しさん
2008/05/12(月) 11:56:45一撃で出るような式は、おそらく存在しない。
0518デフォルトの名無しさん
2008/05/12(月) 11:58:060519512
2008/05/12(月) 12:00:33アルゴリズムが思い浮かばなくて…
三角形なら内心ですね
0520デフォルトの名無しさん
2008/05/12(月) 12:04:290521デフォルトの名無しさん
2008/05/12(月) 12:08:18反時計回りで与えられるみたいだし
0522506
2008/05/12(月) 12:22:28ありがとう!
0523デフォルトの名無しさん
2008/05/12(月) 15:39:22設問が間違ってそうだな。
0524デフォルトの名無しさん
2008/05/12(月) 15:51:46double f(double x)
{
double y;
y=(((3.1*x-1.8)*x+5.7)*x+1.0)*x-6.2;
return (y);
}
main()
{
double x,y;
int i;
for(i=-20;i<=20;i++){
x=0.5*i;
y=f(x);
printf("x=%7.3f y=%12.3f\n",x,y);
}
} このプログラムのyの値の総和を計算するプログラムを作れ。
これをだれかお願いします。
0525デフォルトの名無しさん
2008/05/12(月) 15:55:250526デフォルトの名無しさん
2008/05/12(月) 16:03:03取っり、その点を通り、辺と直交する直線が
多角形の内部で交わるという制約条件のもとで
それらの点と共通交点までの距離が最大なものを
見つけよという完全に応用数学の問題ですね。
数学的定式化を相当詰めないとCでコーディ
ングする段階には全然行かないと思いまつ
大規模連立方程式解いたりするのは、既存ライブラリの
助けも必要でしょうから、学校の宿題で出して良い
ような問題じゃありません。
0527デフォルトの名無しさん
2008/05/12(月) 16:05:48要するに逆行列を求めよってだけでしょ?
0528デフォルトの名無しさん
2008/05/12(月) 16:31:21情けないことに数式が解けなくなってる orz
0529523
2008/05/12(月) 16:38:32○ 一番狭い
0531デフォルトの名無しさん
2008/05/12(月) 16:44:19それらの距離の中で最も大きいものをd(p)と書く時d(p)が最大になるようなものはどこ?
という問題と解釈するしかなさそう。
厳密に解くのはメンドイから、適当に点を選んで実際に計算してみればいいと思う。
多角形の場合、相似変換で縮小しても問題の本質は変わらないから、紙に書いて実測する
のが一番早そう。もしかしたら、そういった点は無数にあって、曲線みたいな分布する
かも知れない(あくまでも推測)
コンピュータ向けの問題じゃないのかもしれない
0532デフォルトの名無しさん
2008/05/12(月) 16:56:39その問題解釈はおかしくない?
非対称な三角形(すんごく尖った
三角形)だと、ある頂点の近くに、
求めるような点があるのだろうけど、
最大値は内部には無い。
(限りなくその頂点と底辺の距離に近
いものが無数にある)
d(p)=各辺までの距離の和(平均)
だろな。やっぱり。な>>513
0533デフォルトの名無しさん
2008/05/12(月) 16:56:430534524
2008/05/12(月) 17:00:480535デフォルトの名無しさん
2008/05/12(月) 17:03:40#include<stdio.h>
double f(double x)
{
double y;
y=(((3.1*x-1.8)*x+5.7)*x+1.0)*x-6.2;
return (y);
}
main()
{
double x,y,y_sum=0;
int i;
for(i=-20;i<=20;i++){
x=0.5*i;
y_sum+=y=f(x);
printf("x=%7.3f y=%12.3f\n",x,y);
}
printf("y_sum=%12.3f\n",y_sum);
}
0536デフォルトの名無しさん
2008/05/12(月) 17:05:470537デフォルトの名無しさん
2008/05/12(月) 17:11:270538デフォルトの名無しさん
2008/05/12(月) 17:15:250539526
2008/05/12(月) 17:42:05辺と直交する→削除
それらの点と共通交点までの距離が最大になるようなものを
→
それらの点と共通交点までの距離の和が
広義極小になるような各辺の点の取り方の全体の
中で共通交点までの距離の和が最大になる
ような組み合わせを
0540デフォルトの名無しさん
2008/05/12(月) 17:46:32おねがいします。
多角形の頂点数と、各頂点の座標が反時計回りの順で与えられるとします。
0541デフォルトの名無しさん
2008/05/12(月) 18:21:280542デフォルトの名無しさん
2008/05/12(月) 18:22:210543デフォルトの名無しさん
2008/05/12(月) 18:44:160544デフォルトの名無しさん
2008/05/12(月) 19:00:110545デフォルトの名無しさん
2008/05/12(月) 19:00:190547528=529
2008/05/12(月) 20:00:20途中までやってみた
calc_cross_point // 2直線の交点を求める関数
calc_distance // 平行な2直線の距離を求める関数
の実装方法が分かれば解けるはず…
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6530.c
数式関係ダメぽ
0548デフォルトの名無しさん
2008/05/12(月) 20:07:52[1] 授業単元:ニュートン法による非線形方程式
[2] 問題文(含コード&リンク):ニュートン法を使用して、次の非線形連立方程式の解の近似値をもとめよ
y+ax^2x-b=0
y^2+cx^2-d=0 a,b,c,dは入力値。
使用教科書のソースプログラム
http://www.ma.is.saga-u.ac.jp/minamoto/book/book8/book8.html
ガウス消去法
http://www.ma.is.saga-u.ac.jp/minamoto/book/book8/program/chap3/program31.c
LU分解
http://www.ma.is.saga-u.ac.jp/minamoto/book/book8/program/chap3/program33.c
ニュートン法
http://www.ma.is.saga-u.ac.jp/minamoto/book/book8/program/chap4/program45.c
あんまり参考にならんです。
[3] 環境
[3.1] OS: Windows
[3.2] Visual Stadio 2005
[3.3] 言語: C
[4] 期限: ([2008年5月16日0:00まで]
[5] C言語なら使用可。デルタxを求めるとき、逆行列を計算させてそのまま使用するのは不可。
きちんと収束させるプログラムを書くこと。
連立方程式はガウス消去法やLU分解を使うこと。初期値はなんでも可。繰り返し回数は何回でも。100回くらいかな?
よろしくお願いします。
0549デフォルトの名無しさん
2008/05/12(月) 20:23:52つ モンテカルロ法
0550デフォルトの名無しさん
2008/05/12(月) 20:55:240551生ハム
2008/05/12(月) 21:27:32作ってくださった方々本当にありがとうございました。
文字列を変換する問題で、正確に実行できたプログラムもありましたが、
題意(ポインタで文字列を定義)を満たしてなかったみたいなので、
もう一度お願いしてもいいでしょうか。前スレが見れないので・・
0552デフォルトの名無しさん
2008/05/12(月) 22:02:34問題は覚えてるんだろ?
>>1のテンプレにそってもう一度もう一度書くべし
0553デフォルトの名無しさん
2008/05/12(月) 22:05:13[2] 問題文:5個の整数型の値をキーボードからvector型の変数に読み込んで保存し、その保存された各データの合計を表示する
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名:gcc
[3.3] 言語:C++
[4] 期限:2008年5月14日まで
[5] その他の制限:なし
vectorの使い方がよくわからないのですみませんがよろしくお願いします。
0554511
2008/05/12(月) 22:22:02[2] 問題文:
int data[m]というm個のデータがある。
このm個のデータから3つ選ぶすべての組合せを求め、
その3つの数字の積を求めるプログラムを作れ。
例えば、m=5で
data[0]=1
data[1]=2
data[2]=3
data[3]=4
data[4]=5
というデータが与えられているとする。3つ選ぶ組合せは5C3=10通りである。
data[0] * data[1] * data[2] =6
data[0] * data[1] * data[3] =8
・
・
・
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名:gcc
[3.3] 言語:C
[4] 期限:2008年5月13日まで
[5] その他の制限:なし
0555デフォルトの名無しさん
2008/05/12(月) 22:26:33自分で書き換えることも出来ないならそんな単位捨てた方がいい
0556デフォルトの名無しさん
2008/05/12(月) 22:28:38そのmは事前に与えられた定数なの?
それとも標準入力なりからもらうことができる不定数なの?
0557デフォルトの名無しさん
2008/05/12(月) 22:32:45#include <iostream>
#include <vector>
int main(void)
{
std::vector<int> v;
for( int i = 0; i < 5; ++i )
{
int n;
std::cin >> n;
v.push_back( n );
}
int sum = 0;
for( std::vector<int>::iterator it = v.begin(); it != v.end(); ++it )
{
sum += *it;
}
std::cout << sum << std::endl;
return 0;
}
0558デフォルトの名無しさん
2008/05/12(月) 22:36:04ありがとうございました。
0559デフォルトの名無しさん
2008/05/12(月) 22:47:02for(i=0; i<m-2; i++)
for(j=i+1; j<m-1; j++)
for(k=j+1; k<m; k++)
printf("data[%d]*data[%d]*data[%d]=%d\n", i, j, k, data[i]*data[j]*data[k]);
0560デフォルトの名無しさん
2008/05/12(月) 22:53:48#include <stdio.h>
#define gyou 5
#define retsu 5
main(){
int sort[gyou][retsu];
int tate[retsu];
int yoko[gyou];
int i,j;
FILE* fp;
for(j=0;j<tate;j++)
tate[j]=0;
fp=open("sort.txt","r");
for(i=0;i<gyou;i++)
{
for(j=0;j<retsu;j++)
fscanf(fp,"%d",&seiseki[i][j]);
}
fclose(fp);
return 0;
}
あとこれにどんなプログラムがたりないですかね?
0562生ハム
2008/05/12(月) 23:07:20[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6531.txt
この文章をファイルとして読み込み,正しい英文に復号しファイルに出力する
プログラムを作成せよ(ファイル出力でも標準出力でもどちらでも構わない).
ただし,プログラムでポインタを用いて文字列を定義し,既存の文字列操作関数
(strxxx(),例えば,文字列長を返す関数 strlen(文字列))は使わずに,自分で作成すること.
文字の変換規則:単語の文字数だけJISコード表で表現すると、下にさがっている。
aはzへ、ofはqhへ、TheはWkhへ、という要領。数字・ピリオド・コンマはそのまま。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名:gcc
[3.3] 言語:C
[4] 期限: できるだけ早いと助かります(-o-;)
何度もすみません(><)以前の分は保存してますので、修正を試みましたが
中々うまくいきませんでした。ポインタを用いて文字列を定義に注意をお願いします。
0563デフォルトの名無しさん
2008/05/12(月) 23:10:17>>46
0564デフォルトの名無しさん
2008/05/12(月) 23:12:21解き方が力技だが一応できた
ただしソースはC#なのでCに変換する必要がある
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6532.zip
エレガントな解き方ってないのかな?
0565デフォルトの名無しさん
2008/05/12(月) 23:34:09[2] 問題文:32bitのintの中でもっとも大きな,フィボナッチ数を求める関数を
作成しその数列がフィボナッチ数列の何番目にあたるのかを
同時に出力するプログラムを作成しなさい.
[3.1] OS:Windows
[3.2] コンパイラ名:cygwin
[3.3] 言語:C
[4] 期限:2008年5月14日まで
[5] その他の制限:再帰関数を習ったので、再帰関数を使用するははず。
(特に問題文に指定はないが・・・)
よろしくおねがいします。
0566デフォルトの名無しさん
2008/05/12(月) 23:38:450567デフォルトの名無しさん
2008/05/12(月) 23:40:07使うのが条件になっている課題もあるかと。
まぁ、使う場合と使わない場合の両方を作って結果を出してみりゃ
一目瞭然だが。
0568デフォルトの名無しさん
2008/05/12(月) 23:47:270569565
2008/05/12(月) 23:53:00「フィボナッチ数列を求める関数を,再帰関数として実現し,
その動作が確認できるプログラムとして作成しなさい.」
てのが前の課題なんですが、これはできました。
しかし>>565の課題のもっとも大きなフィボナッチ数を求める関数、
それが何番目にあたるのか?の作り方がわかりません・・・
0570デフォルトの名無しさん
2008/05/13(火) 00:04:29こういう事?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6533.txt
0571デフォルトの名無しさん
2008/05/13(火) 00:05:59×:フィボナッチで
○:末尾再帰最適化をしない実装の言語では
0572デフォルトの名無しさん
2008/05/13(火) 00:09:4732bitのintで表すことのできる数の範囲が分らない ('A`)
0573デフォルトの名無しさん
2008/05/13(火) 00:10:54再帰関数を使ったら時間がかかりすぎるので、使わない版。
#include<stdio.h>
int main() {
int n, fib = 1, a = 1, t;
for(n = 2; fib > 0; n ++) {
t = fib + a;
a = fib;
fib = t;
}
printf("%d番目の%d\n", n-1, a);
return 0;
}
0574デフォルトの名無しさん
2008/05/13(火) 00:10:590575デフォルトの名無しさん
2008/05/13(火) 00:17:01--
#include <stdio.h>
#include <stdbool.h>
static unsigned long long fib(unsigned n)
{
if (n == 0) return 0;
static unsigned long long a[94] = {0, 1, };
bool inRange = n < sizeof(a) / sizeof(* a);
if (inRange && a[n] != 0) return a[n];
// if (fib(n - 1) > INT64_MAX) return UINT64_MAX;
unsigned long long val = fib(n - 1) + fib(n - 2);
if (inRange) a[n] = val;
return val;
}
int main()
{
for (int n = 0; n <= 93; ++n) { // max fib with ulonglong
printf("%d:%llu\n", n, fib(n));
}
return 0;
}
0576デフォルトの名無しさん
2008/05/13(火) 00:30:000577デフォルトの名無しさん
2008/05/13(火) 00:40:13ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6534.c
32bit環境で実行してちょっ
0578デフォルトの名無しさん
2008/05/13(火) 00:43:59なんかずれてない?
46番じゃなく、45番の値がでるが
>>577
565じゃないが47番になったよ
0579デフォルトの名無しさん
2008/05/13(火) 00:53:130580デフォルトの名無しさん
2008/05/13(火) 01:30:10[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):3角形の3辺の長さ(実数a,b,cとする)をキーボードから入力して、
3辺の長さの和と面積を小数点以下2桁まで表示するプログラムを作成しなさい。面積の算出には、Heronの公式
http://ja.wikipedia.org/wiki/%E3%83%98%E3%83%AD%E3%83%B3%E3%81%AE%E5%85%AC%E5%BC%8F
を用いなさい。また、平方根の計算には標準の数学関数sqrt()を用いなさい。
[3] 環境
[3.1] OS:大学の環境はLinux
[3.2] コンパイラ名とバージョン:ちょっとわからないです
[3.3] 言語:C
[4] 期限: ([2008年5月15日まで]
[5] その他の制限:まだ勉強はじめたばっかりで制限とかわからないです
0581デフォルトの名無しさん
2008/05/13(火) 01:30:59ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6535.c
ちょっと問題が特殊なので要約してます。
[1] 授業単元:プログラミング�U
[2] 問題文(含コード&リンク):ある文章において、アルファベット順に、1文字の単語は1つだけ後ろにずらし、
2文字の単語は2つだけ後ろにずらす…といった法則性で文字を置換したアルファベットのみの文章ファイルがある。
この文章をファイルとして読み込み,正しい英文に復号しファイルに出力するプログラムを作成せよ
(ファイル出力でも標準出力でもどちらでも構わない)。ただし,プログラムでポインタを用いて文字列を定義し,
既存の文字列操作関数(strxxx(),例えば,文字列長を返す関数 strlen(文字列))は使わずに,自分で作成すること。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gccですが細かいバージョンまではわかりません。すみません。
[3.3] 言語:C
[4] 期限:2008年5月19日午前9時まで。
[5] その他の制限:特に制限はありません。
何卒、よろしくお願いします。
0583デフォルトの名無しさん
2008/05/13(火) 01:41:470584デフォルトの名無しさん
2008/05/13(火) 01:42:24このスレの過去ログを読むと分かるよんw
0585デフォルトの名無しさん
2008/05/13(火) 01:42:57なっ、なんで分かった!?おぉ痛っ なんつって
問題文で言われている法則性は、
単語「a」→「b」
単語「to」→「vq」
単語「the」→「Wkh」
という風に置換されているということです。わかりにくかったらすみません。
あ、本当だw ありがとうございますw
0588デフォルトの名無しさん
2008/05/13(火) 01:50:220589デフォルトの名無しさん
2008/05/13(火) 01:51:290590デフォルトの名無しさん
2008/05/13(火) 02:03:230591デフォルトの名無しさん
2008/05/13(火) 02:12:57#include <stdio.h>
#include <math.h>
int main(void)
{
double a,b,c,p,s;
printf("三辺の長さを入力\n");
scanf("%lf",&a); scanf("%lf",&b); scanf("%lf",&c);
p = (a+b+c)/2;
printf("三辺の長さの和 %.2f\n",a+b+c);
printf("三角形の面積 %.2f\n",sqrt(p*(p-a)*(p-b)*(p-c)));
return 0;
}
こんなんじゃ、ダメ?
0592デフォルトの名無しさん
2008/05/13(火) 02:18:22> 題意(ポインタで文字列を定義)
ここがはっきりしない。
char *str="string"; みたいな使い方?って、文字数、変換する文字列が
一定じゃないからそんな使い方じゃないとは思うが・・・
0595524
2008/05/13(火) 09:31:030596デフォルトの名無しさん
2008/05/13(火) 11:05:18[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6536.txt
このプログラムを参考にして、画像サイズ・中心位置・半径、色を入力して、円(周および内部)を指定色で描く
PPM画像作成プログラムをつくれ。
また以下の要件を満たすようにする事
画像サイズや円半径によって描画漏れのないようにする
中心位置が画像の範囲外にあるときは描画しない
ファイル名を指定可能にする
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:5月14日
[5] その他の制限:特に制限はありません。
おねがいします
0597デフォルトの名無しさん
2008/05/13(火) 14:11:20関数形式は
円を角(中心座標x,中心座標y,半径,色);
(1)中心座標x,中心座標yが画像範囲に入ってるか
チェック。
(2)
すべての画像ピクセル(u,v)について(u,v)と(x,y)
のキョリが半径以下であれば色を(u,v)に対応する
ピクセルに付ける
これでいいと思う
1.プログラムを書く
円の面積を計算するプログラムを作ってください。。
データとしては円の直径を入れることにします。
それをもとに円の面積を計算して表示します。
型宣言は倍精度実数型(double)にしてください。
入力促進メッセージを付けてください。
2.実行
データ(直径)として
20000を入れた場合
0.1を入れた場合
−1を入れた場合
の結果を報告してください。
【1】二つの整数m、nを読みこみ、
和 m+n
差 m−n
積 m×n
を求めて表示するプログラムを作ってください。
その際、入力促進メッセージを付けてください。
【2】二つの整数m、nを読みこみ、
整商 m÷n(注)
剰余 mをnで割った余り
を求めて表示するプログラムを作ってください。
【3】上記1、2のプログラムで、n=0の場合、
どのような結果になるかを調べてください。
0600デフォルトの名無しさん
2008/05/13(火) 15:04:03#include <iostream>
int main(void)
{
double r;
cout << "円の直径を入力: " ; cin >> r;
if(r <=0) { cout << "Error !" << endl; return 0; }
cout << "円の面積: "; cout << (r*r)/4 ; cout << "π" << endl;
return 0;
}
0601デフォルトの名無しさん
2008/05/13(火) 16:05:33[2] キーボードから整数を1つ入力し,
100の位以下を切り捨てて,
画面に出力するプログラムを作成しなさい。
[3] 環境
[3.1] Windows
[3.2] gcc
[3.3] C++
[4] 期限: 2008年5月20日
[5] その他の制限: 無し。
最近C++習い始めたばかりでよくわかりません・・・。
お願いします!
0602デフォルトの名無しさん
2008/05/13(火) 16:24:18int main()
{
int n;
std::cin >> n;
n -= n % 1000;
std::cout << n;
}
0603デフォルトの名無しさん
2008/05/13(火) 17:41:04C言語で
0604デフォルトの名無しさん
2008/05/13(火) 21:38:34#include<iostream>
using namespace std;
int main()
{
int number;
cout << "整数入力:" << ends;
cin >> number;
//エラー処理を入れるならここへ
//マイナスチェックが必要だとか
//お好きなようにどうぞ
cout << "100以下切り捨て:" << number / 1000 * 1000 << endl;
return( 0 );
}
0605デフォルトの名無しさん
2008/05/13(火) 21:44:44エースターでググれ
0607511
2008/05/13(火) 21:54:05できませんね。諦めるかもしれませんoTL
0608デフォルトの名無しさん
2008/05/13(火) 22:05:42紙とペンが必要そうだからあんまり実装する気はおきないけど、
多角形を内側に潰してけば解けるはず。
与えられた多角形 P のすべての辺を内側に一定量 d だけ
スライドすることを考える。このとき、ある程度スライドすると
どこかの辺が一点に潰れる、ということが起こる。
そのような量だけスライドさせて辺を潰す、という操作を繰り返すと
最終的には一点になるので、それが目的の点。
0609デフォルトの名無しさん
2008/05/13(火) 22:13:260610デフォルトの名無しさん
2008/05/13(火) 22:17:30数字を入れて実行するとエラーになってしまいました
0611デフォルトの名無しさん
2008/05/13(火) 22:28:59そこから各点の距離を求めるってのは駄目?
0612611
2008/05/13(火) 22:31:080613デフォルトの名無しさん
2008/05/13(火) 22:33:18名前空間ないけどコンパイル通ったの?
0614デフォルトの名無しさん
2008/05/13(火) 22:40:42多角形の内部の点で最も近い辺までの距離の最大をもとめるんだろ?
0615デフォルトの名無しさん
2008/05/13(火) 22:46:05そのようです。多角形の内接円の半径を求める問題みたいです。
0616デフォルトの名無しさん
2008/05/13(火) 22:46:42凸体で、その条件なら、各辺の垂線と点が交わるのが最小だろう。
0617デフォルトの名無しさん
2008/05/13(火) 22:49:19問題勘違いしてね?
0618デフォルトの名無しさん
2008/05/13(火) 23:00:34各頂点の2辺のなす角の半分の位置に中心があるのでは
0619デフォルトの名無しさん
2008/05/13(火) 23:05:38大前相当な馬鹿だろ。
0620デフォルトの名無しさん
2008/05/13(火) 23:08:14おまえがアホだろ 角の2等分線以外に円の中心は来ない
円の中心が決まれば、そこから一つの辺に接するために半径が決定される。
2等分線上に無ければ、別の辺に接することが出来なくなる。
0621デフォルトの名無しさん
2008/05/13(火) 23:09:170622デフォルトの名無しさん
2008/05/13(火) 23:10:07四角形の四隅をほんのちょっとだけ落とした八角形は大丈夫?
0623デフォルトの名無しさん
2008/05/13(火) 23:11:12そうなるのは、三角形と正多角形だけだ。アホ
0624デフォルトの名無しさん
2008/05/13(火) 23:12:18多角形に埋め込める最大の円と拡張して良いか?
0625デフォルトの名無しさん
2008/05/13(火) 23:13:56そうとは限らない。
最低でも角の2等分線上に無ければ、内接円が描けない為。
必要条件として必須。
0626デフォルトの名無しさん
2008/05/13(火) 23:14:01拡張というか、そういう意味だろ。
0627デフォルトの名無しさん
2008/05/13(火) 23:14:36勝手に問題に制限もうけちゃまずいだろ。
0628デフォルトの名無しさん
2008/05/13(火) 23:15:29凸体内部の点で一番辺から遠い点をさがして、その距離を求める問題だよ?
0629デフォルトの名無しさん
2008/05/13(火) 23:17:24その結果として、多角形に入る最大の円の半径となるけど。
0630デフォルトの名無しさん
2008/05/13(火) 23:19:450631デフォルトの名無しさん
2008/05/13(火) 23:20:48数値解析的に解く方法しか考え付かないな。
0632デフォルトの名無しさん
2008/05/13(火) 23:23:400633632
2008/05/13(火) 23:25:210634デフォルトの名無しさん
2008/05/13(火) 23:28:460635デフォルトの名無しさん
2008/05/13(火) 23:30:200636デフォルトの名無しさん
2008/05/13(火) 23:31:27って言うのを勉強しているのですが、
hdc=CreateGraphics()->GetHdc();
これの意味ってどういうことなんでしょうか?
これ一文では答えようがないのでしょうか・・・・
よろしくお願いします。
0637デフォルトの名無しさん
2008/05/13(火) 23:32:220638デフォルトの名無しさん
2008/05/13(火) 23:33:17チェックして最大値を求める。次に向かい合う2辺でその最大値を超える場合のものを抽出して
最大値まで徐々に半径を小さくしていき、円が描けるかチェックすればよい。
0639デフォルトの名無しさん
2008/05/13(火) 23:34:04任意の凸多角形に対してある自然数nが存在してF(n)後にできる点が全ての辺から
最も遠い距離にある点となるか否か
0640デフォルトの名無しさん
2008/05/13(火) 23:35:33きれいにスルーされてて悲しいんだが・・・
解き方はこれでいいんでないの?
0641デフォルトの名無しさん
2008/05/13(火) 23:36:05[2] 問題文(含コード&リンク):3目並べ(○×ゲーム)
2人のプレイヤーで操作する3目ならべを作る。
3行3列の配列内の座標を入力して○、×をどこに置くか指定する
既に打たれた場所なら再度入力する。
○と×を置くたびに3個並んだかを調べる。
縦、横、斜めのいずれかに先に3個並んだほうが勝ちとして結果を出力する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:わかりません
[3.3] 言語:C
[4] 期限: 2008年5月16日17:00
[5] その他の制限:特にありません
よろしくお願いします。
0642デフォルトの名無しさん
2008/05/13(火) 23:39:150643デフォルトの名無しさん
2008/05/13(火) 23:40:23エスパーして答えると、
グラフィックスオブジェクトを作り、そのオブジェクトに結び付けられた、
デバイスコンテキストのハンドルを取得して、変数hdcに入れる。
0644デフォルトの名無しさん
2008/05/13(火) 23:41:54内接円に影響して来ないような辺もあるから、全ての2等分線を考えても駄目だろう。
0645デフォルトの名無しさん
2008/05/13(火) 23:52:13そりゃまあ十分細かくメッシュを切れば正しいが、
元の図形の大きさも、出力精度も何も言われてないよね。
出力精度が書かれてないのは問題不備なので、
これで満足しててもいいけど。
0646デフォルトの名無しさん
2008/05/14(水) 00:08:36欲をいえば、点ごとに中か外か判断するんじゃなくて、
ソリッド・スキャン・コンバージョン使って多角形の形で走査して欲しいなw
0647デフォルトの名無しさん
2008/05/14(水) 00:10:149マス全部○か×で埋まったらどうすんの?
それとも○も×も3つずつしか置けないの?
その場合4つ目を置いたらどうなるの?
0648デフォルトの名無しさん
2008/05/14(水) 00:17:500649デフォルトの名無しさん
2008/05/14(水) 00:19:22多角形の各辺を内側に平行移動して相似の小多角形を作る。
そのとき、時計回りになる辺は除去する。
これを2本か3本になるまで繰り返していけば、いいんじゃね?
自信ないけど...
0650デフォルトの名無しさん
2008/05/14(水) 00:20:160651デフォルトの名無しさん
2008/05/14(水) 00:36:020652デフォルトの名無しさん
2008/05/14(水) 00:40:07641です。
○と×交互においていきます。
3つ並んだ時点で終わり、
並んでない場合9マス埋まるまで
○と×を交互に置き続けます。
説明不足ですいません。
0653デフォルトの名無しさん
2008/05/14(水) 00:44:19辺を内部へ平行に動かして、消失するまでの距離は頂点の内角から計算可能。
一番短い距離の辺を除いて、その距離で次の図形を作る。
で、再帰的に小さくしていって、一本の線か点になった時が、
辺から一番遠い位置。
0654デフォルトの名無しさん
2008/05/14(水) 00:56:27http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6537.txt
0655デフォルトの名無しさん
2008/05/14(水) 01:23:39[2] 問題文(含コード&リンク):Hit and Blowゲームで遊べるプログラムを作ること。ルールは以下の通り。
Hit and Blowは、相手が考えた4桁の数字をヒントを元に推測するゲームである。まず、相手は0-9の数字からなる4桁の数字を考える。但し、
・0で始まってもよい。
・同じ数字を2度以上使ってはいけない。
という条件。これに対して、こちらはなるべく少ない回数の質問で相手の考えた数字を当てることが目的。
一回の質問は、好きな4桁の数字を言い、それに対して、
・考えた数字と位置も値も一致している桁の数(Hit)
・位置は違うがその数字は含まれているような桁の数(Blow)
を答えてもらうことにより行われる。例えば、4257を考えている時に0274を言われたら、
・0は4257に含まれていない
・2は値も桁も一致している(Hit)
・7は4257に含まれているが、位置が違う(Blow)
・4は4257に含まれているが、位置が違う(Blow)
なので、1Hit2Blowと言う。
最終的に4Hit0Blowと言わせたらゲームは終了。
実際にはコンピュータが乱数で数字を考え、人間が質問してその数字を当てるようなプログラムを作成して欲しいのです。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gccバージョン不明
[3.3] 言語:C
[4] 期限: ([2008年5月23日まで] または [無期限]
[5] その他の制限:まだC言語の勉強始めたばっかりです
0656デフォルトの名無しさん
2008/05/14(水) 01:40:140657デフォルトの名無しさん
2008/05/14(水) 01:54:03>525
距離のみを求めるんなら良いんじゃね?
0658デフォルトの名無しさん
2008/05/14(水) 01:54:480659デフォルトの名無しさん
2008/05/14(水) 02:01:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6540.txt
0660デフォルトの名無しさん
2008/05/14(水) 02:12:260661デフォルトの名無しさん
2008/05/14(水) 02:17:10先頭の4つをとるとか他に手段は選べるでしょうに
0662デフォルトの名無しさん
2008/05/14(水) 02:17:37グラフィックスオブジェクト
とは何でしょうか^^;
0663デフォルトの名無しさん
2008/05/14(水) 02:25:330664デフォルトの名無しさん
2008/05/14(水) 02:55:33http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6541.c
0665664
2008/05/14(水) 03:21:03>>664だと計算途中で 0 除算する問題があったので一部修正
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6542.c
0666デフォルトの名無しさん
2008/05/14(水) 04:13:120667デフォルトの名無しさん
2008/05/14(水) 05:39:53確認願います。
> y+ax^2x-b=0
> y^2+cx^2-d=0
第1式 第2項 を正確に教えてください。
a * x^(2*x)
でしょうか。
0668デフォルトの名無しさん
2008/05/14(水) 06:55:46[1] 授業単元:プログラミング
[2] 問題文
演算子(+,−,*)と3,5,7の3個の数字とを組合わせた式をつくり、その式と計算結果のパターンを
出力するプログラムを作成しなさい。
出力例
3+5+7=15
5*7-3=32
7+5*3=22
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語: C言語
[4] 期限:5/16
[5] その他の制限: 特になし
0669デフォルトの名無しさん
2008/05/14(水) 07:31:01/* 正解を作成 */
void make_answer(char ans[])
{
char a[10];
int i, j;
for(i = 0; i < 10; i ++)
a[i] = '0' + i;
for(i = 0; i < DIGIT_NUM; i ++) {
j = i + rand() % (10 - i);
ans[i] = a[j];
a[j] = a[i];
}
}
まあ、どうせ入力の重複チェックしてるんだから、
そいつを流用してる元のコードで十分と思うが。
0670デフォルトの名無しさん
2008/05/14(水) 07:32:52> 口だけの
いちいちうぜぇ。連番を並び替えるソースなんてとっくの昔に
このスレの過去ログでも出てんだよ。最近新入りの餓鬼がでけぇ面して
クソースを書きやがるから笑えるw
0671デフォルトの名無しさん
2008/05/14(水) 07:37:380673デフォルトの名無しさん
2008/05/14(水) 08:10:14一文字ずつチェックするならまだしも、4つ入れてからチェックする元のコードで十分とか
ありえねーよw
0674デフォルトの名無しさん
2008/05/14(水) 08:22:55はいはい口だけ。
0675デフォルトの名無しさん
2008/05/14(水) 08:33:26に対応していないという側面からみると珠玉のコードとは言えないな
Hit,Blowの解釈が変わったらどうするんだ?
0676664
2008/05/14(水) 10:42:39if(edge[i].length>0.0) edge[i]=edge[j++];
↓
if(edge[i].length>0.0) edge[j++]=edge[i];
0677デフォルトの名無しさん
2008/05/14(水) 11:15:190680デフォルトの名無しさん
2008/05/14(水) 14:58:08[2] 問題文(含コード&リンク):『It works』と返すWeb Sserverを作成せよ
1.『It works』をクライアントに返す
2.システムが不調でも大丈夫
3.無茶な通信データがきても大丈夫
4.『行儀よく』と停止する
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 5月16日
[5] その他の制限: 特になし
お願いします。
0681デフォルトの名無しさん
2008/05/14(水) 15:36:50[2] 問題文(含コード&リンク):n人分(実行は4名程度でよい)の
学生番号、氏名、国語、数学、英語の成績をキーボートから入力して、
�@科目ごとの平均点、最高得点者の学生番号、氏名
�A全教科合計の平均点、最高得点者の学生番号、氏名
を出力するプログラムを作成せよ。
[3] 環境
[3.1] OS Windows
[3.2] コンパイラ名とバージョン:わかりません。
[3.3] 言語:C言語
[4] 期限:5月15日午後5時まで
[5] その他の制限:構造体を使用して作成してください。
よろしくお願いします。
0682デフォルトの名無しさん
2008/05/14(水) 15:44:36[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6543.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C++
[4] 期限:2008年5月16日
[5] その他の制限:文字列処理関数の使用
よろしくお願いします.
0683デフォルトの名無しさん
2008/05/14(水) 15:44:38シヌの?
口だけなら誰でも言えるから消えろ
後他人のソースにちゃちゃ入れる奴も消えろ
0684デフォルトの名無しさん
2008/05/14(水) 16:10:090685デフォルトの名無しさん
2008/05/14(水) 16:31:58プログラムファイルはどこに書いていけば良いのですか?
0686デフォルトの名無しさん
2008/05/14(水) 16:54:34どこでも良いよ、専用のフォルダ作って入れとけ。
0687デフォルトの名無しさん
2008/05/14(水) 17:27:52お前のとこにはコードレビューする文化はないのか?
0688デフォルトの名無しさん
2008/05/14(水) 17:32:320689デフォルトの名無しさん
2008/05/14(水) 17:59:130690提案
2008/05/14(水) 17:59:16アップまたはレスするコードのクォリティも同時に書いてね
【クォリティ】 推測|指針|コンパイル済|テスト済|検証済|清書済
推測:こうやったら出来るんじゃないかという無責任な方針の推測
指針:こうやって出来なかったら責任取れるよというレベルの説明
コンパイル済:コンパイル可能なコードを保有
テスト済:動作も確認した。
検証済:本質的に異なる別のやり方での結果と事前に分かっている回答と一致を確認
清書済:模範解答の自信あり(普通こういう回答をしないとは思うが)
※清書済でないコードの書式やフロー構成にケチを付けるのは慎みましょう
0691デフォルトの名無しさん
2008/05/14(水) 18:02:250692690
2008/05/14(水) 18:05:29>検証済:本質的に異なる別のやり方での結果と事前に分かっている回答と一致を確認
本質的に異なる別のやり方での結果や事前に分かっている回答と一致を確認
0693デフォルトの名無しさん
2008/05/14(水) 18:06:05無意味な提案だな。
解答側がそこまでする義理もない上、ケチつけるヤツはどうあってもつけるし。
ケチつけられたくなかったら人目につくところにコード晒すなよ。
0694デフォルトの名無しさん
2008/05/14(水) 18:10:33出来について(汚いなど)はまあどうでもいいが、
誤動作するのを放っておくのは誰のためにもならないかと。
0695デフォルトの名無しさん
2008/05/14(水) 18:18:04回答者の独り言?
0696デフォルトの名無しさん
2008/05/14(水) 18:29:34スレ内にケチつけるレスがあったら無駄だし消えてくれってのは皆が思ってる
0697デフォルトの名無しさん
2008/05/14(水) 18:43:22メモ帳
ってことじゃないかと思う>>686
0698デフォルトの名無しさん
2008/05/14(水) 18:51:24出来ないのは怠けてた自分の責任だろうに
0699デフォルトの名無しさん
2008/05/14(水) 19:02:31看過できないならコード貼れって事でOK。
0700デフォルトの名無しさん
2008/05/14(水) 19:04:16> あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。
> 気に入らない質問やその他や発言はスルーの方向で。
0701デフォルトの名無しさん
2008/05/14(水) 19:10:48センスもあるよ
自分のプログラムセンスの皆無さには本当に困ってる
でも責任追及はしないな
てか、このスレって悪化させるとまさにIT業界みたいだよな
IT無知な依頼主と必死に頑張って評価されない下請けの関係・・・
0702デフォルトの名無しさん
2008/05/14(水) 20:19:280703デフォルトの名無しさん
2008/05/14(水) 20:56:13効率が悪いのは分かりきっていること。数が少ないと分かり辛いけど
増やせばその効率の悪さに気づく。だから口先とか煽る前に
理解する頭を持っていれば、あんなソースをこのスレに残る
形式で書き込まずに済んだだろうに。言われてそれが実装できないなら
回答者として出すぎた真似はせぬ方が良いよ。無知だと恥さらしするだけだろ。
0704デフォルトの名無しさん
2008/05/14(水) 20:59:31実用範囲で問題が無いんだから気にするなよ
0705デフォルトの名無しさん
2008/05/14(水) 21:04:46クオリティに「ネタ」も入れて
ネタ:提出物や不特定多数に使わせる予定のコードには入れるべきじゃないコード
0706デフォルトの名無しさん
2008/05/14(水) 21:24:43Cだからといって、清書レベルのコードでも無い限り、目に付くコードはすべて
効率面で最適化しなければならないって発想はもうしなくていいよ。
すべきときはして、しないときはしないのが吉。
他の視点からの最適化要素もどんどん取り入れてるのが今日のCプログラミ
ング世界です。
0707デフォルトの名無しさん
2008/05/14(水) 21:25:050708デフォルトの名無しさん
2008/05/14(水) 21:27:05粘着になったとさ。
0709デフォルトの名無しさん
2008/05/14(水) 21:27:520710デフォルトの名無しさん
2008/05/14(水) 21:43:34wstring使う。stringならwstringに変換して比較する。
0711デフォルトの名無しさん
2008/05/14(水) 21:46:070712デフォルトの名無しさん
2008/05/14(水) 21:53:10ドライブCのボリュームラベルがありません
ボリュームシリアル番号 〜〜〜 です
と出てきますがどうすればいいのでしょうか?
0713デフォルトの名無しさん
2008/05/14(水) 22:03:53[2] 問題文(含コード&リンク):(正整数nを入力させ、0度から90度までn度まで刻みでsin,cosの数表を書くプログラムで、30度おきに横線を出力するものを作れ。
ただし、30がnで割り切れない場合は、適当なメッセージだけを出力して終わるようにせよ。
[3] 環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン: Borland C++ 5.5.1
[3.3] 言語: C
#include <stdio.h>
#include <math.h>
int main(void)
{
int i, n; /* i = 角度 n = 角度 */
double s; /* 角度をラジアンに直したものを入れる */
printf("n = ?");
scanf("%d" , n);
i = 0;
while(i <= 90){
s = i * M_PI / 180;
printf("sin%d° %f cos%d° %f\n" , i, sin(s), i, cos(s));
if(i == 30 || i == 60){
printf("---------------------------------\n");
}
else{
printf("30°で割り切れない。\n");
}
i = i + n;
}
return 0;
}
ループせず、0°のときの数表しか出てきません。
アドバイスをいただけないでしょうか?
0714デフォルトの名無しさん
2008/05/14(水) 22:15:56etherealでパケット解析しプロトコルヘッダの情報を表示するプログラムどうしたらよいですか?
0715デフォルトの名無しさん
2008/05/14(水) 22:18:06[2] 問題文:https://cid-39cc2dc444c6edfe.skydrive.live.com/self.aspx/%e6%96%87%e6%9b%b8/prog_lang_20080508.pdf
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: C
[4] 期限:5/16 0:00
[5] その他の制限:連立方程式はガウス消去法を用いること
0716デフォルトの名無しさん
2008/05/14(水) 22:18:51>>715
に問題文再掲載しました お願いします
0717デフォルトの名無しさん
2008/05/14(水) 22:21:49nに入力値が入っていない。
scanfにはnのアドレスを渡すこと。
0718デフォルトの名無しさん
2008/05/14(水) 22:35:06[2] 問題文: 4つの文字列"ABCDEFG","HIJKLMN","OPQRST","UVWXYZ"
を別々に宣言しこれらをstrcat関数を用いてスペース区切りで連結し、
その文字列の長さをstrlen関数で求めるプログラムを作成しなさい。
実行結果には文字列と文字列長を出力すること
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:5/19
よろしくお願いします。
0719デフォルトの名無しさん
2008/05/14(水) 22:43:54当方で確認した環境は cygwin/WindowsXP, 処理系は gcc 3.4.4 + mingw です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6546.txt
漢字コードは古いShift-JIS を仮定しています。もし、日本語が化けるようでしたらあらためてお知らせ下さい。
>>690
>※清書済でないコードの書式やフロー構成にケチを付けるのは慎みましょう
個人的には、容赦なく批判していただければとてもうれしいです。
早書きなので、まずいところがある可能性が高いのは重々承知しています。
>>711
なんか書きましょうよ。
0720667
2008/05/14(水) 22:54:36>>716
すみません。>>1 の http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm にアップロードしていただけないでしょうか。
0721デフォルトの名無しさん
2008/05/14(水) 22:55:27なぬっ?麻呂のクソースを見たいとな?ならば見せて進ぜよう、今すぐに
>>718
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6547.c
strcatなんて邪道なことはせずにstrncatにしちゃったにゃん
0722デフォルトの名無しさん
2008/05/14(水) 23:36:450723デフォルトの名無しさん
2008/05/14(水) 23:45:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6548.zip
問題文がPDFなのでZIPにしてあります、めんどくさいですが・・
おねがいします。
0724デフォルトの名無しさん
2008/05/14(水) 23:46:250725デフォルトの名無しさん
2008/05/14(水) 23:51:10そんな欠陥を残すのは嫌でおじゃる
0726デフォルトの名無しさん
2008/05/15(木) 00:02:45それだとiが30で割り切れないときにメッセージを出力してる
30がnで割り切れないときメッセージを出力して終了が問題の指示
#include <stdio.h>
#include <math.h>
int main(void)
{
int i, n; /* i = 角度 n = 角度 */
double s; /* 角度をラジアンに直したものを入れる */
printf("n = ?");
scanf("%d" , &n);
if(n < 1 || 30 % n) {
printf("nの値は30の約数であるべき\n");
return 0;
}
for(i=0; i<=90; i+=n) {
s = i * M_PI / 180;
printf("sin%2d° %f cos%2d° %f\n" , i, sin(s), i, cos(s));
if(i == 30 || i == 60) printf("---------------------------------\n");
}
return 0;
}
0727デフォルトの名無しさん
2008/05/15(木) 00:11:05仕様を満たしていないことの方が欠陥じゃないのか?
ってかstrcatを嫌うの理由は脆弱性だろ?ライブラリに欠陥があるのか?
スレチだが突っ込まずにはいられなかった・・・orz
0728デフォルトの名無しさん
2008/05/15(木) 00:12:08嫌なら不要な部分を消すでおじゃるよ
0729デフォルトの名無しさん
2008/05/15(木) 00:16:240730デフォルトの名無しさん
2008/05/15(木) 00:16:27http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6549.c
ならばstrcatに変更して進ぜよう
0731デフォルトの名無しさん
2008/05/15(木) 00:19:040732デフォルトの名無しさん
2008/05/15(木) 00:19:07_
/〜ヽ プリンデチ
(。・-・)
゚し-J゚
0733デフォルトの名無しさん
2008/05/15(木) 00:19:14> バッファオーバーラン
> strcatは、先程示した実装例を見ても分かる通り、
> s1の容量に就いては一切関知しない。よって、s1の指す配列の範囲を越えて、
> s2が書き込まれてしまう恐れがある。これによって、メモリ破壊を引き起こしたり、
> プログラムがクラッシュしてしまうことがある。
0734デフォルトの名無しさん
2008/05/15(木) 00:27:580735デフォルトの名無しさん
2008/05/15(木) 00:38:59口先マーケットって命名しちゃうぞ?ラララライって
0736デフォルトの名無しさん
2008/05/15(木) 00:44:58[2] 問題文(含コード&リンク):
2以上の1つの整数を読込み、フィボナッチ数列の各項で、入力された値未満のものを
1項目から順に出力するプログラムを作成しなさい。(整数が入力されない場合は想定する必要はない)
各整数の後に1文字スペースを開けて出力し,最後の数とスペースを出力したら改行すること。
読み込む数は,"Choose an integer: "の文字列のあとに入力するようにすること。2より小さい整数が入力された場合、再度入力を促すようにする。
プログラム実行例
Choose an integer: 1
Choose an integer: 20
1 1 2 3 5 8 13
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン:Borland C++ 5.5.1 for Win32
[3.3] 言語:C
[4] 期限:2008年05月15日18:00まで
[5] その他の制限:do while文を用いて作成せよ。
0737デフォルトの名無しさん
2008/05/15(木) 00:50:40おまい・・・それ本気で言っているのか?だとしたらプログラマーとして相応しくない。
今すぐに適性の無いプログラムなんてやめた方が良いよ。
あれはポインタが示す文字列が分かっているにしろ、自分が知っている範囲内で
思い込みで話をしても無駄さ。ハックなんてのはあのポインタが示す場所を
適当に変える操作をすることだって出来るぞ?要するに、そういう欠陥を持った
仕組みそのものが問題であって、問題の無い範囲内でというのは
自分の思い込みだと考えを改めた方が良いよ。
0738デフォルトの名無しさん
2008/05/15(木) 00:52:50#include <stdio.h>
int main(void)
{
int a = 1, b = 0, n;
do {
printf("Choose an integer:");
scanf("%d", &n);
}while(n<2);
do {
printf("%d ", a);
a = a + b;
b = a - b;
}while(a < n);
return 0;
}
0739デフォルトの名無しさん
2008/05/15(木) 00:54:020740デフォルトの名無しさん
2008/05/15(木) 00:55:060741デフォルトの名無しさん
2008/05/15(木) 00:55:20char *str1="ABCDEFG";
.....
のような気もするが、修正版は以下。
#include <stdio.h>
#include <string.h>
#define SEP " "
#define MAX 32
int main(void)
{
char *str[4]={ "ABCDEFG","HIJKLMN","OPQRST","UVWXYZ" };
char STR[MAX]="";
size_t i,str_sz=sizeof(str)/sizeof(str[0]);
strcat( STR , str[0]);
printf("%s %s\n", STR , str[0]);
for(i=1; i<str_sz; i ++) {
strcat( STR , SEP );
strcat( STR , str[i] );
}
printf("%s\n",STR);
printf("%d",strlen(STR));
return 0;
}
0742デフォルトの名無しさん
2008/05/15(木) 01:01:07それを否定するなら、いくら大きなデータになろうが問題を起こさないか
一定以上の文字数だったら処理をしない仕組みを作るのさ。
0743デフォルトの名無しさん
2008/05/15(木) 01:13:50> 各整数の後に1文字スペースを開けて出力し,最後の数とスペースを出力したら改行すること。
@@ -14,6 +14,7 @@ int main(void)
a = a + b;
b = a - b;
}while(a < n);
+ printf("\n"); // 追加
return 0;
}
0744デフォルトの名無しさん
2008/05/15(木) 01:15:58ハックなんて言い出したら、
strncatに渡す文字数を改変するとか何でもありw
0745デフォルトの名無しさん
2008/05/15(木) 01:48:30何そのどうでもいい警戒
しかも対象はただの宿題だし・・・・・
0746デフォルトの名無しさん
2008/05/15(木) 01:59:59ハッカーとか静電気とかそういう目に見えない敵と戦うのは仕事だけにしろよ
メモリのベリファイとか勘弁してくれよ
0747デフォルトの名無しさん
2008/05/15(木) 02:08:060748デフォルトの名無しさん
2008/05/15(木) 02:20:34意味が分からない
e^xのどこにnが関わる要素がある?
>>1 をよく読んで書き直し
0749デフォルトの名無しさん
2008/05/15(木) 02:33:20int main(void)
{
int i=1, n, x;
double d = 0, a = 1;
scanf("%d%d", &n, &x);
while(i < n) {
d += a;
a *= (double)x / i;
i++;
}
printf("%f", d);
return 0;
}
0750デフォルトの名無しさん
2008/05/15(木) 03:10:45未解決一覧.
>>308 2008/05/10 数値解析
>>349 2008/05/11 ソート
>>511 2008/05/13 凸多角形の辺から一番遠い点を見つけ、その距離を求める
>>596 2008/05/14 PPM画像にdrawing
>>681 2008/05/15 構造体
>>548,723 2008/05/16 数値解析
>>668 2008/05/16 数式処理
>>680 2008/05/16 WebServer の作成
>>84 2008/06/08 回文の生成 >>90,350,380 で終わったっぽいけどまだ先なので
>>342 指定なし グラフ理論
>>714
0751デフォルトの名無しさん
2008/05/15(木) 03:19:250752デフォルトの名無しさん
2008/05/15(木) 03:20:31それにしても連立二元二次方程式でニュートン法って…難しいな
0753デフォルトの名無しさん
2008/05/15(木) 03:23:10volatile ULONG Value; // レジスタ(外部から書き換えられる)
void main(void)
{
Value = 0;
while(Value == 0){ ←これ
;
}
}
これを下記のようにポインタを経由すると最適化対象になってしまうのでしょうか?
(このポインタもvolatileをつける必要がある?)
volatile ULONG Value; // レジスタ(外部から書き換えられる)
void main(void)
{
Value = 0;
ULONG* pV = &Value;
while(*pV == 0){ ←これ
;
}
}
0754デフォルトの名無しさん
2008/05/15(木) 03:24:18C言語なら俺に聞け(入門篇) Part 27
http://pc11.2ch.net/test/read.cgi/tech/1209429897/
0755デフォルトの名無しさん
2008/05/15(木) 03:24:29e のマクローリン展開ですか‥‥‥。
0756デフォルトの名無しさん
2008/05/15(木) 03:27:01すいません><
宿題じゃないんで激しくスレ違いでした。
向こうで尋ねてみます。
ありがとうございました。
0757723
2008/05/15(木) 03:53:10学校のサイト見たら講義資料もアップされてたんで追記しときます。
[1] 授業単元:C言語による数値入門
[2] 問題文:[1] 授業単元:C言語による数値入門
[2] 問題文:ttp://ranobe.com/up/src/up272685.zip
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: C
[4] 期限:5/16 0:00
[5] その他の制限:連立方程式(�凾�を求めるときのやつ)はガウス消去法を用いて解くこと。
よろしくお願いします。
0758デフォルトの名無しさん
2008/05/15(木) 04:28:15http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6552.c
学生番号に0を入力したら、STD_MAXに満たなくても入力終了。
入力に関しては数字なら数字を、文字なら文字を入力しなかった場合の
対処はしてないので、入力は正確に。
075988
2008/05/15(木) 05:20:37大分前の宿題のやつですが、1,使用した関数と2,探索に使用した変数、配列と
3,データ入力のための変数、配列を書き出したいのですが、教えていただけないでしょうか?
初歩的な質問になってしまい申しわけありません。
0760デフォルトの名無しさん
2008/05/15(木) 07:06:070761デフォルトの名無しさん
2008/05/15(木) 08:03:15ありがとうございました。
0762デフォルトの名無しさん
2008/05/15(木) 09:04:18やるならもう少しちゃんと回答が出てるかどうか調べようぜ
0763デフォルトの名無しさん
2008/05/15(木) 09:07:120764デフォルトの名無しさん
2008/05/15(木) 10:11:27そういうならどこに抜けがあるかも書けよ
0765デフォルトの名無しさん
2008/05/15(木) 12:10:18cos_theta[i]=vector_inner_product(&edge[i-1].vector, &edge[i].vector);
↓
cos_theta[i]=-vector_inner_product(&edge[i-1].vector, &edge[i].vector);
0766デフォルトの名無しさん
2008/05/15(木) 14:21:11・回答者
・未解決リスト作成
これ以外はレスするなよ、>>737とかそれ以降の口だけの奴邪魔
何か文句あるならソース書け
0767デフォルトの名無しさん
2008/05/15(木) 14:23:59. .
,-ー──‐‐-、.
,! || |
!‐|--------┤
|::::i /´ ̄ ̄`ヽi 気楽になれよ
|::::i |(´・ω・`)||.
|::::i | || 楽になるぜイロイロと
|::::i |.カワイソース||
|::::i L__________」|
|::::i : : : : : : : : :|
`'''゙‐ー-----ー゙
0768デフォルトの名無しさん
2008/05/15(木) 15:04:420769デフォルトの名無しさん
2008/05/15(木) 15:21:55>1
0770デフォルトの名無しさん
2008/05/15(木) 15:24:47#include<stdio.h>
int main(void)
{
int n, sum=0;
do {
printf("整数値入力(0で終了):");
scanf("%d", &n);
sum += n;
} while(n != 0);
printf("sum=%d\n", sum);
return 0;
}
0771デフォルトの名無しさん
2008/05/15(木) 15:37:39回答して頂きありがとうございました.ちゃんとVC 6.0 / Windows Vistaで実行確認できました.
ただ,実行した際に日本語を入力する方法がわかりませんでした,でもたぶん平気だと思います.
あともし良かったらでいいんですが・・・このプログラムを簡略化できたりしませんか?
図々しくてすみません,ちょっと僕には複雑すぎるような気がするんです・・・
よかったらお願いします.
0772デフォルトの名無しさん
2008/05/15(木) 15:59:31#include<stdio.h>
#include<stdlib.h>
#define N 16
int main(void)
{
int input,sum=0;
char input_c[N];
printf("整数値を入力してください(0を入力で計算終了)\n");
do{
printf(">>");
fgets(input_c,N,stdin);
input=(short)strtol(input_c,NULL,10);
sum+=input;
}while(input!=0);
printf("合計:%d\n",sum);
return 0;
}
なんかこういうのってエラーをどこまで書くべきか分からない。
何桁までの数字が有効とか、整数以外はとか。
0773デフォルトの名無しさん
2008/05/15(木) 16:02:400774≠719
2008/05/15(木) 16:05:09#define LINE_LENGTH (100)
int main(int argc, char *argv[])
{
unsigned char *p, *p1, *q;
int len_input;
unsigned char inputLine[LINE_LENGTH];
unsigned char kaibunStr[LINE_LENGTH * 2];
printf("任意の文字列を入力してください: ");
scanf("%99[^\n]", inputLine);
len_input = strlen(inputLine);
if (len_input == 0) return 0;
strcpy(kaibunStr, inputLine);
p = inputLine + len_input - 1;
q = kaibunStr + len_input;
p -= kanji1byte(*(p - 1)) ? 2 : 1;
while (p >= inputLine) {
p1 = p - 1;
if (p1 >= inputLine && kanji1byte(*p1)) {
*q++ = *p1;
*q++ = *p;
p--;
p--;
} else {
*q++ = *p--;
}
}
*q = '\0';
printf("入力した文字列を回文で表\示すると「%s」になります。\n", kaibunStr);
return 0;
}
0775デフォルトの名無しさん
2008/05/15(木) 16:55:41わざわざありがとうございました.
しかし以下のエラーがでてしまい原因がわかりません・・・
warning C4013: 関数 'kanji1byte' は定義されていません。int 型の値を返す外部関数と見なします。
どうしたらいいんでしょうか?無知で本当にすみません・・・
0776デフォルトの名無しさん
2008/05/15(木) 16:58:10を作りなさいという宿題が出たのですが、教えてください。
0778デフォルトの名無しさん
2008/05/15(木) 16:59:20>>719の.txt見てみ
0779デフォルトの名無しさん
2008/05/15(木) 17:00:43>1
0780デフォルトの名無しさん
2008/05/15(木) 17:01:31for(i=1;sum<=300;i++)
処理
0781デフォルトの名無しさん
2008/05/15(木) 17:25:03>>778
アドバイスありがとうございました,ぬけていた部分を補完したら
ちゃんと実行できました!
0782デフォルトの名無しさん
2008/05/15(木) 17:36:39#include <stdio.h>
int main(){
return 0;
}
コンパイラの代わりに最適化しておいた
0783デフォルトの名無しさん
2008/05/15(木) 18:02:24これ最小 ヘッダいらない
main()
{
return 0;
}
0784デフォルトの名無しさん
2008/05/15(木) 18:03:20[2] 問題文(含コード&リンク):GCD(http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6555.txt) を求める効率の良くない方法をプログラム化し、実行時間をユークリッドの互除法のプログラムと比較しなさい。
特に、大きな2数(2数4573624943と1690511063あるいは、999999999と999999998)の場合を比較すること)効率の良くないプログラム、ユークリッドの互除法のプログラムともに実行時間計測を組み込むこと。
[3] 環境
[3.1] OS: XP [3.2] 不明 [3.3] 言語: C++
[4] 期限: 5月17日 [5] その他の制限: 特になしかと
よろしくお願いします
0785番外です
2008/05/15(木) 18:10:33VBScriptで作りました。これを色々弄って
仕様を定めてからCに翻訳する方法も
***この問題に関しては***
悪くなさそうです。さすがにMadam,I <=>I'm Adamはを見つけるのは辛いですが
function reverse( ByVal s)
dim t
t=""
do while(len(s)<>0)
t=t+mid(s,len(s),1):s=mid(s,1,len(s)-1)
loop
reverse=t
end function
dim s
s=inputbox("文字を入れて","C/C++宿題片付けます","テツダウヨナンドモ")
if(s<>"")then WScript.Echo(mid(s,1,len(s)-1)+reverse(s)) end if
0786デフォルトの名無しさん
2008/05/15(木) 18:47:32int gcd2(int x, int y){
int i, tmp;
if(x > y){
tmp=x;
x=y;
y=tmp;
}
for(i = x; i > 1; i --){
if((x % i == 0) && (y % i == 0)){
return i;
}
}
}
ロジック:(2数x,yのうち小さい方-1)~2までカウントダウンして、x,y両方を割り切れた最初の数が最大公約数。
所用時間:手元のPCで30秒位。
0787デフォルトの名無しさん
2008/05/15(木) 18:48:36[2] 問題文C言語で1+2+3+4+・・・と数字を加算していき、加算結果が300を越えたら処理を終えるプログラム
を作りなさい
[3] 環境
[3.1] OS: XP [3.2] 不明 [3.3] 言語: C
[4] 期限: 5月16日 [5] その他の制限: 特になし
0788デフォルトの名無しさん
2008/05/15(木) 18:49:28>>780
0789デフォルトの名無しさん
2008/05/15(木) 18:50:45すいません、while文でしろとの事でした。
申し訳ありません
0790デフォルトの名無しさん
2008/05/15(木) 18:50:51int i, sum=0;
for(i=1;i<=300;i++){
sum+=i;
}
0791デフォルトの名無しさん
2008/05/15(木) 18:52:01int i,=1sum=0
while(1){
sum+=i;
if(sum>=300) break;
i++;
}
0792デフォルトの名無しさん
2008/05/15(木) 18:52:310793デフォルトの名無しさん
2008/05/15(木) 18:57:12int i=1, sum=0;
while(sum<=300){
sum+=i;
i++;
}
0794デフォルトの名無しさん
2008/05/15(木) 19:01:13何度も追記があったおかげでどれを信じていいかわからんが、とりあえず。
なんか条件満たしてなかったら言ってくれ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6557.c
0795デフォルトの名無しさん
2008/05/15(木) 19:17:12[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6558.txt
[3] 環境
[3.1] OS:(WindowsXP)
[3.2] コンパイラ名とバージョン:VC++2005
[3.3] 言語:C++
[4] 期限:5月18日
[5] その他の制限:問題文中に記載してあります。
[5-1] 講義では関数まで習いました。
よろしくお願いしますm(__)m 。
0796デフォルトの名無しさん
2008/05/15(木) 19:19:30void method1(double a, double b, double c, double *x1, double *x2) {
*x1 = (-b+sqrt(b*b-4*a*c))/(2*a);
*x2 = (-b-sqrt(b*b-4*a*c))/(2*a);
}
void method2(double a, double b, double c, double *x1, double *x2) {
*x2 = (-b-sqrt(b*b-4*a*c))/(2*a);
*x1 = c/(a*(*x2));
}
main() {
double a = 1, b = 18000000, c = 1, x1, x2;
method1(a, b, c, &x1, &x2);
printf("method 1: x1 = %.12le, x2 = %.12le\n", x1, x2);
method2(a, b, c, &x1, &x2);
printf("method 2: x1 = %.12le, x2 = %.12le\n", x1, x2);
return 0;
}
/* 真の解は
x1 = -5.5555555555555727023319615913266947789124×10^-8
x2 = -1.799999999999994444444444444427297668038408673×10^7
なので,method2 のほうが精度がよい.
*/
0797デフォルトの名無しさん
2008/05/15(木) 19:26:19#include <stdio.h>
int main(void)
{
int A[5];
int i, v, n, w,imax;
int j, t;
printf("5桁の正の整数値を入力してください ");
scanf("%d",&v); n = 5;
for (w=1;w<=n;w++) {
A[n - w] = v % 10;
v = v / 10;
} for (i=0;i<n;i++) {
v = A[i];
imax = i;
for (j=i+1;j<n;j++) {
if (A[j] > v) {
v = A[j];
imax = j;
}
}
t = A[i];
A[i] = A[imax];
A[imax] = t;
} printf("大きい順では: ");
for(i=0;i<n;i++) {
printf("%d", A[i]);
} printf("\n");
return 0;
}
0798デフォルトの名無しさん
2008/05/15(木) 19:27:170799デフォルトの名無しさん
2008/05/15(木) 19:37:58問題不備.「組合わせた式」の定義がわからない.具体的には
(1) 同じ演算子は使ってよいのか
(2) 同じ数字は使ってよいのか
(3) もし (2) が yes ならば式の長さはどこまでか
0800795
2008/05/15(木) 19:38:43実行確認できました!
ありがとうございますm(__)m。
0801デフォルトの名無しさん
2008/05/15(木) 19:39:19出力例見なよ
0802デフォルトの名無しさん
2008/05/15(木) 19:42:53例はあくまで例でしょ。
(1) は例から yes っぽいけど、(2), (3) は分からないよ。
0803デフォルトの名無しさん
2008/05/15(木) 19:46:270804デフォルトの名無しさん
2008/05/15(木) 19:47:31明記がない以上は確認するのが筋だと俺は思うけど、
これ以上は水掛け論だろうから、やめるね。
0805デフォルトの名無しさん
2008/05/15(木) 19:49:510806デフォルトの名無しさん
2008/05/15(木) 19:54:381フレームごとに毎回移動させる場合(たとえばパチスロのリールのようなもの)
カウンタ加算値が+=1であれば1秒では60しか移動しませんよね?
それだと遅すぎるのでfor文を使って
for(i=0; i<=10; i++){
//移動カウンタ
}
として挟んでみたんですが、これってあくまで移動量は1ずつを高速ループさせて
同時に描画させることになるのでしょうか?
単に移動量を+10にしたときとでは
forで挟んだ方が滑らかに綺麗に表示されてる気がするんですけど違いってあるんでしょうか?
0807デフォルトの名無しさん
2008/05/15(木) 19:56:46ここは質問スレじゃない。適切なスレに池。
0808デフォルトの名無しさん
2008/05/15(木) 20:03:53>>668 2008/05/16 数式処理
>>680 2008/05/16 WebServer の作成
0809デフォルトの名無しさん
2008/05/15(木) 20:05:25Win32API質問箱 Build65
http://pc11.2ch.net/test/read.cgi/tech/1208847084/
でもその質問のままじゃ意味不明すぎワロタ
0810デフォルトの名無しさん
2008/05/15(木) 20:40:56[2] 問題文二つの自然数の最大公約数を求める関数を再帰関数として定義し,その利用例が明らかになるようにプログラムを作成しなさい.
[3] 環境
[3.1] OS: Windows/Linux
[3.2] コンパイラ gcc
[3.3] 言語: C
[4] 期限: 5/17 24:00
[5] 数値は適当にに決めて、動作例としてプログラムを書いてok
0811デフォルトの名無しさん
2008/05/15(木) 20:46:13#include<stdio.h>
int gcd(int a, int b)
{
printf("a=%d b=%d\n", a, b);
if(a%b==0) return b;
return gcd(b, a%b);
}
int main(void)
{
int a=123, b=456;
// scanf("%d %d", &a, &b);
printf(" %d\n", gcd(a, b));
return 0;
}
0812デフォルトの名無しさん
2008/05/15(木) 21:29:50>>707
string space=" ";
if(k==space){
system("format C:");
}
0813デフォルトの名無しさん
2008/05/15(木) 21:30:14Cプログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6559.txt
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
5月17日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
構造体を習っているところです。よろしくお願いします。
0814デフォルトの名無しさん
2008/05/15(木) 22:02:59課題1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6560.c
課題2
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6561.c
課題2がよくわからなかったが、一応書かれてたものは全部使ってみた
0815デフォルトの名無しさん
2008/05/15(木) 22:03:090816デフォルトの名無しさん
2008/05/15(木) 22:07:54意味が分からんが宿題ならどうぞ
0817デフォルトの名無しさん
2008/05/15(木) 22:12:460818デフォルトの名無しさん
2008/05/15(木) 22:52:29すいません、特にエラーは出ないのですが、課題1が実行例どおりに作動しないのですが・・
0819デフォルトの名無しさん
2008/05/15(木) 22:54:350820デフォルトの名無しさん
2008/05/15(木) 22:58:58コンパイルエラーが出るはずだが。
int sx[] = {0,+1,-1,-1,+1},
の最後をセミコロンにすれば実行例どおりに動作したよ。
0821デフォルトの名無しさん
2008/05/15(木) 23:03:56課題1
#include <stdio.h>
struct point{
int x; /* x 座標 */
int y; /* y 座標 */
};
int main(void){
struct point table[5][100], p1;
int i, j, index, num[5]={0};
for(i=0;i<100;i++){
if(scanf("%d %d", &p1.x, &p1.y)!=2) break;
index=0;
if(p1.x>0 && p1.y>0) index=1;
if(p1.x<0 && p1.y>0) index=2;
if(p1.x<0 && p1.y<0) index=3;
if(p1.x>0 && p1.y<0) index=4;
table[index][num[index]++]=p1;
}
for(i=1;i<=4;i++){
printf("第%d象限の個数 %d\n", i, num[i]);
for(j=0;j<num[i];j++){
printf("(%2d, %2d)\n", table[i][j].x, table[i][j].y);
}
}
return 0;
}
0822デフォルトの名無しさん
2008/05/15(木) 23:04:56すいません、作動しました!ありがとうございました。
ところで、課題2の
POINT pt1 = {2, 4};
d = distance(pt1);
これはどういう意味があるんでしょう?
0823デフォルトの名無しさん
2008/05/15(木) 23:07:28条件判断何回やらせんだよw
0824デフォルトの名無しさん
2008/05/15(木) 23:07:34意味ないよ。課題2の問題文中にかかれてたからとりあえず入れただけ。
0825デフォルトの名無しさん
2008/05/15(木) 23:09:29ありがとうございました!
>>824
了解ですw
ありがとうございました
0826デフォルトの名無しさん
2008/05/15(木) 23:31:29if(p1.y>0)
index=1;
else if(p1.y<0)
index=4;
}
if(p1.x<0){
if(p1.y>0)
index=2;
else if(p1.y<0)
index=3;
}
これでいいだろw
0827653
2008/05/15(木) 23:33:10もう、必要無いかもしれんけど、
興味あったんで、検証とC#の勉強かねてグラフィカルに実装してみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6562.zip
チェックしてないんで凹ポリゴンでも実行しちゃうけど、結果は意味無し。
左回りでも右回りでも可。
C#って色々不便なとこあるなー。
スレ違いだな・・・スマソ
0828デフォルトの名無しさん
2008/05/15(木) 23:38:14転進するでおじゃ〜る、さらばじゃっ
0829デフォルトの名無しさん
2008/05/15(木) 23:49:09キチガイの集まり創価学会
キチガイ・マルチが政治活動
池田大作キチガイ集団公明党
キチガイの集まり公明党
池田キチガイ公明党
キチガイの集まりが政治活動公明党
0830デフォルトの名無しさん
2008/05/15(木) 23:55:36ありがとうございました。
無事に期限に提出できました。
0831827
2008/05/16(金) 00:04:36肝心の中心点表示してなかった・・・orz
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6563.zip
0832デフォルトの名無しさん
2008/05/16(金) 01:14:59[2] 問題文
?簡単なシェルを作れ
?fork、exec系、wait系のシステムコール(ライブラリ関数)を利用して作る
?最低限、以下の機能を実現する
1.プロンプトを出力する
2.ユーザに端末からコマンドを入力させる
3.新しくプロセスを生成し、そのプロセスが入力されたコマンドのプログラムを実行する
4.そのコマンドの実行(子プロセス)が終了するまでシェル(親プロセス)は、プロンプトを出さずに待つ
5.1に戻る
[3] 環境
OS:Windows/Linux
コンパイラ:gcc
言語: C
[4] 期限: 2008年5/17 16時
実行結果もお願いします
0833デフォルトの名無しさん
2008/05/16(金) 01:30:30もう過ぎちゃったけど
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6564.c
0834827
2008/05/16(金) 01:39:43水平な頂点があるとゼロ除算で落ちるな・・・
180度に近づくと制度落ちるし、
ちょっと計算方法がまずいようだ。
0835デフォルトの名無しさん
2008/05/16(金) 01:53:520836デフォルトの名無しさん
2008/05/16(金) 02:12:46[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6565.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 5月19日
[5] その他の制限:
フローチャートも書かなきゃならないので、なるべく見やすいものをお願いします。
サブ関数は使わないようお願いします。
なるべく怪しまれない程度の技術でお願いします。
注文ばっかでごめんなさい;職人様お願いします!
0837デフォルトの名無しさん
2008/05/16(金) 02:44:46課題の条件全てが曖昧なので適当に
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6566.c
0838デフォルトの名無しさん
2008/05/16(金) 03:51:29[2] 問題文(含コード&リンク):
次のプログラムの致命的な問題を一つあげなさい
/*標準入力から行の先頭10000文字以内を読み込んで
読み込んだものを標準出力に出力する*/
int main(int argc,char **argv){
#define N 10000
char ss[N+1],*s=(char*)&ss;
int len;
while(!feof(stdin)){
if(fgets(s,N,stdin)){
if(!ferror(stdin)){
printf(s);
if((len=strlen(s))==10000)
if(s[len-1]=='¥n')
printf("¥n");
continue;
}
}
break;
}
return 0;
#undef N
}
[3] 環境
[3.1] OS: 2008年直近のANSI-CもしくはISO-C準拠のC処理系があるOS環境
[3.2] コンパイラ名とバージョン: ANSI-C,ISO-Cに準拠したC処理系
[3.3] 言語: C
[4] 期限: 1時間以内
[5] その他の制限:問題見て10秒以内に問題が発見できれば、正しいCプログラマです。
0839838
2008/05/16(金) 03:53:04が抜けているというのは、回答にはなりませんので念の為
0840838
2008/05/16(金) 03:56:060841デフォルトの名無しさん
2008/05/16(金) 03:59:100842%
2008/05/16(金) 04:24:440843デフォルトの名無しさん
2008/05/16(金) 04:33:54当方で確認した環境は Vine Linux 4.2(kernel 2.6.16), 処理系は gcc3 です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img
> システムが不調でも‥‥
特になにも考えていません。
> .無茶な通信データがきても‥‥
対応できませんでした。たくさんのデータが来ると狂うでしょう。
> 行儀よく停止する。
シグナルで余さず wait したつもりです。
わたしの環境では、 read() でも recv() でもデータがそろうまでブロックするため、
クライアントのリクエスト文字列が終わったことを検出する方法がわからないのですが、
どうすればいいんでしょうか。
>>774
感謝です。
0844デフォルトの名無しさん
2008/05/16(金) 05:00:21#define N 10000 ってしたらNに統一すべき。
Nと10000を混在させるのはよろしくない。
fgets(s,N,stdin)だと配列のサイズをN+1にした意味がない。
if(s[len-1]=='\n')じゃなくてif(s[len-1]!='\n')じゃないの?
0845デフォルトの名無しさん
2008/05/16(金) 05:12:00すばやい回答ありがとうございました
0846デフォルトの名無しさん
2008/05/16(金) 05:32:440847デフォルトの名無しさん
2008/05/16(金) 06:35:10単純なことだ。10000文字以上入力してみそ。普通にそれ以上読み込んでいるから。
それ以外の部分に問題があるって話しも出るが、10000文字以内に限定するなら
EOF検出とか要らんことせんで、指定した文字数まで読み込むコードで終わらせい。
0848デフォルトの名無しさん
2008/05/16(金) 07:00:37環境も存在するかもしれんが、そういうのは考慮せず、プログラムとして
Nを10にでもして入力して、if((len=strlen(s))==10000) の10000の部分を
Nにしても分かるが、指定の文字だけ読み込んで1行ずつ出力するわけでもなし。
0849デフォルトの名無しさん
2008/05/16(金) 07:16:110850デフォルトの名無しさん
2008/05/16(金) 07:32:24問題点がない
0851デフォルトの名無しさん
2008/05/16(金) 07:34:12正解
他にも問題はあるが、軽微
コンパイルして、コンソールから
printf("1時間考えても答え出せない奴が回答者やろうというのは%d年早いですか?\n",100);
と入力してみそ。
プログラムが落ちなければ運がいいと思う。
0852デフォルトの名無しさん
2008/05/16(金) 07:42:53バグが出なければ尚良い
可読性が有れば言うこと無し
0853デフォルトの名無しさん
2008/05/16(金) 08:18:51> char ss[N+1],*s=(char*)&ss;
妙なことしとりまんなぁ。普通にss使いやぁ
0854デフォルトの名無しさん
2008/05/16(金) 08:37:13842の名前欄に答書いてあるからわざとスルーしてたんだけどね
っていうか、自分のミスを軽微ですますなw
0855デフォルトの名無しさん
2008/05/16(金) 14:41:41キチガイの集まり創価学会
キチガイ・マルチが政治活動
池田大作キチガイ集団公明党
キチガイの集まり公明党
池田キチガイ公明党
キチガイの集まりが政治活動公明党
0856%
2008/05/16(金) 15:55:15やってみた
俺のマシン(Windows)では
printf("1時間考えても答え出せない奴が回答者やろうというのは-23年早いですか?¥n",100);
と出た。
隣の奴のマシン(OS-X)では
printf("1時間考えても答え出せない奴が回答者やろうというのは384998年早いですか?¥n",100);
とでた
共有鯖のLinuxでやらせたら
printf("1時間考えても答え出せない奴が回答者やろうというのは100年早いですか?¥n",100);
どのマシンでも
printf("1時間考えても答え出せない奴が回答者やろうというのは%s年早いですか?¥n","-10");
と入れたら落ちた。
0857デフォルトの名無しさん
2008/05/16(金) 16:32:21を作成せよ。
実行例
sample
13 36 18 54 83 12
25 62 19 78 21 5
41 93 87 21 87 11
61 81 68 46 35 98
result
34 42 30
69 56 58
これをfor文を使ってお願いします。(windows c言語)
0858デフォルトの名無しさん
2008/05/16(金) 16:36:29>>1
0859デフォルトの名無しさん
2008/05/16(金) 16:46:11「2」…ブロック崩しゲームで、ボールが下についたらゲームオーバーになるようにプログラミングせよ
「3」…windows vista、C
↓のように打ったのですが、ゲームオーバーと認識してくれません
if(bally==0)
{
gamemode = 2;
color = GetColor(255,255,255);
DrawFormatString(220,220,color,"Game Over...");
movex=0;
movey=0;
if( CheckHitKey(KEY_INPUT_RETURN))
{
gamemode = 0;
movex=0;
movey=0;
}
}
0860デフォルトの名無しさん
2008/05/16(金) 16:47:34bally==0 を bally<=0 でおk
0861デフォルトの名無しさん
2008/05/16(金) 16:59:20試してみましたが、できませんでした
別のところに問題があるのでしょうか
0862デフォルトの名無しさん
2008/05/16(金) 17:01:11後は自分で
#include<stdio.h>
int main(void)
{ int sample[4][6]={{13, 36, 18, 54, 83, 12},
{25, 62, 19, 78, 21, 5},
{41, 93, 87, 21, 87, 11},
{61, 81, 68, 46, 35, 98} };
int result[2][3]={0}, i, j;
puts("sample");
for(i=0;i<4;i++) {
for(j=0;j<6;j++) {
printf("%d ", sample[i][j]);
}
puts("");
}
result[0][0]=(sample[0][0]+sample[1][0]+sample[2][0]+sample[3][0]) / 4;
result[0][1]=(sample[0][1]+sample[1][1]+sample[2][1]+sample[3][1]) / 4;
result[0][2]=(sample[0][2]+sample[1][2]+sample[2][2]+sample[3][2]) / 4;
result[1][0]=(sample[0][3]+sample[1][3]+sample[2][3]+sample[3][3]) / 4;
result[1][1]=(sample[0][4]+sample[1][4]+sample[2][4]+sample[3][4]) / 4;
result[1][2]=(sample[0][5]+sample[1][5]+sample[2][5]+sample[3][5]) / 4;
puts("\nresult");
for(i=0;i<2;i++) {
for(j=0;j<3;j++) {
printf("%d ", result[i][j]);
}
puts("");
}
return 0;
}
0863デフォルトの名無しさん
2008/05/16(金) 17:22:50[2] 問題文
キーボードから入力された任意の文字列を分析し
その文字列に含まれている数字文字"0","1",..."9"の合計個数を表示するプログラムを作成せよ。
注)NULL文字は '\0' で表すことができる
�@文字列の読み込みは、1次元文字配列 string[MAX](MAX=256) を定義して行うこと。
�A文字配列に含まれる数字の係数処理は、関数 dgt_num_total()を定義・呼び出しをして行うこと。
また関数 dgt_num_total()は、�@入力された文字列が格納された文字配列の先頭アドレスを
引数(アドレス参照)とし、�A関数の戻り値としてその中に含まれる数字の個数を返す関数とすること
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4]期限:2008年5月16日午後7時程度
よろしくお願いします
時間がないのは実家に帰る仕様です
0864デフォルトの名無しさん
2008/05/16(金) 17:28:46#include <stdio.h>
#include <ctype.h>
#define MAX 256
int dgt_num_total(const char *s){
int dgt_num=0;
for(;*s;s++) if(isdigit(*s)) dgt_num++;
return dgt_num;
}
int main(void){
char string[MAX];
fgets(string, sizeof(string), stdin);
printf("\n%d\n", dgt_num_total(string));
return 0;
}
0865デフォルトの名無しさん
2008/05/16(金) 17:32:17とりあえずこちらを見て参考にさせていただきますー
もう一つあるんですが、連続投稿はよろしいのでしょうか
0866デフォルトの名無しさん
2008/05/16(金) 17:36:18連続投稿かどうか、ID無いから判断出来ないし
0867デフォルトの名無しさん
2008/05/16(金) 17:39:29とりあえずは釈然としないので、両方いきます。
[1] 授業単元:プログラミング演習
[2] 問題内容
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6571.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6572.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4]期限:2008年5月16日午後7時程度
再び、よろしくお願いします…
0868デフォルトの名無しさん
2008/05/16(金) 17:47:44int c;
int dgt_num = 0;
while((c = fgetd(stdin) != EOF)
if(isdigit(c))
dgt_num++;
printf("%d¥n", dgt_num;
}
0869デフォルトの名無しさん
2008/05/16(金) 17:52:04[2] 問題文:4×4の対称行列の固有値と固有ベクトルを求める
ヤコビ法のプログラムを作成せよ。但し,行列の要素を
保持する配列変数として2次元の配列変数を使用すること。
計算結果を画面に出力すること。(行列[n][n]の各成分は
printfによるキーボード入力させる。)
[3] 環境
[3.1] OS:Windows Vista
[3.2] Windows Visual Studio
[3.3] 言語:C++
[4] 期限:08年5月22日23:30まで
すみません、よろしくお願いします
0870デフォルトの名無しさん
2008/05/16(金) 17:55:06すみません問題文の5行目間違えました
printfじゃなくてscanfです。
すみませんでした
0871デフォルトの名無しさん
2008/05/16(金) 18:02:32y座標は1番上が0で下に行くほど増えるのでは
0872デフォルトの名無しさん
2008/05/16(金) 18:24:16http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6573.c
0873デフォルトの名無しさん
2008/05/16(金) 18:30:04void dgt_num_deatil(char *str, int *bnp)
{
int i = 0; /* 配列参照用添え字 */
while (str[i] != '\0') {
switch(str[i]) {
case '0': bnp[0]++; break;
case '1': bnp[1]++; break;
case '2': bnp[2]++; break;
case '3': bnp[3]++; break;
case '4': bnp[4]++; break;
case '5': bnp[5]++; break;
case '6': bnp[6]++; break;
case '7': bnp[7]++; break;
case '8': bnp[8]++; break;
case '9': bnp[9]++; break;
}
i++;
}
}
0874デフォルトの名無しさん
2008/05/16(金) 18:39:350875843
2008/05/16(金) 18:41:25すみません、リンクを書き漏らしていました。
>>843 の改良版をおきました。
確認は cygwin/WindowsXP, コンパイラは gcc3.4.4 です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6570.txt
> システムが不調でも‥‥
特になにも考えていません。システムコールの返り値はみるようにしています。
> .無茶な通信データがきても‥‥
対応しました。内部のバッファのサイズよりも大きいデータが来てもOKです。
select() をノンブロックにして、ポーリングさせています。
> 行儀よく停止する。
シグナルで余さず wait しました。
>>843 の時点でのソースは次のとおりです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6568.c
>>838
普通の宿題の回答をみればわかることですが。
0876デフォルトの名無しさん
2008/05/16(金) 19:20:49[2] 問題文(含コード&リンク):
アルファベット、数字、空白からなる文字列を渡したとき、小文字を大文字にする関数
void to_low(char s[]);を作成しなさい。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2008年05月18日13:10まで
[5] その他の制限:文字列まで習っている
0877デフォルトの名無しさん
2008/05/16(金) 19:36:53#include<stdio.h>
#include<ctype.h>
#define SIZE 256
void to_low(char s[])
{
int i=0;
while(s[i++]!='\0')
{
if(islower(s[i]))
s[i]=toupper(s[i]);
}
}
int main(void)
{
char str[SIZE];
printf(">>");
fgets(str,SIZE,stdin);
to_low(str);
printf("%s\n",str);
return 0;
}
0878デフォルトの名無しさん
2008/05/16(金) 19:39:12ワロタw
0879デフォルトの名無しさん
2008/05/16(金) 19:40:110880デフォルトの名無しさん
2008/05/16(金) 20:11:40このままだと、先頭の1文字が変換されないので、修正。
diff -r 84cfa8044290 -r e5b7a28be89f 876.c
--- a/876.c Fri May 16 20:06:16 2008 +0900
+++ b/876.c Fri May 16 20:08:09 2008 +0900
@@ -6,10 +6,11 @@ void to_low(char s[])
void to_low(char s[])
{
int i=0;
- while(s[i++]!='\0')
+ while(s[i]!='\0')
{
if(islower(s[i]))
s[i]=toupper(s[i]);
+ i++;
}
}
0881デフォルトの名無しさん
2008/05/16(金) 20:16:35すいません、関数上の文字列や-whileとかの文法がよく分からないのですが、
どういう意味でしょうか?
0882デフォルトの名無しさん
2008/05/16(金) 20:27:14変更点が判るようにと思って、バージョン管理ツールの出力を
載っけたが、ツール使ってる人ばっかりじゃなかったな、すまん。
ただ、バージョン管理ツールはグループ・個人を問わず非常に便利
なので管理用に使う事をお勧めする。
以下、表記の説明。
・修正の場合
> int i=0;
> - while(s[i++]!='\0') // <---この行を削除という表記
> + while(s[i]!='\0') // <---この行を追加という表記
> {
・追加の場合
> s[i]=toupper(s[i]);
> + i++; // <---この行を追加という表記
> }
0883デフォルトの名無しさん
2008/05/16(金) 20:32:23アルファベットからなる文字しか渡されないと約束されているなら
s[i] = s[i] - 0x20; でも十分なような気がしないでもない。
0884デフォルトの名無しさん
2008/05/16(金) 20:33:42と聞かれるような気がしないでもない
0885デフォルトの名無しさん
2008/05/16(金) 20:48:41と答える
出題者の意図としてはislowerやtoupperとか使ったらだめだろうから
0886デフォルトの名無しさん
2008/05/16(金) 21:00:48ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6574.c
0887デフォルトの名無しさん
2008/05/16(金) 21:06:12ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6575.c
0888デフォルトの名無しさん
2008/05/16(金) 21:41:16_______∧,、_‖ `之ヽ、, i l´ _,ィ辷ァ-、、 彡彡'r ノ/_ ______
 ̄ ̄ ̄ ̄ ̄ ̄ ̄'`'` ̄ 1  ̄フ/l l::. ヽこ~ ̄ 彡彳~´/  ̄ ̄ ̄ ̄ ̄ ̄
0890デフォルトの名無しさん
2008/05/16(金) 22:57:31-'A'のほうがわかりやすいだろ
-0x20じゃパット見イミフ
0891デフォルトの名無しさん
2008/05/16(金) 22:58:37コンパイルはできたのですが、実際に実行してみると何も反応しません。。どこが間違っているのでしょうか?
#include <stdio.h>
struct point{
int x;
int y;
};
int main(void){
struct point table[5][100];
int i, j, x, y, s, num[5];
while (scanf("%d %d", &x, &y) != EOF) {
for(i=0;i<100;i++){
if(x>0 && y>0) s=1;
if(x<0 && y>0) s=2;
if(x<0 && y<0) s=3;
if(x>0 && y<0) s=4;
else s=0;
table[s][num[s]++].x = x;
table[s][num[s]++].y = y;
}
for(i=1;i<=4;i++){
printf("第%d象限の個数 %d\n", i, num[i]);
for(j=0;j<num[i];j++){
printf("(%d, %d)\n", table[i][j].x, table[i][j].y);
}
}
return 0;
}
0892デフォルトの名無しさん
2008/05/16(金) 23:00:18コピペしてコンパイルしたら通らないよ
0893デフォルトの名無しさん
2008/05/16(金) 23:02:52すいません一番最後に
}
をつけると一応コンパイルは通ります。。でも実行しても何も反応しないのです。
0894デフォルトの名無しさん
2008/05/16(金) 23:05:12scanf関数が最初に呼ばれるからだろ?
入力待ち状態だよ
0895デフォルトの名無しさん
2008/05/16(金) 23:08:27すいません今やってみると、何も反応しないことはなかったのですが、
./a.exe < point-data.txt
と入力してみると
第1象限の個数 0
第2象限の個数 0
第3象限の個数 0
第4象限の個数 0
という風にでて、全くプログラムとして機能しませんでした。。
どこがおかしいでしょうか?
0896デフォルトの名無しさん
2008/05/16(金) 23:10:58./a.exe < point-data.txt
このコマンドは何だ?
0897デフォルトの名無しさん
2008/05/16(金) 23:11:500898デフォルトの名無しさん
2008/05/16(金) 23:12:25point-data.txtというファイルの中に
5 1
0 91
-6 2
-92 0
-7 -3
0 -93
94 0
1 -4
9 -4
-8 -3
8 -4
というものが入ってまして、つまり、上記の数字を入力したときの結果ということです。。
0899デフォルトの名無しさん
2008/05/16(金) 23:15:070900デフォルトの名無しさん
2008/05/16(金) 23:17:550901デフォルトの名無しさん
2008/05/16(金) 23:19:47どうしたらいいんでしょう?
>>900
なんか学校で習ったときに
while (scanf("%d %d", &x, &y) != EOF) {
こういったような文章が出てきたので、無理矢理組み込んでみました・・
0902デフォルトの名無しさん
2008/05/16(金) 23:24:43それってファイル操作じゃない?
while(fgets(ss, 256, fr) != NULL)
0903デフォルトの名無しさん
2008/05/16(金) 23:30:06すいません、その文章はよくわからないです・・
ファイルやキーボードから複数のデータを入力する方法
struct point p1;
while(scanf("%d %d", &p1.x, &p1.y) != EOF){
構造体p1 の処理
}
?? 入力リダイレクト機能
% ./a.out < data.txt
?? ファイルdata.txt の先頭から1 行ずつデータを入力し,scanf 関数の実引数に格納される.
?? ファイルの最後に到達すると,scanf 関数はEOF (End of File)を返すので,while 文の
繰り返しが終了する.
?? キーボードからのデータ入力
?? データの入力を終了する時にCtrl-D を入力すると, scanf 関数はEOF を返すので,
while 文の繰り返しが終了する
こんな感じで習いました
0904デフォルトの名無しさん
2008/05/16(金) 23:41:28scanf の返り値はなんなのかについて学習すべし。
プログラマを目指すなら・問題の切り分けがいかにスマートにできるかです。そのセンスを磨くことです。
man scanf で直ぐ気づく超初級クラスのミス(ミスそのものを犯してしまうのは致し方ないとして)
0905デフォルトの名無しさん
2008/05/16(金) 23:42:080906デフォルトの名無しさん
2008/05/17(土) 00:12:36{
int i, x, y, s;
struct point table[5][100];
int num[5];
for(x = 0; x < 5; x++) // きちんと0で初期化して
{
num[x] = 0;
for(y = 0; y < 100; y++)
table[x][y].x = table[x][y].y = 0;
}
for(i = 0; i < 100; i++)
{
scanf("%d %d¥n", &x, &y);
if(x && y)
{
if(x > 0) s = y > 0 ? 1 : 4;
else s = y > 0 ? 2 : 3;
}
else s = 0;
table[s][num[s]].x = x; // これって意味有るの?
table[s][num[s]].y = y; // 上に同じく
num[s]++; // 元のソースだと常に +2 されてるけど・・
}
for(i = 0; i < 4; i+)
printf("第%d象の個数 %d¥n", i, num[i]);
...
}
0907デフォルトの名無しさん
2008/05/17(土) 00:18:20if(scanf("%d %d¥n", &x, &y) == EOF)
break;
あと、
if(num[0])
printf("一方が0のもの %d¥n", num[0]);
for(i = 1; i < 5; i++)
printf("第%d象の数 %d¥n", i, num[i]);
訂正だす。
0908 ◆bT6c9WIwLg
2008/05/17(土) 01:11:26[2] 問題文: n段の段数を持つピラミッドより構成される、
n段の段数を持つピラミッドを表示するプログラムを作成せよ。
<実行例>
段数を入力してください: 4
===============*
==============***
=============*****
============*******
===========*=======*
==========***=====***
=========*****===*****
========*******=*******
=======*=======*=======*
======***=====***=====***
=====*****===*****===*****
====*******=*******=*******
===*=======*=======*=======*
==***=====***=====***=====***
=*****===*****===*****===*****
*******=*******=*******=*******
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限: 5月22日
[5] その他の制限:forとprintfを使ってやること
問題文の”=”は本来はスペース” ”です。位置を合わせるために使いました。
誰かお願いしますm(_ _)m
0909デフォルトの名無しさん
2008/05/17(土) 01:27:57#include<stdio.h>
int main()
{
int n, i, j, k, l;
printf("段数を入力してください:");
scanf("%d", &n);
for(i = 0; i < n; i ++) {
for(j = 0; j < n; j ++) {
for(k = 0; k < n*n-i*n-j-1; k ++)
printf(" ");
for(k = 0; k < i; k ++) {
for(l = 0; l < j*2+1; l ++)
printf("*");
for(; l < n*2; l ++)
printf(" ");
}
for(k = 0; k < j*2+1; k ++)
printf("*");
printf("\n");
}
}
return 0;
}
0910デフォルトの名無しさん
2008/05/17(土) 02:56:310911デフォルトの名無しさん
2008/05/17(土) 03:01:140912デフォルトの名無しさん
2008/05/17(土) 03:06:300913デフォルトの名無しさん
2008/05/17(土) 03:11:59まずは>>821を改変せずに実行してみては?
0914デフォルトの名無しさん
2008/05/17(土) 04:20:12[2] 問題文(含コード&リンク):
横120文字のコンソールがあります。
これを利用して次の関数のグラフを同時に書かせなさい
x^2+(y-3)^2=2
x^2+y^2=1
x^2+(y+4)^2=3
(x-5)^2+y^2=9^2
(x+5)^2+y^2=9^2
但し|x|<=4,|y|<=8でこれを満たす点を*で表示し
それ以外の点を空白文字で埋める。
横120文字分を一杯に使って表示させたものをプリントアウトして提出。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2008年05月17日23:59まで
[5] その他の制限:なるべく大きく表示すること
お願いしまつ)m_m(
0915デフォルトの名無しさん
2008/05/17(土) 05:17:07http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6578.c
麻呂も、麻呂のクソースも見て給う
0916デフォルトの名無しさん
2008/05/17(土) 05:47:460917デフォルトの名無しさん
2008/05/17(土) 05:54:08君が楽に解けると言うなら、君にとっては難しくないであろう。
もし君が解けないくせにそういうなら、なんで自分でやらないのか?っと
質問者に対する愚問とみなそう。さぁ、四の五の言わず、君が解いてみ給え?
麻呂は疲れたので、寝るでおじゃ〜る
0918デフォルトの名無しさん
2008/05/17(土) 05:54:250919デフォルトの名無しさん
2008/05/17(土) 05:55:150920デフォルトの名無しさん
2008/05/17(土) 06:03:07任意の関数を与えた時にグラフを描かせるのは誤差を考慮しなければならないが、一方の変数で解求めてしまえば楽ではある。
0921デフォルトの名無しさん
2008/05/17(土) 06:06:22どこが難しいのか見当もつかないが、本当は難しかったりするのか?
0922デフォルトの名無しさん
2008/05/17(土) 06:08:300923デフォルトの名無しさん
2008/05/17(土) 06:08:38正方形の中にグラフの一部ってどういう意味?
0924デフォルトの名無しさん
2008/05/17(土) 06:11:33ちょっとずれる場合があるかもしれないって事。
0925デフォルトの名無しさん
2008/05/17(土) 06:11:470926デフォルトの名無しさん
2008/05/17(土) 06:12:200927デフォルトの名無しさん
2008/05/17(土) 06:13:28グラフは、曲線で描ける。それから原稿用紙みたいにマス目を入れて
線が描かれている所を*で埋めれば出来上がるって事。
0928デフォルトの名無しさん
2008/05/17(土) 06:16:35*で出来た箱状のものが横に8個縦に16個ならぶってこと?はあり得ないよな。
意味がよくわからん。
0929デフォルトの名無しさん
2008/05/17(土) 06:20:38そして曲線が描いてあるマスを塗りつぶすって事。
0930デフォルトの名無しさん
2008/05/17(土) 06:23:39塗りつぶすっていうのはどこから導かれるの?
曲線が複数ある状態だとダメってこと?
マスって何個あるの?
0931929
2008/05/17(土) 06:24:510932デフォルトの名無しさん
2008/05/17(土) 06:33:283次とか4次関数とかが与えられたとすると、誤差の評価が難しくなるとは思う。
0933デフォルトの名無しさん
2008/05/17(土) 06:33:49|x|<=4で120文字ってことは、ひとメモリが0.075になるよね?
xを0.075ずつ増やすループ内でyを求めてっていうような計算じゃ駄目なの?
実際にはこの逆にするだろうけど、考え方として。
0934デフォルトの名無しさん
2008/05/17(土) 06:39:37それでいいけど。解の公式が使えない場合とか、もう一方の解が求めにくい場合に
実際に値を入れてみて評価するっていう手もあるって事。
2次元のグラフは全てf(x,y)という関数で書ける。
たとえば、f(x,y)=x^2+y^2-1は、課題の2番目のグラフ。
(x,y)に値を入れてみて0に近ければそこら辺をグラフが通る。
0935デフォルトの名無しさん
2008/05/17(土) 06:47:26良問の予感
0936デフォルトの名無しさん
2008/05/17(土) 06:50:250937デフォルトの名無しさん
2008/05/17(土) 06:50:34てことは、マス関係なく-60<x<61,-120<y<121の範囲の点総てを当てはめて
計算して0に近いときは*を打って0から遠いときは空白を打てばいいんだよね?
どのくらい近い時に点を打つかはどう決めるの?
0938デフォルトの名無しさん
2008/05/17(土) 06:53:44コマンドプロンプトでは遅いだろな。
なんであんな遅いんだろな。
0939デフォルトの名無しさん
2008/05/17(土) 06:56:11一般の2変数のグラフが与えられたときには、その誤差の評価が難しいと思っている。
0940デフォルトの名無しさん
2008/05/17(土) 06:57:21ヒントだけでいいから教えてよ。
けちけちすんなよ、友達だろ?
0941デフォルトの名無しさん
2008/05/17(土) 06:59:58間違いは少なくなるとはおもう。
0942デフォルトの名無しさん
2008/05/17(土) 07:06:12半径がその距離の間に入るかチェックすればいいだけじゃね?
0943デフォルトの名無しさん
2008/05/17(土) 07:14:08陰関数を描く
ここでは,微分方程式の解法の応用として,一般的な陰関数f(x,y)=0の描き方について考えてみます.
http://www.geocities.jp/ikuro_kotaro/koramu/hisenkei.htm
0944デフォルトの名無しさん
2008/05/17(土) 07:14:23許容した時にあるxに対してyがどれだけの幅でずれるかを求めればいいだけなんだろ?
なんでお前らって簡単なことを難しく言いたがるんだろな。
あと、15のマスっていうのがいまだにさっぱりわからん。
なんで納豆にソースかけるんだよって聞いたらマヨネーズはうまいって答えが
返ってきたような感じだ。
0945デフォルトの名無しさん
2008/05/17(土) 07:17:45何か難しくて解読不可能だから、易しく説明希望。
0946デフォルトの名無しさん
2008/05/17(土) 07:23:45f(x>0 && y>0) s=1;
if(x<0 && y>0) s=2;
if(x<0 && y<0) s=3;
if(x>0 && y<0) s=4;
else s=0;
は
if(x>0 && y<0) s=4;
else s=0;
と同じ
sは0か4にしかならない
0947デフォルトの名無しさん
2008/05/17(土) 07:27:02[2] 問題文(含コード&リンク): 4x4の盤でコンピュータ相手に3目並べ
ただし、2x2(1手で同時に2つ2個並びができる手)は禁じ手。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:vc++
[3.3] 言語:C/C++どちらでも
[4] 期限:日が暮れるまで
[5] その他の制限:
表示と入力は標準関数で出来る範囲でおk。
0948デフォルトの名無しさん
2008/05/17(土) 07:29:50やったことないし、マウスで引っ張ってもかわらないし
0949デフォルトの名無しさん
2008/05/17(土) 07:37:49誤差ありまくりです
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6579.c
0950デフォルトの名無しさん
2008/05/17(土) 07:49:43珠玉のコードだ!
0951デフォルトの名無しさん
2008/05/17(土) 08:17:250953デフォルトの名無しさん
2008/05/17(土) 08:43:21高得点になるとおもうよ。あともし、先生が3乗を2乗と書き間違えている所が
あったとしたら通じなくなると作り直さなければならない。
0954デフォルトの名無しさん
2008/05/17(土) 08:47:25ああそうだね。その通りだね
天が崩れ落ちてこないか心配だよね
0955デフォルトの名無しさん
2008/05/17(土) 08:50:440956デフォルトの名無しさん
2008/05/17(土) 08:56:320957デフォルトの名無しさん
2008/05/17(土) 09:12:040958デフォルトの名無しさん
2008/05/17(土) 09:16:260959デフォルトの名無しさん
2008/05/17(土) 10:53:266月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催。
5月22日より登録受付開始、6月2日よりグランプリ開始の予定。
○高島社長特別賞(シストレソフト買取価格) 1000万円
○シストレソフト部門賞 1位300万円 2位100万円 3位50万円
○トレード部門賞 1位300万円 2位100万円 3位50万円
http://system-trading.jp/news/index.php?ID=39
0960デフォルトの名無しさん
2008/05/17(土) 11:08:31種持ってない人にはいいな
手に入るかどうかも分からない賞金の為に費やす労力を考えると
期間が一年もあるから全自動にしておかないと飽きるけど
0961デフォルトの名無しさん
2008/05/17(土) 13:45:40[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6580.txt
[3] 環境
[3.1] OS:(WindowsXP)
[3.2] コンパイラ名とバージョン:VC++2005
[3.3] 言語:C++
[4] 期限:5月19日
[5] その他の制限:問題文中に記載してあります。
よろしくお願いしますm(__)m 。
0962デフォルトの名無しさん
2008/05/17(土) 14:29:35#include<stdio.h>
int main()
{
int n, A[5], i, b, maxA, maxindex;
/* 手順(2) 入力と各桁への分解 */
scanf("%d", &n);
i = 5;
b = 10000;
while(i--) {
A[i] = (n / b) % 10;
b /= 10;
}
/* 手順(3) 最大桁の探索 */
/* 同じ数の桁は、より上位を最大桁とする */
i = maxindex = 4;
maxA = A[maxindex];
while(i--) {
if(A[i] > maxA) {
maxindex = i;
maxA = A[i];
}
}
/* 手順(4) 表示 */
printf("%d桁目が%dで最大でした。\n", maxindex+1, maxA);
return 0;
}
0963デフォルトの名無しさん
2008/05/17(土) 14:34:38while(i<5) {
A[i++] = n % 10;
n /= 10;
}
の方がいいと思うけど
0964デフォルトの名無しさん
2008/05/17(土) 14:38:47FX版カブロボかと思ったら違うのね
ところでいろんなスレに貼ってるみたいだけど宣伝?
0965デフォルトの名無しさん
2008/05/17(土) 14:41:25[2] 問題文
?簡単なシェルを作れ
?fork、exec系、wait系のシステムコール(ライブラリ関数)を利用して作る
?最低限、以下の機能を実現する
1.プロンプトを出力する
2.ユーザに端末からコマンドを入力させる
3.新しくプロセスを生成し、そのプロセスが入力されたコマンドのプログラムを実行する
4.そのコマンドの実行(子プロセス)が終了するまでシェル(親プロセス)は、プロンプトを出さずに待つ
5.1に戻る
[3] 環境
OS:Windows/Linux
コンパイラ:gcc
言語: C
[4] 期限: 2008年5/17 16時
実行結果もお願いします
0966デフォルトの名無しさん
2008/05/17(土) 14:41:55int x[5],max,ind;
char ca[6];
printf("入力?\n");
scanf("%s",ca);
int c = 4;
while(c>=0)
{
x[c] = ca[4-c]-'0';
c--;
}
c = 1;
max = x[0];
while(c<5)
{
if(max < x[c])
{
max = x[c];
ind = c+1;
}
c++;
}
printf("max:%d\nind:%d\n",max,ind);
0967デフォルトの名無しさん
2008/05/17(土) 14:52:08質問者、回答者以外邪魔
0968デフォルトの名無しさん
2008/05/17(土) 14:54:14いろんなスレに貼り付けているやつは違うやつ。
0969デフォルトの名無しさん
2008/05/17(土) 14:56:050970デフォルトの名無しさん
2008/05/17(土) 14:58:44C言語を使います。
if文の実習課題です。
【問題】
3つの数字a,b,cを入力し、大きい順に入れ替えて出力するプログラムを作りなさい。
よろしくお願いします。
0971デフォルトの名無しさん
2008/05/17(土) 15:03:24口だけのやつが多すぎる。
0972デフォルトの名無しさん
2008/05/17(土) 15:07:47問題文に、5桁目から順番にと書いてある。
0973デフォルトの名無しさん
2008/05/17(土) 15:17:41#include<stdio.h>
void print_value(int value, int base)
{
putchar(' ');
putchar((value / base) ? ('0' + value / base) : ' ');
putchar('0' + value % base);
}
void show_matrix(int base)
{
int x, y;
printf("%d進数の九九\n ", base);
for(x = 1; x < base; x ++)
printf(" %2d", x);
printf("\n");
for(y = 1; y < base; y ++) {
printf("%d", y );
for(x = 1; x < base; x ++)
print_value(x*y, base);
printf("\n");
}
printf("\n");
}
int main()
{
show_matrix(4);
show_matrix(5);
show_matrix(6);
}
0974デフォルトの名無しさん
2008/05/17(土) 15:19:37>>1読んで書き直し
制限事項に「if文で大きさの判定をすること」って書くようにね
0975デフォルトの名無しさん
2008/05/17(土) 15:28:33[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6581.txt
[3] 環境
[3.1] OS:Windows Vista
[3.2] Windows Visual Studio
[3.3] 言語:C++
[4] 期限:08年5月20日まで
自分でも一応作ってみたのですがエラーがでてきて困ってます。
どうかよろしくお願いします。
0976デフォルトの名無しさん
2008/05/17(土) 15:28:50#include<stdio.h>
void swap(int *x, int *y)
{
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
}
int main()
{
int a, b, c;
fputs("a = ", stdout);
scanf("%d", &a);
fputs("b = ", stdout);
scanf("%d", &b);
fputs("c = ", stdout);
scanf("%d", &c);
printf("before: a = %d, b = %d, c = %d\n", a, b, c);
if (a < b) swap(&a, &b);
if (b < c) swap(&b, &c);
if (a < b) swap(&a, &b);
printf("after : a = %d, b = %d, c = %d", a, b, c);
return 0;
}
0977デフォルトの名無しさん
2008/05/17(土) 15:31:41亀レスなんですが、アルゴリズムの解説をしてもらえませんか?
0978 ◆Tl0XBL9DS2
2008/05/17(土) 15:34:432 3つの数字a,b,cを入力し、大きい順に入れ替えて出力するプログラムを作りなさい。
3 Windows
C言語
4 2008年5月18日00:00まで
5 if文で大きさの判定をする
よろしくお願いします。
C/C++の宿題を片付けます 107代目
http://pc11.2ch.net/test/read.cgi/tech/1211006255/
0980デフォルトの名無しさん
2008/05/17(土) 15:39:01ind = Jacobi(n, ct, eps, A, A1, A2, X1, X2); //←こうすべし
0982デフォルトの名無しさん
2008/05/17(土) 15:52:20#include<stdio.h>
int main( void ){
int a,b,c,d;
printf("a:"); scanf("%d",&a);
printf("b:"); scanf("%d",&b);
printf("c:"); scanf("%d",&c);
if( a < b ){
d = a; a = b; b = d;
}
if( b < c ){
d = c; c = b; b = d;
}
if( a < b ){
d = a; a = b; b = d;
}
printf(" a = %d, b = %d, c = %d\n", a, b, c );
return 0;
}
0983デフォルトの名無しさん
2008/05/17(土) 16:22:10動作確認、正常に動いてくれました。
本当にありがとうございます。m(__)m
0984デフォルトの名無しさん
2008/05/17(土) 16:46:32>>678
0986 ◆8x8z91r9YM
2008/05/17(土) 18:11:50[2] 問題文
・半角文字を入力したときに文字を判別するプログラムを作成せよ
・「e」と入力されたとき、プログラムを終了するか問いかけられるようにせよ([y/n])
[3] 環境
[3.1] OS:Windows XP
[3.2] Visual Studio
[3.3] 言語:C
[4] 期限:08年5月18日まで
[5]
・while文かdo while文を使って下さい
・判別する文字はアスキーコードの21(!)〜7D(~)までです
0987デフォルトの名無しさん
2008/05/17(土) 18:17:35文字の判別って何をやればいいの?
0988 ◆8x8z91r9YM
2008/05/17(土) 18:35:47'1'が入力されたら数字、'\'が入力されたら記号といった具合に
scanfで入力した文字をprintfで出力・判別する感じです
言葉足らずですいません
0989デフォルトの名無しさん
2008/05/17(土) 18:42:15「といった具合」では問題不備だよ。
・数字
・アルファベット
・記号
この三種類でよい?
アルファベットの大文字小文字は区別する?
0990 ◆8x8z91r9YM
2008/05/17(土) 18:43:20大文字と小文字を区別して下さい
度々申し訳ないです
0991デフォルトの名無しさん
2008/05/17(土) 18:47:48http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6583.c
[2] 問題文(含コード&リンク):
トポロジカルソートを行うプログラムを作成せよ。
ただし、ソーティングを行うグラフは下記の通り。
#define N 8
int edge[N][N] = {
/* 0 1 2 3 4 5 6 7 */
{0,1,0,0,1,0,0,0}, /* 0 */
{0,0,0,0,0,0,1,0}, /* 1 */
{0,0,0,1,0,0,1,0}, /* 2 */
{0,0,0,0,0,0,0,1}, /* 3 */
{0,0,0,0,0,1,0,0}, /* 4 */
{0,0,0,0,0,0,1,0}, /* 5 */
{0,0,0,0,0,0,0,1}, /* 6 */
{0,0,0,0,0,0,0,0} /* 7 */
};
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名: gcc
[3.3] 言語: C
[4] 期限: 2008/05/20(Tue)
[5] その他の制限: 特にないです
よろしくお願いします。
0993デフォルトの名無しさん
2008/05/17(土) 19:27:14char c[2];
while(1)
{
printf("入力してください\n");
scanf("%s",c);
if(c[0]=='e')
{
printf("終了?[y/n]\n");
scanf("%s",c);
if(c[0]=='y')
{
printf("終了\n");
return 0;
}
if(c[0]=='n') continue;
}
if(c[0]>=0x21 && c[0]<=0x7D)
{
printf("入力された文字:%c\n",c[0]);
}else{
printf("入力された文字は範囲外\n");
}
}
0994デフォルトの名無しさん
2008/05/17(土) 19:30:57トポロジカルオーダーの逆順で表示する
#define N 8
int edge[N][N] = {
/* 0 1 2 3 4 5 6 7 */
{0,1,0,0,1,0,0,0}, /* 0 */
{0,0,0,0,0,0,1,0}, /* 1 */
{0,0,0,1,0,0,1,0}, /* 2 */
{0,0,0,0,0,0,0,1}, /* 3 */
{0,0,0,0,0,1,0,0}, /* 4 */
{0,0,0,0,0,0,1,0}, /* 5 */
{0,0,0,0,0,0,0,1}, /* 6 */
{0,0,0,0,0,0,0,0} /* 7 */
};
int mark[N];
void visit(int v) {
int i;
for (i = 0; i < N; ++i)
if (edge[v][i] && !mark[i]) visit(i);
printf("%d ", v);
mark[v] = 1;
}
main() {
int i;
for (i = 0; i < N; ++i)
if (!mark[i]) visit(i);
}
0995 ◆8x8z91r9YM
2008/05/17(土) 19:55:33後出しで申し訳ないのですが、>>990に書いてあるとおり数字・記号・アルファベット(大小)の区別もしたいのです…
0996デフォルトの名無しさん
2008/05/17(土) 20:09:43if(c[0]>=0x21 && c[0]<=0x7D)
{
printf("入力された文字:%c\n",c[0]);
}else{
printf("入力された文字は範囲外\n");
}
を
if((c[0]>=0x21 && c[0]<=0x2f) || (c[0]>=0x3a && c[0]<=0x40) || (c[0]>=0x5b && c[0]<=0x60) || (c[0]>=0x7b && c[0]<=0x7d))
{
printf("入力された文字は記号の %c\n",c[0]);
continue;
}
if(c[0]>=0x30 && c[0]<=0x39)
{
printf("入力された文字は数字の %c\n",c[0]);
continue;
}
if(c[0]>=0x41 && c[0]<=0x5a)
{
printf("入力された文字は大文字英字の %c\n",c[0]);
continue;
}
if(c[0]>=0x61 && c[0]<=0x7a)
{
printf("入力された文字は小文字英字の %c\n",c[0]);
continue;
}
printf("入力された文字は範囲外\n");
に置き換え
0997デフォルトの名無しさん
2008/05/17(土) 20:31:37プログラムを作成せよ。
実行例
sample
13 36 18 54 83 12
25 62 19 78 21 5
41 93 87 21 87 11
61 81 68 46 35 98
result
34 42 30
69 56 58
この問題みなさんはできるかな?
0998デフォルトの名無しさん
2008/05/17(土) 20:33:18>>1
お早い回答ありがとうございます。
とても参考になりましたm(__)m
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。