C/C++の宿題を片付けます 62代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/03/03(金) 14:28:38【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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
【前スレ】
C/C++の宿題を片付ケます 60代目
http://pc8.2ch.net/test/read.cgi/tech/1139053955/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
次スレが立たない時の避難所
http://pc8.2ch.net/test/read.cgi/tech/1122705615/
0002デフォルトの名無しさん
2006/03/03(金) 14:31:49・同じ講義を受けている人が既に同じ宿題を依頼してるかもしれなせん。
まずはスレを少しさかのぼって探してみてください。
それさえ出来ないシメジ野郎はバター焼きにして食っちまうぞ
・解答者は答える義務もないし、答えてもそれが正しいかどうかは保証しません。
もちろん、出題者先生の意図なんぞ知ったことではありません。
At your own riskで。
・態度が余りに悪いとすーぱーはかーがあなたの先生にチクるかもしれません。
・>>1の前スレってとこ丸々コピペだから60代目のまんまだった、スマソ
正しくはこっち
【http://pc8.2ch.net/test/read.cgi/tech/1140039002/】
0003デフォルトの名無しさん
2006/03/03(金) 14:34:560004デフォルトの名無しさん
2006/03/03(金) 14:35:03Z
0005デフォルトの名無しさん
2006/03/03(金) 14:42:29C/C++の宿題を片付ケます@避難所
ttp://pc7.2ch.net/test/read.cgi/pc2nanmin/1141364482/
0006デフォルトの名無しさん
2006/03/03(金) 14:45:42英語版では正しく使われている。日本語訳が糞なだけ。
0007デフォルトの名無しさん
2006/03/03(金) 14:47:37\\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0008デフォルトの名無しさん
2006/03/03(金) 14:49:43センスも感じられない
0009デフォルトの名無しさん
2006/03/03(金) 15:05:15:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0010デフォルトの名無しさん
2006/03/03(金) 18:10:16メ゙ヽ、\ ̄""" ̄--‐ 、 \ /ゝ、\
=─‐\\‐ /─'''''ニ二\''' |レレゝゝ、\
 ̄く<<く >, ゙、/<三三二\ ̄\ゝゝゝゝゝゞ''ヽ、 / ̄ ̄ ̄ ̄ ̄
<<<<〈__入 ゙、く彡三三三二ヽくゝ\メメメゝ、_ゝ、\ | さあ問題を言え
くく<<<<<< ゙、 ゙、ミ三三二ニ─ゝゝゝゝゝ,,,,,,,、 '( ゙''ヽ、ヽ、 < どんな問題も
くくくくくく彡‐ヽ ゙、ミ三三二ニ'''くくゝゝ_ゝゝ、\\_,>」ノ, | 1つだけスルーしてやろう・・・
く く く く く 彡゙、゙、三三二ニ‐くゝ、/ ,,,,,,,,メメゝヽ''''"ゝゞ丶、 \_____
二─二二彡彡、゙、三三二==くメゝ/ ゙'ヽ、メゝゝゝゝゝゝゞ''ヽ-、,,,,,,_
‐'''" ̄ \彡彡ミ、゙、三二=''"く<メ/:: \''-、メメゝゝゝ_ゝ 、 ,,、ヽヽ
、 ,,,,- ゙彡//ヾ、三二= くゝ/:::.... \>∠レ-,-‐ニ二メヽ''ヽ ノ
゙ヽ、,,,-‐//_///,,、゙、三二= ゙、 ""''' ヽ>//レレヽ,,___ /
-,,,,,,-‐'''"""/////,,ヽ ゙、三二─ ゙ヽ. //-ヘヘ,、 レレレレノ
''" ,l|"////ノ,、\彡'''''‐-ニ,、 ::::::::::,,,,,,,,// ゙ヽフ/|/| レ'
/ゝ、/ヽ|ヽレ,,゙ヽ、゙''ヽ、,,,,,,_ヽ''ニ='',,-'"、─-,,,,,_  ̄"'ノ
/メ / レ/,''"へへべ''─---- ̄-メヽ"ゝゞゝヽ、 >---''"
/ヘヘ、|//ヘヘヘヘヘヘヘヘ,,-イ ̄ | ̄"'''-ニニニ二-''"
/ヘヘ∧/./フヘヘヘヘヘヘヘ,/イ / / / ゙ノ\、\
/ゝゝ| / /メヘヘヘヘヘヘ/'" | / / / / \\
/ゝ /|‐/ /フヘへヘヘヘ/∧ /-'"-'''"__,,-''" / /、\
//|_| /./へへへヘヘ、// |/ \_,,,,-‐'" / ゙、.゙、
'"/ヽ"/'"へへヘヘヘヘ// ノ \ ,,,,-‐'" ゙、゙、
.ノ //へへヘヘヘヘ//ヽ ./ ゙、''"" ,,/、゙、
/-"へへヘヘヘヘヘ// |‐" \_,,,,,,,,-‐'''" | |
へへへへヘヘヘヘ//ヽ ノ ゙, | |
0011デフォルトの名無しさん
2006/03/03(金) 19:21:27アメリカの刑務所ではきっとヤポン人は大人気だぉ
あっ、でも童貞は捨てられんか。後ろの処女は捨てれても。
[2] 問題文:
8×8のマス目において+と−をランダムに置き、+で囲まれた領域と数を求める
−++++−+− −++++−+−
+−−−−+−− + 1 1 1 1 +−−
+−−−−+−− + 1 1 1 1 +−−
−++++−−− −++++−−−
−+−−+−−− −+ 2 2 +−−−
++−−+−−− ++ 2 2 +−−−
−+++++−− −+++++−−
−+−−−+−− −+−−−+−−
これから→ これを表示
データは配列の初期値として与えてください
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限: 2006年3月6日17:00まで
[5] その他の制限:関数・配列まで
お願いします。
0013デフォルトの名無しさん
2006/03/03(金) 20:10:450014デフォルトの名無しさん
2006/03/03(金) 21:55:210015デフォルトの名無しさん
2006/03/03(金) 22:03:510016デフォルトの名無しさん
2006/03/03(金) 22:06:55万が一ソースコードの説明を求められたら答えられないから。
0017デフォルトの名無しさん
2006/03/03(金) 22:50:490018デフォルトの名無しさん
2006/03/03(金) 22:51:040019デフォルトの名無しさん
2006/03/03(金) 22:53:09>>15 春休みの課題です。
一応頑張ったんですがどうしても解けないんで…
良ければお願いします。
0022デフォルトの名無しさん
2006/03/03(金) 23:29:40何のためにC++やってるんだ?
0024デフォルトの名無しさん
2006/03/03(金) 23:43:15http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1677.txt
0025デフォルトの名無しさん
2006/03/03(金) 23:45:48わざわざありがとうございます。
実行してみたら重大なエラーってでましたorz
0027デフォルトの名無しさん
2006/03/03(金) 23:54:170028デフォルトの名無しさん
2006/03/03(金) 23:54:23メシ喰ってくる!
すいません。
kai.cpp: In function `void solve(char (*)[8], char (*)[8])':
kai.cpp:85: warning: implicit declaration of function `int copy(...)'
未定義の 最初に参照している
シンボル ファイル
copy /var/tmp/cckKaaHE1.o
ld: 重大なエラー: シンボル参照エラー。kai に書き込まれる出力はありません。
0030デフォルトの名無しさん
2006/03/04(土) 00:31:090032デフォルトの名無しさん
2006/03/04(土) 02:01:560033デフォルトの名無しさん
2006/03/04(土) 03:54:30口止め料込みで結構もらってるのか、
あるいは、あんまり簡単だったので解答側が報酬を断ったか・・・
だと思っている。
打ち込み作業がある程度あったようなので、
マジで金のやり取りがあったと思われる。
0034デフォルトの名無しさん
2006/03/04(土) 07:53:37おいおい、授業でなに習ってたんだ?
0035デフォルトの名無しさん
2006/03/04(土) 07:56:420036デフォルトの名無しさん
2006/03/04(土) 10:52:10とゆうかそもそも授業でするのかすら怪しいが>STL
0037デフォルトの名無しさん
2006/03/04(土) 11:46:24相手の力量にあわせて、自分の技術を抑える訓練をするべし。
0038デフォルトの名無しさん
2006/03/04(土) 11:51:090039デフォルトの名無しさん
2006/03/04(土) 12:03:03なんかメール来てたけど暇つぶし貰っただけだから無視した。
0040デフォルトの名無しさん
2006/03/04(土) 12:21:36というか、明らかに嫌がらせだと思うが
0041デフォルトの名無しさん
2006/03/04(土) 12:25:120042デフォルトの名無しさん
2006/03/04(土) 12:28:43おまいら今のうちに頼んどけ!頼んどけ!
0043デフォルトの名無しさん
2006/03/04(土) 12:42:28テストコードの書き方とか。
設計の仕方とか。
ドキュメントの書き方とか。
英語とか。
ぷりーづ・てぃーち・みー。
0044デフォルトの名無しさん
2006/03/04(土) 13:00:12#include <iostream>
bool fill_area(char * square, int value, int x, int y, int size)
{
if (x < 0 || x >= size || y < 0 || y >= size) return false;
if (square[x + size * y] != '-') return true;
square[x + size * y] = '0' + value;
int dir[] = {0, 1, 0, -1, 0};
for (int i = 0; i < 4; ++i)
if (!fill_area(square, value, x + dir[i], y + dir[i+1], size))
{ square[x + size * y] = '-'; return false; }
return true;
}
int main()
{
char cells_square[] = ("-++++-+-" "+----+--" "+----+--" "-++++---"
"-+--+---" "++--+---" "-+++++--" "-+---+--");
int value = 1;
for (int i = 0; i < 64; ++i)
if (cells_square[i] == '-'
&& fill_area(cells_square, value, i % 8, i / 8, 8)) ++value;
for (int i = 0; i < 8; ++i) {
for (int j = 0; j < 8; ++j)
std::cout << ' ' << cells_square[8 * i + j];
std::cout << std::endl;
}
}
0045デフォルトの名無しさん
2006/03/04(土) 13:04:41それだとエリア数が10以上になった時点でぶっぴんなんだね〜
0046デフォルトの名無しさん
2006/03/04(土) 13:34:230048デフォルトの名無しさん
2006/03/04(土) 14:02:400049デフォルトの名無しさん
2006/03/04(土) 14:10:57あのね、ぷろぐらむがね、ただしくね、うごいているかね、しらべるほうほうをね、おしえてね。
0050デフォルトの名無しさん
2006/03/04(土) 14:15:22>>47に質問するなら最低でも変換くらいしろよ低能。
0051デフォルトの名無しさん
2006/03/04(土) 14:23:36>>50 ひねり無さ過ぎ。マターリしるっ
0052何人釣れるかな?
2006/03/04(土) 14:26:100053デフォルトの名無しさん
2006/03/04(土) 14:33:11プログラムが正しく動かない状況なんてめったにないぞ。
CPUやメモリなどのハードウェア障害か、さもなくば宇宙線などの不慮の事態かだ。
0054デフォルトの名無しさん
2006/03/04(土) 16:16:12その方がいいと思うよ
0055デフォルトの名無しさん
2006/03/04(土) 16:19:18俺の聞いた話ではPSEマークのないプロバイダは
サービス停止だということだが、それとは違うのか?
0056デフォルトの名無しさん
2006/03/04(土) 17:23:31例えば経産省がやってる情報処理技術者資格のどれかが必須とか
0057デフォルトの名無しさん
2006/03/04(土) 18:29:260058sage
2006/03/04(土) 19:40:20下のA.txtをインプットすると、B.txtがアウトプットされるC++プログラムを作ります。
while{ }を使うことも条件ですが、なかなかうまくイキマセン・・・。
while{ }で文字カウントする方法を中心に教えてください。
A.txt の内容--------- B.txt の内容-----------------
ll chA chI 母音の数、行数、文字数
ll chU chE Number of a's: 1
ll chO jyo ⇒⇒ Number of e's: 2
ll shi shu ⇒⇒ Number of i's: 3
ll she sho l Number of o's: 4
nyi nyu nyo Number of u's: 3
---------------------- Number of lines: 5
Number of characters: 68
-------------------------------
0059デフォルトの名無しさん
2006/03/04(土) 19:42:01日本語でおk
006058
2006/03/04(土) 19:42:07些細な質問でスミマセン・・・。
下のA.txtをインプットすると、B.txtがアウトプットされるC++プログラムを作りたいです。
while{ }を使うことも条件ですが、なかなかうまくイキマセン・・・。
while{ }で文字カウントする方法を中心に教えてください。
A.txt の内容-------------------
ll chA chI
ll chU chE
ll chO jyo
ll shi shu
ll she sho l
nyi nyu nyo
-------------------------------
↓↓
↓↓
B.txt の内容-------------------
母音の数、行数、文字数。
Number of a's: 1
Number of e's: 2
Number of i's: 3
Number of o's: 4
Number of u's: 3
Number of lines: 5
Number of characters: 68
-----------------------------------
0061デフォルトの名無しさん
2006/03/04(土) 19:43:070062デフォルトの名無しさん
2006/03/04(土) 23:43:50ネタかとおそれつつマジレスすると、無難なところでこんな感じか。
#include <iostream>
#include <vector>
#include <algorithm>
#include <boost/lambda/lambda.hpp>
int main()
{
using namespace std;
using namespace boost::lambda;
// 「while {}で文字カウント」する部分
vector<int> count(256); // int count[256];みたいなもの。文字コード0から255(==256-1)について、それぞれのカウントを格納する
int ch;
while ((ch = cin.get()) != EOF) { // 標準入力から1文字読み込み。end-of-fileが見つかるまで繰り返し
++count[ch]; // 読み込んだ文字のカウントをインクリメントする
}
// 後は何とでも
char chars[] = "aeiou";
for (int i = 0; (ch = chars[i]) != '\0'; ++i)
cout << "Number of " << ch << "'s: " << count[ch] << endl;
cout << "Number of lines: " << count['\n'] << endl;
int total = 0;
for_each(count.begin(), count.end(), (var(total) += _1));
cout << "Number of characters: " << total << endl;
return 0;
}
0063デフォルトの名無しさん
2006/03/04(土) 23:59:01countをvectorにする意義が見出せない。boost::arrayで十分。
結果を出力するループで改行文字を弾けよ。
最後にboost::lambdaなんて使わなくても<numeric>のstd::accumulateがあるだろ。
0064デフォルトの名無しさん
2006/03/05(日) 00:16:38>countをvectorにする意義が見出せない。boost::arrayで十分。
速度にこだわるなら、確かに。
>結果を出力するループで改行文字を弾けよ。
出力のフォーマットが違うからうっとうしい。やってみて?
>最後にboost::lambdaなんて使わなくても<numeric>のstd::accumulateがあるだろ。
あちゃー、使ったことないし、知らなかったよ。こんな感じ?
+#include <numeric>
-#include <boost/lambda/lambda.hpp>
+cout << "Number of characters: " << accumulate(count.begin(), count.end(), 0) << endl;
-int total = 0;
-for_each(count.begin(), count.end(), (var(total) += _1));
-cout << "Number of characters: " << total << endl;
0065デフォルトの名無しさん
2006/03/05(日) 00:27:39あとは仕様通りだが、そもそも>>60の行数が5なのが奇妙な話だ。
0067デフォルトの名無しさん
2006/03/05(日) 00:34:470068デフォルトの名無しさん
2006/03/05(日) 00:36:100069デフォルトの名無しさん
2006/03/05(日) 00:37:04添削さんくすです。
後は、>>60が理解できることを祈るばかり。
0070デフォルトの名無しさん
2006/03/05(日) 00:58:33理解する前に、「boostが入っていなくてコンパイルできない」に
1000点。
0071デフォルトの名無しさん
2006/03/05(日) 04:12:15007258
2006/03/05(日) 04:22:27先月、C++をさわりだした私にとって、難しいです。
正直、62>>内の #include <iostream> using namespace std; しか分かりませんでした。
私のレベル↓を最所に書かなかった事を謝ります。
----------- C++ ----------
#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
#include <cmath>
using namespace std;
int main()
{
ifstream inFile;
ifstream outFile;
string outputFile;
string inputFile;
double n, m;
char a;
string L;
cout << endl;
cout << "Enter the name of the input file: ";
cin >> inputFile;
cout << endl << inputFile << endl;
inFile.open(inputFile.c_str()); // open the input file
007358
2006/03/05(日) 04:28:36if (! inFile)
{cout << "Error opening input file named: " << inputFile << endl;
cout << "Terminating program now..." << endl << endl;
exit(1);}
cout << "Enter the name of the output file: ";
cin >> outputFile;
cout << endl << outputFile << endl;
outFile.open(outputFile.c_str());
inFile.ignore(200,'\n');
// 以下からよく分かりません。
// n = 0;
// while (inFile)
// {
// getline(inFile, L);
// if(inFile.get(a))
// {n= n + 1;}
// ↑こうすると、何故か行数が出る。
// m = 0;
// while (inFile.get(a))
// {m = m + 1;}
// ↑こうすると、何故か総文字数が出る。
outFile.close();
inFile.close();
return 0;
}
007458
2006/03/05(日) 04:31:45例: A と a 両方カウントします。
よろしくお願いします。
0075デフォルトの名無しさん
2006/03/05(日) 05:44:170076デフォルトの名無しさん
2006/03/05(日) 05:55:10ググって適当にコピペ、を何度か繰り返したような感じのコードだなあ。
「//以下からよくわかりません」の前も滅茶滅茶。
CとかC++とか言う前に、ずっと基本的なこと、たとえば
文字はどうやって表現されているのか、とか、
テキストがファイルにどのように格納されているのか、
等々を理解しないと、前に進めそうにない罠。
とりあえず↓当たってみたら。
推薦図書/必読書のためのスレッド PART29
ttp://pc8.2ch.net/test/read.cgi/tech/1138179810/l50
0077デフォルトの名無しさん
2006/03/05(日) 06:27:040078デフォルトの名無しさん
2006/03/05(日) 09:48:15面倒なんで直接レス書き込み欄から書くのでバグだらけだと思うのでそのまま信用はするなよ?
int ch, nA=0, nE=0, nI=0, nO=0, nU=0, nLine=0, nChars=0;
File *f;
fp = fopen("A.txt", "r");
while((ch=fgetc(f)) != EOF) {
switch(ch) {
case 'A' || 'a': nA++; break;
(中略)
case '\n': nLine++; break;
}
nChars++;
}
0079デフォルトの名無しさん
2006/03/05(日) 09:57:51int length = 0;
int c;
while ((c = fgetc(fp)) != EOF) {
count[c]++;
length++;
}
printf("A: %d\n", count['a'] + count['A']); /* ここはサブルーチンとかテーブル化できるね */
printf("%d lines\n", count['\n']);
printf("%d charctors\n", length);
0080デフォルトの名無しさん
2006/03/05(日) 15:39:39\rの単独は知らないが、\nの単独はExcel形式のCSVで出てくるし。
0081デフォルトの名無しさん
2006/03/05(日) 16:41:05自分語り始まったw
きもw
0082デフォルトの名無しさん
2006/03/05(日) 17:21:33テキストモードで開いているから、\r\nは\nに変換されますが。
0083デフォルトの名無しさん
2006/03/05(日) 18:02:4216×16マス目で、+とーはランダムじゃなく
配列の初期値としてユーザーが打ち込む。っていうプログラムを、
クラスもSTLも使わないでC++で作ってください…お願いします。
0084デフォルトの名無しさん
2006/03/05(日) 18:05:26:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0085デフォルトの名無しさん
2006/03/05(日) 18:12:240086デフォルトの名無しさん
2006/03/05(日) 18:12:41・・・・・・・・・・・・>>44を書き換えればいいだけじゃないか・・・・・・・・・・・
0087デフォルトの名無しさん
2006/03/05(日) 18:30:150088デフォルトの名無しさん
2006/03/05(日) 18:33:33神龍…そんなこと言わずに…
>>85
違いますね
>>86
44は+と−が最初から決められてるんで、
使う人が+−を打ち込む形にしてほしいんですよ…
0089デフォルトの名無しさん
2006/03/05(日) 18:37:490090デフォルトの名無しさん
2006/03/05(日) 18:43:39char cells_square[] = ("-++++-+-" "+----+--" "+----+--" "-++++---"
"-+--+---" "++--+---" "-+++++--" "-+---+--");
はBCCだとコンパイル通らないな
括弧を外すか、char*にすると通る
変すぎ
0091デフォルトの名無しさん
2006/03/05(日) 18:44:522次元配列にでもすりゃいいのに
0092デフォルトの名無しさん
2006/03/05(日) 19:03:23たしかにコンパイル通るようになっちゃうかもしれんが
char*にするのはダメ
0093デフォルトの名無しさん
2006/03/05(日) 19:18:40char *strでも
同じ
0094デフォルトの名無しさん
2006/03/05(日) 19:27:49何が違うのか未だわからない
0095デフォルトの名無しさん
2006/03/05(日) 19:28:54str[2] = 'X'; //oops!!
0096デフォルトの名無しさん
2006/03/05(日) 19:30:05str[2] = 'X'; //OK
0097デフォルトの名無しさん
2006/03/05(日) 19:31:03( ´д)ヒソ(´д`)ヒソ(д` )
0098デフォルトの名無しさん
2006/03/05(日) 19:37:25何が言いたいんだおまいら
0099デフォルトの名無しさん
2006/03/05(日) 19:54:53[2] 問題文:最初に文字列を入力し、次に検索する文字を入力して、検索文字が最初何番目にあるか表示させるプログラム。
[3] 環境 windows、C言語
[4] 期限 3/5
[5] その他の制限:初めて3日なのでほとんど分かっていません。
0100デフォルトの名無しさん
2006/03/05(日) 19:56:550101デフォルトの名無しさん
2006/03/05(日) 19:57:23書いてある通りだ
0102デフォルトの名無しさん
2006/03/05(日) 19:57:26検索方法の指定は?
0103デフォルトの名無しさん
2006/03/05(日) 19:58:37とりあえず何を習ったか書けお
じゃないと>>100にあるようにstrstr使うぞ
0104デフォルトの名無しさん
2006/03/05(日) 20:00:330105デフォルトの名無しさん
2006/03/05(日) 20:03:10>>102さん
検索方法というのは?
0106デフォルトの名無しさん
2006/03/05(日) 20:04:340107デフォルトの名無しさん
2006/03/05(日) 20:07:090108デフォルトの名無しさん
2006/03/05(日) 20:07:25入力方法言え
0109デフォルトの名無しさん
2006/03/05(日) 20:07:31やたらと低レベルなのが混じってるな
0110デフォルトの名無しさん
2006/03/05(日) 20:08:070111デフォルトの名無しさん
2006/03/05(日) 20:09:13まだ習っていません。
0112デフォルトの名無しさん
2006/03/05(日) 20:11:23gets(c);
while(str[i]!=c[0]){
i++;
}
printf("%d 番目\n",i+1);
0113デフォルトの名無しさん
2006/03/05(日) 20:22:26break習ってないならボツ
int main(void)
{
int i;
char str1[256],str2[1];
printf("Input:");
gets(str1);
printf("Input:");
gets(str2);
for (i=0;str1[i]!='\0';i++){
if (str1[i]==str2[0]){
printf("%d番目\n",i+1);
break;
}
}
return 0;
}
0114デフォルトの名無しさん
2006/03/05(日) 20:24:14文字列の'\0'が考慮されてない
0115デフォルトの名無しさん
2006/03/05(日) 20:25:44「工夫は加点します」とかっていわれたら
習ってないことでもひょいひょい使っちゃうだろ?
さすがにC言語の授業でC++は使わないが
0116デフォルトの名無しさん
2006/03/05(日) 20:31:340117デフォルトの名無しさん
2006/03/05(日) 20:31:40検索文字は2文字以上もしくは文字でないと判断するものは完全にはじくものを
作れということですね
0118デフォルトの名無しさん
2006/03/05(日) 20:36:13フゥハハハーハァー
0119デフォルトの名無しさん
2006/03/05(日) 20:37:020120デフォルトの名無しさん
2006/03/05(日) 20:40:360121デフォルトの名無しさん
2006/03/05(日) 20:40:500122デフォルトの名無しさん
2006/03/05(日) 20:42:220123デフォルトの名無しさん
2006/03/05(日) 20:43:580124デフォルトの名無しさん
2006/03/05(日) 20:45:58入れた?
0125デフォルトの名無しさん
2006/03/05(日) 20:50:31#include <stdio.h>も入れて、「input」が出てきて入力しましたがpress any key 〜と出るだけで…
0126デフォルトの名無しさん
2006/03/05(日) 20:55:25その時点で題意をみたせずってこった
0127デフォルトの名無しさん
2006/03/05(日) 20:55:280128デフォルトの名無しさん
2006/03/05(日) 20:56:500129デフォルトの名無しさん
2006/03/05(日) 20:58:04Cpad使っています。
0130デフォルトの名無しさん
2006/03/05(日) 21:00:27それで動かないならプログラムがおかしいってことだろう
アレ別にあってると思うけどね
0131デフォルトの名無しさん
2006/03/05(日) 21:11:21なんてことないよな・・・まさかな。
0132デフォルトの名無しさん
2006/03/05(日) 21:14:57低レベルな質問で時間を頂きましてありがとうございます。
0133デフォルトの名無しさん
2006/03/05(日) 21:15:390134デフォルトの名無しさん
2006/03/05(日) 21:18:100135デフォルトの名無しさん
2006/03/05(日) 21:21:48おおっ!!
かっこよくなりましたね。
0136デフォルトの名無しさん
2006/03/05(日) 21:22:130137デフォルトの名無しさん
2006/03/05(日) 21:39:19それとも試食版つかってるとか
0138デフォルトの名無しさん
2006/03/05(日) 21:41:07forの中の"\0"は書き換えないで、最初の宣言のstr2[1]をstr[2]に変えてごらん。
そっちが正しい対応の仕方だろう。
0139デフォルトの名無しさん
2006/03/05(日) 21:42:05×str2[1]をstr[2]
○str2[1]をstr2[2]
0140補数
2006/03/05(日) 22:55:56[2] 問題文:後ほど記載いたします
[3.1] OS:xp
[3.2] gcc 3.4
[3.3]C言語のみ
[4] 期限:
[5] その他の制限: ほとんど初歩です^^;
宜しくお願いします。
0141補数
2006/03/05(日) 22:59:35#include <math.h>
#define N 4
int bin_sum(char bin1[N], char bin2[N], int sign);
int main(int argc, char* argv[])
{
char bin1[N] = {'0', '1', '0', '1'};
char bin2[N] = {'1', '0', '1', '0'};
int result;
//正の2進数として加算
result = bin_sum(bin1, bin2, 0);
printf("5(0101)+10(1010)=%d\n", result);
//負の2進数(2の補数)として加算
result = bin_sum(bin1, bin2, 1);
printf("5(0101)+(-6)(1010)=%d\n", result);
return 0;
}
0142補数
2006/03/05(日) 23:00:05int bin_sum(char bin1[N], char bin2[N], int sign)
{
int dec1= 0, dec2 = 0, result = 0, i;
if (sign == 0) {//正の2進数を加算
for (i = N; i > 0; i--) {
//bin1の2進数を10進数に変換
if (bin1[N-i] == '1')
dec1 = dec1 + (int)pow(2.0, (double)(i-1));
//bin2の2進数を10進数に変換
if (bin2[N-i] == '1')
//dec2 = dec2 + 1 * 2^(i-1);
dec2 = dec2 + (int)pow(2.0, (double)(i-1));
}
result = dec1 + dec2;
} else if (sign == 1) {//2の補数を計算
////////////////////////////////////////////////////////
2の補数を計算するプログラム
////////////////////////////////////////////////////////////
}
return result;
}
0143補数
2006/03/05(日) 23:01:08もし宜しければ教えてください^^;
0144デフォルトの名無しさん
2006/03/05(日) 23:02:510145デフォルトの名無しさん
2006/03/05(日) 23:03:550146デフォルトの名無しさん
2006/03/05(日) 23:06:000147補数
2006/03/05(日) 23:06:11ちょっとプログラム上でどんな感じになるのか分からなくて^^;
何か参考にしたらいいサイトとかありますかね??^^;
0148デフォルトの名無しさん
2006/03/05(日) 23:07:470149デフォルトの名無しさん
2006/03/05(日) 23:09:17ビット演算を調べるんだ!
0150デフォルトの名無しさん
2006/03/05(日) 23:11:18有難う御座います^^
0151デフォルトの名無しさん
2006/03/05(日) 23:11:54とりあえずひっくりかえせ
文字列なんだからなんてこたないだろう?
整数で扱うなら1111との排他的論理和を取る
0152デフォルトの名無しさん
2006/03/05(日) 23:17:40この途中までのプログラム自体私が作ったものではないので^^;
ほんと全然分からない状況なんです^^;
0153デフォルトの名無しさん
2006/03/05(日) 23:20:02コメントはちゃんとコメントアウトしとけよ
0154デフォルトの名無しさん
2006/03/05(日) 23:20:47:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ 税込み1500円になります
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0155デフォルトの名無しさん
2006/03/05(日) 23:21:030156デフォルトの名無しさん
2006/03/05(日) 23:22:30俺が引き受けたしばしまたれよ
0157デフォルトの名無しさん
2006/03/05(日) 23:23:12:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ 手数料2000円になります
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0158デフォルトの名無しさん
2006/03/05(日) 23:23:25つまり税抜き1429円だな。
0160デフォルトの名無しさん
2006/03/05(日) 23:25:570161デフォルトの名無しさん
2006/03/05(日) 23:27:39#include <stdio.h>
#include <math.h>
#define N 4
int bin_sum(char bin1[N], char bin2[N], int sign);
int main(int argc, char* argv[])
{
char bin1[N] = {'0', '1', '0', '1'};
char bin2[N] = {'1', '0', '1', '0'};
int result;
//正の2進数として加算
result = bin_sum(bin1, bin2, 0);
printf("5(0101)+10(1010)=%d\n", result);
//負の2進数(2の補数)として加算
result = bin_sum(bin1, bin2, 1);
printf("5(0101)+(-6)(1010)=%d\n", result);
return 0;
}
0162デフォルトの名無しさん
2006/03/05(日) 23:28:10int bin_sum(char bin1[N], char bin2[N], int sign)
{
int dec1= 0, dec2 = 0, result = 0, i;
if (sign == 0) {//正の2進数を加算
for (i = N; i > 0; i--) {
//bin1の2進数を10進数に変換
if (bin1[N-i] == '1')
dec1 = dec1 + (int)pow(2.0, (double)(i-1));
//bin2の2進数を10進数に変換
if (bin2[N-i] == '1')
//dec2 = dec2 + 1 * 2^(i-1);
dec2 = dec2 + (int)pow(2.0, (double)(i-1));
}
result = dec1 + dec2;
} else if (sign == 1) {//2の補数を計算
////////////////////////////////////////////////////////
// 2の補数を計算するプログラム
////////////////////////////////////////////////////////////
for (i = N; i > 0; i--) {
//bin1の2進数を10進数に変換
if (bin1[N-i] == '1')
dec1 = dec1 + (int)pow(2.0, (double)(i-1));
0163デフォルトの名無しさん
2006/03/05(日) 23:29:10:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ 続きは手数料3000円になります
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0164デフォルトの名無しさん
2006/03/05(日) 23:29:53if (bin2[N-i] == '1')
dec2 = dec2 + (int)pow(2.0, (double)(i-1));
}
dec2 = ~dec2 + 1;
result = dec1 + dec2;
}
return result;
}
0165デフォルトの名無しさん
2006/03/05(日) 23:31:480166デフォルトの名無しさん
2006/03/05(日) 23:33:24{
int dec1= 0, dec2 = -sign,result = 0, i;
for (i = 0; i < N; ++i) {
dec1=dec1<<1|bin1[i]-'0';
dec2=dec2<<1|bin2[i]-'0';
}
result = dec1 + dec2;
return result;
}
0167補数
2006/03/05(日) 23:35:13有難う御座います^^
早速実行してみますね^^
0168デフォルトの名無しさん
2006/03/05(日) 23:47:22int bin_sum(char bin1[N], char bin2[N], int sign)
{
int dec1= 0, dec2 = -(bin2[0]&sign),i;
for (i = 0; i < N; ++i) {
dec1=dec1<<1|bin1[i]-'0';
dec2=dec2<<1|bin2[i]-'0';
}
return dec1 + dec2;
}
0169デフォルトの名無しさん
2006/03/06(月) 00:11:08(^^) 山崎渉を思い出す
NullPointerException氏ね
0170デフォルトの名無しさん
2006/03/06(月) 00:13:39Cなんだから//コメントとかやめようぜ
C99とは限らんだろう
0171デフォルトの名無しさん
2006/03/06(月) 00:19:150172デフォルトの名無しさん
2006/03/06(月) 00:24:36商用UNIXについてるオマケコンパイラとかは
ANSI Cすら非対応だったりするんだが。無論、わざと。
0173デフォルトの名無しさん
2006/03/06(月) 00:25:260174補数
2006/03/06(月) 00:26:45実行はできたのですが、コマンド画面でどういうコマンドを打ったらいいんですかね??^^;
ちょっとよく分からなくて…
0175デフォルトの名無しさん
2006/03/06(月) 00:27:03CとC++でお願いします。
【質問テンプレ】
[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク):
問題
1)プログラムは演算式”A+B*Cが記されたテキストファイルを読み取ります。
2)LR分析表を参照し、LR分析アルゴリズムを使ってテキストを分析し、
”id + id * id $”と表示しなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
c 、.cpp ファイルならどのコンパイラーを使っても良い。
[3.3] 言語: (CとC++)
[4] 期限: 3月10日18:00まで
どなたかお願いします。
0176175
2006/03/06(月) 00:27:54以下がReduceしていく演算式の文法 です。
1)E → E + T
2)E → T
3)T → T * F
4) T → F
5) F → ( E )
6)F → id
0177デフォルトの名無しさん
2006/03/06(月) 00:29:13:ヽ.ニ=::て.>廴_ 手数料30000円になります
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0178デフォルトの名無しさん
2006/03/06(月) 00:32:04:ヽ.ニ=::て.>廴_ なんと手数料28000円でやります
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0179175
2006/03/06(月) 00:32:24(S5はShift 5を意味し、スタックにインプットします。
R2はReduce2を意味し、2) E → T式を使うということを示します。)
Action|Goto
------------------------------------------------------------------------------
State |id | + | * | ( | ) | $ | E | T | F
------------------------------------------------------------------------------
0S5S41 2 3
1S6Accept
2R2S7R2R2
3R4R4R4R4
4S5S48 2 3
5R6R6R6R6
6S5S493
7S5S410
8S6S11
9R1S7R1R1
10R3R3R3R3
11R5R5R5R5
0180デフォルトの名無しさん
2006/03/06(月) 00:32:360181175
2006/03/06(月) 00:33:310182デフォルトの名無しさん
2006/03/06(月) 00:35:03:ヽ.ニ=::て.>廴_ 意味不明なのでスルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0183デフォルトの名無しさん
2006/03/06(月) 00:35:500184デフォルトの名無しさん
2006/03/06(月) 00:37:120185デフォルトの名無しさん
2006/03/06(月) 00:39:020186デフォルトの名無しさん
2006/03/06(月) 00:39:090187デフォルトの名無しさん
2006/03/06(月) 00:39:380188デフォルトの名無しさん
2006/03/06(月) 00:39:580189デフォルトの名無しさん
2006/03/06(月) 00:40:41・・・興味のある人は過去ログか、ぐぐらばあるだろ。
俺は手で書くなら下向き再帰解析だけど。
0190デフォルトの名無しさん
2006/03/06(月) 00:42:01意味がわからないが
0191デフォルトの名無しさん
2006/03/06(月) 00:43:560192デフォルトの名無しさん
2006/03/06(月) 01:02:32今ちょっと、プラグイン機能を持つアプリケーションを作成しようとしています。
プラグイン機能は後から、lib.soやdllを追加する事で機能拡張な形にしたいと思っています
このアプリケーションを起動時に特定のディレクトリに存在するdll等を読み込み機能を
実行できるようにしたいと思っています。
このような設計や簡単なサンプルなどを扱っている資料などありませんでしょうか。
、
0193デフォルトの名無しさん
2006/03/06(月) 01:05:00:ヽ.ニ=::て.>廴_ 手数料90000円になります
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0194デフォルトの名無しさん
2006/03/06(月) 01:05:16>>1
0195デフォルトの名無しさん
2006/03/06(月) 01:05:250196デフォルトの名無しさん
2006/03/06(月) 01:06:570197175
2006/03/06(月) 01:10:36=================================================================================
State | id | + | * | ( | ) | $ | E | T | F
-----------------------------------------------------------------------------
0 | S5 | # | # | S4 | # | # | 1 | 2 | 3
------------------------------------------------------------------------------
1 | # | S6 | # | # | # |Accept | # | # | #
-----------------------------------------------------------------------------
2 | # | R2 | S7 | # | R2 | R2 | # | # | #
-----------------------------------------------------------------------------
3 | # | R4 | R4 | # | R4 | R4 | # | # | #
------------------------------------------------------------------------------
4 | S5 | # | # | S4 | # | # | 8 | 2 | 3
-----------------------------------------------------------------------------
5 | # | R6 | R6 | # | R6 | R6 | # | # | #
------------------------------------------------------------------------------
0198175
2006/03/06(月) 01:12:22------------------------------------------------------------------------------
7 | S5 | # | # | S4 | # | # | # | | 10
------------------------------------------------------------------------------
8 | # | S6 | # | # | S11 | # | # | # | #
------------------------------------------------------------------------------
9 | # | R1 | S7 | # | R1 | R1 | # | # | #
-----------------------------------------------------------------------------
10 | # | R3 | R3 | # | R3 | R3 | # | # | #
------------------------------------------------------------------------------
11 | # | R5 | R5 | # | R5 | R5 | # | # | #
------------------------------------------------------------------------------
0199175
2006/03/06(月) 01:13:20(S5はShift 5を意味し、スタックにインプットします。
R2はReduce2を意味し、2) E → T式を使うということを示します。)
0200デフォルトの名無しさん
2006/03/06(月) 01:14:10:ヽ.ニ=::て.>廴_ 手数料900円になります
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0201175
2006/03/06(月) 01:14:41StackInputAction
0id + id * id $Shift 5
0id5+ id * id $Reduce 6 (use GOTO[0, F])
0F3+ id * id $Reduce 4 (use GOTO[0, T])
0T2+ id * id $Reduce 2 (use GOTO[0, E])
0E1+ id * id $Shift 6
0E1+6id * id $Shift 5
0E1+6id5* id $Reduce 6 (use GOTO[6, F])
0E1+6F3* id $Reduce 4 (use GOTO[6, T])
0E1+6T9* id $Shift 7
0E1+6T9*7id $Shift 5
0E1+6T9*7id5$Reduce 6 (use GOTO[7, F])
0E1+6T9*7F10$Reduce 3 (use GOTO[6, T])
0E1+6T9$Reduce 1 (use GOTO[0, E])
0E1$Accept
0202デフォルトの名無しさん
2006/03/06(月) 01:15:44:ヽ.ニ=::て.>廴_ おやすみ
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0203175
2006/03/06(月) 01:16:261)ファイルを開く。
2)ファイルからCharを読む
3)CharをTokenに変える (CharはA-Z、+、*、(、)です。)
4)LR分析表を作る
5)Reduceする演算式を使う
の手順で作成するようにと言われました。
締め切りは、3月10日です。
どなたかお願いします。
0204デフォルトの名無しさん
2006/03/06(月) 01:17:020205デフォルトの名無しさん
2006/03/06(月) 01:18:090206デフォルトの名無しさん
2006/03/06(月) 01:18:13:ヽ.ニ=::て.>廴_ 技術手数料59,800円+諸経費39,800で
三.ヽ= (⌒ヽ;:;:;,.二) 99,600円になります
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0207デフォルトの名無しさん
2006/03/06(月) 01:24:380208デフォルトの名無しさん
2006/03/06(月) 01:34:21必ず荒れるんだから。
なんか、トリップ無し=荒らしのような気がしてならない。
0209デフォルトの名無しさん
2006/03/06(月) 01:36:430210デフォルトの名無しさん
2006/03/06(月) 01:50:06ここの3,4,5を作らなきゃならないんだが
さっぱりワカラナス
授業さぼりすぎた
0211デフォルトの名無しさん
2006/03/06(月) 01:56:12報酬は?
0212デフォルトの名無しさん
2006/03/06(月) 02:06:10授業さぼったレベルの話じゃすまされないと思うんだがw?
3.3
i=15
max = i + 10;
a = 0;
for(; i < max; i++){
a = 2 + (3 * i);
fprintf(stderr, "%x\r\n", a);
}
3.4
i = 4
factorial = 1;
while(i > 1){
factorial *= i;
i--;
}
fprintf(stdout, "%x\n", factorial);
3.5
i = 4
factorial = 1;
do{
factorial *= i;
i--;
}while(i > 1);
fprintf(stdout, "%x\n", factorial);
よっぱらってるからあってるかよくわからねぇw
しかしなんだこんなもん解らないんだったら、やばいと思うよ
0213デフォルトの名無しさん
2006/03/06(月) 02:06:33さすがにこれで報酬とっちゃだめだろw
0214デフォルトの名無しさん
2006/03/06(月) 02:06:350215デフォルトの名無しさん
2006/03/06(月) 02:09:03今画像見た
C言語つかプログラミング止めればいいのにと思った
0216デフォルトの名無しさん
2006/03/06(月) 02:12:58それよりも3.6で配列使うなってのがよくわからん
0217デフォルトの名無しさん
2006/03/06(月) 02:16:500218デフォルトの名無しさん
2006/03/06(月) 02:16:540219デフォルトの名無しさん
2006/03/06(月) 02:17:51それとも前方向リンクリストとか
スタックとかキューでも自作しろって
ことじゃね?
0220216
2006/03/06(月) 02:19:59(xn-u)^2出すには配列に入れんとだめだから2の公式使えってことか
0221デフォルトの名無しさん
2006/03/06(月) 02:20:31うはwwwww難しいことやってんだなwwwwwwww
0222デフォルトの名無しさん
2006/03/06(月) 02:21:270224デフォルトの名無しさん
2006/03/06(月) 02:28:07・・・はず。
0225デフォルトの名無しさん
2006/03/06(月) 02:36:060226デフォルトの名無しさん
2006/03/06(月) 02:39:20殺意すら感じる
出題者の単位への
0227デフォルトの名無しさん
2006/03/06(月) 06:25:41[2] 問題文:
読み込んだ文字列に含まれる任意の文字の個数を表示せよ。
例:文字列を入力せよ:aBbccdb
検索する文字を入力せよ:b
文字列aBbccdbの中にはbが2個あります。
(ヒント:char型のポインタを仮引数とする関数を作る。)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: 2006年3月7日(火)
[5] その他の制限:ポインタや構造体まで習いました。よろしくお願いします。
0228デフォルトの名無しさん
2006/03/06(月) 06:36:58:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ 文字のカウントとかもう飽きたのでスルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0229デフォルトの名無しさん
2006/03/06(月) 06:44:18#include <stdio.h>
int CountChar(char *Src, char Word)
{
int Count=0;
while (*Src!='\0')
{
if (*Src==Word)
{
Count++;
}
Src++;
}
return Count;
}
int main()
{
char *Src="aBbccdb";
char Word='b';
int Count;
Count=CountChar(Src, Word);
printf("%d\n", Count);
return 0;
}
0230デフォルトの名無しさん
2006/03/06(月) 06:51:02例をよく見ろ
入力はコマンドラインからだろ
0231デフォルトの名無しさん
2006/03/06(月) 06:58:12コンパイル通るかしらんがまあ十分っしょ
#include <stdio.h>
int search(char* str, char ch){
int count=0, i;
for(i=0; str[i]; ++i){
count += str[i] == ch;
}
return count;
}
int main(){
char str[256];
char ch[16];
printf("文字列を入力せよ:");
gets(str);
printf("検索する文字を入力せよ:");
gets(ch);
printf("%sの中には%cが%d個あります。\n", str, ch[0], search(str, ch[0]));
return 0;
}
0232デフォルトの名無しさん
2006/03/06(月) 07:01:55#include <stdio.h>
double f(int n, int m, double *E, double *var, double *min, double *max) {
if (m < n) {
double a;
scanf("%lf", &a);
*E += a;
if (*min > a) *min = a;
if (*max < a) *max = a;
f(n, m+1, E, var, min, max);
*var += (a-*E)*(a-*E);
} else {
*E /= n;
}
}
int main() {
int n;
scanf("%d", &n);
double E = 0, var = 0, min = 100000, max = -100000;
f(n, 0, &E, &var, &min, &max);
printf("%lf %lf %lf %lf\n", E, var, min, max);
}
0233デフォルトの名無しさん
2006/03/06(月) 07:13:09けっこういるな
0234デフォルトの名無しさん
2006/03/06(月) 07:15:31宿題解くのよりこういうの競ってるほうが楽しくない?
0235デフォルトの名無しさん
2006/03/06(月) 07:37:410236デフォルトの名無しさん
2006/03/06(月) 07:43:28「UVA,PKUなどのオンラインジャッジスレ」でも立ててくれ
0237216
2006/03/06(月) 08:12:27ガーン(゚д゚;) たしかに言われてみればそうだorz
1式だと各値を配列に記憶させないと(xi-u)^2が求められないから2式使いましょうって意図かと思った
つうか教授の意図はそれっぽい気もするんだがこの解答提出したらどういう反応示すのだろうか
023858
2006/03/06(月) 10:22:32一応、組んでみました。
ただ、number of characters の if が数字を読んでいないようです。(inputのtxtに数字が混ざっていた場合)
何か改良方法は有りますか?(これが直れば、意図通りです)
double na, ne, ni, no, nu, L, n;// main numbers in "while"
char a, c;
inFile.ignore(200,'\n');// ignore the 1st line
na = 0;// initial number of a and A
ne = 0;// initial number of e and E
ni = 0;// initial number of i and I
no = 0;// initial number of o and O
nu = 0;// initial number of u and U
L = 0;// initial number of line
n = 1;// initial number of characters
inFile.get(a);
while (inFile.get(c))// loop for counting the number
{
if(c=='a' || c=='A'){na++;}// for a and A (vowels)
if(c=='e' || c=='E'){ne++;}// for e and E (vowels)
if(c=='i' || c=='I'){ni++;}// for i and I (vowels)
if(c=='o' || c=='O'){no++;}// for o and O (vowels)
if(c=='u' || c=='U'){nu++;}// for u and U (vowels)
if(c=='\n'){L++;}// for line (without 1st line)
if(c==c){n++;}// for characters
}// end of loop for counting the number
0239デフォルトの名無しさん
2006/03/06(月) 10:38:38:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0240デフォルトの名無しさん
2006/03/06(月) 20:07:290241デフォルトの名無しさん
2006/03/06(月) 20:43:50/* >>238, 58
とりあえず、コメントを書くときは「わかりやすく意味を伝えることをメインに書いた方がいいよ。
「number of charactersのifが数字を読んでいない」って書いてあるけど、その場所が */ #include <iostream>
/*パッと見てどこだかわからないんじゃ、コメントの意味があんまりないでしょ?
たぶん、今の場合は
if(c==c){n++;}// for characters
のことを言っているんじゃないかと思うんだけど、ここは*/ int main(void){
/* ifの中身が( c==c )と全然意味がないことをやっているんじゃないかい?*/ cout <<
"ここはただ単に、 n++だけでいいんじゃないかと思うよ。ifにする必要なんじゃないか?" << endl;
/* とりあえず、nの内容が文字数を数えるだけなら、それで目的は達成できると思うから。*/return 0;}
0242デフォルトの名無しさん
2006/03/06(月) 20:57:28cout →std::cout
endl →std::endl
に置換しておくれ
0243デフォルトの名無しさん
2006/03/07(火) 01:49:53>>201を打ち直しました。
どなたかお願いします。
Stack Input Action
0 id + id * id $ Shift 5
0id5 + id * id $ Reduce 6 (use GOTO[0, F])
0F3 + id * id $ Reduce 4 (use GOTO[0, T])
0T2 + id * id $ Reduce 2 (use GOTO[0, E])
0E1 + id * id $ Shift 6
0E1+6 id * id $ Shift 5
0E1+6id5 * id $ Reduce 6 (use GOTO[6, F])
0E1+6F3 * id $ Reduce 4 (use GOTO[6, T])
0E1+6T9 * id $ Shift 7
0E1+6T9*7 id $ Shift 5
0E1+6T9*7id5 $ Reduce 6 (use GOTO[7, F])
0E1+6T9*7F10 $ Reduce 3 (use GOTO[6, T])
0E1+6T9$ Reduce 1 (use GOTO[0, E])
0E1$ Accept
0244デフォルトの名無しさん
2006/03/07(火) 01:55:07:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0245デフォルトの名無しさん
2006/03/07(火) 21:22:52A 9 B 2 C 4 D 8 E 6 F 3
stract data {char name [10]; int val;} da[10];
と宣言された構造体を用いて
このファイルからこれらの整数値データを読み込み
その平均値を求めるプログラムを作成しなさい
この問題が分かりません誰でもいいので教えてください!
0246デフォルトの名無しさん
2006/03/07(火) 21:31:290247デフォルトの名無しさん
2006/03/07(火) 21:31:57テンプレ読むべし>>1
0248デフォルトの名無しさん
2006/03/07(火) 21:35:30cin >> setbase(16);
int n = 0;
while (cin >> da[i].val)
++n;
int total = 0;
for (int i = 0; i < n; ++i)
total += da[i].val;
cout << setbase(16) << (total / n) << endl;
0249デフォルトの名無しさん
2006/03/07(火) 21:40:08#include <iostream>
#include <algorithm>
#include <iterator>
#include <numeric>
#include <fstream>
using namespace std;
struct data {char name [10]; int val;} da[10];
data operator+ (const data& lhs, const data& rhs)
{ data result; result.val = lhs.val, result.val += rhs.val; return result; }
istream& operator>>(istream& is, data& d) { is >> d.name >> d.val; return is; }
int main()
{
ifstream fin("data.txt");
data *p = copy(istream_iterator<data>(fin), istream_iterator<data>(), da);
data d = {0};
cout << (double)accumulate(da, p, d).val / (p - da) << endl;
}
0250デフォルトの名無しさん
2006/03/07(火) 21:45:09このほうが良くね?
int operator+(int val,const data&d){return val+d.val;}
0251補数
2006/03/07(火) 21:53:49[2] 問題文:後ほど記載いたします
[3.1] OS:xp
[3.2] gcc 3.4
[3.3]C言語のみ
[4] 期限:
[5] その他の制限: ほとんど初歩です^^;
宜しくお願いします。
0252デフォルトの名無しさん
2006/03/07(火) 21:54:28ただ、本当に申し訳ないのですが
ポインタと構造体とファイルの基礎の基礎しか習ってないので
(#include<stdio.h>から始めるのしか習っていません…)
出来ればそれをふまえてお願いできませんでしょうか?
わがままなやつで本当に申し訳ありません。
0253補数
2006/03/07(火) 21:55:01#include <math.h>
#define N 4
int bin_sum(char bin1[N], char bin2[N], int sign);
int main(int argc, char* argv[])
{
char bin1[N] = {'0', '1', '0', '1'};
char bin2[N] = {'1', '0', '1', '0'};
int result;
//正の2進数として加算
result = bin_sum(bin1, bin2, 0);
printf("5(0101)+10(1010)=%d\n", result);
//負の2進数(2の補数)として加算
result = bin_sum(bin1, bin2, 1);
printf("5(0101)+(-6)(1010)=%d\n", result);
return 0;
}
0254補数
2006/03/07(火) 21:56:07int bin_sum(char bin1[N], char bin2[N], int sign)
{
int dec1= 0, dec2 = 0, result = 0, i;
if (sign == 0) {//正の2進数を加算
for (i = N; i > 0; i--) {
//bin1の2進数を10進数に変換
if (bin1[N-i] == '1')
dec1 = dec1 + (int)pow(2.0, (double)(i-1));
//bin2の2進数を10進数に変換
if (bin2[N-i] == '1')
//dec2 = dec2 + 1 * 2^(i-1);
dec2 = dec2 + (int)pow(2.0, (double)(i-1));
}
result = dec1 + dec2;
} else if (sign == 1) {//2の補数を計算
for (i = N; i > 0; i--) {
//bin1の2進数を10進数に変換
if (bin1[N-i] == '1')
dec1 = dec1 + (int)pow(2.0, (double)(i-1));
//bin2の2進数を10進数に変換
if (bin2[N-i] == '1')
dec2 = dec2 + (int)pow(2.0, (double)(i-1));
}
dec2 = ~dec2 + 1;
result = dec1 + dec2;
}
return result;
}
0255デフォルトの名無しさん
2006/03/07(火) 21:56:46[2] 問題文:>>245
[3.1] OS:xp
[3.2]
[3.3]C言語のみ
[4] 期限:明日8時までに回答いただければ
[5] その他の制限:基礎中の基礎しか習っていません
0256補数
2006/03/07(火) 22:00:48("5(0101)+(-6)(1010)= の値が-1にならないといけないのですが
なりません^^;
もしよろしければ正しく修正して頂けないでしょうか??
0257デフォルトの名無しさん
2006/03/07(火) 22:08:39#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int bin_sum(const char*bin1,const char*bin2, int sign);
int main(int argc, char* argv[])
{
const char*bin1 = "0101";
const char*bin2 = "1010";
int result;
result = bin_sum(bin1, bin2, 0);
printf("5(0101)+10(1010)=%d\n", result);
result = bin_sum(bin1, bin2, 1);
printf("5(0101)+(-6)(1010)=%d\n", result);
return 0;
}
int bin_sum(const char*bin1,const char*bin2, int sign){
return strtol(bin1,NULL,2)+strtol(bin2,NULL,2)+(-(sign&*bin2)<<strlen(bin2));
}
0258デフォルトの名無しさん
2006/03/07(火) 22:08:470259デフォルトの名無しさん
2006/03/07(火) 22:08:53printf("5(0101)+(-6)(1010)=%d\n", result);
ここをこうする
printf("5(0101)+(-6)(1010)=%d\n", -1);
0261デフォルトの名無しさん
2006/03/07(火) 22:45:05{
int dec1 = 0, dec2 = 0;
char *p;
for( p = bin1 ; *p ; p++, dec1 *= 2 ) if( *p == '1' ) dec1++;
for( p = bin2 ; *p ; p++, dec2 *= 2 ) if( *p == '1' ) dec2++;
return dec1 + dec2 - (sign == 1)?(1<<N):0;
}
0262デフォルトの名無しさん
2006/03/07(火) 23:05:11反則というなら規則を示せ。
情報を小出しにするな。
0263補数
2006/03/07(火) 23:30:04確かにそうですね。
ほとんどプログラムは完成に近いと思いますので、
なるべく状態を維持したままお願いします^^;
0264デフォルトの名無しさん
2006/03/08(水) 00:45:30#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
struct data{
char name [10];
int val;
}da[10];
int main(void)
{
FILE *in;
char *delim = " \n";/*区切り文字*/
char *p ;/*その時点での文字列*/
int nummber;/*入力用*/
int i;/*for文用*/
int num = 0;/*合計*/
double aver;/*平均*/
char buf[MAX];
if((in = fopen("data.txt","r")) == NULL ){
fprintf(stderr,"cant open file");
exit(1);
}
0265デフォルトの名無しさん
2006/03/08(水) 00:46:03while((fgets(buf,sizeof(buf),in)) != NULL){
p = strtok(buf,delim);
for(i = 0; i<=9; i++){
strcpy(da[i].name, p);
p = strtok(NULL,delim);
nummber = atoi(p);
da[i].val = nummber;
printf("%d\n",da[i].val);
if(NULL == strtok(NULL,delim))
break;
}
}
for(i = 0; i<=9; i++){
num +=da[i].val;
}
aver = num/10.0;
printf("平均値%f\n",aver);
return 0;
}
0266デフォルトの名無しさん
2006/03/08(水) 13:17:00[2] 問題文(含コード&リンク):多いですがよろしくお願いします。<(__)>
1.コマンドラインから四角形の辺の長さを入力すると、以下のように表示する。
実行例は以下のとおり。
#########
# #
# #
#########
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: (C言語)
0267デフォルトの名無しさん
2006/03/08(水) 13:18:00後2問はこれです。
2.コマンドラインから指定した任意個数の引数の最大値、最小値、平均値を求める。
実行例は以下のとおり。
./a.out 23 5 17 11 13 7 19 2 3
(表示↓)
23 2 11.1
3.10000円未満の支払い金額をコマンドラインから入力すると、10000円札で
支払った場合のお釣りを金種別に表示する。実行例は以下のとおり。
./a.out 2816
(表示↓)
5000 1
1000 2
500 0
100 1
50 1
10 3
5 0
1 4
0268デフォルトの名無しさん
2006/03/08(水) 13:19:13\\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0269デフォルトの名無しさん
2006/03/08(水) 13:19:370270デフォルトの名無しさん
2006/03/08(水) 13:30:02:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ 3000円になります
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0271デフォルトの名無しさん
2006/03/08(水) 13:33:25#include <stdio.h>
#define xx int
#define xxx xxxx(scan)
#define xxxx(x) x##f
#define xxxxx xxxx(print)
#define xyx(x) for (i=0;i<x;++i)
#define xyz(x, z) x-z
#define xxy ;
int main(void){xx cx, cy, i xxy xxx("%d %d",\
&cx, &cy) xxy xyx(cx) xxxxx("#") xxy xxxxx("\n") xxy
while (cy-->2) {xxxxx("#");xyx(xyz(cx,2)) xxxxx(" ");
xxxxx("#\n") xxy}xyx(cx) xxxxx("#") xxy
xxxxx("\n") xxy return 0;}
0272デフォルトの名無しさん
2006/03/08(水) 13:38:57(1)
#include<stdio.h>
#include<stdlib.h>
int main(int c,char**v){
int w = atoi(v[1]),h = atoi(v[2]),d;
for(c=w;c--;)putchar('#');putchar('\n');
for(c=h-2;c--;putchar('#'),putchar('\n'))
for(d=w-2,putchar('#');d--;)putchar(' ');
for(c=w;c--;)putchar('#');putchar('\n');
return 0;
}
(2)
#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
int main(int c,char**v){
int d=0,w,ma=INT_MIN,mi=INT_MAX;
while(*++v)d += w=atoi(*v),ma=w>ma?w:ma,mi=mi>w?w:mi;
printf("%d %d %.1f\n",ma,mi,1.*d/--c);
return 0;
}
(3)
#include<stdio.h>
#include<stdlib.h>
int main(int c,char**v){
int n=(c=5000)*2-atoi(v[1]);
while(c)printf("%d %d\n",c,n/c),n%=c,c/=5,printf("%d %d\n",c,n/c),n%=c,c/=2;
return 0;
}
0273デフォルトの名無しさん
2006/03/08(水) 13:44:06テクを使っているのは理解するが、もうちょっと、分りやすく書け。
0274デフォルトの名無しさん
2006/03/08(水) 13:45:590275留年勘弁 ◆4hcHBs40RQ
2006/03/08(水) 14:00:01[2] 問題文(含コード&リンク):
#include<stdio.h>
int bitcount(unsigned char n){
n -= n>1&85;
n = (n&51)+(n>2&51);
return n+(n>4) & 15;
}
int main(){
char c;
scanf(" %c",&c);
printf("%cのbitが1の数は%dです。\n",c,bitcount(c));
}
上のコードを入力された複数文字(文字列)のすべての文字コードに含まれる1ビット数の
合計を出力できるようにしなさい
0276デフォルトの名無しさん
2006/03/08(水) 14:00:35バロス
0277デフォルトの名無しさん
2006/03/08(水) 14:00:35あと3問でおわりです。贅沢ですがお願いします。
4.コマンドラインからテキストファイル名、結果を記録するファイル名を入力
すると、テキストファイルの内容を読み出して奇数行目だけを抜き出して
結果を記録するファイルに書き込む。実行例は以下のとおり。
./a.out sample.txt result.txt
5.コマンドラインからバイナリデータファイルの名前とデータの個数を入力
するとファイルの先頭からfloatの値を指定した個数読み出してその和を表示する。
実行例は以下のとおり。
./a.out sample.bin 12
6.コマンドラインから整数を指定すると、その値の2乗、3乗、4乗、5乗を求める。
ただし、計算は関数 void f156(int a, int *p2, int *p3, int*p4, int *p5)
で行うこと。f156には入力された数をaとしてあたえ、2乗から5乗をp2 -- p5に代入
する、結果の表示はmain()中で行うこと。実行例は以下のとおり。
./a.out 10
(表示↓)
100 1000 10000 100000
0278留年勘弁 ◆4hcHBs40RQ
2006/03/08(水) 14:01:10int main(){
char buf[21],*p=gets(buf);
int n=0; lsloe
for(;*p;++p)n+=*p-'0';
printf("%d\n",n);
}
上のコードを、数字の前にマイナス記号(―)がある場合は
直後の数字を負の数として計算するようにしなさい。
[3] 環境
[3.1] OS: Windows
[3.2] VC 6.0
[3.3] 言語:cのみ
[4] 期限: 追試中なので今すぐお願いしたいです。
[5] その他の制限:ないです
0279デフォルトの名無しさん
2006/03/08(水) 14:02:12:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0280デフォルトの名無しさん
2006/03/08(水) 14:03:36:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0281留年勘弁 ◆4hcHBs40RQ
2006/03/08(水) 14:04:560282デフォルトの名無しさん
2006/03/08(水) 14:06:060283デフォルトの名無しさん
2006/03/08(水) 14:07:120284留年勘弁 ◆4hcHBs40RQ
2006/03/08(水) 14:07:22後でなら私に出来ることなんでもしますんでお願いします
0285留年勘弁 ◆4hcHBs40RQ
2006/03/08(水) 14:11:39冗談抜きにやばい;;
0286デフォルトの名無しさん
2006/03/08(水) 14:13:07れが死 |ハ{{ }} )))ヽ、l l ハ
が |、{ ハリノノノノノノ)、 l l
い |ヽヽー、彡彡ノノノ} に
い |ヾヾヾヾヾヽ彡彡} や
!! /:.:.:.ヾヾヾヾヽ彡彡} l っ
\__/{ l ii | l|} ハ、ヾ} ミ彡ト
彡シ ,ェ、、、ヾ{{ヽ} l|l ィェ=リ、シ} |l
lミ{ ゙イシモ'テ、ミヽ}シィ=ラ'ァ、 }ミ}} l
ヾミ  ̄~'ィ''': |゙:ー. ̄ lノ/l | |
ヾヾ " : : !、 ` lイノ l| |
>l゙、 ー、,'ソ /.|}、 l| |
:.lヽ ヽ ー_ ‐-‐ァ' /::ノl ト、
:.:.:.:\ヽ 二" /::// /:.:.l:.:.
:.:.:.:.:.::ヽ:\ /::://:.:,':.:..:l:.:.
0287デフォルトの名無しさん
2006/03/08(水) 14:23:410288留年勘弁 ◆4hcHBs40RQ
2006/03/08(水) 14:24:170289デフォルトの名無しさん
2006/03/08(水) 14:24:38だるー
(4)
#include<stdio.h>
int main(int c,char**v){
FILE*fin=fopen(v[1],"r"),fout=fopen(v[2],"w");int m=0;
for(;(c=getc(fin))!=EOF;m^=c=='\n')(m&&c-'\n')||putc(c,fout);
fclose(fout);fclose(fin);return 0;
}
(5)
#include<stdio.h>
#include<stdlib.h>
int main(int c,char**v){
FILE*fin=fopen(v[1],"rb");float f,sum=0;
for(c=atoi(v[2]);c--;)fread(&f,1,sizeof(f),fin),sum+=f;
printf("%f\n",sum);
return 0;
}
(6)
void f156(int a, int *p2, int *p3, int*p4, int *p5){
int n = a;*p2 = n*=a;*p3 = n*=a;*p4 = n*=a;*p5 = n*=a;
}
#include<stdio.h>
#include<stdlib.h>
int main(int c,char**v){
int a[4],i;f156(atoi(v[1]),a,a+1,a+2,a+3);
for(i=0;i<4;++i)printf("%d ",a[i]);puts("");
return 0;
}
0290デフォルトの名無しさん
2006/03/08(水) 14:29:34#define xx for
#define xxx int
#define xxxx char
#define xxxxxx void
using namespace std;
xxxxxx xxxxx(xxxx **x,xxxx y,xxx *c){*c-=y-'0';}
xxx main(){xxx n=0;xxxx buf[21],*p=gets(buf);xx(xxx i;*p;++p){if(*p=='-'){xxxxx(&p,*++p,&n);continue;}n+=*p-'0';}cout << n;}
ポインタすらまだよく分からんのに適当に作ったら動いた
0291デフォルトの名無しさん
2006/03/08(水) 14:31:16ありがとうございました!これからは教えられる側になれるように精進します。感謝
0292デフォルトの名無しさん
2006/03/08(水) 14:33:032問目バロス
0293留年勘弁 ◆4hcHBs40RQ
2006/03/08(水) 14:33:130294デフォルトの名無しさん
2006/03/08(水) 14:34:340295デフォルトの名無しさん
2006/03/08(水) 14:36:59#のこと?
0296デフォルトの名無しさん
2006/03/08(水) 14:37:30そ れ だ !
サンクス
0297デフォルトの名無しさん
2006/03/08(水) 14:38:50#include <stdio.h>
#define xx for
#define xxx int
#define xxxx char
#define xxxxxx void
xxxxxx xxxxx(xxxx **x,xxxx y,xxx *c){*c-=y-'0';}
xxx main(){xxx n=0;xxxx buf[21],*p=gets(buf);xx(;*p;++p){if(*p=='-'){xxxxx(&p,*++p,&n);continue;}n+=*p-'0';}printf("%d",n);}
>>290をCに勝手に修正
0298デフォルトの名無しさん
2006/03/08(水) 14:39:30しょうがねぇなぁ。
0299デフォルトの名無しさん
2006/03/08(水) 14:40:270300デフォルトの名無しさん
2006/03/08(水) 14:41:56すいません
(4)で
15-4.c : In function ‘main’:
15-4.c:3: error: 無効な初期化子
15-4.c:4: error: incompatible type for argument 2 of ‘_IO_putc’
15-4.c:5: error: incompatible type for argument 1 of ‘fclose’
というエラーが出るんですが。。。
0301デフォルトの名無しさん
2006/03/08(水) 14:42:02それじゃダメだろ
二段以上で展開しろ
0302デフォルトの名無しさん
2006/03/08(水) 14:44:06ああ、ごめん1レスに収めるための圧縮でミスがあったわw
#include<stdio.h>
int main(int c,char**v){
FILE*fin=fopen(v[1],"r"),*fout=fopen(v[2],"w");
int m=0;
for(;(c=getc(fin))!=EOF;m^=c=='\n')(m&&c-'\n')||putc(c,fout);
fclose(fout);fclose(fin);
return 0;
}
0303デフォルトの名無しさん
2006/03/08(水) 14:46:25#include <stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
printf("%d\n",n);
return 0;
}
0304デフォルトの名無しさん
2006/03/08(水) 14:46:270305留年勘弁 ◆4hcHBs40RQ
2006/03/08(水) 14:48:56ヒキオタデブが留年ヒキオタデブor無職ヒキオタデブに
なってしまうところでした
0306デフォルトの名無しさん
2006/03/08(水) 14:50:150307デフォルトの名無しさん
2006/03/08(水) 14:54:58出来ました。ありがとうございました。
0308留年勘弁 ◆4hcHBs40RQ
2006/03/08(水) 15:01:53#include <stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
printf("%d\n",n);
return 0;
}
abcと入れると150と出ます
例では10なのですが・・・。
0309デフォルトの名無しさん
2006/03/08(水) 15:02:550310留年勘弁 ◆4hcHBs40RQ
2006/03/08(水) 15:04:27aaa
307
これを10と表示しないといけないみたいです
0311デフォルトの名無しさん
2006/03/08(水) 15:07:040312デフォルトの名無しさん
2006/03/08(水) 15:07:580313デフォルトの名無しさん
2006/03/08(水) 15:09:470314留年勘弁 ◆4hcHBs40RQ
2006/03/08(水) 15:27:37追試は不合格でしたが、追認が受けられるので・・・。
0315名無しさん@お腹いっぱい。
2006/03/08(水) 15:31:36遅くなった。申し訳ない
#include <stdio.h>
int pp(unsigned x){x=x-((x>>1)&0x55555555);x=(x&0x33333333)+((x>>2)&0x33333333);x=(x+(x>>4))&0x0f0f0f0f;x=x+(x>>8);x=x+(x>>16);return x&0x0000003f;}
int main(){char a[64];int k=0,i;printf("文字列->");scanf("%s",a);for(i=0;a[i]!='\0';i++){k+=pp((unsigned)a[i]);}printf("ビット->%d",k);}
0316デフォルトの名無しさん
2006/03/08(水) 15:31:39もう、提出した?
ネタ回答なんで、提出すんなよ。
0317留年勘弁 ◆4hcHBs40RQ
2006/03/08(水) 15:39:210318デフォルトの名無しさん
2006/03/08(水) 15:44:22追試代がもったいないので、受験しないことを提案する。
「16×16のマス目において、*(点がある)+(点がない、空白)と解釈し、
*で囲まれた領域とその数を求めなさい。
なおデータは配列の初期値としてユーザーが与えることとする。」
って問題誰か配列とvoidの関数しか使わないっていう
超単純なプログラム面倒だとは思いますが今日中に作ってくれませんか?
俺も留年にリーチがかかりそうなんです…
0320リーチキタ━━━(゚∀゚)━━━!!
2006/03/08(水) 16:21:390321デフォルトの名無しさん
2006/03/08(水) 16:30:490323デフォルトの名無しさん
2006/03/08(水) 16:35:19こういうのは、どう反応すればいいのですか?
0324デフォルトの名無しさん
2006/03/08(水) 16:37:58:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ 報酬は?
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0325デフォルトの名無しさん
2006/03/08(水) 16:42:440326デフォルトの名無しさん
2006/03/08(水) 16:45:13:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0327デフォルトの名無しさん
2006/03/08(水) 16:46:21:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ 報酬はイランガナ
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0328デフォルトの名無しさん
2006/03/08(水) 16:47:35#define Y(a, b) Z(b, a)
#define Z(a, b) a##b
使用法。int -> X(i, Y(t, n))
#define OOO0OOO a
とか組みあわせる
0329デフォルトの名無しさん
2006/03/08(水) 16:58:29#define BEGIN {
#define END ;}
#define IF if
#define THEN BEGIN
#define ELSE END else BEGIN
#define ENDIF END
例
IF ( a == b )
THEN
puts("a == b")
ELSE
puts("a != b")
ENDIF
0330デフォルトの名無しさん
2006/03/08(水) 19:17:27端16x16のフィールドを作って
端の+をマインスイーパー感覚で再帰関数を使ってオープンしていき
全ての端を調べ終わったときに残ってる空白が*に囲まれている領域
書くのめんどくさいので誰かやれ
0331デフォルトの名無しさん
2006/03/08(水) 19:28:330332デフォルトの名無しさん
2006/03/08(水) 19:33:10(2)引数がvoid
(3)双方ともvoid
(4)実はmain関数のこと
0333デフォルトの名無しさん
2006/03/08(水) 19:36:40日下部の関数とか。
void func(void);かなぁ。
0334デフォルトの名無しさん
2006/03/08(水) 19:39:170335デフォルトの名無しさん
2006/03/08(水) 19:40:330336デフォルトの名無しさん
2006/03/08(水) 19:44:26printfもscanfも使う必要はない
0337デフォルトの名無しさん
2006/03/08(水) 19:47:020338デフォルトの名無しさん
2006/03/08(水) 19:50:260340デフォルトの名無しさん
2006/03/08(水) 20:17:11それに近いのがどっかで晒されてたような気がする。
確かどこかの大学の教科書だったような。
0341デフォルトの名無しさん
2006/03/08(水) 20:38:30>>340
オリジナルの Borne Shell がそんなの使ってるという話を見た事がある。
0342デフォルトの名無しさん
2006/03/08(水) 20:39:010343デフォルトの名無しさん
2006/03/08(水) 20:40:02そんなのがエキスパートCプログラミングに載ってたな
0344デフォルトの名無しさん
2006/03/08(水) 20:40:50どうせこの時期に宿題持ち込む奴なんて追試食らうようなヤバイ奴だけだろ
0345デフォルトの名無しさん
2006/03/08(水) 20:50:220346デフォルトの名無しさん
2006/03/08(水) 21:00:13換言するとまだ余裕があるってことだよナッ
0347デフォルトの名無しさん
2006/03/08(水) 21:04:040348デフォルトの名無しさん
2006/03/08(水) 21:17:00降年って東大以外でやってるとこあんの?
0349デフォルトの名無しさん
2006/03/08(水) 21:38:10printfは許せ。
#include <stdio.h>
void main(void){char f[16*16+1] = {
"*+**************" "****************" "****************" "****+***********"
"****************" "****************" "*****+++++******" "****************"
"****************" "**************++" "**************++" "****************"
"******+++**+****" "*******+++******" "*********++*****" "****************"};
int c = 0;for(;;){bool b;for(;;){b=true;for(int i=0; i<16*16+1; ++i){
if(f[i]=='+'){if(!(i/16)||!(i/16-15)||!(i%16)||!(i%16-15)){f[i]='\0';b=false;
}else if(!f[i-1]||!f[i+1]||!f[i-16]||!f[i+16]){f[i]='\0';b=false;}}}if(b) break;}
for(int i=0; i<16*16+1&&b; ++i){if(f[i]=='+'){f[i]='\0';b = false;++c;}}if(b) break;}
printf("%d", c);}
あと面接があるんで中身何やってるか詳しく教えていただけますか?
いろいろ注文つけてごめんなさい…
0351デフォルトの名無しさん
2006/03/08(水) 21:57:34・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
0352デフォルトの名無しさん
2006/03/08(水) 21:58:220353デフォルトの名無しさん
2006/03/08(水) 21:59:21すいません、自分で理解しようと思ってたんですが実力がないので無理でした…
0355デフォルトの名無しさん
2006/03/08(水) 22:37:010356デフォルトの名無しさん
2006/03/08(水) 22:37:45↑
今ここ
⇒仕方ないので自分でやる⇒見やすいようにソースを分解⇒眺めてみる⇒理解する⇒糸冬
申し訳ないです、がんばります!
でもコンパイルできるのに何にも表示しないんですが…
0358デフォルトの名無しさん
2006/03/08(水) 23:32:380359デフォルトの名無しさん
2006/03/08(水) 23:33:13ちゃんとコピペしたか?
実行すると数字が表示されるぞ
0360デフォルトの名無しさん
2006/03/08(水) 23:38:31うほっ!
エラーでまくるww
0361デフォルトの名無しさん
2006/03/08(水) 23:39:28Cでやってるでしょ?
もし分からないとこあったらまた質問させていただきます。
よろしくお願いします。
0363デフォルトの名無しさん
2006/03/08(水) 23:42:28Cだった・・・
0364デフォルトの名無しさん
2006/03/08(水) 23:54:170365デフォルトの名無しさん
2006/03/09(木) 00:09:00・・・すげえw
そういや、「宿題解いてくれたら、後でなんでもします」的な書き込みで、
その後なにかしているのを見たことがないなw
0366デフォルトの名無しさん
2006/03/09(木) 00:10:220367デフォルトの名無しさん
2006/03/09(木) 00:16:080368sage
2006/03/09(木) 12:42:04[2] 問題文(含コード&リンク): http://www.eecs.wsu.edu/~hundhaus/teaching/cpts121/progassignments/cpts121-Fa2005-pa2.html
[3] 環境
[3.1] OS: Windows
[3.2] Visual studio .net
[3.3] 言語:C
[4] 期限: 無期限
[5] その他の制限: 問題に挑戦してるのですが doubleからintへの変換で止まってます。
どなたかわかる人が居たらお願いします。
読めないから翻訳して提出して。
0370デフォルトの名無しさん
2006/03/09(木) 14:37:20手遅れか
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void get_randam(int block[16][16]);
int main(void)
{
int block[16][16];/*ブロック数*/
int i,j;/*for用*/
int k = 0;/*囲まれてる数*/
time_t t;
t =time(&t);
srand(t);
get_randam(block);
for(i = 0; i < 16; i++){
for(j = 0; j < 16; j++){
block[i][j] ;
if(block[i][j] == 1) printf("%2c",'*');
else if (block[i][j] == 0) printf("%2c",'+');
if(j == 15) putchar('\n');
0371デフォルトの名無しさん
2006/03/09(木) 14:37:51}
/*上下左右だけ(壁、四隅を除く)*/
for(i = 1; i < 15; i++){
for(j = 1; j < 15; j++){
block[i][j] ;
if(block[i][j] == 0){
if(block[i - 1][j] & block[i][j - 1] & block[i][j + 1] & block[i + 1][j + 1] )
k++;
}
}
}
printf("%d",k);
return 0;
}
void get_randam(int block[16][16])
{
int i = 0, j = 0;/*for用*/
int x = 0;/*ランダム数用*/
for(i = 0; i < 16; i++){
for(j = 0; j < 16; j++){
x = rand() % 2;
if(x == 0)
block[i][j] = 0;
else if (x == 1)
block[i][j] = 1;
}
}
}
0372デフォルトの名無しさん
2006/03/09(木) 15:39:19#include <stdio.h>
#include<math.h>
#define PI 3.1415926535
#define L(X,Y) for(i=X;i<Y;i++)
#define ODD 0
#define EVEN 1
double read_double(FILE *infile){double d;fscanf(infile, "%lf", &d);return d;}
int round_double_to_int(double number){return (int)(number+.5);}
int mod_integers(int number1, int number2){return number1%number2;}
int is_even(int number){return(number&1)?ODD:EVEN;}
double multiply_double(double number1, double number2){return number1*number2;}
double divide_double(double number1, double number2){return(number2==0.0)?0.0:(number1/number2);}
double compulte_sqrt(double number){return sqrt(number);}
int translate_random(double number){double n=number; return round_double_to_int((n<0.0)?(-PI*n):(n<11.0)?(2.0*n):(n<21.0)?(n+1.0):(n<31.0)?(n+PI):(n<41)?(n/4.0):(n<=50.0)?(n-1.0):(n+n-1.0));}
void print_int(FILE *outfile, int number){fprintf(outfile, "%d",number);}
void print_double(FILE *outfile, double number){fprintf(outfile,"%1000f",number);} //()の意味がよく分からん
int main(void){FILE*ifp=fopen("input.dat","r"),*ofp=fopen("output.dat","w");double d[10]; int i;
L(0,5)d[i]=read_double(ifp);
L(0,5)print_double(ofp,divide_double(d[i],PI));
L(0,5)print_double(ofp,divide_double(d[i],0.0));
L(5,10)d[i]=read_double(ifp);
L(0,10)print_double(ofp,multiply_double(d[i],PI));
L(0,5)print_int(ofp,round_double_to_int(d[i]));
L(0,5)print_int(ofp,is_even(round_double_to_int(d[i])));
L(5,10)print_int(ofp,mod_integers(round_double_to_int(d[i]),5));
L(0,5)print_double(ofp,compulte_sqrt(d[i]));
L(0,5)print_int(ofp,translate_random(d[i]));
fclose(ifp);fclose(ofp);return 0;
}
ギリギリ?意味が分からんところは自分で修正ヨロ。こんなコード自分でも書きたくない。
0373372
2006/03/09(木) 16:07:49#include <stdio.h>
#include <math.h>
#define PI 3.1415926535897932384626433832795
#define ODD 0
#define EVEN 1
#define L for(i=0;i<5;i++)
double read_double(FILE *infile){double d;fscanf(infile, "%lf", &d);return d;}
int round_double_to_int(double number){return (int)(number+.5);}
int mod_integers(int number1,int number2){return number1%number2;}
int is_even(int number){return(number&1)?ODD:EVEN;}
double multiply_double(double number1, double number2){return number1*number2;}
double divide_double(double number1, double number2){return(number2==0.0)?0.0:(number1/number2);}
double compulte_sqrt(double number){return sqrt(number);}
int translate_random(double number){double n=number;return round_double_to_int((n<0.0)?(-PI*n):(n<11.0)?(2.0*n):(n<21.0)?(n+1.0):(n<31.0)?(n+PI):(n<41)?(n/4.0):(n<=50.0)?(n-1.0):(n+n-1.0));}
void print_int(FILE *outfile,int number){fprintf(outfile, "%d\n",number);}
void print_double(FILE *outfile, double number){fprintf(outfile,"%.3f\n",number);}
int main(void){FILE*ifp=fopen("input.dat","r"),*ofp=fopen("output.dat","w");double d[5];int i;
L d[i]=read_double(ifp);
L print_double(ofp,divide_double(d[i],PI));
L print_double(ofp,divide_double(d[i],0.0));
L d[i]=read_double(ifp);
L print_double(ofp,multiply_double(d[i],PI));
L print_int(ofp,round_double_to_int(d[i]));
L print_int(ofp,is_even(round_double_to_int(d[i])));
L print_int(ofp,mod_integers(round_double_to_int(d[i]),5));
L print_double(ofp,compulte_sqrt(d[i]));
L print_int(ofp,translate_random(d[i]));
fclose(ifp);fclose(ofp);return 0;}
0374デフォルトの名無しさん
2006/03/09(木) 16:47:28凄いよ先生!!惚れました僕と寝て下さい。
0376デフォルトの名無しさん
2006/03/09(木) 17:29:38俺でも頭ひねれば出来そうな問題プリーズ
0377デフォルトの名無しさん
2006/03/09(木) 17:35:26俺に彼女が出来るPGを考え作成せよ。
尚、提出期限は3/12(日)までとする。
0378デフォルトの名無しさん
2006/03/09(木) 17:36:58いくらで売れるかな
0379デフォルトの名無しさん
2006/03/09(木) 17:48:590380デフォルトの名無しさん
2006/03/09(木) 17:51:32PGなら作った後放置プレイ
待ってるだけで金が舞い込んでくる
0381デフォルトの名無しさん
2006/03/09(木) 17:59:591〜4次元のどれをお望みですか?
0382デフォルトの名無しさん
2006/03/09(木) 18:38:201次元で^^
0383デフォルトの名無しさん
2006/03/09(木) 19:09:280384デフォルトの名無しさん
2006/03/09(木) 19:24:27#include <stdio.h>
#include <stdbool.h>
unsigned char hash(const char *s)
{
unsigned char ret = 0;
while(*s)
{
ret ^= *s;
ret = ret << 1 | ret >> 7;
s++;
}
return ret;
}
int main(void)
{
char cmd[1000];
unsigned kanojo = 0;
while(true)
{
for(int i = 1; i < 32; i++)
putchar(kanojo & (1 << i) ? '*' : '-');
printf("\n> ");
fgets(cmd, 1000, stdin);
kanojo ^= hash(cmd);
if(kanojo & 1) kanojo <<= 1;
}
}
0385デフォルトの名無しさん
2006/03/09(木) 19:40:10[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):A−C連続問題
A. 0〜99までの整数をランダムに100個発生させ、配列TBL(0)から(99)に格納。
データを配列順に出力。
B. Aのデータを昇順に整列、結果を出力。整列アルゴリズムは基本交換法を使用する。
C. 0〜99までの整数を1つ発生させ、Bのデータから二文探索法により検索。
見つかった場合「**は、TBL(**)にあります」とする。
データが見つからなかった場合は「**はTBL()に存在しません。」と出力した上で
見つかるまでCを繰り返す。
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: (10日まで)
[5] その他の制限: (1年生の授業なので出来るだけ簡単に)
0386デフォルトの名無しさん
2006/03/09(木) 19:41:380387デフォルトの名無しさん
2006/03/09(木) 20:06:080388デフォルトの名無しさん
2006/03/09(木) 20:08:42A)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 100
void ran_d(int array[MAX]);
int main(void)
{
int array[MAX];
int i;
time_t t;
t = time(&t);
srand(t);
ran_d(array);
for(i = 0; i < MAX ; i++){
printf("%d\n",array[i]);
}
return 0;
}
void ran_d(int array[MAX])
{
int i;
for(i = 0; i < MAX; i++){array[i] = (rand() % 100);}
}
0389デフォルトの名無しさん
2006/03/09(木) 20:12:15for(int i=0;i<100;i++){ tbl[i]=rand()%100; printf("%d\n",tbi[i]); }
俺ここまでしか和姦ねー
基本交換法って何?バブルソートのこと?
0390デフォルトの名無しさん
2006/03/09(木) 20:13:39バブルソートのことです。
0391デフォルトの名無しさん
2006/03/09(木) 20:21:50こんなもんすら解けないのか
0392デフォルトの名無しさん
2006/03/09(木) 20:25:24for(i = 1; i < MAX ; i++){
for(j = i; j >= 1; j--){
if(array[j] < array[j-1]){
temp = array[j];
array[j] = array[j-1];
array[j-1] = temp;
}
}
}
0393デフォルトの名無しさん
2006/03/09(木) 20:25:480395デフォルトの名無しさん
2006/03/09(木) 20:29:210397デフォルトの名無しさん
2006/03/09(木) 20:31:03for(h=1; h<MAX; h=h*3+1)
;
for( ;h>0; h/=3)
{
for(i=h; i<MAX; ++i)
{
j = i;
while(j >= h && array[j-h] > array[j])
{
temp = array[j];
array[j] = array[j-h];
array[j-h] = temp;
j -= h;
}
}
}
0398デフォルトの名無しさん
2006/03/09(木) 20:35:22for(i = 0; i < MAX; i++){
for(j = 0; j < MAX; j++){
if(array[i] > array[j]){
temp = array[j];
array[j] = array[i];
array[i] = temp;
}}}
0399デフォルトの名無しさん
2006/03/09(木) 20:38:04for(i=0;i<MAX-1;i++){
for(j=0;j<4-i;j++){
if(array[j] > array[j+1]){
int tmep = array[j];
array[j] = array[j+1];
array[j+1] = tmep;
}
}
}
0400デフォルトの名無しさん
2006/03/09(木) 20:40:171レスに収めるために
改行消したりしてるから適当にコードは解凍しといてください。
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
int main(){
int TBL[100],i,j,k,l,m;
srand(time(NULL));
for(i=0;i<100;++i)printf("%d ",TBL[i] = rand()%100);
printf("\n\n");
for(i=0;i<100;++i)for(j=100;--j>i;) if(TBL[j] < TBL[i])k = TBL[i],TBL[i] = TBL[j],TBL[j] = k;
for(i=0;i<100;++i)printf("%d ",TBL[i]);
printf("\n\n");
for(;;printf("%dはTBL()に存在しません。\n",j))
for(l=0,m=100,j = rand()%100;l < m;)
if(TBL[k = (l+m)/2] == j)return printf("%dはTBL(%d)にあります。\n",j,k),0;
else if(TBL[k] < j) l = k + 1; else m = k;
}
0401デフォルトの名無しさん
2006/03/09(木) 20:45:07これを>>12みたいに
表の領域のところに12345…って数字を埋めて出力するって
できますか?
0402400
2006/03/09(木) 20:50:27k = TBL[i] ... TBL[j] = k;
の部分の i は j-1 に置き換えといて。
そのままでもソートはされるけど別のソート方法になってしまう。
0403デフォルトの名無しさん
2006/03/09(木) 22:00:27すいません。馬鹿なので分割できません。。
お手数かけますがよろしくお願いします。
0404デフォルトの名無しさん
2006/03/09(木) 22:01:500405デフォルトの名無しさん
2006/03/09(木) 22:10:230406デフォルトの名無しさん
2006/03/09(木) 22:36:310407デフォルトの名無しさん
2006/03/09(木) 22:49:010408デフォルトの名無しさん
2006/03/09(木) 23:29:26#define MAX 10
int main(void)
{
int data[MAX]={12,50,1,45,32,11,75,26,94,10},i,j,l,temp;
printf("ソートをしようと思います\n");
for (i=0;i<MAX-1;i++){
for (j=MAX-1;j>i;j--){
if (data[j-1]>data[j]){
temp=data[j];
data[j]=data[j-1];
data[j-1]=temp;
}
}
}
for (l=0;l<MAX;l++){
printf("%d\n",data[l]);
}
printf("ソートが完了したと思います\n");
return 0;
}
バブルソート
0409385
2006/03/09(木) 23:35:10BはA、CはBのプログラムを元にしなきゃ駄目なので無理です。。
>>388 さんできれば続きを。。
0410デフォルトの名無しさん
2006/03/09(木) 23:41:45Lv1の時点でさっぱりわかりません。Lv1だけでいいので教えていただけないでしょうか。
[3] 環境
[3.1] OS: Mac
[3.2] コンパイラ名とバージョン: VC
[3.3] 言語: C
[4] 期限: 明日まで
よろしくお願いします。
0411デフォルトの名無しさん
2006/03/09(木) 23:45:310412デフォルトの名無しさん
2006/03/09(木) 23:49:110413デフォルトの名無しさん
2006/03/09(木) 23:54:23Bできたぞ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1680.txt
0414デフォルトの名無しさん
2006/03/09(木) 23:59:190416385
2006/03/10(金) 00:05:340417デフォルトの名無しさん
2006/03/10(金) 00:06:19意味わからん
0418デフォルトの名無しさん
2006/03/10(金) 00:07:120419デフォルトの名無しさん
2006/03/10(金) 00:09:32それより、「不明な箇所は0とする」っていう説明がないのは不親切だよ伊庭先生
0420デフォルトの名無しさん
2006/03/10(金) 00:39:58一応Lv1を再帰でゴリゴリやった。
1レスに収めるためにコードを圧縮したので適当に解凍よろしく。
#include<stdio.h>
typedef struct T{int map[9*9],x[9],y[9],xy[9];}T[1];
int push(T t,int yx,int n){
int y = yx/9,x=yx%9;
if( t->map[yx] || ((t->y[y]|t->x[x]|t->xy[x/3+y/3*3]) & 1<<n) )return 0;
t->y[y]|=1<<n;t->x[x]|=1<<n;t->xy[x/3+y/3*3]|=1<<n;t->map[yx]=n;
return 1;
}
void pop(T t,int yx){
int y = yx/9,x=yx%9,n=t->map[yx];t->y[y]&=~(1<<n);t->x[x]&=~(1<<n);t->xy[x/3+y/3*3]&=~(1<<n);t->map[yx] = 0;
}
int calc(T t,int yx){
int i;if(yx==9*9)return 1;else if(t->map[yx])return calc(t,yx+1);
for(i=1;i<=9;++i)if(push(t,yx,i)){if(calc(t,yx+1))return 1;else pop(t,yx);}return 0;
}
int main(){
T x={{{0}}};int i,j,d;for(i=0;i<9*9;++i)scanf("%1d",&d),push(x,i,d);
if(calc(x,0))for(i=0;i<9;++i,printf("\n"))for(j=0;j<9;++j)printf("%d",x->map[i*9+j]);
else printf("解がない\n");return 0;
}
0421420
2006/03/10(金) 00:53:47その場合はcalc関数より上はさっきまでのコードと同じでその下を変更する。
int calc(T t,int yx){
int i,j=0;
if(yx==9*9){
for(i=0;i<9;++i,printf("\n"))
for(j=0;j<9;++j)printf("%d",t->map[i*9+j]);
printf("\n");
return 1;
}else if(t->map[yx])return calc(t,yx+1);
for(i=1;i<=9;++i)if(push(t,yx,i)){j+=calc(t,yx+1);pop(t,yx);}
return j;
}
int main(){
T x={{{0}}};int i,j,d;for(i=0;i<9*9;++i)scanf("%1d",&d),push(x,i,d);
if(!calc(x,0))printf("解がない\n");
return 0;
}
0422デフォルトの名無しさん
2006/03/10(金) 00:55:53できた
ただし二分探索は初めてなので自身ない
一応解説サイトを見ながら作ったけど;
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1681.txt
0423422
2006/03/10(金) 01:29:170425デフォルトの名無しさん
2006/03/10(金) 12:14:47そういうソースってすぐ思いつくものなの?
見たけど何を何してるのかも俺わかんないよ。
経験の裏打ちは元より、それ以上に才能やセンスからくるの?
仕事でプログラムやってる人って、みんなこんなソース
すぐに設計して構築して打ち込めるの?
なんか不思議でしかたがない。
0426420
2006/03/10(金) 12:41:46経験もたいして重要じゃない。自分は大学1年でプログラミング暦はたったの4年しかないしな。
重要なのはパズルの解き方の定石を知っているか知らないかだけ。
問題を再帰的に考えるのがパズルの解き方の定石。
この問題の場合は一個数字を埋めて、
自分を呼び出す(この後自分の埋めた値を元に戻して)の繰り返しで成り立っている。
一個ずつ、埋めていって最後まで矛盾なく埋めれれば成功、そうでなければ失敗。
パズルは枝狩りとかを無視すれば基本的には殆どすべての問題はこのやり方で出来る
0427デフォルトの名無しさん
2006/03/10(金) 12:45:400429420
2006/03/10(金) 12:54:41まぁ0の数は不明だがこの場合4としよう
0000
これを1111から9999まで全部試す。
以上
自分のも基本的にはこのやりかた、
ただ、これだと効率が最悪なので23??とかのときに23が絶対にありえない組み合わせならすっ飛ばして24??に行ってるだけ
0430デフォルトの名無しさん
2006/03/10(金) 12:58:390431デフォルトの名無しさん
2006/03/10(金) 17:05:50漏れが引き受けた、と言ってみるテスト
0432デフォルトの名無しさん
2006/03/10(金) 17:45:030433デフォルトの名無しさん
2006/03/10(金) 19:36:33その関数でpushやpopはないやろうとか
っていうかpushやpopって名前でその引数はないやろうとか
ツッコミどころは色いろあるわけだが
オレが提出するわけではないのでよしとしておこう
0434デフォルトの名無しさん
2006/03/10(金) 19:46:35伊庭さんが push とか pop とか言ってるから,仕方が無く作ったんでせう.
0435デフォルトの名無しさん
2006/03/10(金) 19:52:180436デフォルトの名無しさん
2006/03/10(金) 20:44:21これって「数独」、「ナンバープレイス」、「SingleNumbers」、その他の名称で知られる有名なパズルだろ。
ぐぐればソースが転がってるぞ。
0437デフォルトの名無しさん
2006/03/10(金) 20:51:12どの新聞を買っても載ってるんだって
0438デフォルトの名無しさん
2006/03/11(土) 00:52:12プログラムをお願いします
0439438
2006/03/11(土) 00:58:24テンプレ見てませんでした
0440デフォルトの名無しさん
2006/03/11(土) 01:15:21Windows版
#include <stdlib.h>
int main() {
system("dir /B /A:-D > result.txt");
return 0;
}
0441デフォルトの名無しさん
2006/03/11(土) 01:22:59あるサイトのサンプルをそのまんま載せます
引数にアドレスを
#include <stdio.h>
#include <dirent.h>
void main(argc,argv)
int argc;
char *argv[];
{
DIR *dir;
struct dirent *dp;
char path[512];
if(argc<=1){
strcpy(path,".");
}
else{
strcpy(path,argv[1]);
}
if((dir=opendir(path))==NULL){
perror("opendir");
exit(-1);
}
for(dp=readdir(dir);dp!=NULL;dp=readdir(dir)){
printf("%s\n",dp->d_name);
}
closedir(dir);
}
0443デフォルトの名無しさん
2006/03/11(土) 02:35:58っていうか、テンプレがあるの分かってるなら質問し直せ
0444デフォルトの名無しさん
2006/03/11(土) 03:08:16#include <stdlib.h>
int main(int argc, char ** argv)
{
if (argc == 1) {
char buf[256];
sprintf(buf, "%s *", argv[0]);
system(buf);
} else {
int i = 1;
for (; i < argc; i++) {
printf("%s\n", argv[i]);
}
}
return 0;
}
0445444
2006/03/11(土) 03:12:56どこかを↓に差し替え
sprintf(buf, "%s * > result.txt", argv[0]);
0446デフォルトの名無しさん
2006/03/11(土) 06:53:34[2] 問題文(含コード&リンク):
2問お願いします・・。
//問題1//
//要素数10000の配列に乱数で値(0から9)が設定してある。配列の0から9までの個数を別々に求める。
//問題2//
//int型の数値(プラスのみ)を2進数に変換しint型の1次元配列(要素数32)に格納する関数を作成する。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: (C言語)
[4] 期限: できれば今日中・・
[5] その他の制限:
現追試中です、止まって進みません
知識は薄いです・・。 よろしくお願いします。
0447デフォルトの名無しさん
2006/03/11(土) 07:01:58\\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0448446
2006/03/11(土) 07:21:45ココ消し間違いました。VCです(;´Д`)
0449デフォルトの名無しさん
2006/03/11(土) 08:15:15#include <stdio.h>
#define x *
#define xx /x
#define xxx ){
#define xxxx printf
#define xxxxx(xxx_xxxx) ("%d\n",xxx_xxxx);}
#define xxxxxx int
#define xxxxxxxx 10
#define xxxxxxx(xxx_xx) xxxxxx xxxxxxxxxxxxx[xxx_xx]
#define xxxxxxxxxx ={1,5,1,2,3,4,3,2,1,4,5,8};
#define xxxxxxxxxxxx xxxxxxxx x xxxxxxxx x xxxxxxxx x xxxxxxxx
xxxxxx main(xx, class **std::string flunk){
NUMBER_COUNTER } [ 0 - 9 ];
register start_label:(*/xxx
xxxxxxx(xxxxxxxxxxxx) xxxxxxxxxx
xxxxxx xxxxxxxxxxx,xxxxxxxxxxxxxx[xxxxxxxx]={xxxxxxxx-xxxxxxxx};
for(xxxxxxxxxxx=xxxxxxxx-xxxxxxxx;xxxxxxxxxxx!=xxxxxxxxxxxx;)
++xxxxxxxxxxxxxx[xxxxxxxxxxxxx[xxxxxxxxxxx++]];
for(xxxxxxxxxxx=xxxxxxxx-xxxxxxxx;xxxxxxxxxxx!=xxxxxxxx;){
xxxx xxxxx(xxxxxxxxxxxxxx[xxxxxxxxxxx++])return 0;}
0450446
2006/03/11(土) 08:49:02形だけでも教えてくれてありがとうございます。
すみません、午前に補講があるんで行ってきます。
今日中に間に合うように問2と共に試行錯誤してみます;
0451デフォルトの名無しさん
2006/03/11(土) 09:02:040452デフォルトの名無しさん
2006/03/11(土) 09:05:310453デフォルトの名無しさん
2006/03/11(土) 09:34:40int main(){
int array[10000] ={1,5,1,2,3,4,3,2,1,4,5,8};
int MAMUKO, TIMUKO[10]={0};
for(MAMUKO=0; MAMUKO!=10000; )
++TIMUKO[array[MAMUKO++]];
for(MAMUKO=0; MAMUKO!=10; ){
printf ("%d\n",TIMUKO[MAMUKO++]);
}
return 0;
}
とりあえず翻訳文
0454デフォルトの名無しさん
2006/03/11(土) 10:03:12問題1
#include<stdio.h>
#include<time.h>
#define N 10000
int main(){
int array[N];
int i, j;
int count[10]={0};
srand(time(NULL));
for(i=0; i<N; i++)
array[i]=rand()%10;
for(i=0; i<N; i++)
for(j=0; j<10; j++)
if(array[i]==j) count[j]++;
for(i=0; i<10; i++)
printf("'%d' = %d\n", i, count[i]);
return 0;
}
0455問題2
2006/03/11(土) 11:24:54#include <stdlib.h>
int main(void)
{
struct str{
unsigned a: 1;unsigned b: 1;unsigned c: 1;unsigned d: 1;unsigned e: 1;unsigned f: 1;unsigned g: 1;unsigned h: 1;unsigned i: 1;unsigned j: 1;unsigned k: 1;unsigned l: 1;unsigned m: 1;unsigned n: 1;
unsigned o: 1;unsigned p: 1;unsigned q: 1;unsigned r: 1;unsigned s: 1;unsigned t: 1;unsigned u: 1;unsigned v: 1;unsigned w: 1;unsigned x: 1;unsigned y: 1;unsigned z: 1;unsigned A: 1;unsigned B: 1;
unsigned C: 1;unsigned D: 1;unsigned E: 1;unsigned F: 1;
};
union{
int number;
struct str bits;
}homework;
int str[32];
if(!scanf("%d", &homework.number)){
exit(1);
}
str[0] = homework.bits.F ? 1: 0;str[1] = homework.bits.E ? 1: 0;str[2] = homework.bits.D ? 1: 0;str[3] = homework.bits.C ? 1: 0;str[4] = homework.bits.B ? 1: 0;
str[5] = homework.bits.A ? 1: 0;str[6] = homework.bits.z ? 1: 0;str[7] = homework.bits.y ? 1: 0;str[8] = homework.bits.x? 1: 0;str[9] = homework.bits.w? 1: 0;
str[10] = homework.bits.v ? 1: 0;str[11] = homework.bits.u ? 1: 0;str[12] = homework.bits.t ? 1: 0;str[13] = homework.bits.s ? 1: 0;str[14] = homework.bits.r ? 1: 0;
str[15] = homework.bits.q ? 1: 0;str[16] = homework.bits.p ? 1: 0;str[17] = homework.bits.o ? 1: 0;str[18] = homework.bits.n ? 1: 0;str[19] = homework.bits.m ? 1: 0;
str[20] = homework.bits.l ? 1: 0;str[21] = homework.bits.k ? 1: 0;str[22] = homework.bits.j ? 1: 0;str[23] = homework.bits.i ? 1: 0;str[24] = homework.bits.h ? 1: 0;
str[25] = homework.bits.g ? 1: 0;str[26] = homework.bits.f ? 1: 0;str[27] = homework.bits.e ? 1: 0;str[28] = homework.bits.d ? 1: 0;str[29] = homework.bits.c ? 1: 0;
str[30] = homework.bits.b ? 1: 0;str[31] = homework.bits.a ? 1: 0;
for(homework.number=0; homework.number<32; homework.number++){
printf("%d", str[homework.number]);
}
return 0;
}
0456デフォルトの名無しさん
2006/03/11(土) 11:33:32問題2
#include <stdio.h>
#define X(a, b) Z(a, b)
#define Y(a, b) Z(b, a)
#define Z(a, b) a##b
#define x >>=
X(i,Y(t,n)) X(ma,Y(n,i))(){
X(X(X(u,Y(s,n)),X(i,Y(n,g))),ed) X(i,Y(t,n)) b[32], i, k=0;
X(X(X(p,Y(i,r)),Y(t,n)),f)("数字を入力->");
X(X(s,Y(a,c)),Y(f,n))("%d",&k);
X(f,Y(r,o))(X(i,Y(0,=));X(i,Y(=,<))31;X(i,Y(+,+))){b[X(31,Y(i,-))]=X(k,Y(1,&));k x 1;}
X(f,Y(r,o))(X(i,Y(0,=));X(i,Y(=,<))31;X(i,Y(+,+))){X(X(X(p,Y(i,r)),Y(t,n)),f)("%d",b[i]);
}
}
0457デフォルトの名無しさん
2006/03/11(土) 12:14:30void main(){
unsigned int b[32], i, k=0;
printf("数字を入力->");
scanf("%d",&k);
for(i=0;i<=31;i++){b[31-i]=k&1;k >>= 1;}
for(i=0;i<=31;i++){printf("%d",b[i]);
}
}
とりあえず翻訳文
0458デフォルトの名無しさん
2006/03/11(土) 12:15:26int main(){
unsigned int b[32], i, k=0;
printf("数字を入力->");
scanf("%d",&k);
for(i=0;i<=31;i++){b[31-i]=k&1;k >>= 1;}
for(i=0;i<=31;i++){printf("%d",b[i]);
}
}
intだった
0459デフォルトの名無しさん
2006/03/11(土) 12:43:45Q2
#include <stdio.h>
#define I int
#define R ;
#define Q [
#define O ]
#define P *
#define N __asm
#define S static
#define MOD ,
S I A R
S I B Q 32 O R
S I P C = B R
int main(){
AA:printf("NUMBER? ");
BB:scanf("%d" MOD &A);
CC:N MOV EAX MOD A
DD:N SHL EAX MOD 1 N JAE EE N MOV EBX MOD C N MOV Q EBX O MOD 1
EE:N JE GG N PUSH EAX
FF:printf("%d" MOD *C); N POP EAX N ADD C MOD 4 N JMP DD
GG:printf("%d" MOD *C);
}
0460446
2006/03/11(土) 13:15:20今帰ってきました。
6名もの方から解答を頂けるとは
感動しちゃいました、すみません;
昨日まで解らずにいて、困っていたので・・・
後数問似たような問題があるので
見合わせて解いて、提出に行きたいと思います。
ありがとうございました。
0461デフォルトの名無しさん
2006/03/11(土) 15:17:230462デフォルトの名無しさん
2006/03/11(土) 15:36:130463デフォルトの名無しさん
2006/03/11(土) 15:53:40やってることは分かるが、sizeof(int) == 4決め打ちは如何なものかと思うが
それはそうとsetjmp.hとsignal.hって面白いな
エキスパートCプログラミングに触発されて試してみたがハマった
0464デフォルトの名無しさん
2006/03/11(土) 17:02:11目が痛いwwwww
>>456
なにこの簡易バズルwwwww
>>459
ある意味CだけどCっぽくねぇwwwww
0465デフォルトの名無しさん
2006/03/11(土) 17:54:32-‐''''"´ ̄``ヽ、 ____
/ _ ヽ //´ __,,>、
/  ̄ ̄ { /::/ / ̄:::::::::::::::\
l _ィニニア二二二ニヽ、j._ /::::l/::::::::::::::::::::::::::::::::l
| 0Lj/-‐-レノ ノ_ヽ:::`ヽ l:::::::::::/l/lノノ/_イ:::::l
レ:r、/ イ゚テ ピト`|::| l:::::::::/ rtテ、 .ィtq l::::::|
l:lヘ '" ,j '"/ノ |::lヘ!j ´ ,j !;:::/
ヽヽ、 r‐-, /' レリー 、 ,...., lノ/
lヽ、  ̄ / `ヽ、lヽ 、  ̄ /´
_,r┴‐-`v´-‐j-、__ , -‐-、_r┴─'ー‐チト バズル!!
/ ̄/:.:.:.:| ̄ ̄`T ̄´|:.:.:.:l´ `ヽ / ヽ ̄`ー-‐'´`''''⌒ヽ
/ ,':.:.:.:.:.l l l:.:.:.l \ _r‐、-、-、r, 、 ',
|:.:.:.:.:.:.! ! !:.:.l ,. -‐ゝ/// 〉 〉 〉 〉 〉 ! ',
l:.:.:.:.:.:.l | l:.:.:l / 人〈〈〈〈 ' ' ' /っ l l
l:.:.:.:.:.:.! ! l:.:.:.ト/ / ```´-ァ‐'''" / l
、__/:.:.:.:.:.:l | |:.:.:ヽヘ l // / _ ィノ
/:.:.:.:.:.:.:! l |:.:.:.:.:l `ーヽ、_ノ´l、______/lニ二」
____l:.:.:.:.:.:.:.| l |:.:.:.:.:! |_ ( ( ) )_〕| l
l`ー‐‐'匸二l ̄ ̄l二フーイ /  ̄ `‐‐'´ ヽ |
0466デフォルトの名無しさん
2006/03/11(土) 20:10:59同様ので、
#include <stdio.h>
#define A(a, b) C(a, b)
#define B(a, b) C(b, a)
#define C(a, b) a b
B(B(B(;return 0;},A(printf,("hello\n"))), {), int B((void), main))
0467デフォルトの名無しさん
2006/03/11(土) 20:27:34おぞましいバズルですね
0468デフォルトの名無しさん
2006/03/11(土) 20:33:22読みづらいが>>459ほどでは無いな
何せ>>459は-Eしても読めない奴には読めないんだからw
0469デフォルトの名無しさん
2006/03/11(土) 20:38:08>>459 は知ってれば普通に読める
0470デフォルトの名無しさん
2006/03/11(土) 21:47:32一応俺のもはっとこ(Q2のみ)
int *to_binary(int n, int box[32])
{
if(n >= 0){
unsigned int for_binary, to_for;
int i ;/*要素数*/
for_binary = (unsigned int)n;
for(to_for = 1, i= 0; to_for < (sizeof(int)*8), i<32; to_for++,i++){
if(for_binary & (1 << (to_for - 1)))
box[i] = 1;
else
box[i] = 0;
}
return box;
}
else
return box;
}
0471デフォルトの名無しさん
2006/03/11(土) 22:30:000472デフォルトの名無しさん
2006/03/11(土) 22:34:350473デフォルトの名無しさん
2006/03/11(土) 23:04:450474デフォルトの名無しさん
2006/03/11(土) 23:17:050475デフォルトの名無しさん
2006/03/11(土) 23:26:26特にアクセス制限とかはかけてないはずだけど……。時間置いて再度やってみてください。
0476474
2006/03/12(日) 00:33:06アクセスできてないから、いいかげんな疑問ですけど
0477デフォルトの名無しさん
2006/03/12(日) 00:47:14オープンにして困る情報が含まれていないからです。
0478デフォルトの名無しさん
2006/03/12(日) 00:54:320479デフォルトの名無しさん
2006/03/12(日) 15:44:21アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
http://pc8.2ch.net/test/read.cgi/prog/1140616676/
0480デフォルトの名無しさん
2006/03/12(日) 23:55:59[2] 問題文(含コード&リンク):
3問お願いします。
使用「処理A」〜「処理C]を満たすフローチャート(適当に作ってもらってかまいません。)
プログラムの作成をしてください。
「処理A」
0から99までの整数をランダムに100個発生させ、配列TBL(0)からTBL(99)に格納する。
データを配列順に出力(画面表示)する。
「処理B」
処理Aのデータを昇順に整列し、結果を出力する。
なお、整列アルゴリズムは基本交換法を使用すること。
「処理C」
0から99までの整数を一つランダムに発生させ、処理Bのデータから二分探索法により検索する。
見つかった場合の出力書式は「**は、TBL(**)にあります。」とする。
(その値が複数存在する場合は、いずれかの配列を示せばよい。)
データが見つからなかったときは「**は、TBL()に存在しません。」
と出力した上で、見つかるまで処理Cを繰り返す。
フローチャートもプログラムがわからないので作れる方お願いします。
とりあえず、フローチャートの流れがわかれば記号等は自分でやります。
以上です。長々とすみません。
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: C言語
[4] 期限: 2006年03月19日までにお願いします。
[5] その他の制限:一応、ファイルの入出力までは学校でやりましたが・・・
C言語は苦手でしたので関数名とかは知ってても実際は使えないというのが状況です。
0481デフォルトの名無しさん
2006/03/13(月) 00:07:18:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ 流れ図めんどうなのでスルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0482デフォルトの名無しさん
2006/03/13(月) 00:10:11#include <stdio.h>#include <stdlib.h>#include <time.h>
int main(void){int TBL[100];srand((unsigned int)time(NULL));for(i=0;i<100;i++)TBL[i]=rand()%100;}
0483デフォルトの名無しさん
2006/03/13(月) 00:11:100484デフォルトの名無しさん
2006/03/13(月) 00:18:440485デフォルトの名無しさん
2006/03/13(月) 00:40:29どこの馬鹿があんな仕様考えたんだ?
srcとdestが入れ替わるわ、間接参照も面倒くさいわで使いにくいことこの上ないな
0486デフォルトの名無しさん
2006/03/13(月) 00:42:11>フローチャートもプログラムがわからないので作れる方お願いします。
そもそも普通はフローチャート→コーディングという流れなので
プログラムが分からないからフローチャートが書けないというのはおかしい
0487デフォルトの名無しさん
2006/03/13(月) 00:42:36masm系、特にnasmが最強
0489デフォルトの名無しさん
2006/03/13(月) 00:45:120490デフォルトの名無しさん
2006/03/13(月) 00:45:26プログラムが分からないからフローチャートがかけないというのはおかしいというのはおかしい
0491デフォルトの名無しさん
2006/03/13(月) 00:52:44385にも同じ問題がスレがあったの知らなくて今見てびっくりしたのですが、
この課題は他人との融通があったと判断した場合、
レポートを無効とすると記されているのでこれは使えないんですよ。
>>485
これはやらしい先生が考えたのでホント糞仕様書ですよ。
0492デフォルトの名無しさん
2006/03/13(月) 01:00:350493デフォルトの名無しさん
2006/03/13(月) 01:06:000494デフォルトの名無しさん
2006/03/13(月) 01:19:09もしかして>>485は>>480の仕様のことを言ってると思ってるのか?
だとしたら小学生からやり直した方がいいな
0495デフォルトの名無しさん
2006/03/13(月) 01:19:40明らかにGNU GASの仕様のことだろ
0496デフォルトの名無しさん
2006/03/13(月) 01:20:400497デフォルトの名無しさん
2006/03/13(月) 01:24:47>>485は俺だからそりゃそうなんだが、>>491のは
どうみても>>480の事だと解釈してるっぽいから>>494を書いた
つーか、誰かgasの仕様変えようとは思わないのか
0498デフォルトの名無しさん
2006/03/13(月) 01:28:390499デフォルトの名無しさん
2006/03/13(月) 01:29:49いや、おれはGASのソース見てないけど
0500デフォルトの名無しさん
2006/03/13(月) 01:31:250501デフォルトの名無しさん
2006/03/13(月) 01:37:24勘違いしてましたわ。
gccのことだったとは気づかなかった。
話がずれてるので処理A〜Cお願いします。
0502デフォルトの名無しさん
2006/03/13(月) 02:00:51:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ >>480の先生が有名人かと思ったのでスルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0503デフォルトの名無しさん
2006/03/13(月) 02:59:24>>388
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1680.txt
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1681.txt
を参考にすると吉
0504デフォルトの名無しさん
2006/03/13(月) 03:45:04どっかの参考ページでみながら書いたソースがあったので載せる
center = 配列の真ん中
num = 求めたい数値
low = 要素数の最初
high = 要素数の最後
while(array[center] != num){
center = (low + high)/2;//半分に切って真ん中の値を見る
if(array[center] > num)//半分の値より検索したい値が小さいとき
high = center -1;
else if (array[center] < num)//半分の値より検索したい値が大きいとき
low = center + 1;
if(high < low ){
printf("%dは見つからなかった\n",num);
return 0;
}
}
これでだいたいわかるだろ
あとフローチャート描けっていうのは、どう描けってんだ
AAつかうのか?
手書きで描いて、スキャナーでとるなりデジカメで撮るなりupすんのか?
それともwordや、illustraterで・・・・
そのプログラム全部書くよりフローチャート書く方が手間かかるわ
0505デフォルトの名無しさん
2006/03/13(月) 04:55:060506デフォルトの名無しさん
2006/03/13(月) 04:58:020507デフォルトの名無しさん
2006/03/13(月) 04:59:500508デフォルトの名無しさん
2006/03/13(月) 07:10:170509デフォルトの名無しさん
2006/03/13(月) 10:40:090510デフォルトの名無しさん
2006/03/13(月) 10:53:530511デフォルトの名無しさん
2006/03/13(月) 15:35:580512デフォルトの名無しさん
2006/03/13(月) 18:23:480513デフォルトの名無しさん
2006/03/13(月) 18:57:41ガイガーカウンタと計測器でがんばればいいんじゃね
0514デフォルトの名無しさん
2006/03/13(月) 19:02:26二分探索ありがとうございました。
フローチャートはあまりにも手間がかかりますので、自分でやります。
0515デフォルトの名無しさん
2006/03/13(月) 20:23:20初めて宿題スレでありがとうって言ってもらえた。
いえいえどういたしまして。
お互い精進しましょう。
0516デフォルトの名無しさん
2006/03/13(月) 20:29:050517デフォルトの名無しさん
2006/03/13(月) 20:29:46:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0518デフォルトの名無しさん
2006/03/13(月) 21:03:09よかったね。前に、残っている宿題を整理するついでに、回答率がどれくらいで
礼を言われるのがどれくらいか、ざっと数えたことがあるんだけど、そのときは
回答率が約6割くらいで、それに対するレスがあったのは、回答があったうちの
半分未満だったよ。
まあ目安として3回答えて、一度もレスがなかったら、運が悪いのかもw
0519デフォルトの名無しさん
2006/03/13(月) 21:40:230520デフォルトの名無しさん
2006/03/13(月) 21:41:22・・・・でも、ありがとう
0521デフォルトの名無しさん
2006/03/13(月) 21:48:240522デフォルトの名無しさん
2006/03/13(月) 21:50:090523デフォルトの名無しさん
2006/03/13(月) 21:51:130524デフォルトの名無しさん
2006/03/13(月) 21:51:370525デフォルトの名無しさん
2006/03/13(月) 23:19:460526デフォルトの名無しさん
2006/03/14(火) 00:05:280527デフォルトの名無しさん
2006/03/14(火) 00:08:06[1] 評価:
[2] 結果:
何か足りないものある?
0528デフォルトの名無しさん
2006/03/14(火) 00:08:240529デフォルトの名無しさん
2006/03/14(火) 00:09:070530デフォルトの名無しさん
2006/03/14(火) 00:10:540531デフォルトの名無しさん
2006/03/14(火) 00:13:59医者行ってくるわ・・・
0532デフォルトの名無しさん
2006/03/14(火) 00:20:14[1] 評価:
[2] 結果:
[3] 単位取得の有無:
[4] 回答者にコメント:
はどう?
0533デフォルトの名無しさん
2006/03/14(火) 00:33:43上出来w
0534デフォルトの名無しさん
2006/03/14(火) 00:39:03あとコメント欄にネタ回答への怨み言を書かれそうで困るかな。
0535デフォルトの名無しさん
2006/03/14(火) 00:46:12そもそも、宿題がどう評価されたかを知って何が面白いんだ?
0536デフォルトの名無しさん
2006/03/14(火) 00:47:080537デフォルトの名無しさん
2006/03/14(火) 00:53:54俺は解くだけで満足だが。
0538デフォルトの名無しさん
2006/03/14(火) 01:24:01[1] 先生の評価:
[2] 提出結果:
[3] 単位取得の有無:
[4] 回答者にコメント(愚痴等は禁止):
0539デフォルトの名無しさん
2006/03/14(火) 01:28:03恐いんじゃなくて、スレがいい感じで荒れそうだなぁと。
そうなるとネタ回答できそうな質問が減って困る。
0540デフォルトの名無しさん
2006/03/14(火) 12:30:30このスレが無ければ卒業できませんでした。
0541デフォルトの名無しさん
2006/03/14(火) 14:08:260542デフォルトの名無しさん
2006/03/14(火) 16:35:01ネタを本気に取られてしまった・・・
0543C苦手 ◆Lzb88d0QyY
2006/03/14(火) 20:21:43[1] 授業単元: C言語
[2] 問題文: (翻訳文なのでちょっとぎごちないです。読みにくくて申し訳ないです。)
辞書ファイル内の言葉を検索するプログラムを作成せよ。
長かったので↓に書きました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=1563
[3] 環境
[3.1] OS: UNIX agave
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2006年三月二十日まで
[5] その他の制限:
基本しか習っておりません。
始めて1週間なのでかなり焦っています。
質問がかなり長くて申し訳ないですが、どなたか宜しくお願いします。
0544デフォルトの名無しさん
2006/03/14(火) 20:28:03gcc で日本語?やりたくねえなあ。
翻訳してない問題は無いの?そっちのほうがはるかに簡単そうなんだけど。
0545デフォルトの名無しさん
2006/03/14(火) 20:34:41久しぶりに面白そうな課題だからやってみたいんだが
原文を上げてくれ。そっちの方が読みやすい
それとその検索対象のファイルっていうののサンプルは無いのか?
0546デフォルトの名無しさん
2006/03/14(火) 20:41:33>>543
こうゆうものは原文と翻訳文を出すべきでは?
0547デフォルトの名無しさん
2006/03/14(火) 20:43:03機械翻訳ワケワカメ。
0548デフォルトの名無しさん
2006/03/14(火) 20:45:570549デフォルトの名無しさん
2006/03/14(火) 21:06:18for (i = 0; i + strlen(key) < strlen(buf); ++i) {
int flg = 1;
for (j = 0; j < strlen(key); ++j)
if (key[j] != '_' && key[j] != buf[i+j]) flg = 0;
if (flg) return 1;
}
return 0;
くらいで辞書の各行を走査してやりゃいいだけのような。
0550C苦手 ◆Lzb88d0QyY
2006/03/14(火) 21:31:00>>547
>>545
>>546
>>547
レスありがとうございます。
gccで英語環境です。
英語の課題を日本語に訳したんでかなりぎごちないです。すみません。
原文のPDFと辞書のサンプルtxtファイル(サンプルなのでAの箇所とY〜Zあたりを抜粋しました)をzipで↓にあげときました。
宜しくお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=1563
>548
unixは基本コマンドしかいじった事ないです。
超初心者ですが大学のPCがunixなので。。
>>549
ありがとうございます!早速参考にしてみます!
0551デフォルトの名無しさん
2006/03/14(火) 21:35:42やってみるがこの調子だと競争になりそうだなw
まぁ別に解答済みでも自分なりのをうpるが
0552デフォルトの名無しさん
2006/03/14(火) 21:41:450553デフォルトの名無しさん
2006/03/14(火) 21:47:53-prefix 検索文字列が先頭にある単語にマッチ
-anywhere 単語のどこかに文字列にマッチ
までは把握した。
0554デフォルトの名無しさん
2006/03/14(火) 21:53:11つーか、臨時の環境だからMeadow入れ直し+Cygwinのうpでとが面倒だ('A`)
0555デフォルトの名無しさん
2006/03/14(火) 22:21:07http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1684.c
仕様とかちゃんと読んで無いから間違ってるかもしれんけど.
0556555
2006/03/14(火) 22:24:400557デフォルトの名無しさん
2006/03/14(火) 22:31:030558デフォルトの名無しさん
2006/03/14(火) 22:36:13発覚したらまずは課題が0点になるというところまでは把握した。
0559デフォルトの名無しさん
2006/03/14(火) 22:45:000561デフォルトの名無しさん
2006/03/14(火) 23:00:32で、提出先を教えてくれ。
0562デフォルトの名無しさん
2006/03/14(火) 23:02:00具体的には、
コメント:ない。
括弧:ifやforの後ろが1文のときに{}がない。
空白:関数の間に空行がない。
インデント:インデント1段階がスペース4つになってない。式が次行に続くときにスペース8つになっていない。
0563デフォルトの名無しさん
2006/03/14(火) 23:08:53提出先はpdfにちゃんと「http://submit.itee.uq.edu.au」の「COMP2303」だって書いてあるぞ。
でもどうやら簡単な認証があるようなので、コース名明記してメールすればいいんじゃない?
0564デフォルトの名無しさん
2006/03/14(火) 23:11:210565C苦手 ◆Lzb88d0QyY
2006/03/14(火) 23:23:55>>564
学生以外はsubmit出来ないはずなのでご遠慮ください。お願いします。
となると私の課題はそのまま提出すると0点になり提出出来なくなるのでzipファイルは削除します。
自分でなんとか考えます、答えてくれた人ありがとうございます。参考にします。
0566デフォルトの名無しさん
2006/03/14(火) 23:25:290567デフォルトの名無しさん
2006/03/14(火) 23:27:04まぁ自分のためにもなるんで頑張って作ってみるか
0568デフォルトの名無しさん
2006/03/14(火) 23:36:19ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1685.c
0569568
2006/03/14(火) 23:45:16* 568 のコードはオプションの扱いを端折ってるので正確ではない
* ASCII に依存している
素直に string.h のを使うべきだったな。
出しておいて言うのもアレだが。
バッファ管理はともかく >>555 のコードはスッキリしていて良いね。
enum{exact,..} と match_func *match[]={...} の所が好き。
0570デフォルトの名無しさん
2006/03/15(水) 00:20:22リンク先見たらソースしか載ってなかった
問題文どこ?
0571デフォルトの名無しさん
2006/03/15(水) 00:20:450572デフォルトの名無しさん
2006/03/15(水) 00:22:460573デフォルトの名無しさん
2006/03/15(水) 00:44:531686に(翻訳前の>>550の方を)再upしたんで、どぞ。
0574デフォルトの名無しさん
2006/03/15(水) 01:44:15http://human5.2ch.net/test/read.cgi/ms/1141694640/
8 名前:可愛い奥様[] 投稿日:2006/03/07(火) 11:05:23 ID:8dtluKkp
夫の歯ブラシで洗面所の排水溝掃除。
洗面所をビショビショに汚した罰だ。
20 名前:可愛い奥様[age] 投稿日:2006/03/08(水) 00:40:17 ID:pRrk6A21
前に頭きた時あって
1度だけ歯ブラシで肛門カキカキしちゃった
22 名前:可愛い奥様[] 投稿日:2006/03/08(水) 01:27:12 ID:gU5mHc7J
よかった。どこのお宅も同じようなことしてて。
24 名前:可愛い奥様[] 投稿日:2006/03/08(水) 01:36:35 ID:SSSFsTqE
そうそう、ヘンなモノはダンナのお皿へ直行だよね。
41 名前:可愛い奥様[] 投稿日:2006/03/08(水) 11:55:18 ID:sjj+/60Q
見てるだけで気が晴れるな!
皆さん、頑張ってね!
42 名前:可愛い奥様[sage] 投稿日:2006/03/08(水) 20:33:51 ID:Ju2N1s7+
年金分割が楽しみじゃのう
63 名前:可愛い奥様[] 投稿日:2006/03/10(金) 08:55:20 ID:qLfJYpJR
家族で密かにはぶっている。
男性は肉体が汚く、精神が美しい傾向がある。(気に入らない相手に肉体的攻撃を加える⇒精神的攻撃も加える男は猛者)
女は肉体が美しく、精神が汚い傾向がある。(気に入らない相手に精神的攻撃を加える⇒肉体的攻撃も加える女は猛者)
女は隠れて悪事をする。気に入らない女子を便所でボコったり、便器舐めさせたり、男の友人を使ってレイプ、仲間外れにしたり。陰口、嫉妬。
女は対人関係において、この汚い性格を隠そうとするため、外面が非常によくなる。(猫かぶり)
男性諸君は外面に騙されないように気を付けて下さい。
0575デフォルトの名無しさん
2006/03/15(水) 03:39:14で一応プログラムとしてはコマンドラインからまず、実行して
mainの引数として
打ち込む文字列の最初に'?'があったら
Usage: search [-exact|-prefix|-anywhere] pattern [filename]
ってプリントしてfprintf(stderr,"〜");exit(1)する
で文字列の中に'_'があったら
search: pattern should only contain underscores and letters
ってプリントしてfprintf(stderr,"〜");exit(1)する
で、すくなくとも一つでもマッチするwordがあれば行とそのwordを出力する、
でexit(0)[return 0]の事か?
なければexit(1)
で、これって、見つけたいwordはmainの引数から何個入れるの?好きなだけ?
限定されないとこまっちゃう。逆にコマンドラインから引数を受け取らないなら
好きなだけ比較できる。
はぁ、、英語って難しい
0576デフォルトの名無しさん
2006/03/15(水) 05:11:12ネタだよな?
0577デフォルトの名無しさん
2006/03/15(水) 06:52:090578575
2006/03/15(水) 07:29:31あれば、何行目と単語が表示するようなプログラムにしかならんかった
#include <stdio.h>#include <string.h>#include <stdlib.h>
typedef struct List{char letter[30];intgyou;struct List *next;}List;
void Fluss(List *p_fluss);void Getword(List *p_get);int main(void)
{char in_word_buff[30];int i = 1;char *gDlim ="\n",*pass;List *p_root = NULL;FILE *Dictionary;
List *p_new;List *p_fluss;if((Dictionary = fopen("辞書ファイル.txt","r")) == NULL){
fprintf(stderr,"ファイルを開けない");exit(1);}
while((fgets(in_word_buff,sizeof(in_word_buff),Dictionary)) != NULL){
p_new = (List *)malloc(sizeof(List));if(p_new == NULL){
fprintf(stderr,"メモリ確保出来ず");exit(1);}
pass = strtok(in_word_buff,gDlim);p_new->gyou = i++;
strcpy(p_new->letter,pass);p_new->next = p_root;p_root = p_new;}
p_fluss = p_root;Getword(p_fluss);Fluss(p_fluss); return 0;}
void Fluss(List *p_fluss){List *fl,*temp;int i = 1;for(fl = p_fluss ;fl!= NULL;){temp = fl->next;
free(fl);fl = temp;}}void Getword(List *p_get){
int get,i;char buff[256] = {0};printf("検索する単語はいくつですか");fgets(buff,sizeof(buff),stdin);
sscanf(buff,"%d",&get);for(i=1; i<=get;i++){printf("検索する単語%d個目\n",i);fgets(buff,sizeof(buff),stdin);
sscanf(buff,"%s",buff);while(1){if(p_get == NULL) break;if(0 == strcmp(p_get->letter,buff))
printf("%sは%d行目にあります\n",p_get->letter,p_get->gyou);p_get = p_get->next;}}}
0579デフォルトの名無しさん
2006/03/15(水) 12:20:57まぁまぁ
0580デフォルトの名無しさん
2006/03/15(水) 12:54:37真面目な話、あの英文を読解できないのはヤバイと思うが
0581デフォルトの名無しさん
2006/03/15(水) 15:02:30ここで聞いてもよろしいですか?
0582デフォルトの名無しさん
2006/03/15(水) 15:07:000583デフォルトの名無しさん
2006/03/15(水) 15:07:220584デフォルトの名無しさん
2006/03/15(水) 15:35:480585デフォルトの名無しさん
2006/03/15(水) 15:40:40厨臭くなって困る
0586デフォルトの名無しさん
2006/03/15(水) 15:47:16このスレで暴言を吐くな
厨臭くなって困る
0587デフォルトの名無しさん
2006/03/15(水) 15:52:500588デフォルトの名無しさん
2006/03/15(水) 15:52:58ほんものの厨だったかw
0589デフォルトの名無しさん
2006/03/15(水) 17:05:330590デフォルトの名無しさん
2006/03/15(水) 17:42:550591デフォルトの名無しさん
2006/03/15(水) 18:02:160592デフォルトの名無しさん
2006/03/15(水) 19:48:340593デフォルトの名無しさん
2006/03/15(水) 21:15:33http://pc8.2ch.net/test/read.cgi/tech/1142302804/l50
0594デフォルトの名無しさん
2006/03/15(水) 21:20:560595デフォルトの名無しさん
2006/03/15(水) 21:53:450596デフォルトの名無しさん
2006/03/15(水) 21:58:550597デフォルトの名無しさん
2006/03/15(水) 22:05:540598デフォルトの名無しさん
2006/03/15(水) 22:15:56[2] 問題文(含コード&リンク): 数当てGAMEを作れ
各桁の数字が違う4桁の整数をランダムに作成する
次に4桁の整数の入力を求め当たりならばメッセージを出して終了
ハズレならば
正解と入力値が完全に同じ数字の個数を H
含んでいるが位置が異なる数字を B
として出力後再度入力待ちをする
なおできれば入力のチェックも行う
例
正解・・6387
入力・・3967
出力・・1H2B
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: BCC/VC++
[3.3] 言語: C
[4] 期限: time(NULL)での表現が限界に達するまで
[5] その他の制限: なんでもOK
0599デフォルトの名無しさん
2006/03/15(水) 22:21:46[1] 授業単元:脳内
[2] 問題文
整数平方根を求める関数my_sqrtを作る
(例.my_sqrt(3)->1 (1.7320508...の整数部分
my_sqrt(5)->2 (2.2360679...の整数部分) を返す)
[3] 環境
[3.1] OS: 何でも
[3.2] コンパイラ名とバージョン: 何でも
[3.3] 言語: 何でも
[4] 期限: いつでも
[5] その他の制限: 関数に与える引数は0<= x <=2^32-1まで返り値は整数。math.h使用禁止
0600デフォルトの名無しさん
2006/03/15(水) 23:07:38綺麗なやり方じゃないが誰もが思いつくであろう物を上げておく
unsigned my_sqrt(unsigned long n)
{
unsigned i;
for (i=1; i*i<=n; ++i);
--i;
return i;
}
0601デフォルトの名無しさん
2006/03/15(水) 23:29:55math.h を include しなくても、しかるべきプロトタイプ書いて
ライブラリをリンクしたら使えてしまう訳だが。
まあそんな無粋な事はせずにやってみた。
int my_sqrt(int i){int j=i;for(;;--j)if(i>=j*j)return j;}
でもこれだと引数が2^16以上で破綻するからこうか。
int my_sqrt(int i)
{int m,j;for(j=8*sizeof(int)-1,m=1<<j;!(i*m);m>>=1,--j);
j=(i&m)>>((j+1)/2);for(;;++j)if(i<j*j)return j-1;}
0602デフォルトの名無しさん
2006/03/15(水) 23:33:190603デフォルトの名無しさん
2006/03/15(水) 23:35:59後はBだけまで来た
はずかしいソースができた
0604601
2006/03/15(水) 23:36:22int my_sqrt(int i){int m,j;for(j=8*sizeof(int)-1,m=1<<j;!(i&m);m>>1,--j);
for(j=(i&m)>>((j+1)/2);i>=j*j;++j);return j-1;}
0605デフォルトの名無しさん
2006/03/15(水) 23:43:24はずかしながらできますた
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1687.txt
ここが変だとかいわないでね
0606デフォルトの名無しさん
2006/03/16(木) 00:04:28ニュートン法。誤差がない保証はどこにもない。
int my_sqrt(unsigned n)
{
if(n == -1)
return 65535;
if(n == 0)
return 0;
unsigned a = n;
unsigned prev = -1;
while(a < prev)
{
prev = a;
a = (a + n / a) / 2;
}
return prev;
}
0607デフォルトの名無しさん
2006/03/16(木) 00:04:50[2] 問題文(含コード&リンク): 文字列中の番号に対して自然なソートを実装せよ。
以下のような大小関係になる
no1 < no822 < no2086
a < a0 < a1 < a1a < a1b < a2 < a10 < a20
x2-g8 < x2-y7 < x2-y08 < x8-y8
1.001 < 1.002 < 1.010 < 1.02 < 1.1 < 1.3 < 2.0
[3] 環境
[3.1] OS: 一般的なコンソール
[3.2] コンパイラ名とバージョン: 自由
[3.3] 言語: C89 / 現実的な範囲のC++
[4] 期限: なし
[5] その他の制限: 仕様が足りない部分は、適当に補完してください。
0608605
2006/03/16(木) 00:05:48気づかんかった
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1688.txt
0609デフォルトの名無しさん
2006/03/16(木) 00:08:05ふはは気づいたか
0610デフォルトの名無しさん
2006/03/16(木) 00:09:10自分でやってて気づきましたよ
2H
3B
あれ?
0611デフォルトの名無しさん
2006/03/16(木) 00:20:340612デフォルトの名無しさん
2006/03/16(木) 00:23:240613デフォルトの名無しさん
2006/03/16(木) 00:29:270614デフォルトの名無しさん
2006/03/16(木) 00:32:310615デフォルトの名無しさん
2006/03/16(木) 00:33:080616デフォルトの名無しさん
2006/03/16(木) 00:34:050617デフォルトの名無しさん
2006/03/16(木) 00:36:46例の「自然」さが理解できん。
0618デフォルトの名無しさん
2006/03/16(木) 00:39:03お気に入りがすっきりした。
0619デフォルトの名無しさん
2006/03/16(木) 00:43:13Blowの仕様はそれでいいのかな?
例えば、正解が6501のとき
6555って入力すると
2H 2B
って出るけど
2H 0B
が正しいんじゃない?
まあ、各桁がすべて異なった数値以外は
受け付けないようにすればラクなんだけどね
0620デフォルトの名無しさん
2006/03/16(木) 01:06:15脳内で修正しときますw
0621デフォルトの名無しさん
2006/03/16(木) 01:07:25ただの大学生だお
>>607
本題と関係ないんだが、C89ってのを久しぶりに見たんで一瞬何かと思った
みんなはANSIとC89、標準のどれで表記してる?これ以外もあったらよろ
0622デフォルトの名無しさん
2006/03/16(木) 01:15:44質問はテンプレ使え
0623デフォルトの名無しさん
2006/03/16(木) 01:16:540624デフォルトの名無しさん
2006/03/16(木) 01:47:48http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1689.cpp
0625624
2006/03/16(木) 01:58:08compare_fractionの最初の行は
for(int i = 1; ; i++)
0626デフォルトの名無しさん
2006/03/16(木) 02:08:37ちょwwwwwwwこれでもテンプレ要るのかよwwww
[1] 授業単元:プログラミング用語C
[2] 問題文(含コード&リンク):ISO/IEC 9899:1990を別の表記にせよ
[3] 環境
[3.1] OS:All
[3.2] コンパイラ名とバージョン:gcc3.4.4
[3.3] 言語:C
[4] 期限:無期限
[5] その他の制限:日本語・英語以外は使ってはいけない
0627デフォルトの名無しさん
2006/03/16(木) 03:22:200628デフォルトの名無しさん
2006/03/16(木) 03:30:50>>626
そんなのこのスレ見て自分で判断しろよカスが
0629デフォルトの名無しさん
2006/03/16(木) 03:36:540630デフォルトの名無しさん
2006/03/16(木) 06:29:54だ が 断 わ る
0631デフォルトの名無しさん
2006/03/16(木) 06:34:18もしやまた伊庭タンですか?!
0632デフォルトの名無しさん
2006/03/16(木) 08:17:13>>624 回答ありがとう。
仕様の原文のURLを書くべきだった。反省している。
ttp://sourcefrog.net/projects/natsort/
ちなみに、C版の解答も載ってるんで。興味があったらどうぞ。
0633デフォルトの名無しさん
2006/03/16(木) 11:44:10実装をみてみたけど、それだと
x2-y08 < x2-y7
で仕様に反してるな。
0634デフォルトの名無しさん
2006/03/16(木) 15:06:34昔平方根を筆算で解いてたのを思い出してやってみた
int my_sqrt(unsigned int a)
{
int n,i,j,sqrt_a,x=0,y;
int a2[6];/* log_100(2^32)<5ですたい */
a2[0]=0;
for(n=1;a>=100;n++){
a2[n]=a%100;
a/=100;
}
a2[n]=a;
y=a;
sqrt_a=0;
for(i=n;i>0;i--){
for(j=0;y-(x*10+j+1)*(j+1)>=0;j++)
;
y=(y-(x*10+j)*j)*100+a2[i-1];
x=x*10+j*2;
sqrt_a=sqrt_a*10+j;
}
return sqrt_a;
}
ちゃちゃっと検証してみたが今のところ問題ない模様...なんか動作おかしかったら突っ込みよろん
ちょっといじれば小数点以下も求められる・・はずw
0635デフォルトの名無しさん
2006/03/16(木) 15:52:01int my_sqrt(unsigned x) {
unsigned a, b, m;
a=1;
b=(x>>5)+8;
if(b>0xFFFF)b=0xFFFF;
do{
m=(a+b)>>1;
if(m*m>x)b=m-1;else a=m+1;
}while(b>=a);
return a-1;
}
0636デフォルトの名無しさん
2006/03/16(木) 17:56:55[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
vectorが複数の要素を持っている。
要素はcharの配列をメンバに持つ構造体である。
vectorの要素が5個で、charの配列が[8]のとき、
2番目の要素のポインタを自動変数にコピーせよ。
vector<A> v_a;
typedef struct {
char str[8];
}B;
B b;
--------------------
b.strにデータをセットしたとする
--------------------
m_v.push_back(b);
↑5回繰り返す。
ここまではわかったんですが、その後がさっぱりです。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC++ 6.0)
[3.3] 言語: C++
[4] 期限: 2006/03/17 09:00まで
[5] その他の制限:制限はありません
宜しくお願いします。
0637デフォルトの名無しさん
2006/03/16(木) 18:06:00struct B {char str[8];};
B b;
strcpy(b.str, "Whee!");
std::vector<B> m_v(5, tmp);
char * autoVariable = m_v[2];
ってことか?
0638デフォルトの名無しさん
2006/03/16(木) 18:28:24え、よくわからんけど
こういうことじゃまいか?
struct A { char str[8]; } a;
std::vector<A> v_a;
//5個セット
strcpy(a.str, "aiueo");
v_a.push_back(a);
...
A *dst = &v_a[1];
要素はポインタをメンバに持ってないんだが要素のポインタってなんだ?
0639デフォルトの名無しさん
2006/03/16(木) 19:39:54理由:わけのわからん名前をつけてるから。
0640デフォルトの名無しさん
2006/03/16(木) 19:42:430641デフォルトの名無しさん
2006/03/16(木) 19:47:12でも授業単元は情報処理w
0642デフォルトの名無しさん
2006/03/16(木) 19:48:350643デフォルトの名無しさん
2006/03/16(木) 19:55:06[2] 問題文:
1 から n までの数字が適当に並び替えられた列が入力として与えられる.「列から長さ 4 の部分列を選んで,その中を逆順にする」という操作だけを用いて元の列を巡回的になるように並び替えたい.
入力: 数 n,それに続いて 1 から n までの数が適当に並び替えられたもの.
出力: 可能のとき,手順を一ステップ毎表示する.逆順にした区間は [ ] で括る.実現する手順が複数あればどれを表示してもよい.不可能のときはimpossibleと表示.
入力例:
6 6 5 2 3 1 4
対応する出力例:
6 [1 3 2 5] 4
[2 3 1 6] 5 4
2 3 [4 5 6 1]
[3] 環境: 標準的な環境.言語はどちらでも可.
[4] 期限: 3/19 くらいまで.
[5] その他の制限: 特になし.
0644デフォルトの名無しさん
2006/03/16(木) 20:03:490646デフォルトの名無しさん
2006/03/16(木) 20:09:54後から問題を付け足すのはやめましょう
0647デフォルトの名無しさん
2006/03/16(木) 20:10:200648デフォルトの名無しさん
2006/03/16(木) 20:10:49俺も
0649デフォルトの名無しさん
2006/03/16(木) 20:14:04総当りしか解き方を思いつかない俺にはだめだ
0650643
2006/03/16(木) 20:17:15>>647-648
長さ 2 の列を選んで並び替えるのは(巡回を無視して)バブルソートですが,
それを長さ 4 の列でやりたい,ということです.
巡回ってのは 2 3 4 5 1 とか 4 5 1 2 3 みたいなのです.
分からないことがあったら聞いてください.
>>649
幅優先探索なら総当りでも最短性が保障できますが,
n! くらいのオーダーがかかるので n が 256 近いときに終わらない気がします.
0651デフォルトの名無しさん
2006/03/16(木) 20:22:080653デフォルトの名無しさん
2006/03/16(木) 20:26:340654デフォルトの名無しさん
2006/03/16(木) 20:35:18元の列を巡回的になるように・・・
なんとなく理解した。
長さ5のとき。
4 3 2 1 5
ってのもアリにする?
0655デフォルトの名無しさん
2006/03/16(木) 20:37:170657デフォルトの名無しさん
2006/03/16(木) 20:46:100658デフォルトの名無しさん
2006/03/17(金) 02:18:38これ単調増加列とかじゃないけど
どんな列なのかいまいちわからん
例でいいから計算してみてよくわからん
0659デフォルトの名無しさん
2006/03/17(金) 03:37:46それ
6 5 2 3 1 4
の間違いっしょ
ちょっと考えればわかるだろ・・・
0660デフォルトの名無しさん
2006/03/17(金) 03:57:320661デフォルトの名無しさん
2006/03/17(金) 04:20:13次の配置のものはどのような方針で作られますか
100
010
001
や
001
100
010
つまり、縦から見ても横から見ても 1 がひとつあるような全ての配置です
0662デフォルトの名無しさん
2006/03/17(金) 04:32:38無限ループにはならないと思うが。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1691.cpp
impossible にする条件がよくわかってない。
いつあきらめればいいんだろう。
あ、単純に過去のパターンをすべて覚えておいて、
既出パターンが生成されたらそこでやめればいいのか。
0663デフォルトの名無しさん
2006/03/17(金) 04:42:07>>661
縦と横方向にかぶらないようにするだけだから簡単
#include <iostream>
#include <vector>
#include <algorithm>
const int size = 10;
int main(){
std::vector<int> v;
for(int i=0; i<size; ++i)v.push_back(i);
std::random_shuffle(v.begin(), v.end());
for(int y=0; y<size; ++y){
for(int x=0; x<size; ++x)std::cout<<(x==v[y])?'1':'0';
std::cout << std::endl;
}
return 0;
}
今は反省して>>662のソースみている
0664デフォルトの名無しさん
2006/03/17(金) 04:49:03#include <algorithm>
これいらんのか
0666デフォルトの名無しさん
2006/03/17(金) 06:21:19そんなことない
一応これはC++のSTLつかってんだけど、どれもとても基本的な関数だからね
おれのやり方だと、まずわかりやすい基本の形として
1000
0100
0010
0001
みたいなのを考える
このデータの持ち方として
int array[4] = { 0, 1, 2, 3 };
とした
最初の要素に1行目の'1'の位置を格納
次の要素に2行目の'1'の位置を格納
って感じね
んで、この配列を好きに並べ替えればいいだけなのよ
>>663でいうと、random_shuffleでランダムに並び替えてるだけ
例えばarray[4] = { 2, 1, 3, 0 };
のときは
0010
0100
0010
1000
って感じになる
もっといい方法あるかもしれんけど
0668661
2006/03/17(金) 06:41:310669デフォルトの名無しさん
2006/03/17(金) 07:11:18深さの見積もりが多分おかしい(といってもじゃあ一体どういう式にすべきか思いついてないけど)。
そのソースだと315624が解けない(回答は下記)。
長さ6だと操作による全パターン数は360になる。昇順パターンはそのうち6パターン。
ということはまんべんなく分布しているとみると最大60手かかる?
3 1 5 6 2 4
[6 5 1 3] 2 4
6 [2 3 1 5] 4
[1 3 2 6] 5 4
1 [5 6 2 3] 4
[2 6 5 1] 3 4
2 6 [4 3 1 5]
[3 4 6 2] 1 5
3 4 [5 1 2 6]
[1 5 4 3] 2 6
1 [2 3 4 5] 6
0670デフォルトの名無しさん
2006/03/17(金) 07:14:28深さを1ずつ増やしながら順次まわしてけばいいかも。
0671デフォルトの名無しさん
2006/03/17(金) 07:16:010672デフォルトの名無しさん
2006/03/17(金) 07:27:430673デフォルトの名無しさん
2006/03/17(金) 07:52:10長さ6だと操作による群のパターン数は360だが、昇順パターンはそのうち3パターン。
(123456,345612,561234)と(234561,456123,612345)は違う群を作る。なので解けるパターンは720パターン。
あと分布空間は長さ6だと少なくとも3次元(多分4次元)なので、最大手数はもっと少ないかもしれん。
0674643
2006/03/17(金) 08:09:08本人ですが,とりあえず深さ優先を書いてみました.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1692.cpp
>>672
全探索かけたら n = 6 では 9 手が最長ということになりました.
>>669
反復深化ですね.アリかも.
0676643
2006/03/17(金) 08:46:36幅優先の実装が悪いせいもありますが,こっちのほうが早いです.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1693.cpp
幅優先をいくらか走らせたら,可能の場合は短手数でできるようなので,
こっちでimpossible をやる前に判定できれば,満足できる気がします.
0677デフォルトの名無しさん
2006/03/17(金) 09:17:33http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1694.txt
幅優先で書いたけど遅いー
0678デフォルトの名無しさん
2006/03/17(金) 12:19:35循環するようにってことだね?
巡回と循環じゃ随分意味が違う
0679デフォルトの名無しさん
2006/03/17(金) 12:23:2515パズルはピースの入れ替えが複数個じゃないと解けない
っていうのがあった気がする。
同様にこの循環(巡回?)パズルも簡単なルールを発見できると面白そうね。
0680デフォルトの名無しさん
2006/03/17(金) 14:27:09http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1695.cpp
スマートポインタがあればもっときれいに書く。
# 無くてもきれいに書くべき何だろうけど、動的メモリを解放しなきゃいけないことに気づいたときにはもうほとんど書き上がっていた
0681デフォルトの名無しさん
2006/03/17(金) 14:32:410682デフォルトの名無しさん
2006/03/17(金) 19:12:03書店でAccelerated C++って本を見付けたんだけど、これいい本なのかな?
0683デフォルトの名無しさん
2006/03/17(金) 19:16:25かなり面倒くさそう
0684デフォルトの名無しさん
2006/03/17(金) 19:32:22>ここのC++使いたちはどんな本で勉強したのでつか?
俺はwebで勉強してとりあえず書けるようになった後、
「プログラミング言語C++」を読んだ。
>書店でAccelerated C++って本を見付けたんだけど、これいい本なのかな?
Amazonで初めの数ページを見てみた限りではまともな事が書いてある。
入門書として優れているかは別の話だが。
0685デフォルトの名無しさん
2006/03/17(金) 22:02:59使い方がよくわかりません。
2問なんですが・・。
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
問題1
要素数10の配列に乱数で値(1から100)が設定してある。
最大値のある場所を求める。同じ値があったらどうするか。
問2
2つの要素数100の配列に乱数で値(1から10)が設定してある。
2つの配列の同じ内容の場所を求める。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語: C
[4] 期限: いつでも
[5] その他の制限:
お願いしますm。
0686デフォルトの名無しさん
2006/03/17(金) 22:17:26「同じ値があったらどうするか。」ってのは問題文なのか?
0687デフォルトの名無しさん
2006/03/17(金) 22:21:42問2もあいまいだな。
2つの配列の同じ内容って、
A[index] == B[index];
が真となる最初のindexの場所を探せってことか?
0688デフォルトの名無しさん
2006/03/17(金) 22:31:330689デフォルトの名無しさん
2006/03/17(金) 22:32:04しばし待たれよ
0690685
2006/03/17(金) 22:33:45よく確認したら「同じ値があったらどうする の か」
「の」が抜けてました、すみません。
それでも意味がわかりませんよね。
>687さんが言うとおり
問題2は配列は別で要素数は同じだと思います。
0691デフォルトの名無しさん
2006/03/17(金) 22:36:410692デフォルトの名無しさん
2006/03/17(金) 22:38:260693デフォルトの名無しさん
2006/03/17(金) 22:52:47俺が思ったとおりに作った
後悔は・・・・してるかもしない
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1696.txt
0694685
2006/03/17(金) 23:37:59有難うございます。ちゃんと表示できました。
意味不明な問題を解いてもらって申し訳ない(汗
他の問題も悩んで解いていて寝不足気味なので、
すみませんが寝ますね・・
0695デフォルトの名無しさん
2006/03/18(土) 00:07:41[6 5 1 3] 2 4
0696デフォルトの名無しさん
2006/03/18(土) 00:32:46のうち、"3 1 5 6"の部分を選んで逆転させた、という表示が
[6 5 1 3] 2 4
0697デフォルトの名無しさん
2006/03/18(土) 00:39:29適当に選んで逆順にしていって結果的にソートして
ある状態にすればいいってこと?
条件は最適解だせよってことでOK?
0698デフォルトの名無しさん
2006/03/18(土) 00:45:32n=256まで対応(>>645)。
0699デフォルトの名無しさん
2006/03/18(土) 01:06:09並び替えろって話なんだな
簡単かなぁ何使って求めようかな
0700デフォルトの名無しさん
2006/03/18(土) 01:32:130701デフォルトの名無しさん
2006/03/18(土) 01:48:220703デフォルトの名無しさん
2006/03/18(土) 02:00:56つまり
010
100
001
をCで表示しろってことか?
0704661
2006/03/18(土) 02:02:260705デフォルトの名無しさん
2006/03/18(土) 02:54:11それともランダムで1つだけ出力するのか?
0706デフォルトの名無しさん
2006/03/18(土) 02:59:22ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1697.txt
一応出来た。
0707デフォルトの名無しさん
2006/03/18(土) 03:07:31#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX 15
int main(void){
int num[MAX][MAX]={0},i,k,x,y,swap;
int list[MAX];
srand(time(NULL));
for(i=0;i<MAX;i++){
num[i][i] = 1;
list[i] = i;
}
for(i=0;i<MAX;i++){
x = rand()%MAX;
y = rand()%MAX;
if(x!=y){
swap = list[x];
list[x] = list[y];
list[y] = swap;
}
}
for(i=0;i<MAX;i++){
for(k=0;k<MAX;k++){
printf("%d ",num[list[i]][k]);
}
puts("");
}
return 0;
}
0708デフォルトの名無しさん
2006/03/18(土) 03:16:250709デフォルトの名無しさん
2006/03/18(土) 03:53:11連続した4つを逆順にする操作は、隣同士の数の置換を6回(偶数回)するので、
答えにたどり着くまでには、隣同士の置換は偶数回行われるはず。
てことは、nが偶数なら、半分(奇置換で辿り付く分)は解けないことになるのかな。
例えば、123456と612345は奇数回の置換で結びつくから、
123456から612345へは4つを逆順にする操作ではたどり着けない。
でも、nが奇数だと、列を巡回させるのは、偶数回の置換で可能だから、
こういうことは言えないか。
0710デフォルトの名無しさん
2006/03/18(土) 04:08:18nが偶数で、問題文が123456..に対して奇置換での操作で作られたものなら、
612345(と、そこから偶置換でたどり着ける答え)を目指せばいいのか。
nが奇数だと、どう巡回させても偶奇を変えられないから、
答えにたどり着けない配位が出てくるのか・・。
0711デフォルトの名無しさん
2006/03/18(土) 04:44:060712デフォルトの名無しさん
2006/03/18(土) 04:44:57文字白
0713デフォルトの名無しさん
2006/03/18(土) 04:57:190714デフォルトの名無しさん
2006/03/18(土) 05:03:550715デフォルトの名無しさん
2006/03/18(土) 11:03:47事実として、個数(=n)/全パターン数(=n!)/解けるパターン数
4/24/8
5/120/10
6/720/720
7/5040/2520
8/40320/40320
9以上は時間の関係上未探索。
5以下は特例とすると、偶数だと全パターンとけて奇数だと半分とけないってことになる?
0716デフォルトの名無しさん
2006/03/18(土) 11:07:11個数(=n)/全パターン数(=n!)/解けるパターン数/最大最適置換回数
4/24/8/1
5/120/10/1
6/720/720/9
7/5040/2520/7
8/40320/40320/9
0717643
2006/03/18(土) 11:30:05証明できました.以下 n ≧ 6 とします.
補題:任意の偶置換を連続する4要素のリバースで実現できる.
証明:
偶置換は三要素の巡回置換に表せるので,三要素の巡回置換が表せれば十分.そのためには,列 [...,a,b,c,...] を [...,b,c,a,...] に移せればいい(ただし左右の ... は動かさない).
この置換は,右側に3つ以上スペースがある場合は8手でできる.右側に2つ以上,左側に1つ以上のスペースがある場合は9手でできる(手順省略).
長さを 6 以上に制限しているので,かならずこのどちらかの条件か,左右を入れ替えた条件が成立するのですべて実現できた.//
定理:n が偶数の場合はすべて解け,奇数の場合は半分解けない.
n が偶数のときは列全体の巡回置換が奇置換になるので,4要素の入れ替えと全体の巡回置換を合わせてすべての置換を生成する.n が奇数のときは偶置換になるので,奇置換のものは生成できない.//
0718デフォルトの名無しさん
2006/03/18(土) 11:50:30>>678
間 違 っ た 日 本 語 を い つ ま で も 使 い 続 け る の は な ぜ ?
0719デフォルトの名無しさん
2006/03/18(土) 12:06:57どうでもいい。
それから、「巡回置換」は正しい術語。
0720デフォルトの名無しさん
2006/03/18(土) 14:03:22>「巡回置換」は正しい術語。
アラやだ恥ずかしい
0721デフォルトの名無しさん
2006/03/18(土) 14:11:260722デフォルトの名無しさん
2006/03/18(土) 14:14:37言葉を正確に使いたい気持ちはわかるんだが、
人に強制はしないほうがいいと思う。
たまに、自滅する。(漏れも、以前は良くやった)
相手の意図を汲み取るのに力を割いたほうが
人生、幸せになると思うんだ。
0723デフォルトの名無しさん
2006/03/18(土) 14:44:50ということは6以上でimpossibleになるのは、
要素数が奇数でバブルソートしたときに交換回数が奇数のものってことでOK?
そうでなければ反復深化してればいつかは解けるってことかな。
(まぁそのいつかをどれだけ早くするかが問題なわけだが。)
0725デフォルトの名無しさん
2006/03/18(土) 15:47:55なんか文字列探索のアルゴリズムと同じような気がしてきたよ。
久しぶりにマジメに考えてみよう。
0726デフォルトの名無しさん
2006/03/18(土) 18:04:06そこからルート向かって集めたノード列が答えになる。
・出現パターンはデータベース化しておいて、ノードを作る際のチェックに使う。
・ノードを作る際、既出で、かつ、自身よりも浅い深度で出現したパターンなら、
それ以上深く探索するのは無駄。したがって無効ノードになる。
・すべての子ノードが無効ノードになったら、親ノードも無効ノードになる。
・子ノード生成深度を1づつ深くしてゆくと、どこかでリーフが見つかるか、
ルートノードが無効ノードになるのでそこで探索終了。
・ルートが無効になったときが、すなわちimpossible。
0727デフォルトの名無しさん
2006/03/18(土) 18:07:17多分木のルールは、あるパターンに1回操作したとき生成されるパーン群を、子ノードとする。
0728デフォルトの名無しさん
2006/03/18(土) 18:11:200729デフォルトの名無しさん
2006/03/18(土) 18:14:010730726
2006/03/18(土) 18:18:43>・すべての子ノードが無効ノードになったら、親ノードも無効ノードになる。
これによって、あるノードが無効化されたとき、親の方向へ向かってノードの無効が発生する。
そして解がない場合には、最終的にノードの無効化がルートノードにまで達してしまう。
0731デフォルトの名無しさん
2006/03/18(土) 18:32:32何にせよ実装キボンヌ
0732http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 18:55:48もしくは64bitにネイティブ対応した置換ソフトないですか?
0733デフォルトの名無しさん
2006/03/18(土) 18:56:16マルチしね
0734デフォルトの名無しさん
2006/03/18(土) 19:51:23もう答えでてるみたいだけど。
問2
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main(){
int cnt,a[100],b[100];
srand(time(NULL));
for(cnt=0;cnt<100;cnt++){
a[cnt]=rand()%10;
b[cnt]=rand()%10;
if(a[cnt]==b[cnt]){
printf("%d,",cnt);
}
}
printf("\n");
return 0;
}
0735デフォルトの名無しさん
2006/03/18(土) 20:27:46問題は
>・出現パターンはデータベース化しておいて、ノードを作る際のチェックに使う。
これのサイズと
>・ノードを作る際、既出で、かつ、自身よりも浅い深度で出現したパターンなら、
> それ以上深く探索するのは無駄。したがって無効ノードになる。
これの早さ。
順列はハッシュ化できるのでハッシュマップにすれば早さはかせげるが要素数14で1GBをこえてしまう。
線形探索だと要素数と手数が増えた時点でかなり遅くなる。
ハッシュ値を無限精度整数にして二分探索すればましかもしれないがサイズの問題は以前として残る。
最大手数を見積もるか、一番近い巡回列(循環列?)までの距離がわかれば改善されるのだろうが…。
0736デフォルトの名無しさん
2006/03/19(日) 01:06:57[2] 問題文(含コード&リンク):
マルコフ連鎖プログラムの日本語版を作成せよ
[3] 環境
[3.1] OS: コンソール
[3.2] コンパイラ名とバージョン: メジャーなコンパイラで通ること
[3.3] 言語: C/C++どちらでも可
[4] 期限: [無期限]
[5] その他の制限: ライブラリは標準ライブラリのみ
漢字コードはプログラム作成上都合のよいものを選択してよい
0737デフォルトの名無しさん
2006/03/19(日) 01:27:3311個は30分以上かかりそうなので求めてない。
0738709
2006/03/19(日) 02:06:42なるほど!
偶置換は三要素の巡回置換で表せる事実から出発すると、
簡潔に証明できるんだな・・。
任意の偶置換を4要素のリバースのみで実現することによって
証明しようとしたまではいいけど、力業に走って
ゴチャゴチャしてきて投げてしまった。結構面白かった。
0739デフォルトの名無しさん
2006/03/19(日) 03:32:43Java Applet版が下にありますね。
ttp://www.cc.rim.or.jp/~knagasa/jmarkov/jmarkov.html
自分が書いた文章を入れてみたら結構笑えたが、
作成対象としてはいまいち食指が…。
0740デフォルトの名無しさん
2006/03/19(日) 15:59:32置換操作に巡回対称性がないためだめだったorz
0741デフォルトの名無しさん
2006/03/19(日) 19:42:370742デフォルトの名無しさん
2006/03/19(日) 20:01:22調子に乗って恥をかかないようにな
0743デフォルトの名無しさん
2006/03/19(日) 21:31:21[2] 問題文:
2つの整数値を入力し、合計とビット毎のAND、OR、XORの結果の
2進数を表示するプログラムの作成。
実行結果イメージ
第1値 :100
第2値 :200
合計 :0000 0001 0010 1100
論理積 :0000 0000 0100 0000
[3] 環境
[3.1] OS:windowsXP
[3.2] Borland C++ Compiler 5.5
[3.3] 言語:C言語
[4] 期限: 無いです
2進数へ変換する為に2で割った余りを文字列に格納してそれを逆順に表示
させるという方針を立てたのですがどうコーディングしたらよいのかがわからないです。
よろしければお願いいたします
0744デフォルトの名無しさん
2006/03/19(日) 22:13:51#include <stdio.h>
#define swap( Type, x, y ) do { Type tmp; tmp = x; x = y; y = tmp; } while (0)
char *reverse_string( char *str )
{
char *start = str, *end = str;
while ( *++end );
--end;
while ( start < end ) { swap( char, *start, *end ); ++start; --end; }
return str;
}
char *get_binary_expression( int n, char *buf )
{
char *p = buf;
while ( n ) { *p++ = '0' + n % 2; n /= 2; }
*p = '\0';
return reverse_string( buf );
}
int main( void )
{
int a, b;
char buf[1024];
printf( "Input First Integer> " ); scanf( "%i", &a );
printf( "Input Second Integer > " ); scanf( "%i", &b );
printf( "First: %s\n", get_binary_expression(a,buf) );
printf( "Second: %s\n", get_binary_expression(b,buf) );
printf( "Sum: %s\n", get_binary_expression( a+b, buf ) );
printf( "AND: %s\n", get_binary_expression( a&b, buf ) );
printf( "OR: %s\n", get_binary_expression( a|b, buf ) );
printf( "XOR: %s\n", get_binary_expression( a^b, buf ) );
return 0;
}
0745デフォルトの名無しさん
2006/03/19(日) 22:21:36#include <stdio.h>
#define bit(x, n) ((x & 1<<n)>>n)
typedef int WORD;
int main(void)
{
WORD wo1, wo2; WORD woSum, woAnd, woOr, woXor; int i;
printf("第1値: "); scanf("%d", &wo1); printf("第2値: "); scanf("%d", &wo2);
woSum = wo1 + wo2;
woAnd = wo1 & wo2;
woOr = wo1 | wo2;
woXor = wo1 ^ wo2;
printf("合計: "); for (i=15;i>=0;--i) {
printf("%d", bit(woSum, i));
if (!(i%4)) printf(" "); }
printf("\n");
printf("論理積: "); for (i=15;i>=0;--i) {
printf("%d", bit(woAnd, i));
if (!(i%4)) printf(" "); }
printf("\n");
printf("論理和: "); for (i=15;i>=0;--i) {
printf("%d", bit(woOr, i));
if (!(i%4)) printf(" "); }
printf("\n");
printf("排他的論理和: "); for (i=15;i>=0;--i) {
printf("%d", bit(woXor, i));
if (!(i%4)) printf(" "); }
printf("\n");
return 0;
}
0746デフォルトの名無しさん
2006/03/19(日) 22:24:17#include <stdio.h>
int main(){
int bit[32],a,b,and,xor,or,i;
printf("第1値->");scanf("%d",&a);
printf("第2値->");scanf("%d",&b);
and=a&b;xor=a^b;or=a|b;printf("and:");
for(i=0;i<=31;i++){
bit[31-i]=(and>>i)&1;
}
for(i=0;i<=31;i++){
if(i%4==0)printf(" ");
printf("%d",bit[i]);
}
printf("\nxor:");
for(i=0;i<=31;i++){
bit[31-i]=(xor>>i)&1;
}
for(i=0;i<=31;i++){
if(i%4==0)printf(" ");
printf("%d",bit[i]);
}
printf("\nor: ");
for(i=0;i<=31;i++){
bit[31-i]=(or>>i)&1;
}
for(i=0;i<=31;i++){
if(i%4==0)printf(" ");printf("%d",bit[i]);
}
return 0;
}
0747デフォルトの名無しさん
2006/03/19(日) 22:30:48ありがとうございます。
ソースを参考にコーディングの方法を勉強したいと思います<(_ _)>
0748デフォルトの名無しさん
2006/03/19(日) 22:32:180749743
2006/03/19(日) 22:58:28#include <stdio.h>
int Bin(int x);
int main(){
unsigned int a,b;
printf("第1値 :");scanf("%d",&a);
printf("第2値 :");scanf("%d",&b);
printf("\n合計 :");
Bin(a+b);
printf("\n論理積 :");
Bin(a&b);
printf("\n論理和 :");
Bin(a|b);
printf("\n排他的論理和:");
Bin(a^b);
return 0;
}
int Bin(int x){
int buf[16],i;
for(i=0;i<=15;i++){
buf[15-i]=(x>>i)&1;
}
for(i=0;i<=15;i++){
if(i%4==0){
printf(" ");
}
printf("%d",buf[i]);
}
return 0;
}
0750デフォルトの名無しさん
2006/03/19(日) 23:04:380751デフォルトの名無しさん
2006/03/20(月) 00:02:18VC6,Shift-JISでやってみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1698.txt
トークン化のアルゴリズムがいまいちで面白くないかもしれん。
0752デフォルトの名無しさん
2006/03/20(月) 00:09:03自分を見失わずに仕上げた>751は偉い。
0753デフォルトの名無しさん
2006/03/20(月) 00:12:35http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1699.txt
標準ライブラリのみという条件を見落としていた。
標準入出力をバイナリモードにするのを止め。#pragmaは許してくれ。
0754デフォルトの名無しさん
2006/03/20(月) 03:08:25(ノ´∀`*)
0755デフォルトの名無しさん
2006/03/20(月) 15:41:450756デフォルトの名無しさん
2006/03/20(月) 16:01:370757755
2006/03/20(月) 18:45:510758643
2006/03/20(月) 18:54:36[1] 先生の評価: (他のメンバーの評価ということで)
結局指数のアルゴリズムなので,まあそんなものか,という感じでした.
存在に関する議論と同じようにすれば最適とは限らない手順は多項式で作れるので,それを簡約化できないかという意見などが出ました.
[4] 回答者にコメント(愚痴等は禁止):
100レス程度付き合っていただきありがとうございました.
0759デフォルトの名無しさん
2006/03/20(月) 21:27:15[2] 問題文(含コード&リンク):コマンドプロンプト上で動く、実用的なプログラムを作りなさい。例)電卓
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語:C
[4] 期限:[2006年03月21日23:59まで]
[5] その他の制限:習ったもの↓
printf,scanf,if,else if,switch,for,while,多重ループ,1次元配列,2次元配列,strcpy,strlen,sqrt等
宜しくお願いします。
0760デフォルトの名無しさん
2006/03/20(月) 21:29:11int main() {
for(;;)
printf("単位ください!\n");
}
0761デフォルトの名無しさん
2006/03/20(月) 21:35:51#include<stdio.h>
int main(int argc , char *argv[])
{
FILE *in,*out;
int c;
if( argc < 2 ){
printf("ファイルを指定してください\n");
return 0;
}
if((in = fopen( argv[1], "r")) == NULL){
printf("ファイルをオープンできません");
return 1;
}
if((out = fopen( argv[2],"w")) == NULL){
printf("ファイルをオープンできません");
return 1;
}
while((c = fgetc(in)) != EOF){
fputc(c,out);
}
fclose(in);
fclose(out);
return 0;
}
0762759
2006/03/20(月) 21:46:310763デフォルトの名無しさん
2006/03/20(月) 21:55:45先生!
#0A0A0A色で塗ったビットマップをコピーすると#0D0A0Dと#0A0D0Aのストライプになってしまいます!
ファイルサイズも倍近くになってしまいます!
こんな恣意的な質問をする生徒はどうしたらいいでしょうか?
0764デフォルトの名無しさん
2006/03/20(月) 22:35:57"b" を指摘したいんかw?
0765デフォルトの名無しさん
2006/03/20(月) 23:41:530766デフォルトの名無しさん
2006/03/20(月) 23:47:220767デフォルトの名無しさん
2006/03/21(火) 00:11:19[1] 授業単元:脳内+過去問
[2] 問題文 以下のC言語ソースで表示される盤面で*で囲まれている+の部分を数値か何か
別の文字で埋めよ
[3] 環境 :特に決まり無し
[4]期限無し。
#include <stdio.h>#include <stdlib.h>#include <time.h>
void get_randam(int block[16][16]);
int main(void){int block[16][16];/*ブロック数*/int i,j;/*for用*/time_t t;t =time(&t);
srand(t);get_randam(block);for(i = 0; i < 16; i++){for(j = 0; j < 16; j++){block[i][j] ;
if(block[i][j] == 1) printf("%2c",'*');else if (block[i][j] == 0) printf("%2c",'+');
if(j == 15) putchar('\n');}}return 0;}void get_randam(int block[16][16])
{int i = 0, j = 0;/*for用*/int x = 0;/*ランダム数用*/for(i = 0; i < 16; i++){for(j = 0; j < 16; j++){
x = rand() % 2;if(x == 0)block[i][j] = 0;else if (x == 1)block[i][j] = 1;}}}
0768デフォルトの名無しさん
2006/03/21(火) 00:29:03>>759向けに高校1年レベルの実用的なプログラムということで考えたのだが
明日デートで早めに寝なきゃならんので代わりに作ったってくれ。
[2] 問題文(含コード&リンク):
xの三次関数とxの最小値・最大値を入力として受け取り、
三次関数全体の増減表と概形、与えられたxの範囲での関数の最大値・最小値を出力するプログラムを作れ。
関数の入力の仕方、概形の出力の仕方は各自で工夫すること。
xの最小値・最大値はいずれかまたはその両方を未入力とすることもできるようにする。
[1][3][4][5] >>759に順ずる。
0769デフォルトの名無しさん
2006/03/21(火) 00:54:22囲まれてるってのは8方向全部で囲まれてるってこと?
0770デフォルトの名無しさん
2006/03/21(火) 01:04:09三次関数忘れた。ごめん、むり。
0771デフォルトの名無しさん
2006/03/21(火) 01:12:07こういうやつだよ
0772デフォルトの名無しさん
2006/03/21(火) 01:15:19思い出すところから始めるとか、暇潰しのテンションではむりぽ
0773デフォルトの名無しさん
2006/03/21(火) 01:17:27微分してその解が0になるxから極値が求まるぞ
0774デフォルトの名無しさん
2006/03/21(火) 01:18:530775デフォルトの名無しさん
2006/03/21(火) 01:20:530776デフォルトの名無しさん
2006/03/21(火) 01:21:51おまえは全国300万人のN88BASIC野郎を敵に回した
0777デフォルトの名無しさん
2006/03/21(火) 01:22:09ちょっとぐらいCを自分で学んでたら絶対に知ってるだろうし
0778デフォルトの名無しさん
2006/03/21(火) 01:23:320779767
2006/03/21(火) 01:44:46例えば
*****
*+++*
*++*
***
のような部分を
*****
*111*
*11*
***
のようにする。
0780デフォルトの名無しさん
2006/03/21(火) 01:54:420781デフォルトの名無しさん
2006/03/21(火) 02:05:16----略-----
for(i=0; i<16; i++)
for(j=0; j<16; j++){
if(block[0][j]==0) block[0][j]=2;
else if(block[15][j]==0) block[15][j]=2;
else if(block[i][0]==0) block[i][0]=2;
else if(block[i][15]==0) block[i][15]=2;
}
for(k=0; k<16; k++)
for(i=0; i<16; i++)
for(j=0; j<16; j++)
if(block[i][j]==0){
if(block[i-1][j]==2) block[i][j]=2;
else if(block[i][j-1]==2) block[i][j]=2;
else if(block[i][j+1]==2) block[i][j]=2;
else if(block[i+1][j]==2) block[i][j]=2;
}
puts("------変換しました------");
for(i = 0; i < 16; i++)
for(j = 0; j < 16; j++){
block[i][j] ; // これ必要ないだろ?
if(block[i][j] == 1) printf("%2c", '*');
else if (block[i][j] == 0) printf("%2c", '#');
else if (block[i][j]==2) printf("%2c", '+');
if(j == 15) putchar('\n');
}
return 0;
}
こんな感じか?
0782デフォルトの名無しさん
2006/03/21(火) 02:05:280783デフォルトの名無しさん
2006/03/21(火) 02:28:55解法其の一 : 力業
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=27366
うまいアルゴリズム思い付かんかったです。
>>767 のプログラムの出力をパイプでわたすと解きます
一応 16x16 じゃないのにも対応したつもり。メモリとかデータエラーのチェックはいいかげん。
だれかうまいアルゴリズム考えて
0784デフォルトの名無しさん
2006/03/21(火) 02:44:39#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void get_randam(int block[16][16]) {
int *p;
for(p = &block[0][0]; p <= &block[15][15]; p++) *p = rand() % 2;
}
void paint(int block[16][16], int x, int y){
if( block[y][x] != 0) return;
block[y][x] = 2;
paint(block, x+1, y); paint(block, x-1, y); paint(block, x, y+1); paint(block, x, y-1);
}
void make_ans(int block[16][16]){
int i, *p;
for(i = 0; i < 16; i++){
paint(block, 0,i); paint(block, 15,i); paint(block, i,0); paint(block, i,15);
}
}
int main(void){
int block[16][16], *p, i = 0;
srand(time(NULL));
get_randam(block); make_ans(block);
for(p = &block[0][0]; p <= &block[15][15]; p++, i++){
switch(*p){
case 0: printf(" 1"); break;
case 1: printf(" *"); break;
case 2: printf(" +"); break;
default:printf(" "); break;
}
if(i % 16 == 1) putchar('\n');
}
0785784
2006/03/21(火) 02:51:25i 初期値を = 1 として、 if(i % 16 == 0) putchar('\n'); とすればいいか・
0786767
2006/03/21(火) 03:00:52俺、解答が解らないから書き込んだけど
やっぱ、頭のいい人は違うは
解答を見て勉強さして頂きます。
0787784
2006/03/21(火) 03:18:36Nを大きくすると再帰のネストがドンドン深くなって、しまいにはプログラムが落ちます。
うちの環境だと、N = 50 で落ちたり落ちなかったりする。メモリ1G実装。
0788784
2006/03/21(火) 03:26:530789デフォルトの名無しさん
2006/03/21(火) 03:33:19#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 16
void get_randam(int block[N][N]) {
int *p; for(p = &block[0][0]; p <= &block[N-1][N-1]; p++) *p = rand() % 2;
}
void paint(int block[N][N], int x, int y){
if( x<0 || y<0 || x>=N || y>=N || block[y][x] != 0) return;
block[y][x] = 2;
paint(block, x+1, y); paint(block, x-1, y); paint(block, x, y+1); paint(block, x, y-1);
}
void make_ans(int block[N][N]){
int i;
for(i = 0; i < N; i++){
paint(block, 0,i); paint(block, N-1,i); paint(block, i,0); paint(block, i,N-1);
}
}
int main(){
int block[N][N], *p, i = 1;
srand(time(NULL)); get_randam(block); make_ans(block);
for(p = &block[0][0]; p <= &block[N-1][N-1]; p++, i++){
switch(*p){
case 0: printf(" 1"); break;
case 1: printf(" *"); break;
case 2: printf(" -"); break;
default:printf(" E"); break;
}
if(i % N == 0) putchar('\n');
}
}
0790デフォルトの名無しさん
2006/03/21(火) 05:17:44専門的なやつとか数値計算とかはやめてくれw
簡単なやつでいい、頼む。
0791デフォルトの名無しさん
2006/03/21(火) 05:27:09[1] 授業単元:PKU JudgeOnline 1000
[2] 問題文(含コード&リンク): http://acm.pku.edu.cn/JudgeOnline/showproblem?problem_id=1000
要約
ともに0以上10以下の二つの整数を標準入力で受け取り
その和を標準出力に表示せよ
[3] 環境
[3.1] OS: たぶんWindows
[3.2] コンパイラ名とバージョン: gccもある
[3.3] 言語: CとかC++とかいろいろ
[4] 期限: 無い無い
[5] その他の制限: ナイナイ
なんか競いたいならソースの最小容量目指すとか
現在トップは25byteだな
0792デフォルトの名無しさん
2006/03/21(火) 05:30:29Hello World!!と表示するプログラムを作成せよ。
0793デフォルトの名無しさん
2006/03/21(火) 05:40:0025byte絶対無理
0795デフォルトの名無しさん
2006/03/21(火) 05:52:04同じコンパイラのだけリストアップしてコード長見ればいいんじゃん?
http://acm.pku.edu.cn/JudgeOnline/problemstatus?problem_id=1000&language=5&orderby=clen
0796デフォルトの名無しさん
2006/03/21(火) 06:15:44あ、ごめん実行ファイルのサイズかと思ってた
ソースのサイズだったのか
65文字が限界のようだ
25文字のソースが見たいわ
0797デフォルトの名無しさん
2006/03/21(火) 06:24:570798デフォルトの名無しさん
2006/03/21(火) 06:27:45これで通るっぽいが48バイトか
43バイトも遠いな
0799デフォルトの名無しさん
2006/03/21(火) 06:44:43main() {system("./prog");}
というのはどうだろう。
(無論、progを作るプログラムを別途走らせるんだが)
0800デフォルトの名無しさん
2006/03/21(火) 06:51:48それが許されるなら25バイトを軽く切るな
0801デフォルトの名無しさん
2006/03/21(火) 06:58:42対応する値をテーブルに入れておいて乱数で選択
何度か送ればいつか AC
0802デフォルトの名無しさん
2006/03/21(火) 07:02:41どういうこと?
ランクインされてるやつは偽装してるってこと?
0803デフォルトの名無しさん
2006/03/21(火) 07:04:490804デフォルトの名無しさん
2006/03/21(火) 07:28:47これを偽装というかどうかは難しいけど、ランクインするためには必要。
乱数まで使うのはアレだけど、あらかじめ結果を計算しておく手法は
しばしば使われていて、特に入力が無い問題だとそれがベストな場合も多い。
例えば↓なんかは、事前計算無しでも解けるけど事前計算のほうが遥かに簡単。
http://acm.pku.edu.cn/JudgeOnline/showproblem?problem_id=1320
0805デフォルトの名無しさん
2006/03/21(火) 07:45:07入力の上下限を調べたりするのはよくやること。程度問題。
0806デフォルトの名無しさん
2006/03/21(火) 07:46:09これで25バイト。
サンプルを見ると末尾に改行がつくことは分かる。
何回起動されるかは分からんが、2回なら上でいつかは通る。
結果がすぐに返ってくるなら、
最初に入力毎にウェイト入れるのを送って返ってくる時間で回数を調べられるかも。
0807デフォルトの名無しさん
2006/03/21(火) 07:48:04>>806は入力が乱数という仮定な。
0808デフォルトの名無しさん
2006/03/21(火) 09:35:14[2] 問題文(含コード&リンク):カックロの自動解法プログラムを作る。カックロのルールは各自で調べること。
問題は以下の形式で標準入力から入力される。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1700.txt
1行目:サイズ。横△縦(△は半角スペース)。
2行目〜縦+1行目:盤面。xは壁。△は空白(数字が記入される位置)。
縦+2行目〜:ヒントの数字。横位置△縦位置△向き(H=横、V=縦)△値。
ヒントの数字の位置は、横向きのものは右側が、縦向きのものは下側が空白となる壁の位置になる。
答えは標準出力に出力する。上記の例の場合は以下の通り。
xxxx
x45x
x123
答えが複数ある場合(あるかどうかは知らんけど)は全て出力する。
問題不備等で答えが見つけられない場合はそのむね出力する。
[3] 環境
[3.1] OS:どれでも
[3.2] コンパイラ名とバージョン:どれでも
[3.3] 言語:C/C++いずれも可
[4] 期限:[無期限]
[5] その他の制限:極力標準の範囲内で作る。
0809デフォルトの名無しさん
2006/03/21(火) 09:42:38「答えが複数ある場合はいずれかひとつでよい」のほうが問題としてはいいね。
そゆことで。
0810デフォルトの名無しさん
2006/03/21(火) 09:58:04プログラムは保存されない。
25Bのやつは
int main(){
FILE*fp=fopen("\Windows\Temp\a","w");
fprintf(fp,"int main(){int a,b;scanf(\"%d,%d\",&a,&b);printf(\"%d\",a+b);}");
fclose(fp);
}
と
#include<\Windows\Temp\a>
の合わせ技。
でも既にこの穴は報告済みで閉じられているからこれも無理。
34Bまでなら穴を突く方法でもなければ乱数を使う方法でもないから少し頭を使えば出来る
34Bを切りたいなら乱数のマジックで頑張れ。俺は気力がないから乱数には手は出さん
0811デフォルトの名無しさん
2006/03/21(火) 11:38:22解説してもらってもおれにはさっぱりだ
\aってのがよくわからん
フォルダじゃないよね?
0812デフォルトの名無しさん
2006/03/21(火) 12:41:08aはファイル名だろ
0813759
2006/03/21(火) 13:36:170814デフォルトの名無しさん
2006/03/21(火) 14:21:460815デフォルトの名無しさん
2006/03/21(火) 14:49:420816デフォルトの名無しさん
2006/03/21(火) 15:03:00仕様うぷ
0817デフォルトの名無しさん
2006/03/21(火) 15:15:21ttp://www.vector.co.jp/soft/solaris/sources/se043980.html?g
0818デフォルトの名無しさん
2006/03/21(火) 15:36:52ダウンロードしました
ここにあるソースファイルをメモ帳で開くと
文字化けしてたり、改行されてなかったりで見にくいんですけど、
VC++で開くと、きれいに表示されるのはなぜでしょうか?
0819デフォルトの名無しさん
2006/03/21(火) 15:51:29改行コードがLFだから。すれ違いだが。
0820デフォルトの名無しさん
2006/03/21(火) 17:07:23ttp://d.hatena.ne.jp/yaneurao/20051211
0821 ◆864fRH2jyw
2006/03/21(火) 17:13:45[2] 問題文(含コード&リンク):
#include<stdio.h>
#include<stdlib.h>
#define NUM_STUDENT 15000
#define NUM_COURSE 2000
#define MAX_WORD_LENGTH 21
struct RECORD{
char *courseName;
short score;
struct RECORD *rNextCourse;
};
本文長いので分けます。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限: ([2006年3月23日12:00まで]
[5] その他の制限: 等々) なし
0822 ◆864fRH2jyw
2006/03/21(火) 17:16:42[2] 問題文(含コード&リンク):
struct STUDENT{
char studentName [MAX_WORD_LENGTH];
struct RECORD *rFirstCourse;
}student[NUM_STUDENT];
char courseName[NUM_COURSE][MAX_WORD_LENGTH];
void init();
void regist(int, int, short);
void writeCourses();
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限: ([2006年3月23日12:00まで]
[5] その他の制限: 等々) なし
0823デフォルトの名無しさん
2006/03/21(火) 17:18:040824 ◆864fRH2jyw
2006/03/21(火) 17:20:02[2] 問題文(含コード&リンク):
void init(){
FILE *fStudent = fopen("student.txt", "r");
FILE *fCourse = fopen("course.txt", "r");
FILE *fRecord = fopen("record.txt", "r");
int studentkey, coursekey, score;
while(fscanf(fCourse, "%d", &coursekey) != EOF){
fscanf(fCourse, "%s", courseName[coursekey]);
}
while(fscanf(fStudent, "%d", &studentkey) != EOF){
fscanf(fStudent, "%s", student[studentkey].studentName);
student[studentkey].rFirstCourse = NULL;
}
while(fscanf(fRecord, "%d %d %d", &coursekey, &studentkey, &score) != EOF){
regist(coursekey, studentkey, (short)score);
}
fclose(fStudent);
fclose(fCourse);
fclose(fRecord);
}
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限: ([2006年3月23日12:00まで]
[5] その他の制限: 等々) なし
0825 ◆864fRH2jyw
2006/03/21(火) 17:23:36[2] 問題文(含コード&リンク):
void regist(int coursekey, int studentkey, short s) {
struct RECORD *p;
if ((p = (struct RECORD *)malloc(sizeof(struct RECORD))) == NULL){
printf("メモリーエラーです\n");
exit(-1);
}
p->rNextCourse = student[studentkey].rFirstCourse;
student[studentkey].rFirstCourse = p;
p->score = s;
}
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限: ([2006年3月23日12:00まで]
[5] その他の制限: 等々) なし
0826デフォルトの名無しさん
2006/03/21(火) 17:25:04:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ 久々にとってもスルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0827 ◆864fRH2jyw
2006/03/21(火) 17:26:04[2] 問題文(含コード&リンク):
void writeCourses(){
FILE *fOutput = fopen("output.txt", "w");
struct RECORD *p;
int i;
for(i = 0; i < NUM_STUDENT; i++){
fprintf(fOutput, "%05d %-24s", i,student[i].studentName);
p = student[i].rFirstCourse;
while(p != NULL){
fprintf(fOutput, "%-24s %3d",p->courseName, p->score);
p = p->rNextCourse;
}
fprintf(fOutput, "\n");
}
fclose(fOutput);
}
長々とすみませんでした。コンパイルが通りません。どうしたら通るようになるか
教えていただきたいです。お願いします。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限: ([2006年3月23日12:00まで]
[5] その他の制限: 等々) なし
0828デフォルトの名無しさん
2006/03/21(火) 17:35:460829デフォルトの名無しさん
2006/03/21(火) 17:36:230830デフォルトの名無しさん
2006/03/21(火) 17:37:210831デフォルトの名無しさん
2006/03/21(火) 17:38:45どういうことだ???
0832 ◆864fRH2jyw
2006/03/21(火) 17:40:440833デフォルトの名無しさん
2006/03/21(火) 17:43:230834デフォルトの名無しさん
2006/03/21(火) 17:45:220835デフォルトの名無しさん
2006/03/21(火) 17:46:240836デフォルトの名無しさん
2006/03/21(火) 17:47:100837デフォルトの名無しさん
2006/03/21(火) 17:49:23[2] 問題文(含コード&リンク):コマンドプロンプト上で動く、簡単なプログラムを作りなさい。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語:C
[4] 期限:[2006年03月2日06:30まで]
[5] その他の制限:これぐらいしか習ってません↓
printf,scanf,if,else if,switch,for,while,多重ループ,1次元配列,2次元配列,strcpy,strlen,sqrt等
簡単な電卓(四則計算しか出来ない)を作りたいと思っていますが、どう作ればいいか分りません。
流れはこんな感じです。
小数点代何位まで求めるか選択する。(←which文かな?
エンターを2回押すと計算結果が出る。
0838デフォルトの名無しさん
2006/03/21(火) 17:51:49もう一回自分の書いた文章を読み直せ
そして自分の説明のまずさと期限がもう過ぎていることに気付け
0839デフォルトの名無しさん
2006/03/21(火) 17:53:25あなたが習ったもの以外を使っていけないのなら、実行できるプログラムがかけませんよ。
だって、mainを習ったって書いていないもん。
int を習ってないと無理だし、charも習ってないのでしょうか?
0841 ◆864fRH2jyw
2006/03/21(火) 18:04:480842デフォルトの名無しさん
2006/03/21(火) 18:16:38仕様まだー?
とりあえず、最低でも入力の受付方式 (自由に (1+2)*4+3 とかを入力していいとか )
くらいは無いと何やっていいかさっぱりわからん。
0843デフォルトの名無しさん
2006/03/21(火) 18:58:19お前は電卓がそんな簡単に作れるものだとでも思っているのか?
0844デフォルトの名無しさん
2006/03/21(火) 18:59:24流石にmainとか基本型に関しては屁理屈のような希ガス
0845デフォルトの名無しさん
2006/03/21(火) 19:20:00四則演算のみ、入力は逆ポーランド
ということにすればたぶん30行くらいでかけるんじゃまいか
0846デフォルトの名無しさん
2006/03/21(火) 19:27:08int main(){
int a,b;
char c;
scanf("%d%c%d",&a,&c,&b);
switch(c){
case '+':
printf("%d",a+b);
break;
case '-':
printf("%d",a-b);
break;
case '*':
printf("%d",a*b);
break;
case'/':
printf("%d",a/b);
break;
}
printf("\n");
return 0;
}
反省はしていない
0847デフォルトの名無しさん
2006/03/21(火) 19:28:06int a, b, c, ret;
printf("第1項を入力:");
scanf("%d", &a);
printf("第2項を入力:");
scanf("%d", &c);
printf("演算を選べ (1 和, 2 差, 3 積, 4 商):");
scanf("%d", &b);
switch(c){
case 1:
ret = a+b;
break;
case 2:
ret = a-b;
break;
case 3:
ret = a*b;
break;
case 4:
ret = a/b;
break;
}
printf("結果:%d\n", ret);
return 0;
}
こんなんでイインジャネーノ?w
これで単位もらえんだろw
0848847
2006/03/21(火) 19:31:160849デフォルトの名無しさん
2006/03/21(火) 19:33:23#include <stdio.h>
#include <setjmp.h>
jmp_buf env;
#define N 20
int stack[N], top = 0;
void push(int x) { if (top == N) longjmp(env,1); stack[top++] = x; }
int pop() { if (top == 0) longjmp(env,2); return stack[--top]; }
void print() { int i; for (i = 0; i < top; ++i) printf("[%d]", stack[i]); printf("\n"); }
int calc(int a, int b, char c) { return c=='+'?a+b:c=='-'?a-b:c=='*'?a*b:c=='/'?a/b:(longjmp(env,2),3); }
int main() {
char buf[256];
int a, b, e;
if ((e = setjmp(env)) == 0)
for (; scanf("%s", buf) == 1; print())
if (isdigit(buf[0])) push(atoi(buf));
else b = pop(), a = pop(), push(calc(a,b,buf[0]));
else if (e == 1) printf("stack overflow.\n");
else if (e == 2) printf("stack underflow.\n");
else if (e == 3) printf("wrong operation.\n");
return 0;
}
0850デフォルトの名無しさん
2006/03/21(火) 19:35:44+int calc(int a, int b, char c) { return c=='+'?a+b:c=='-'?a-b:c=='*'?a*b:c=='/'?a/b:(longjmp(env,3),0); }
0851デフォルトの名無しさん
2006/03/21(火) 19:39:310852デフォルトの名無しさん
2006/03/21(火) 22:18:400853デフォルトの名無しさん
2006/03/21(火) 22:32:51まじめにやってみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1701.c
0854デフォルトの名無しさん
2006/03/21(火) 22:53:36ここまで真面目にやってると(いい意味で)笑いしか出てこないな
0855デフォルトの名無しさん
2006/03/22(水) 00:50:53main()はまだか?
0856768
2006/03/22(水) 01:25:26すごいよー、あっちゃんすごすぎるよー。
2つ気づいた点。
make_comの1つめreturn文のmake_rat(nf, dr)はmake_rat(nf, df)じゃないでしょうか?
また2つめreturn文のmake_rat(nf, dr)はmake_rat(nf, dr*df)だと思います。
しかしこの素晴らしいできのを見せられては、自分で挑戦するのもおこがましいっす。
勉強させていただきました。
0857 ◆864fRH2jyw
2006/03/22(水) 02:12:11意味がよくわかりません・・。
0858デフォルトの名無しさん
2006/03/22(水) 02:32:19>> >>841
>>
0859 ◆864fRH2jyw
2006/03/22(水) 18:39:15>>
>>とは?
0860デフォルトの名無しさん
2006/03/22(水) 18:45:210861 ◆864fRH2jyw
2006/03/22(水) 18:49:45?
0862デフォルトの名無しさん
2006/03/22(水) 19:31:05なんか釣られてる気がしてきた
0863デフォルトの名無しさん
2006/03/22(水) 23:15:02/* 題名・・ */
#include<stdio.h>
void main (void)
{
----------------
----------------
}
---から---までの間を回答してもらえると助かります
0864デフォルトの名無しさん
2006/03/22(水) 23:16:51/* 題名・・ */
#include<stdio.h>
void main (void)
{
----------------
----------------
}
---から---までの間を回答してもらえると助かります
0865デフォルトの名無しさん
2006/03/22(水) 23:23:160866デフォルトの名無しさん
2006/03/22(水) 23:28:58これ誤りだろ
つーかキーボード整数ってなんだよ。
0867デフォルトの名無しさん
2006/03/22(水) 23:30:01#include <stdio.h>
#define MAX(x,y) (x>y?x:y)
int main( void )
{
int a, b, c;
printf( "Input a > " );
scanf( "%i", &a );
printf( "Input b > " );
scanf( "%i", &b );
printf( "Input c > " );
scanf( "%i", &c );
printf( "max: %d\n", MAX(a,MAX(b,c)) );
return 0;
}
0868デフォルトの名無しさん
2006/03/22(水) 23:30:20scanf("%d%d%d",&a[0],&a[1],&a[2]);
for (i=0;i<3;i++){
if (a[i]>b){
b=a[i];
}
}
printf("%d",b);
return 0;
ようするにキーボードから3つの数字を受け取り、
1番大きいのを表示しろってことだな
後、>>1嫁
0869デフォルトの名無しさん
2006/03/22(水) 23:35:40なんか全く同じ内容を各地で見かけるな。
流行り?
0870デフォルトの名無しさん
2006/03/23(木) 10:13:04その通りでした。指摘ありがとうです。
0871らんでぃ
2006/03/23(木) 20:14:16宜しくお願いします。
詳しい仕様等はロダ参照です・・・
0872デフォルトの名無しさん
2006/03/23(木) 20:28:574番はソケットプログラミングってことですか?
0873デフォルトの名無しさん
2006/03/23(木) 20:38:240874ランディ
2006/03/23(木) 21:05:41多分ですが英文(英単語)適当に打って(テキストファイル作成)
それを表示し、その単語(例a 3とかかなー)の数を横に表示する系?[というイメージです
例えば What is your name?だと
W 1
h 1
a 2
t 1
i 1
s 1
y 1
o 1
u 1
r 1
n 1
m 1
e 1
みたいな・・・[悪魔で私のイメージですが
ソケットプログラミングというのは知らない無知者です
ググって見たら送受信(情報系?)のプログラム技術なのですね
0875デフォルトの名無しさん
2006/03/23(木) 21:12:37#include <ctype.h>
#include <stdlib.h>
int main(void)
{
int ch, freq[256] = {0};
FILE *fp = fopen("data.txt", "r");
if (fp == NULL) { printf ("file open error!!\n"); return 1; }
while ((ch = getc(fp)) != EOF) freq[!!isalpha(ch) * tolower(ch)]++;
for (ch = 1; ch < 256; ch++) if (freq[ch]) printf("%c:%d\n", ch, freq[ch]);
return 0;
}
0876デフォルトの名無しさん
2006/03/23(木) 21:50:020877デフォルトの名無しさん
2006/03/24(金) 00:47:54情報系の意味がわからんが、Socketは通信用の物
インターネット・LAN等で使う場合もあれば、IPCで使うこともある
半角スペース5個*
半角スペース4個***
半角スペース3個*****
半角スペース2個*******
半角スペース1個*********
半角スペース0個***********
宜しくお願いします。
0879デフォルトの名無しさん
2006/03/24(金) 03:56:13:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ テンプラ使ってないからスルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0880デフォルトの名無しさん
2006/03/24(金) 04:20:120881デフォルトの名無しさん
2006/03/24(金) 05:10:11#include <iostream>
class Triangle {
int height;
virtual int calcWidth(int line) {
return 1+line*2;
}
virtual int calcLeftSpace(int line) {
return height-line-1;
}
public:
Triangle(int _height): height(_height) {}
virtual ~Triangle() {}
void print() {
for(int i=0; i<height; ++i){
for(int j=calcLeftSpace(i); j>0; --j)
std::cout << ' ';
//std::cout << "半角スペース" << calcLeftSpace(i) << "個";
for( int j=calcWidth(i); j>0; --j)
std::cout << '*';
std::cout << std::endl;
}
}
};
int main()
{
Triangle tri(6);
tri.print();
return 0;
}
0882デフォルトの名無しさん
2006/03/24(金) 05:13:04for(k=i; k<=5;k++){
putchar(' ');
}
putchar('*');
for(j=i-1;j>=1;j--){
putchar('*');
putchar('*');
}
putchar('\n');
}
0883デフォルトの名無しさん
2006/03/24(金) 09:36:49for(i = 0; i < 列表示数; i++)
{
for(j = 列表示数-i; j > 0; j--)
putchar(' ');
for(n = i*2+1; n > 0 ; n--)
putchar('*');
putchar('\n');
}
俺だとこうするかな・・
0884デフォルトの名無しさん
2006/03/24(金) 17:22:52[2] 問題文(含コード&リンク):
A君55点 B君77点 C君65点 だったとします。
まずこれらを入力させ、次に並び替えをし、再度出力するというプログラムです。
入力させる際はfor文で回し、並び替えの際はバブルソートを使い、表示
させる際はfor文で回して出力させるというものです。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C
[4] 期限: 明後日
宜しくお願いします。
0885デフォルトの名無しさん
2006/03/24(金) 17:39:240886デフォルトの名無しさん
2006/03/24(金) 17:48:24名前は入力させます。
点数の良い順に並び替えます。
お願いします。
0887デフォルトの名無しさん
2006/03/24(金) 18:03:29バブルソート解説とか読むと為になる
あとはここの住人がソース全出ししてくれる
0888デフォルトの名無しさん
2006/03/24(金) 18:04:53#define MAX_NAME 100
#define MAX_PERSON 100
typedef struct {
char name[MAX_NAME];
int score;
} person ;
int less(person *a, person *b) { return a->score < b->score; }
void swap(person *a, person *b) { person c = *a; *a = *b; *b = c; }
void sort(person list[], int size) {
int i, j;
for (i = 0; i < size; ++i)
for (j = i+1; j < size; ++j)
if (less(&list[i],&list[j])) swap(&list[i],&list[j]);
}
main() {
int num, i;
person list[MAX_PERSON];
scanf("%d", &num);
for (i = 0; i < num; ++i)
scanf("%s %d", &list[i].name, &list[i].score);
sort(list, num);
for (i = 0; i < num; ++i)
printf("%s %d\n", list[i].name, list[i].score);
}
0889デフォルトの名無しさん
2006/03/24(金) 20:02:42#include <stdio.h>
int main( void )
{
int i;
for(i=0;i<6;i++)
printf("%*.*s\n",i+6,i*2+1,"***********");
return 0;
}
0890sage
2006/03/25(土) 08:41:00[2] 問題文(含コード&リンク):
http://www.eecs.wsu.edu/~hundhaus/teaching/cpts121/progassignments/cpts121-Fa2005-pa3.html
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C
[4] 期限: 明日
[5]一応途中まで作ってみたのですが文字が読み取り方が分かりません。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1708.txt
0891デフォルトの名無しさん
2006/03/25(土) 08:51:390892デフォルトの名無しさん
2006/03/25(土) 09:32:360893デフォルトの名無しさん
2006/03/25(土) 09:58:29大変やのう
0894デフォルトの名無しさん
2006/03/25(土) 11:47:590895デフォルトの名無しさん
2006/03/25(土) 12:04:18>なんでこんな簡単なプログラムのために22個も関数用意させるんだか。
こういうスタイルで書くのも一つの見識だと思う。教育目的ならなおさら。
まあ、ここで歓迎される種類の課題ではないがな。
0896デフォルトの名無しさん
2006/03/25(土) 12:57:200897デフォルトの名無しさん
2006/03/25(土) 22:12:09所々に fuckin' を挿入して読んでしまう。
0898デフォルトの名無しさん
2006/03/25(土) 22:31:520899デフォルトの名無しさん
2006/03/25(土) 22:33:460900デフォルトの名無しさん
2006/03/25(土) 22:35:42余裕の
fuckin 900 get
サー
0901デフォルトの名無しさん
2006/03/25(土) 22:39:06(´Д)<原
(´Д)<愛
(´∀)<サァ!
0902デフォルトの名無しさん
2006/03/25(土) 22:54:490903デフォルトの名無しさん
2006/03/25(土) 23:24:550904890
2006/03/25(土) 23:26:45http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1709.txt
色々やってみたのですが,ascii valueとnumber of linesの求め方が分かりません・・。
分かる人が居たらどうかお願いします。
0905デフォルトの名無しさん
2006/03/26(日) 01:11:22とりあえず ascii value って、character と同じじゃまいか。
ファイルから文字 'A' が取得できたとすれば、character には数字 0x41 が入る。
その 0x41 ってのはまさに ascii value の事だ。
number of lines ってのは '\n' = 0x13 が出てきた時に一つプラスしてやりゃいい。
えっと、number_lines() の仕様が指定されているな。答えを書いちゃえ。
int number_lines(char fuckin_character, int current_fuckin_number_lines) {
if (fuckin_character == '\n') {
current_fuckin_number_lines++;
}
return current_fuckin_number_lines;
}
ほれよ。
0906デフォルトの名無しさん
2006/03/26(日) 01:30:38[2] 問題文:
2進数での四則演算のプログラムのフローチャートを作成せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: ?
[3.3] 言語: C
[4] 期限: 2006年3月30日15:00まで
[5] 特になし
0908デフォルトの名無しさん
2006/03/26(日) 03:49:54>>481
0910デフォルトの名無しさん
2006/03/26(日) 07:57:49二進数の表現方法は? {0,1} を要素に持つ配列?
0911デフォルトの名無しサー
2006/03/26(日) 10:10:290912890
2006/03/26(日) 10:18:19assvalue = (int)character;
こんな感じですか?
特に決まりはありませんでした
0914デフォルトの名無しさん
2006/03/26(日) 11:18:21じゃあ a+b, a-b, a*b, a/b でいいだろ。内部表現は二進数なんだから。
0915デフォルトの名無しさん
2006/03/26(日) 11:59:560916デフォルトの名無しさん
2006/03/26(日) 12:26:3110100110
+ 00011011
11000001
という風に計算するプログラムを作るってことです。
0917デフォルトの名無しさん
2006/03/26(日) 12:32:20そりゃ筆算の解き方は違うけど
0918890
2006/03/26(日) 12:33:06outputファイルに結果が0と表示されてしまいます。
どなたか分かる人
どこが間違ってるかご指導お願いしますm(_ _ )m
0919デフォルトの名無しさん
2006/03/26(日) 13:42:42足してください><
0920デフォルトの名無しさん
2006/03/26(日) 13:46:360921デフォルトの名無しさん
2006/03/26(日) 15:18:14たとえば
result = number_lines(character, current_number_lines);
print_int (outfile, result);
を
current_number_lines = number_lines(character, current_number_lines);
print_int (outfile, current_number_lines);
に変えてみると。
0922デフォルトの名無しさん
2006/03/26(日) 15:18:32914はその仕様を満たしてる。不満があるならもっと詳細に仕様を挙げれ。
2進数で入力した2つの値の四則演算を2進数で出力するプログラムを作る。
尚、2進数から10進数に変換し計算することはしないこととする。
とか、どうだろう。
難しいな。仕様書の勉強から始めようかな。
0924デフォルトの名無しさん
2006/03/26(日) 16:02:53最初からそれだけ言えてればいじめられてなかったのに・・・(´・ω・`)
どっちにしろ誰もフローチャートなんて描かないがな
0925デフォルトの名無しさん
2006/03/26(日) 16:05:0110進数に変えちゃいけないなんて。
信じられない。
0926デフォルトの名無しさん
2006/03/26(日) 16:35:180927デフォルトの名無しさん
2006/03/26(日) 16:39:420928デフォルトの名無しさん
2006/03/26(日) 17:06:18あくまで考え方、つうことでカンベン
めんどくせーから4ケタ、符号ナシでの加算・乗算
main(){
int i;
int bits1[4], bits2[4], addbits[5]={0}, mulbits[8]={0};
/* bits1 と bits2 に入力した数を入れる処理 */
addbits(addbits, bits1, bits2);
for (i=3; i>=0; i--) {
lshift(mulbits);
if (bits2[i]==1)
addbits(mulbits, mulbits, bits1);
}
}
addbits(int out[], int in1[], int in2[]) {
int i, carry=0;
for (i=0; i<4; i++) {
if( (carry ^ in1[i] ^ in2[i]) == 1)
out[i] = 1;
else out[i] = 0;
if (( (in1[i] & in2[i]) == 1) || ( (carry & (in1[i] | in2[i])) == 1))
carry = 1;
else carry = 0;
}
out[4] = carry;
}
lshift万度臭くなったので省略('A`)
0929デフォルトの名無しさん
2006/03/26(日) 17:16:48単純に「2進数」ってだけでは定義が充分ではないな。
符号の処理と小数の処理が分からん。
単純に数学的に考えれば(-1001.011)2とかでいいのかもしれんがな。
「プログラミングC」っつー授業ならなんか暗黙の偏向があるかもしれん。
その辺をクソ講師に確認してこい。
0930デフォルトの名無しさん
2006/03/26(日) 17:32:29それぞれひとつずつ対応しています。
Aは1で割り切れ、AB(2ケタの数)は2で割り切れ、
ABCは3で、ABCDは4で、・・・・・と続いていき最後に
ABCDEFGHIJは10で割り切れます。
A〜Jがどの数と対応しているかを求めなさい
というのをプログラムでやりたいんですけど、
反復処理のところがうまく表現できません。どうすればいいですか
0931デフォルトの名無しさん
2006/03/26(日) 17:33:27>>1
0932デフォルトの名無しさん
2006/03/26(日) 17:41:210933デフォルトの名無しさん
2006/03/26(日) 17:43:130934930
2006/03/26(日) 17:48:44[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): A〜Jの10個のアルファベットに0〜9までの数字が
それぞれひとつずつ対応しています。
Aは1で割り切れ、AB(2ケタの数)は2で割り切れ、
ABCは3で、ABCDは4で、・・・・・と続いていき最後に
ABCDEFGHIJは10で割り切れます。
A〜Jがどの数と対応しているかを求めなさい
というのをプログラムでやりたいんですけど、
反復処理のところがうまく表現できません。どうすればいいですか
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:?
[3.3] 言語:どちらでも可
[4] 期限:[無期限]
[5] その他の制限: 標準ライブラリは使ってはいけない
0935デフォルトの名無しさん
2006/03/26(日) 17:49:01#include<stdio.h>
#include<stdint.h>
long long f(long long n,int i,int j,long mask){
long long ret;
if(j==10)return n;
else if(i==10)return -1;
else if( (mask&1<<i) || (n*10+i)%(j+1)!=0 || (ret = f(n*10+i,0,j+1,mask|1<<i) ) < 0 ) return f(n,i+1,j,mask);
else return ret;
}
int main(void){
long long n = f(0,0,0,0);
if(n == -1) printf("解なし");
else printf("ABCDEFGHIJ = %010lld\n",n);
return 0;
}
0936デフォルトの名無しさん
2006/03/26(日) 17:49:170937デフォルトの名無しさん
2006/03/26(日) 17:51:330938930
2006/03/26(日) 17:51:340939930
2006/03/26(日) 17:55:51ありがとうございました。
0940デフォルトの名無しさん
2006/03/26(日) 18:04:19それ重解あった時まずくない?
実際にはねえけどさ
0941デフォルトの名無しさん
2006/03/26(日) 18:06:370942デフォルトの名無しさん
2006/03/26(日) 18:10:06call back形式にすれば全解の列挙出来るけど、重解ないしまぁいいかなぁっと手を抜いた。
#include<stdio.h>
#include<stdint.h>
long long f(long long n,int i,int j,long mask,long long(*call_back)(void*self,long long result),void*self){
long long ret;
if(j==10)return call_back(self,n);
else if(i==10) return -1;
else if( (mask&1<<i) || (n*10+i)%(j+1)!=0 || (ret = f(n*10+i,0,j+1,mask|1<<i,call_back,self) ) < 0 ) return f(n,i+1,j,mask,call_back,self);
else return ret;
}
long long print(void*self,long long result){
printf("ABCDEFGHIJ = %010lld\n",result);
return result;
}
int main(void){
f(0,0,0,0,print,NULL);
return 0;
}
0943デフォルトの名無しさん
2006/03/26(日) 18:15:19特定した
0944デフォルトの名無しさん
2006/03/26(日) 22:50:20long longを使いたくなかった。正直反省してない
#include <stdio.h>
void swap(int* x, int* y) {int temp = *x; *x = *y; *y = temp;}
void reverse(int* first, int* last) {for(; ; ) if (first == last || first == --last) return; else swap(first++, last);}
int next_permutation(int* first, int* last) {
int* i = last - 1, *j, *k;
if (first == last || first + 1 == last) return 0;
for(; ; ) {
j = i--;
if (*i < *j) {k = last; while (!(*i < *--k)){} swap(i, k); reverse(j, last); return 1;}
if (i == first) {reverse(first, last); return 0;}
}
}
int main(void) {
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
do {
if (a[9] == 0 && /* 10の倍数 */
a[1] % 2 == 0 && /* 2の倍数 */
a[5] % 2 == 0 && /* 6の倍数(1) */
a[4] % 5 == 0 && /* 5の倍数 */
(a[2] * 2 + a[3]) % 4 == 0 && /* 4の倍数 */
(a[0] + a[1] + a[2]) % 3 == 0 && /* 3の倍数 */
(a[5] * 4 + a[6] * 2 + a[7]) % 8 == 0 && /* 8の倍数 */
(a[0] + a[1] + a[2] + a[3] + a[4] + a[5]) % 3 == 0 && /* 6の倍数(2) */
(a[0] + a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7] + a[8]) % 9 == 0 && /* 9の倍数 */
(a[0] + a[1] * 5 + a[2] * 4 + a[3] * 6 + a[4] * 2 + a[5] * 3 + a[6]) % 7 == 0 /* 7の倍数 */)
printf("%d%d%d%d%d%d%d%d%d%d\n", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9]);
} while (next_permutation(a, a + 10));
return 0;
}
0945デフォルトの名無しさん
2006/03/26(日) 22:58:13この問題の場合浅い条件で探索を打ち切れるので、とりあえず順列全生成する
next_permutation はそんなによろしくない。再帰の順列生成にすべき。
0946デフォルトの名無しさん
2006/03/26(日) 23:31:05>>944じゃないけど、next_permutationって何か問題あるの?
0947946
2006/03/26(日) 23:32:220948デフォルトの名無しさん
2006/03/27(月) 01:44:53int main(){
unsigned int m = 0xE37BE3DA;
for(char c='J';m;m/=10,c--)
printf("%c = %d\n",c,m%10);
return 0;
}
0949948
2006/03/27(月) 01:47:380950930
2006/03/27(月) 04:01:02ありがとうございます!
longはまだ習ってなかったので助かりました。
0951デフォルトの名無しさん
2006/03/27(月) 05:24:45/ ´_ゝ`) すいません、ちょっと通りますよ
.| /
.| /| |
// ||
U .U
わざわざありがとうございました。
考え方がわかったので自分でフローチャートは書けそうです。
0953デフォルトの名無しさん
2006/03/27(月) 05:37:24ttp://pc8.2ch.net/test/read.cgi/tech/1143405137/
0954デフォルトの名無しさん
2006/03/28(火) 21:07:41a*x*x + b*x + c = 0
0955デフォルトの名無しさん
2006/03/28(火) 21:12:31テンプレ読めクソ餓鬼
0956デフォルトの名無しさん
2006/03/28(火) 21:15:49カワイソスwwwww
0957デフォルトの名無しさん
2006/03/28(火) 21:19:41教えてあげて
0958デフォルトの名無しさん
2006/03/28(火) 21:20:25if (D<0)
printf("x=%f +- i*%f\n",-b/(2*a), sqrt(-D)/(2*a));
else
printf("x=%f, %f\n", (-b+sqrt(D))/(2*a), (-b-sqrt(D))/(2*a));
0959デフォルトの名無しさん
2006/03/28(火) 21:21:51ありがとうございます
0960デフォルトの名無しさん
2006/03/28(火) 21:23:130961デフォルトの名無しさん
2006/03/28(火) 22:07:46だめならちょい上の方にある三次関数がどうたらこうたらを参考にするといい
0962デフォルトの名無しさん
2006/03/28(火) 22:23:000963デフォルトの名無しさん
2006/03/28(火) 22:47:23おそらく出題者の求める回答と気がするんだが >>958
まるめ誤差とかの課題なんじゃねぇ?
0964デフォルトの名無しさん
2006/03/28(火) 23:00:47テンプレはあくまで推奨って事で。
0965デフォルトの名無しさん
2006/03/28(火) 23:27:16ちゃんと情報がそろってて見やすければテンプレに乗せんでもいいかもしれんな。
今回は情報そろってねえけどな。
0966デフォルトの名無しさん
2006/03/28(火) 23:29:370967デフォルトの名無しさん
2006/03/28(火) 23:52:23条件の後だしで、もう一度お願いします><
とかマジでウンコ。
0968デフォルトの名無しさん
2006/03/29(水) 02:19:200969デフォルトの名無しさん
2006/03/29(水) 03:30:060970デフォルトの名無しさん
2006/03/29(水) 05:51:41([[[[[)<
([[[[[)< ([[[[[)<
([[[[[)<
([[[[[)< ([[[[[)<
([[[[[)<
([[[[[)< おおっとここでダンゴムシの大群が! ([[[[[)<
([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)<
([[[[[)<
([[[[[)< ([[[[[)<
0971デフォルトの名無しさん
2006/03/29(水) 06:47:59>([[[[[) >([[[[[)
>([[[[[)
>([[[[[)< >([[[[[)
>([[[[[)
>([[[[[) ああっと皆さんお帰りなさいますようだ! >([[[[[)
>([[[[[) >([[[[[)
>([[[[[) >([[[[[)
>([[[[[)
>([[[[[) >([[[[[)
0972デフォルトの名無しさん
2006/03/29(水) 07:21:56([[[[[)< ([[[[[)<
([[[[[)<
([[[[[)< ([[[[[)<
>([[[[[)
([[[[[)< ん?なんだ?? ([[[[[)<
([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)<
([[[[[)<
([[[[[)< ([[[[[)<
0973デフォルトの名無しさん
2006/03/29(水) 08:54:37([[[[[)< ([[[[[)<
([[[[[)<
([[[[[)< ([[[[[)<
>([[[[[)
∧
([[[[[)< >>972 独りだけおいていくなお(´・ω・`) ([[[[[)<
([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)<
([[[[[)<
([[[[[)< ([[[[[)<
0974デフォルトの名無しさん
2006/03/29(水) 09:35:49([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< 進め〜!
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< 敵は目前だ〜!
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
0975デフォルトの名無しさん
2006/03/29(水) 09:41:520976デフォルトの名無しさん
2006/03/29(水) 09:48:36([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ・・・・・・
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
0977デフォルトの名無しさん
2006/03/29(水) 10:06:04漏れの前でその言葉は禁句だ・・・
0978デフォルトの名無しさん
2006/03/29(水) 10:44:590979デフォルトの名無しさん
2006/03/29(水) 11:00:280980デフォルトの名無しさん
2006/03/29(水) 11:01:590981デフォルトの名無しさん
2006/03/29(水) 11:08:57・ \ /
;(●)llll((●);
(●)(●)(●)(●)
\__ (●)(●)●)●)(●)__/ カサカサ
(●)(●)(●)(●)(●)
__(●)((●`∀´●))(●)__
/ (●)(●)(●)(●)(●)(●) \
_ (●)(●)(●)(●)(●)(●)_
/ (●)(●)(●)(●)(●)(●) \
_(●)(●)●)(●)(●)(●)_
/ (l●)(●)(●)(●)(●l;) \
| . (l;●)(●)(●)(●)(●) |
| . (0●)(●)(●)(●)O) |. カサカサ
,;; (:●)●)(●)(●;) 。
(о●)(●)●0)
( ;●ξ●:)
。 ・
0982デフォルトの名無しさん
2006/03/29(水) 11:11:14([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< で、出た━━(;゚Д゚)━━!!!
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< は、早く流すんだ!
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
0983デフォルトの名無しさん
2006/03/29(水) 11:12:34([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< 流せ流せー!
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
0984デフォルトの名無しさん
2006/03/29(水) 11:30:020985デフォルトの名無しさん
2006/03/29(水) 11:41:05では質問だ!
メモリを動的に確保するにはどうやったらいいんだ!?
0986デフォルトの名無しさん
2006/03/29(水) 11:45:07#include<stdio.h>
int main(void){
FILE *fp;
char str[256];
int i;
for(i=0;i<100;i++){
sprintf(str,"gomi%d.vbs",i);
fp = fopen(str,"w");
fprintf(fp,"MsgBox \"馬鹿\"");
fclose(fp);
}
return 0;
}
0987デフォルトの名無しさん
2006/03/29(水) 11:47:400988デフォルトの名無しさん
2006/03/29(水) 11:49:14char *str;
str = malloc(10);
sprintf(str,"hahahhhhhhhhhhhahahahahahahhhhhhhhhhhhhhhhhahahhhhhhhhhhhhhhhhhhhahah");
0989984
2006/03/29(水) 11:50:51>>985
stdlibをインクルードしてmallocかcalloc。
>>986
わかめ
0990デフォルトの名無しさん
2006/03/29(水) 11:51:42charポインタにキャストしなくていいのですか?
0991デフォルトの名無しさん
2006/03/29(水) 11:52:52キャスト必要なのは昔のC
ってゆーかつっこむところ他にあんだろw
0992デフォルトの名無しさん
2006/03/29(水) 11:54:38いや分れよ
0993デフォルトの名無しさん
2006/03/29(水) 11:55:40インクルードしてないとか言うのは辞めて下さいよ。それ以外ならサイズオーバー位ですかね
0994デフォルトの名無しさん
2006/03/29(水) 11:56:500995デフォルトの名無しさん
2006/03/29(水) 11:58:57100回ループ
配列に1〜100の.vbs格納し、ファイルポインタに1〜100の.vbsを書き込みモードで開く。
そしてファイルポインタにMsgBox馬鹿を出力してファイルクロー字→終了。おk?
0996デフォルトの名無しさん
2006/03/29(水) 12:01:000997デフォルトの名無しさん
2006/03/29(水) 12:03:290998デフォルトの名無しさん
2006/03/29(水) 12:04:19間違い探し
#include<stdioh>
intmain(void){
FILE *fp
char str[256];
int i;
for(i=0;i<100;i++){
sprintf(str,"gomi%d.vbs",i);
fp = fopen(str,"w");
fprintffp,"MsgBox \"馬鹿\");
fclose(fp);
}
return 0;
}
0999デフォルトの名無しさん
2006/03/29(水) 12:04:391000デフォルトの名無しさん
2006/03/29(水) 12:05:2410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。