1 :
デフォルトの名無しさん :
2006/03/03(金) 14:28:38
2 :
デフォルトの名無しさん :2006/03/03(金) 14:31:49
[
>>1 からついでに色々。]
・同じ講義を受けている人が既に同じ宿題を依頼してるかもしれなせん。
まずはスレを少しさかのぼって探してみてください。
それさえ出来ないシメジ野郎はバター焼きにして食っちまうぞ
・解答者は答える義務もないし、答えてもそれが正しいかどうかは保証しません。
もちろん、出題者先生の意図なんぞ知ったことではありません。
At your own riskで。
・態度が余りに悪いとすーぱーはかーがあなたの先生にチクるかもしれません。
・
>>1 の前スレってとこ丸々コピペだから60代目のまんまだった、スマソ
正しくはこっち
【
http://pc8.2ch.net/test/read.cgi/tech/1140039002/ 】
お金払いますので童貞を捨てられるプログラムをC言語でお願いします
>>前スレ995 英語版では正しく使われている。日本語訳が糞なだけ。
7 :
デフォルトの名無しさん :2006/03/03(金) 14:47:37
スルー用テンプレ \\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ スルー 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
それ全然面白くないから センスも感じられない
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ スルー 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
10 :
デフォルトの名無しさん :2006/03/03(金) 18:10:16
==、,-、 、ヽ、 \> ,, '''\ _ メ゙ヽ、\ ̄""" ̄--‐ 、 \ /ゝ、\ =─‐\\‐ /─'''''ニ二\''' |レレゝゝ、\  ̄く<<く >, ゙、/<三三二\ ̄\ゝゝゝゝゝゞ''ヽ、 / ̄ ̄ ̄ ̄ ̄ <<<<〈__入 ゙、く彡三三三二ヽくゝ\メメメゝ、_ゝ、\ | さあ問題を言え くく<<<<<< ゙、 ゙、ミ三三二ニ─ゝゝゝゝゝ,,,,,,,、 '( ゙''ヽ、ヽ、 < どんな問題も くくくくくく彡‐ヽ ゙、ミ三三二ニ'''くくゝゝ_ゝゝ、\\_,>」ノ, | 1つだけスルーしてやろう・・・ く く く く く 彡゙、゙、三三二ニ‐くゝ、/ ,,,,,,,,メメゝヽ''''"ゝゞ丶、 \_____ 二─二二彡彡、゙、三三二==くメゝ/ ゙'ヽ、メゝゝゝゝゝゝゞ''ヽ-、,,,,,,_ ‐'''" ̄ \彡彡ミ、゙、三二=''"く<メ/:: \''-、メメゝゝゝ_ゝ 、 ,,、ヽヽ 、 ,,,,- ゙彡//ヾ、三二= くゝ/:::.... \>∠レ-,-‐ニ二メヽ''ヽ ノ ゙ヽ、,,,-‐//_///,,、゙、三二= ゙、 ""''' ヽ>//レレヽ,,___ / -,,,,,,-‐'''"""/////,,ヽ ゙、三二─ ゙ヽ. //-ヘヘ,、 レレレレノ ''" ,l|"////ノ,、\彡'''''‐-ニ,、 ::::::::::,,,,,,,,// ゙ヽフ/|/| レ' /ゝ、/ヽ|ヽレ,,゙ヽ、゙''ヽ、,,,,,,_ヽ''ニ='',,-'"、─-,,,,,_  ̄"'ノ /メ / レ/,''"へへべ''─---- ̄-メヽ"ゝゞゝヽ、 >---''" /ヘヘ、|//ヘヘヘヘヘヘヘヘ,,-イ ̄ | ̄"'''-ニニニ二-''" /ヘヘ∧/./フヘヘヘヘヘヘヘ,/イ / / / ゙ノ\、\ /ゝゝ| / /メヘヘヘヘヘヘ/'" | / / / / \\ /ゝ /|‐/ /フヘへヘヘヘ/∧ /-'"-'''"__,,-''" / /、\ //|_| /./へへへヘヘ、// |/ \_,,,,-‐'" / ゙、.゙、 '"/ヽ"/'"へへヘヘヘヘ// ノ \ ,,,,-‐'" ゙、゙、 .ノ //へへヘヘヘヘ//ヽ ./ ゙、''"" ,,/、゙、 /-"へへヘヘヘヘヘ// |‐" \_,,,,,,,,-‐'''" | | へへへへヘヘヘヘ//ヽ ノ ゙, | |
>>3 アメリカの刑務所ではきっとヤポン人は大人気だぉ
あっ、でも童貞は捨てられんか。後ろの処女は捨てれても。
[1] 授業単元:プログラミング C++ [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] その他の制限:関数・配列まで お願いします。
俺がC言語で引き受けた。
C++の授業なのにクラス習ってないのか・・・?
これをクラス化すると…って展開もあるじゃん……って、この時期にか>自分
>>12 がC++を理解できてないんじゃないの?
万が一ソースコードの説明を求められたら答えられないから。
ならクラスで作ろうか
この前報酬つきで解いた人って本当にもらったの?
黙れ乞食
クラスはまだ習ってないです。
>>15 春休みの課題です。
一応頑張ったんですがどうしても解けないんで…
良ければお願いします。
21 :
16 :2006/03/03(金) 23:27:57
とゆうかこの時期でクラスやってないって 何のためにC++やってるんだ?
>>21 いえいえ、気にしないでください
>>22 2年前期からクラスやるみたいです。@→Aと続くんで。
charがunsignedの環境ではうまく動かんね
>>24 わざわざありがとうございます。
実行してみたら重大なエラーってでましたorz
27 :
デフォルトの名無しさん :2006/03/03(金) 23:54:17
そんなのシラネ
28 :
デフォルトの名無しさん :2006/03/03(金) 23:54:23
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 メシ喰ってくる!
>>28 すいません。
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 に書き込まれる出力はありません。
#include <algorithm>
すげー!動きました。 どうもありがとうございます。
32 :
デフォルトの名無しさん :2006/03/04(土) 02:01:56
この前報酬つきで解いた人って本当にもらったの?
推測なんだが。 口止め料込みで結構もらってるのか、 あるいは、あんまり簡単だったので解答側が報酬を断ったか・・・ だと思っている。 打ち込み作業がある程度あったようなので、 マジで金のやり取りがあったと思われる。
STLって授業で習ってない技術だと思うんだがなぁ。
クラスすらやってないのにSTLはまだだろw とゆうかそもそも授業でするのかすら怪しいが>STL
このスレでC++の解答者はSTL使いたがるからなぁ。 相手の力量にあわせて、自分の技術を抑える訓練をするべし。
C ばかりで欲求不満なんですお
>>33 なんかメール来てたけど暇つぶし貰っただけだから無視した。
相手の力量にあわせたコードを書く位なら相手が自力で書けるようになるまで親切に教える!!!!
42 :
デフォルトの名無しさん :2006/03/04(土) 12:28:43
>>41 様が、自力で書けるようになるまで親切に教えてくれるらしいぞ。
おまいら今のうちに頼んどけ!頼んどけ!
>41 おせーて。 テストコードの書き方とか。 設計の仕方とか。 ドキュメントの書き方とか。 英語とか。 ぷりーづ・てぃーち・みー。
>>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;
}
}
>>44 それだとエリア数が10以上になった時点でぶっぴんなんだね〜
え〜〜〜〜? 81まで大丈夫だよ〜〜〜
47 :
41 :2006/03/04(土) 13:42:28
>>43 俺の力量にあわせて、質問レベルを抑える訓練をするべし
ゾーンなら2300万まで対応可能
>>47 あのね、ぷろぐらむがね、ただしくね、うごいているかね、しらべるほうほうをね、おしえてね。
変換も知らない馬鹿がいるな。
>>47 に質問するなら最低でも変換くらいしろよ低能。
>>49 ひねり過ぎ。ソースコードにならん質問はアウト
>>50 ひねり無さ過ぎ。マターリしるっ
4月よりインターネットは免許制になりまつ
>>49 プログラムが正しく動かない状況なんてめったにないぞ。
CPUやメモリなどのハードウェア障害か、さもなくば宇宙線などの不慮の事態かだ。
54 :
デフォルトの名無しさん :2006/03/04(土) 16:16:12
>>52 俺の聞いた話ではPSEマークのないプロバイダは
サービス停止だということだが、それとは違うのか?
真面目に
>>52 でいいと思うがな
例えば経産省がやってる情報処理技術者資格のどれかが必須とか
まぁ、そんなことした瞬間IT産業は終わるわけだが
58 :
sage :2006/03/04(土) 19:40:20
[2]些細な質問でスミマセン・・・。 下の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 -------------------------------
60 :
58 :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 -----------------------------------
マルチは消えろよ
>>60 ネタかとおそれつつマジレスすると、無難なところでこんな感じか。
#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;
}
>>62 countをvectorにする意義が見出せない。boost::arrayで十分。
結果を出力するループで改行文字を弾けよ。
最後にboost::lambdaなんて使わなくても<numeric>のstd::accumulateがあるだろ。
>>63 >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;
chはcharにキャストせんとうまくいかんよ。
あとは仕様通りだが、そもそも
>>60 の行数が5なのが奇妙な話だ。
66 :
63 :2006/03/05(日) 00:32:40
>>64 > 結果を出力するループで改行文字を弾けよ。
すまん。これ俺の勘違い。忘れてくれ。
飢えてるなぁ。
宿題を解くとダメ出ししてもらえることがあるのが好きだ
>>63 ,65,66
添削さんくすです。
後は、
>>60 が理解できることを祈るばかり。
>>69 理解する前に、「boostが入っていなくてコンパイルできない」に
1000点。
正直 boost は避けてるなあ。使わせてくれない現場多いし。
72 :
58 :2006/03/05(日) 04:22:27
58です。62-72さん、ありがとうございます。 先月、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
73 :
58 :2006/03/05(日) 04:28:36
>>72 続き
if (! 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;
}
74 :
58 :2006/03/05(日) 04:31:45
あと、大文字、小文字共にカウントします。 例: A と a 両方カウントします。 よろしくお願いします。
if(ch='a' || ch='A') countA++; みたいにすりゃいいんじゃね('A`)
愚直にやるならこんなかんじじゃないかね 面倒なんで直接レス書き込み欄から書くのでバグだらけだと思うのでそのまま信用はするなよ? 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++; }
int count[256] = {0}; int 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);
Winだと行数は厳密には\r\nの連続をカウントしなきゃいかん気がする。 \rの単独は知らないが、\nの単独はExcel形式のCSVで出てくるし。
うわ 自分語り始まったw きもw
>>80 テキストモードで開いているから、\r\nは\nに変換されますが。
誰か神様!!
>>12 の問題を発展させたやつで、
16×16マス目で、+とーはランダムじゃなく
配列の初期値としてユーザーが打ち込む。っていうプログラムを、
クラスもSTLも使わないでC++で作ってください…お願いします。
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ スルー 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
つまりクラス・STLだけと言わず、Boostなどをふんだんに使用しろという事だな
>>83 ・・・・・・・・・・・・
>>44 を書き換えればいいだけじゃないか・・・・・・・・・・・
C言語が全くわからないから、細かい修正から全部やってくれ、ってことだろう
>>84 神龍…そんなこと言わずに…
>>85 違いますね
>>86 44は+と−が最初から決められてるんで、
使う人が+−を打ち込む形にしてほしいんですよ…
89 :
デフォルトの名無しさん :2006/03/05(日) 18:37:49
fgetsでもgetsでもscanfでもgetcharでも・・・・
今気づいたけど、
>>44 の
char cells_square[] = ("-++++-+-" "+----+--" "+----+--" "-++++---"
"-+--+---" "++--+---" "-+++++--" "-+---+--");
はBCCだとコンパイル通らないな
括弧を外すか、char*にすると通る
変すぎ
91 :
デフォルトの名無しさん :2006/03/05(日) 18:44:52
確かに変だな 2次元配列にでもすりゃいいのに
>>90 たしかにコンパイル通るようになっちゃうかもしれんが
char*にするのはダメ
char str[]でも char *strでも 同じ
94 :
デフォルトの名無しさん :2006/03/05(日) 19:27:49
俺も同じだと思うけど違うって言う人居るんだよな 何が違うのか未だわからない
char *str = "abcde"; str[2] = 'X'; //oops!!
char str[] = "abcde"; str[2] = 'X'; //OK
( ´д)ヒソ(´д`)ヒソ(д` )
99 :
デフォルトの名無しさん :2006/03/05(日) 19:54:53
[1] 授業単元:プログラム [2] 問題文:最初に文字列を入力し、次に検索する文字を入力して、検索文字が最初何番目にあるか表示させるプログラム。 [3] 環境 windows、C言語 [4] 期限 3/5 [5] その他の制限:初めて3日なのでほとんど分かっていません。
strstr
>>99 とりあえず何を習ったか書けお
じゃないと
>>100 にあるようにstrstr使うぞ
104 :
デフォルトの名無しさん :2006/03/05(日) 20:00:33
釣り
105 :
デフォルトの名無しさん :2006/03/05(日) 20:03:10
すみません、99です。strstrはまだ習っていません。forとifを使って作ろうと試していましたがうまくいきません。
>>102 さん
検索方法というのは?
コピペ乙
107 :
デフォルトの名無しさん :2006/03/05(日) 20:07:09
99です入力方法はgets()しか習っていません
>>95 のコードはSegmentation faultになる重大な間違いだと言いたいだろう
やたらと低レベルなのが混じってるな
scanfは?
111 :
デフォルトの名無しさん :2006/03/05(日) 20:09:13
gets(str); gets(c); while(str[i]!=c[0]){ i++; } printf("%d 番目\n",i+1);
>>99 break習ってないならボツ
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;
}
別に習って無くても少しぐらいよくないか? 「工夫は加点します」とかっていわれたら 習ってないことでもひょいひょい使っちゃうだろ? さすがにC言語の授業でC++は使わないが
WinAPIを使ってくる
つまり文字列は領域を動的確保しながら読み込み 検索文字は2文字以上もしくは文字でないと判断するものは完全にはじくものを 作れということですね
ホントC言語の文字列は地獄だぜ フゥハハハーハァー
検索結果をご丁寧にファイル出力するものをつくれということですね?
そうやって、ゆとりクンを量産し、努力者を蹴落としていくのですね。
121 :
デフォルトの名無しさん :2006/03/05(日) 20:40:50
みなさんご教授ありがとうございます。99ですが、先ほど
>>113 さんに教えてもらった、プログラムをコピーしてみましたが、なぜがうまくいきません…。こちらの問題なのでしょうか?
まんまるコピペしてるからじゃね?
これがゆとり教育の弊害か
#include <stdio.h> 入れた?
125 :
デフォルトの名無しさん :2006/03/05(日) 20:50:31
まんまコピーしました。 #include <stdio.h>も入れて、「input」が出てきて入力しましたがpress any key 〜と出るだけで…
とりあえずCPad使ってることはわかった
俺はBCC Developer使ってる
129 :
デフォルトの名無しさん :2006/03/05(日) 20:58:04
とりあえず初期化して動くか調べてみろよ それで動かないならプログラムがおかしいってことだろう アレ別にあってると思うけどね
・・・もしかして、2回目のinputの時に、最初の文字列に含まれていない文字を入れてる、 なんてことないよな・・・まさかな。
132 :
デフォルトの名無しさん :2006/03/05(日) 21:14:57
99です。何故か、forの中の"\0"をstr2に書き換えたら、うまくいきました。みなさんありがとうございます。 低レベルな質問で時間を頂きましてありがとうございます。
returnの前にprintf("検索終了\n")を入れてみ
こいつは何を暴走しているんだ?
135 :
デフォルトの名無しさん :2006/03/05(日) 21:21:48
>>133 さん
おおっ!!
かっこよくなりましたね。
何このヘタレ
CPadとBCC Developerでは
>>113 の実行結果が違ってるのかな?
それとも試食版つかってるとか
>>132 forの中の"\0"は書き換えないで、最初の宣言のstr2[1]をstr[2]に変えてごらん。
そっちが正しい対応の仕方だろう。
訂正: ×str2[1]をstr[2] ○str2[1]をstr2[2]
140 :
補数 :2006/03/05(日) 22:55:56
[1] 授業単元: c言語 [2] 問題文:後ほど記載いたします [3.1] OS:xp [3.2] gcc 3.4 [3.3]C言語のみ [4] 期限: [5] その他の制限: ほとんど初歩です^^; 宜しくお願いします。
141 :
補数 :2006/03/05(日) 22:59:35
#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; }
142 :
補数 :2006/03/05(日) 23:00:05
int 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; }
143 :
補数 :2006/03/05(日) 23:01:08
の「2の補数」を計算するプログラムがわかりません^^: もし宜しければ教えてください^^;
2の補数とは1と0をひっくり返して1加算した数のことである。
2の補数とは1減算して1と0をひっくり返した数のことである。
2の補数は都市伝説である
147 :
補数 :2006/03/05(日) 23:06:11
有難う御座います^^ ちょっとプログラム上でどんな感じになるのか分からなくて^^; 何か参考にしたらいいサイトとかありますかね??^^;
148 :
デフォルトの名無しさん :2006/03/05(日) 23:07:47
スルー
~ビットごとの反転(1 の補数) ビット演算を調べるんだ!
150 :
デフォルトの名無しさん :2006/03/05(日) 23:11:18
>>147 とりあえずひっくりかえせ
文字列なんだからなんてこたないだろう?
整数で扱うなら1111との排他的論理和を取る
152 :
デフォルトの名無しさん :2006/03/05(日) 23:17:40
>>151 さん
この途中までのプログラム自体私が作ったものではないので^^;
ほんと全然分からない状況なんです^^;
>>142 コメントはちゃんとコメントアウトしとけよ
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ 税込み1500円になります 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ 手数料2000円になります 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
159 :
補数 :2006/03/05(日) 23:24:26
>>142 さん
すいません^^;
>>155 さん
結構探したんですけど、分かりやすいのが見つからなくて^^;
シェンロンが途中で値段を上げるw
>>140 #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;
}
>>161 続き
int 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));
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ 続きは手数料3000円になります 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
//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; }
200までいじりたかったのに・・・・
int bin_sum(char bin1[N], char bin2[N], int sign) { 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; }
167 :
補数 :2006/03/05(日) 23:35:13
161〜166さん 有難う御座います^^ 早速実行してみますね^^
符号拡張ミスってたorz int 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; }
^^ ウザイ (^^) 山崎渉を思い出す NullPointerException氏ね
>>162 Cなんだから//コメントとかやめようぜ
C99とは限らんだろう
Cのみのコンパイラはほぼないからおk
>>171 商用UNIXについてるオマケコンパイラとかは
ANSI Cすら非対応だったりするんだが。無論、わざと。
ΩΩΩ ナ、ナンダッテー
174 :
補数 :2006/03/06(月) 00:26:45
すいません^^; 実行はできたのですが、コマンド画面でどういうコマンドを打ったらいいんですかね??^^; ちょっとよく分からなくて…
175 :
デフォルトの名無しさん :2006/03/06(月) 00:27:03
このプログラミングの宿題を助けて下さい。 Cと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まで どなたかお願いします。
176 :
175 :2006/03/06(月) 00:27:54
LR 分析アルゴリズム(LR Parsing Algorithm) 以下がReduceしていく演算式の文法 です。 1)E → E + T 2)E → T 3)T → T * F 4) T → F 5) F → ( E ) 6)F → id
177 :
デフォルトの名無しさん :2006/03/06(月) 00:29:13
:三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ 手数料30000円になります 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
:三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ なんと手数料28000円でやります 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
179 :
175 :2006/03/06(月) 00:32:24
演算式の文法のLR 分析表です。 (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
意味不明('A`)
181 :
175 :2006/03/06(月) 00:33:31
上手く表示されていないので、また打ち直します。
182 :
デフォルトの名無しさん :2006/03/06(月) 00:35:03
:三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ 意味不明なのでスルー 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
神龍はなんてセコイんだ
わざわざ7つボールを集めさせて、しかも一つしか願い事聞いてくれないくらいだからw
プラス有償になったしな
神龍よりポルンガの方が気前がいいや
つまり、3.5人の童貞がメイド喫茶に行けばパンツを見せてくれるのですね?
タッカラプト ポッポルンガ プピリットパロ
LR解析は一時期ぱっと解答を出す人がいた。 ・・・興味のある人は過去ログか、ぐぐらばあるだろ。 俺は手で書くなら下向き再帰解析だけど。
だから童貞なんだよ
ここで質問していいのものなのか、ちょっと解らないですが聞いてください。 今ちょっと、プラグイン機能を持つアプリケーションを作成しようとしています。 プラグイン機能は後から、lib.soやdllを追加する事で機能拡張な形にしたいと思っています このアプリケーションを起動時に特定のディレクトリに存在するdll等を読み込み機能を 実行できるようにしたいと思っています。 このような設計や簡単なサンプルなどを扱っている資料などありませんでしょうか。 、
:三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ 手数料90000円になります 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
手数料がやばくなってきた件について
当時の90000円は今の900000リラ
197 :
175 :2006/03/06(月) 01:10:36
State | Action (id| +| * |( | ) | $) | GOTO (E | T | F) ================================================================================= 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 | # | # | # ------------------------------------------------------------------------------
198 :
175 :2006/03/06(月) 01:12:22
6 | S5 | # | # | S4 | # | # | # | 9 | 3 ------------------------------------------------------------------------------ 7 | S5 | # | # | S4 | # | # | # | | 10 ------------------------------------------------------------------------------ 8 | # | S6 | # | # | S11 | # | # | # | # ------------------------------------------------------------------------------ 9 | # | R1 | S7 | # | R1 | R1 | # | # | # ----------------------------------------------------------------------------- 10 | # | R3 | R3 | # | R3 | R3 | # | # | # ------------------------------------------------------------------------------ 11 | # | R5 | R5 | # | R5 | R5 | # | # | # ------------------------------------------------------------------------------
199 :
175 :2006/03/06(月) 01:13:20
演算式の文法のLR 分析表です。 (S5はShift 5を意味し、スタックにインプットします。 R2はReduce2を意味し、2) E → T式を使うということを示します。)
200 :
デフォルトの名無しさん :2006/03/06(月) 01:14:10
:三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ 手数料900円になります 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
201 :
175 :2006/03/06(月) 01:14:41
以下は、id + id * id を分析した場合の手順です。 StackInputAction 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
202 :
デフォルトの名無しさん :2006/03/06(月) 01:15:44
:三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ おやすみ 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
203 :
175 :2006/03/06(月) 01:16:26
教授に聞くと、 1)ファイルを開く。 2)ファイルからCharを読む 3)CharをTokenに変える (CharはA-Z、+、*、(、)です。) 4)LR分析表を作る 5)Reduceする演算式を使う の手順で作成するようにと言われました。 締め切りは、3月10日です。 どなたかお願いします。
つーか、いいかげんシェンロンウザイ
ヒント:みんなとっくにあぼーんしてる
:三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ 技術手数料59,800円+諸経費39,800で 三.ヽ= (⌒ヽ;:;:;,.二) 99,600円になります ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
>>192 機種依存ネタだとおもうが、linuxとかWindowsでそれぞれ違う。
とりあえず、トリップつけろよ。 必ず荒れるんだから。 なんか、トリップ無し=荒らしのような気がしてならない。
はい。荒らしでーす。どーせ4月中旬まで、ネタスレだしー。
210 :
デフォルトの名無しさん :2006/03/06(月) 01:50:06
212 :
デフォルトの名無しさん :2006/03/06(月) 02:06:10
>>210 授業さぼったレベルの話じゃすまされないと思うんだが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
しかしなんだこんなもん解らないんだったら、やばいと思うよ
貴様!これから報酬の話をしようと言うときに!
>>213 今画像見た
C言語つかプログラミング止めればいいのにと思った
わかんねえけど単位のためなんだろきっとwww それよりも3.6で配列使うなってのがよくわからん
分からないなら単位を落とせばいいのにと思った。自主的にサボったんならなおさら。
なんで?使わなくてよくね?
ポインタ使えばいいんじゃね それとも前方向リンクリストとか スタックとかキューでも自作しろって ことじゃね?
220 :
216 :2006/03/06(月) 02:19:59
ああ、やっと意図わかった (xn-u)^2出すには配列に入れんとだめだから2の公式使えってことか
>>210 うはwwwww難しいことやってんだなwwwwwwww
223 :
デフォルトの名無しさん :2006/03/06(月) 02:24:01
配列を使わない、1パスで済ます方法は、C言語によるアルゴリズム事典に載ってる。 ・・・はず。
デバッグ名目の報酬交渉マダー?(・∀・/)/凵⌒☆チンチン
[1] 授業単元:C言語演習 [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] その他の制限:ポインタや構造体まで習いました。よろしくお願いします。
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ 文字のカウントとかもう飽きたのでスルー 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
>>227 #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;
}
>>229 例をよく見ろ
入力はコマンドラインからだろ
そこでこの簡単な問題をすかさず俺が華麗に割り込みゲットするわけです コンパイル通るかしらんがまあ十分っしょ #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; }
>>216 こういうことだろ
#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);
}
しばらく書き込みないからもう誰もいないかと思ってたが けっこういるな
探索は嫌いなんだ。
>>234 「UVA,PKUなどのオンラインジャッジスレ」でも立ててくれ
237 :
216 :2006/03/06(月) 08:12:27
>>232 ガーン(゚д゚;) たしかに言われてみればそうだorz
1式だと各値を配列に記憶させないと(xi-u)^2が求められないから2式使いましょうって意図かと思った
つうか教授の意図はそれっぽい気もするんだがこの解答提出したらどういう反応示すのだろうか
238 :
58 :2006/03/06(月) 10:22:32
>>58 又は
>>60 の者です。皆様、ありがとうございました。
一応、組んでみました。
ただ、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
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ スルー 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
>>238 をみてこめんとをかくこともよしあしだなとおもいました。
>>240 こんな感じ?w
/*
>>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;}
やべーnamespaceつけ忘れた。コンパイルして、要点を確認したい人は、 cout →std::cout endl →std::endl に置換しておくれ
243 :
デフォルトの名無しさん :2006/03/07(火) 01:49:53
>>175 です。
>>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
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ スルー 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
245 :
デフォルトの名無しさん :2006/03/07(火) 21:22:52
以下のようにデータが保存されたdata.txt ファイルがある A 9 B 2 C 4 D 8 E 6 F 3 stract data {char name [10]; int val;} da[10]; と宣言された構造体を用いて このファイルからこれらの整数値データを読み込み その平均値を求めるプログラムを作成しなさい この問題が分かりません誰でもいいので教えてください!
#define stract struct
>>245 cin >> 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;
>>245 #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;
}
>>249 このほうが良くね?
int operator+(int val,const data&d){return val+d.val;}
251 :
補数 :2006/03/07(火) 21:53:49
1] 授業単元: c言語 [2] 問題文:後ほど記載いたします [3.1] OS:xp [3.2] gcc 3.4 [3.3]C言語のみ [4] 期限: [5] その他の制限: ほとんど初歩です^^; 宜しくお願いします。
>>246 から
>>250 の方本当にありがとうございます
ただ、本当に申し訳ないのですが
ポインタと構造体とファイルの基礎の基礎しか習ってないので
(#include<stdio.h>から始めるのしか習っていません…)
出来ればそれをふまえてお願いできませんでしょうか?
わがままなやつで本当に申し訳ありません。
253 :
補数 :2006/03/07(火) 21:55:01
#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; }
254 :
補数 :2006/03/07(火) 21:56:07
int 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; }
1] 授業単元: c言語
[2] 問題文:
>>245 [3.1] OS:xp
[3.2]
[3.3]C言語のみ
[4] 期限:明日8時までに回答いただければ
[5] その他の制限:基礎中の基礎しか習っていません
256 :
補数 :2006/03/07(火) 22:00:48
実行すると ("5(0101)+(-6)(1010)= の値が-1にならないといけないのですが なりません^^; もしよろしければ正しく修正して頂けないでしょうか??
>>256 #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));
}
uzeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
>>256 printf("5(0101)+(-6)(1010)=%d\n", result);
ここをこうする
printf("5(0101)+(-6)(1010)=%d\n", -1);
260 :
補数 :2006/03/07(火) 22:14:36
>>257 さん
有難うございます^^ スイマセン、余り文をいじらずに作らなきゃいけないんですよ^^;
>>259 さん
それは反則ですよ^^;
int bin_sum(char bin1[], char bin2[], int sign) { 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; }
>>260 反則というなら規則を示せ。
情報を小出しにするな。
263 :
補数 :2006/03/07(火) 23:30:04
>>すいません^^; 確かにそうですね。 ほとんどプログラムは完成に近いと思いますので、 なるべく状態を維持したままお願いします^^;
>>245 #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);
}
続き while((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; }
[1] 授業単元:C応用 [2] 問題文(含コード&リンク):多いですがよろしくお願いします。<(__)> 1.コマンドラインから四角形の辺の長さを入力すると、以下のように表示する。 実行例は以下のとおり。 ######### # # # # ######### [3] 環境 [3.1] OS: (Linux) [3.2] コンパイラ名とバージョン: (gcc 3.4) [3.3] 言語: (C言語)
上の問題シャープがずれてます。。 後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
よくばりさん \\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ スルー 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
スルー
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ 3000円になります 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
>>266 #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;}
>>266 (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;
}
同一人物か。 テクを使っているのは理解するが、もうちょっと、分りやすく書け。
どうして?
275 :
留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 14:00:01
[1] 授業単元: C言語 [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ビット数の 合計を出力できるようにしなさい
266 です。助かります<( )> 17時までに仕上げないとダメなんで焦ってます。 あと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
278 :
留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 14:01:10
#include<stdio.h> int 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] その他の制限:ないです
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ スルー 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ スルー 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
281 :
留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 14:04:56
本当にお願いします
追試中とか必死だな
272さんは素晴しいテクニシャンですね。
284 :
留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 14:07:22
あと20分しかないんです。 後でなら私に出来ることなんでもしますんでお願いします
285 :
留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 14:11:39
神龍様私の願いを・・・ 冗談抜きにやばい;;
286 :
デフォルトの名無しさん :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:.:.
冗談抜きに留年すりゃいいんじゃね?
288 :
留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 14:24:17
2番目の問題だけでもだめでしょうか?
>>277 だるー
(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;
}
#include <iostream> #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;} ポインタすらまだよく分からんのに適当に作ったら動いた
291 :
デフォルトの名無しさん :2006/03/08(水) 14:31:16
>>289 ありがとうございました!これからは教えられる側になれるように精進します。感謝
293 :
留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 14:33:13
30分延長になりました。オラに元気を・・・
プリプロセッサでクオートさせるのって何だっけ?
>>293 #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に勝手に修正
>>留年勘弁 しょうがねぇなぁ。
おちつけ、まだ20分もある
>>289 すいません
(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’
というエラーが出るんですが。。。
>>300 ああ、ごめん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;
}
>>留年勘弁 #include <stdio.h> int main(void) { int n; scanf("%d", &n); printf("%d\n",n); return 0; }
うちの学科では学部を卒業するまでに、20%以上の学生が留年を少なくとも1回経験します
305 :
留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 14:48:56
本当に感謝です。 ヒキオタデブが留年ヒキオタデブor無職ヒキオタデブに なってしまうところでした
こっちでも1,2年→3年だけで10%が留年か降年。
308 :
留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 15:01:53
問題1がならないんですが #include <stdio.h> int main(void) { int n; scanf("%d", &n); printf("%d\n",n); return 0; } abcと入れると150と出ます 例では10なのですが・・・。
310 :
留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 15:04:27
できました。合計をするにはどうすればいいですか? aaa 307 これを10と表示しないといけないみたいです
ちょっと、ガンバってみるので、最終期限書いといて。
そもそも30分延長から30分経過してるから終わりじゃね?
みんなすごいからさ、俺もやってみたくなったんだよ
314 :
留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 15:27:37
いろいろありがとうございました。助かりました 追試は不合格でしたが、追認が受けられるので・・・。
>>275 遅くなった。申し訳ない
#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);}
>>勘弁 もう、提出した? ネタ回答なんで、提出すんなよ。
317 :
留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 15:39:21
超提出した
再試験受けても留年するだろ、あんなの出しちゃ。 追試代がもったいないので、受験しないことを提案する。
>>12 と似た問題で、言語C++など環境は一緒なんですけど
「16×16のマス目において、*(点がある)+(点がない、空白)と解釈し、
*で囲まれた領域とその数を求めなさい。
なおデータは配列の初期値としてユーザーが与えることとする。」
って問題誰か配列とvoidの関数しか使わないっていう
超単純なプログラム面倒だとは思いますが今日中に作ってくれませんか?
俺も留年にリーチがかかりそうなんです…
留年リーチ多いな・・・
>>319 何時まで? 今から出掛けるんで、帰ったらやってみる。
今日の夜中まで大丈夫です、お願いします。
>>284 後でなら私に出来ることなんでもしますんでお願いします
こういうのは、どう反応すればいいのですか?
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ 報酬は? 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
神龍は何でも願いが叶えられるんだから報酬報酬言う必要ないような希ガス
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ スルー 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ 報酬はイランガナ 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
#define X(a, b) Z(a, b) #define Y(a, b) Z(b, a) #define Z(a, b) a##b 使用法。int -> X(i, Y(t, n)) #define OOO0OOO a とか組みあわせる
基本 #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
>>319 端16x16のフィールドを作って
端の+をマインスイーパー感覚で再帰関数を使ってオープンしていき
全ての端を調べ終わったときに残ってる空白が*に囲まれている領域
書くのめんどくさいので誰かやれ
voidの関数ってなんのことを言ってると思う?
(1)戻り値がvoid (2)引数がvoid (3)双方ともvoid (4)実はmain関数のこと
>>331 日下部の関数とか。
void func(void);かなぁ。
operator<<もprintfも使えないのかぁ
標準関数を使っちゃいけない、っていう意味だったのか
>>319 をよくみろ
printfもscanfも使う必要はない
求めた数を表示できないっすよ?
アセンブラでOSコールだ
339 :
:2006/03/08(水) 20:12:46
スーパーバイザコールするんですね?
340 :
デフォルトの名無しさん :2006/03/08(水) 20:17:11
>>329 それに近いのがどっかで晒されてたような気がする。
確かどこかの大学の教科書だったような。
IOCCC Japan の会場はここですか?
>>340 オリジナルの Borne Shell がそんなの使ってるという話を見た事がある。
たしかにIOCCCチックな流れだな
>>341 そんなのがエキスパートCプログラミングに載ってたな
休み明けまではIOCCC Japanでいいんじゃね? どうせこの時期に宿題持ち込む奴なんて追試食らうようなヤバイ奴だけだろ
IOCCC Japanが開催されているきいて飛んできました
>俺も留年にリーチがかかりそうなんです 換言するとまだ余裕があるってことだよナッ
留年したほうが本人のためだろ
>>306 降年って東大以外でやってるとこあんの?
>>319 printfは許せ。
#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);}
ありがとうございます、しかし起動しても何にも変化がないんですが… あと面接があるんで中身何やってるか詳しく教えていただけますか? いろいろ注文つけてごめんなさい…
>>350 ・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
(゚Д゚)ハァ?
スルー
>>351 すいません、自分で理解しようと思ってたんですが実力がないので無理でした…
いよいよIOCCC Japan開催だな
わからないので聞く⇒スルーされる⇒ ↑ 今ここ ⇒仕方ないので自分でやる⇒見やすいようにソースを分解⇒眺めてみる⇒理解する⇒糸冬
>>356 申し訳ないです、がんばります!
でもコンパイルできるのに何にも表示しないんですが…
4って出ない? VCとbccではちゃんと動くけど、gccだと違うのかな。
>>357 ちゃんとコピペしたか?
実行すると数字が表示されるぞ
あ、出てました!すいません、見落としてました。 もし分からないとこあったらまた質問させていただきます。 よろしくお願いします。
お願いだから馬鹿を進級させないで・・・
>>350 >>362 ・・・すげえw
そういや、「宿題解いてくれたら、後でなんでもします」的な書き込みで、
その後なにかしているのを見たことがないなw
追試受けたり、課題できないようないい加減な連中だしな
IOCCC Japan開催中
368 :
sage :2006/03/09(木) 12:42:04
369 :
:2006/03/09(木) 13:01:40
>>319 手遅れか
#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');
} } /*上下左右だけ(壁、四隅を除く)*/ 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; } } }
訳を書こうとおもったけど面倒くさすぎなのでコード #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; } ギリギリ?意味が分からんところは自分で修正ヨロ。こんなコード自分でも書きたくない。
373 :
372 :2006/03/09(木) 16:07:49
>>368 投げっぱはよくないから出力の確認までした。
#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;}
>>372 凄いよ先生!!惚れました僕と寝て下さい。
>>372 大変お手数掛けました。滅茶苦茶助かりました!!ありがとうございます。
今度誰か助けれるようにがんばりたいと思います
370だけど 俺でも頭ひねれば出来そうな問題プリーズ
>>376 俺に彼女が出来るPGを考え作成せよ。
尚、提出期限は3/12(日)までとする。
彼女が出来るPG・・・ いくらで売れるかな
出会い系サイト作ればいいんじゃね?
そんなもん作ったら管理が難しいだろ PGなら作った後放置プレイ 待ってるだけで金が舞い込んでくる
CUIベースのPGとか
一次元・31ビットの彼女 #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; } }
よろしくお願いします。 [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年生の授業なので出来るだけ簡単に)
小学生?中学生?
おそらく消防だろ
>>385 A)
#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);}
}
389 :
デフォルトの名無しさん :2006/03/09(木) 20:12:15
>>385 for(int i=0;i<100;i++){ tbl[i]=rand()%100; printf("%d\n",tbi[i]); }
俺ここまでしか和姦ねー
基本交換法って何?バブルソートのこと?
さっさとBとCとけよボケ。 こんなもんすら解けないのか
挿入ソート for(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; } } }
荒らさないで下さい。。
394 :
385 :2006/03/09(木) 20:27:14
>>392 あの、挿入ソートじゃなくて隣接交換法でおねがいできませんか?^^;;;;;;;;;
偽者はやめてください。
シェルソート for(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; } } }
バブルガムブラザーズ for(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; }}}
隣接交換法あってるかな? for(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; } } }
A,B,Cまとめて 1レスに収めるために 改行消したりしてるから適当にコードは解凍しといてください。 #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; }
402 :
400 :2006/03/09(木) 20:50:27
あ、しまったw k = TBL[i] ... TBL[j] = k; の部分の i は j-1 に置き換えといて。 そのままでもソートはされるけど別のソート方法になってしまう。
>>400 すいません。馬鹿なので分割できません。。
お手数かけますがよろしくお願いします。
そのまま提出すればいい
戻す作業が激しく大変
Bだけ出来ません。どうかよろしくお願いします。
ググれば?
#include <stdio.h> #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; } バブルソート
409 :
385 :2006/03/09(木) 23:35:10
ググればバブルソートのプログラムはでるんですが
BはA、CはBのプログラムを元にしなきゃ駄目なので無理です。。
>>388 さんできれば続きを。。
410 :
デフォルトの名無しさん :2006/03/09(木) 23:41:45
東大生か
だね。
>>410 のこと先生にちくっていいですかね?
伊庭タンキタ━━━━(゚∀゚)━━━━ッ!! 今年度3回目か?3回とも2chで聞くとはツワモノだな。
415 :
385 :2006/03/10(金) 00:00:39
416 :
385 :2006/03/10(金) 00:05:34
残りC、お願いします<__>
自動的に解答するPGを作れ? 意味わからん
再帰じゃないのか?
ファイル読み込んでパズルを解くプログラム作れ、ってだけだろ それより、「不明な箇所は0とする」っていう説明がないのは不親切だよ伊庭先生
>>410 一応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;
}
421 :
420 :2006/03/10(金) 00:53:47
ちなみにLv1というよりかはLv2の解き方に近いので簡単にLv2のほうも書ける。 その場合は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; }
423 :
422 :2006/03/10(金) 01:29:17
二分探索の検索する奴が複数あると見つからないから
424 :
385 :2006/03/10(金) 07:05:44
>>420 そういうソースってすぐ思いつくものなの?
見たけど何を何してるのかも俺わかんないよ。
経験の裏打ちは元より、それ以上に才能やセンスからくるの?
仕事でプログラムやってる人って、みんなこんなソース
すぐに設計して構築して打ち込めるの?
なんか不思議でしかたがない。
426 :
420 :2006/03/10(金) 12:41:46
才能やセンスはこれ位なら関係ないと思う。 経験もたいして重要じゃない。自分は大学1年でプログラミング暦はたったの4年しかないしな。 重要なのはパズルの解き方の定石を知っているか知らないかだけ。 問題を再帰的に考えるのがパズルの解き方の定石。 この問題の場合は一個数字を埋めて、 自分を呼び出す(この後自分の埋めた値を元に戻して)の繰り返しで成り立っている。 一個ずつ、埋めていって最後まで矛盾なく埋めれれば成功、そうでなければ失敗。 パズルは枝狩りとかを無視すれば基本的には殆どすべての問題はこのやり方で出来る
まぁ、こんなスレに依頼しに来てる様な奴には一生できない。
428 :
:2006/03/10(金) 12:52:11
>>420 の問題の解答で質問したいので、夕方頃C言語なら俺に聞けスレに誰か来て下さいね。
429 :
420 :2006/03/10(金) 12:54:41
あー効率を無視して考えれば再帰も不要だな、まず0だけ抜き出す まぁ0の数は不明だがこの場合4としよう 0000 これを1111から9999まで全部試す。 以上 自分のも基本的にはこのやりかた、 ただ、これだと効率が最悪なので23??とかのときに23が絶対にありえない組み合わせならすっ飛ばして24??に行ってるだけ
嘘です。ごめんなさい。死にます。もう吊りっティングします。
432 :
デフォルトの名無しさん :2006/03/10(金) 17:45:03
再帰なら局面退避スタックいらんやろうとか その関数でpushやpopはないやろうとか っていうかpushやpopって名前でその引数はないやろうとか ツッコミどころは色いろあるわけだが オレが提出するわけではないのでよしとしておこう
>>433 伊庭さんが push とか pop とか言ってるから,仕方が無く作ったんでせう.
>>410 これって「数独」、「ナンバープレイス」、「SingleNumbers」、その他の名称で知られる有名なパズルだろ。
ぐぐればソースが転がってるぞ。
ナンプレはイギリスで流行ってるらしい どの新聞を買っても載ってるんだって
438 :
デフォルトの名無しさん :2006/03/11(土) 00:52:12
ディレクトリ内のファイル名をテキストファイルに列挙する プログラムをお願いします
439 :
438 :2006/03/11(土) 00:58:24
すいません テンプレ見てませんでした
>>438 Windows版
#include <stdlib.h>
int main() {
system("dir /B /A:-D > result.txt");
return 0;
}
>>438 あるサイトのサンプルをそのまんま載せます
引数にアドレスを
#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);
}
442 :
438 :2006/03/11(土) 02:21:40
>>441 dirent.hが無いと言われるのですが・・
>>440 DOSコマンドですか・・
うう・・
環境くらい示せ っていうか、テンプレがあるの分かってるなら質問し直せ
#include <stdio.h> #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; }
445 :
444 :2006/03/11(土) 03:12:56
すいません、問題ちゃんと読んでませんでした。 どこかを↓に差し替え sprintf(buf, "%s * > result.txt", argv[0]);
[1] 授業単元: C言語 [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] その他の制限: 現追試中です、止まって進みません 知識は薄いです・・。 よろしくお願いします。
よくばりさん \\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ スルー 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
448 :
446 :2006/03/11(土) 07:21:45
> [3.2] コンパイラ名とバージョン: (gcc 3.4) ココ消し間違いました。VCです(;´Д`)
>>446 問題1
#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;}
450 :
446 :2006/03/11(土) 08:49:02
>>449 形だけでも教えてくれてありがとうございます。
すみません、午前に補講があるんで行ってきます。
今日中に間に合うように問2と共に試行錯誤してみます;
錯誤もなにもこれそのままでいいような
とおもったらなんかへんだなw
#include <stdio.h> int 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; } とりあえず翻訳文
>>446 問題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;
}
455 :
問題2 :2006/03/11(土) 11:24:54
#include <stdio.h> #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; }
>>446 問題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]);
}
}
#include <stdio.h> void 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]); } } とりあえず翻訳文
#include <stdio.h> int 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だった
>>446 Q2
#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);
}
460 :
446 :2006/03/11(土) 13:15:20
>>451-459 今帰ってきました。
6名もの方から解答を頂けるとは
感動しちゃいました、すみません;
昨日まで解らずにいて、困っていたので・・・
後数問似たような問題があるので
見合わせて解いて、提出に行きたいと思います。
ありがとうございました。
みんな凄いな
IOCCC Japan 大盛況開催中
>>459 やってることは分かるが、sizeof(int) == 4決め打ちは如何なものかと思うが
それはそうとsetjmp.hとsignal.hって面白いな
エキスパートCプログラミングに触発されて試してみたがハマった
465 :
デフォルトの名無しさん :2006/03/11(土) 17:54:32
>>464 -‐''''"´ ̄``ヽ、 ____
/ _ ヽ //´ __,,>、
/  ̄ ̄ { /::/ / ̄:::::::::::::::\
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二フーイ /  ̄ `‐‐'´ ヽ |
>>456 採用ありがとう。
同様ので、
#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))
>>446 の問題簡単そうだと思ったら、もうみんな解だしてるのね
一応俺のもはっとこ(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;
}
中の人も大変だな
プリプロセッサじゃないのか
>410みたいなリンクにいけないのは、部外者だからなのかな
>>474 特にアクセス制限とかはかけてないはずだけど……。時間置いて再度やってみてください。
476 :
474 :2006/03/12(日) 00:33:06
宿題なんだろうけど、オープンにする理由がわかんない。どうしてだろう アクセスできてないから、いいかげんな疑問ですけど
>>476 オープンにして困る情報が含まれていないからです。
ブラウザが悪いんじゃない?
479 :
デフォルトの名無しさん :2006/03/12(日) 15:44:21
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
http://pc8.2ch.net/test/read.cgi/prog/1140616676/
480 :
デフォルトの名無しさん :2006/03/12(日) 23:55:59
[1] 授業単元:C言語 [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言語は苦手でしたので関数名とかは知ってても実際は使えないというのが状況です。
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ 流れ図めんどうなのでスルー 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
Aは俺が一番に出来た(・∀・)ニヤニヤ #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;}
なぜフローチャートなどという劣悪なシロモノを使わなければいけないのか。
Aの答えを作ろうと思ったが、GCCのインラインアセンブラが余りにも糞仕様過ぎて止めた どこの馬鹿があんな仕様考えたんだ? srcとdestが入れ替わるわ、間接参照も面倒くさいわで使いにくいことこの上ないな
>>480 >フローチャートもプログラムがわからないので作れる方お願いします。
そもそも普通はフローチャート→コーディングという流れなので
プログラムが分からないからフローチャートが書けないというのはおかしい
YES! masm系、特にnasmが最強
引き続きIOCCC Japanへの参加をお待ちしております
そもそも普通はプログラムが分かるやつがフローチャートを書くので プログラムが分からないからフローチャートがかけないというのはおかしいというのはおかしい
491 :
デフォルトの名無しさん :2006/03/13(月) 00:52:44
>>488 385にも同じ問題がスレがあったの知らなくて今見てびっくりしたのですが、
この課題は他人との融通があったと判断した場合、
レポートを無効とすると記されているのでこれは使えないんですよ。
>>485 これはやらしい先生が考えたのでホント糞仕様書ですよ。
おれもgas設計した人に教わってみたいもんだ
Dean Elsner?
>>494 明らかにGNU GASの仕様のことだろ
うん
プログラムの方は誰か作る気あるのですか?
なんかソースがかなり煩雑になってるって聞いたことあるが・・・ いや、おれはGASのソース見てないけど
そもそもgasって今もメンテされてるのか?
>>497 勘違いしてましたわ。
gccのことだったとは気づかなかった。
話がずれてるので処理A〜Cお願いします。
\\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_
>>480 の先生が有名人かと思ったのでスルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
二分探索 どっかの参考ページでみながら書いたソースがあったので載せる 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で・・・・ そのプログラム全部書くよりフローチャート書く方が手間かかるわ
ペイントでいいんじゃない?
Visio
Freemindは?
ワードでいいんでない?
フローチャートを描くプログラムを書けばOK
本気で(A)の「乱数を発生させる」フローチャートが見たいと思った3月の雪空
オレも見たい鴨
OpenOffice
>>510 ガイガーカウンタと計測器でがんばればいいんじゃね
>>504 二分探索ありがとうございました。
フローチャートはあまりにも手間がかかりますので、自分でやります。
>>514 初めて宿題スレでありがとうって言ってもらえた。
いえいえどういたしまして。
お互い精進しましょう。
和やかな雰囲気(・∀・)イイネ!!
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ スルー 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
>>515 よかったね。前に、残っている宿題を整理するついでに、回答率がどれくらいで
礼を言われるのがどれくらいか、ざっと数えたことがあるんだけど、そのときは
回答率が約6割くらいで、それに対するレスがあったのは、回答があったうちの
半分未満だったよ。
まあ目安として3回答えて、一度もレスがなかったら、運が悪いのかもw
解答してもらって礼すら言わない奴がいるのか・・・
520 :
デフォルトの名無しさん :2006/03/13(月) 21:41:22
あ、あんたなんかに下げる頭は持ってないわよっ! ・・・・でも、ありがとう
521 :
デフォルトの名無しさん :2006/03/13(月) 21:48:24
お礼とかより提出した宿題がどのように採点されたのか報告してくれ
それは確かに興味あるwww
確かに採点結果・教官のコメントは知りたいな
テンプラに入れようぜw
事後報告は必須です
先生!漏れが変わりにやった宿題の評価は??
報告テンプレ [1] 評価: [2] 結果: 何か足りないものある?
ネタプログラムの評価は知りたい。
おう! なんか、さいきん、読んでも理解できなくてな・・・ 医者行ってくるわ・・・
報告テンプレ [1] 評価: [2] 結果: [3] 単位取得の有無: [4] 回答者にコメント: はどう?
評価と結果の区別が分かりにくいかと(質問してくる人には)。 あとコメント欄にネタ回答への怨み言を書かれそうで困るかな。
怨まれるのが恐いならネタ解答してんじゃねーよ。 そもそも、宿題がどう評価されたかを知って何が面白いんだ?
レスポンスが無いとむなしいに決まってるじゃないか
なるほど。 俺は解くだけで満足だが。
報告テンプレ [1] 先生の評価: [2] 提出結果: [3] 単位取得の有無: [4] 回答者にコメント(愚痴等は禁止):
>>535 恐いんじゃなくて、スレがいい感じで荒れそうだなぁと。
そうなるとネタ回答できそうな質問が減って困る。
2ちゃんで一番好きなスレはここです。 このスレが無ければ卒業できませんでした。
追試の時期が終わって問題投下が減ったかな?
留年勘弁氏の動向が気になる。 ネタを本気に取られてしまった・・・
>>543 gcc で日本語?やりたくねえなあ。
翻訳してない問題は無いの?そっちのほうがはるかに簡単そうなんだけど。
>>543 久しぶりに面白そうな課題だからやってみたいんだが
原文を上げてくれ。そっちの方が読みやすい
それとその検索対象のファイルっていうののサンプルは無いのか?
英語読めない香具師がここに一人
>>543 こうゆうものは原文と翻訳文を出すべきでは?
C出来ないくせにUNIX出来るなんて・・・生意気だ!・・と言ってみるテスト
基本的には for (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; くらいで辞書の各行を走査してやりゃいいだけのような。
>>550 やってみるがこの調子だと競争になりそうだなw
まぁ別に解答済みでも自分なりのをうpるが
和訳とはだいぶ意味違うじゃねーか
-exact (デフォルト) 検索文字列と文字数がきっちりあう単語にマッチ -prefix 検索文字列が先頭にある単語にマッチ -anywhere 単語のどこかに文字列にマッチ までは把握した。
とりあえず引数異常の場合にstderrにUsageを出すところまでは把握した つーか、臨時の環境だからMeadow入れ直し+Cygwinのうpでとが面倒だ('A`)
556 :
555 :2006/03/14(火) 22:24:40
file_not_exist と invalid_pattern のエラーメッセージの表示先が間違ってるので直して.
この行為がcheating(カンニング)でmisconduct(不正行為)にあたり 発覚したらまずは課題が0点になるというところまでは把握した。
レポート提出先のアドレスあったら、だれか突撃!
>>560 スマンスマン。冗談だ。
で、提出先を教えてくれ。
>>555 のままだとスタイルの得点が0点になりそうなので質問者は注意したほうがいいね。
具体的には、
コメント:ない。
括弧:ifやforの後ろが1文のときに{}がない。
空白:関数の間に空行がない。
インデント:インデント1段階がスペース4つになってない。式が次行に続くときにスペース8つになっていない。
英語のお手紙書くのはぢめてなんで、緊張するお!
>>563 >>564 学生以外はsubmit出来ないはずなのでご遠慮ください。お願いします。
となると私の課題はそのまま提出すると0点になり提出出来なくなるのでzipファイルは削除します。
自分でなんとか考えます、答えてくれた人ありがとうございます。参考にします。
本気でやるやつ居ないと思うがなぁ
Meadowいれたりしてる内に解答されたか・・・('A`) まぁ自分のためにもなるんで頑張って作ってみるか
569 :
568 :2006/03/14(火) 23:45:16
一応わかってる穴。
* 568 のコードはオプションの扱いを端折ってるので正確ではない
* ASCII に依存している
素直に string.h のを使うべきだったな。
出しておいて言うのもアレだが。
バッファ管理はともかく
>>555 のコードはスッキリしていて良いね。
enum{exact,..} と match_func *match[]={...} の所が好き。
570 :
デフォルトの名無しさん :2006/03/15(水) 00:20:22
543の問題を解こうと思って リンク先見たらソースしか載ってなかった 問題文どこ?
・・・過去にマヂでセンセ宛てにメールした奴も居るんで、ジョークにならんとゆーところがまた・・・
あれは学校のURL晒した本人が悪い
【積年の】旦那にしてる密かな仕返し【恨みじゃー】
http://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
家族で密かにはぶっている。
男性は肉体が汚く、精神が美しい傾向がある。(気に入らない相手に肉体的攻撃を加える⇒精神的攻撃も加える男は猛者)
女は肉体が美しく、精神が汚い傾向がある。(気に入らない相手に精神的攻撃を加える⇒肉体的攻撃も加える女は猛者)
女は隠れて悪事をする。気に入らない女子を便所でボコったり、便器舐めさせたり、男の友人を使ってレイプ、仲間外れにしたり。陰口、嫉妬。
女は対人関係において、この汚い性格を隠そうとするため、外面が非常によくなる。(猫かぶり)
男性諸君は外面に騙されないように気を付けて下さい。
575 :
デフォルトの名無しさん :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の引数から何個入れるの?好きなだけ? 限定されないとこまっちゃう。逆にコマンドラインから引数を受け取らないなら 好きなだけ比較できる。 はぁ、、英語って難しい
577 :
デフォルトの名無しさん :2006/03/15(水) 06:52:09
ここ、あほばっかだな
578 :
575 :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;}}}
579 :
デフォルトの名無しさん :2006/03/15(水) 12:20:57
>>575 真面目な話、あの英文を読解できないのはヤバイと思うが
581 :
デフォルトの名無しさん :2006/03/15(水) 15:02:30
C言語なら俺に聞けスレが消えてしまったので、宿題では無いのですが ここで聞いてもよろしいですか?
お前が消えろ
583 :
デフォルトの名無しさん :2006/03/15(水) 15:07:22
自分でなんとかします。スレ汚し。すいません
消えてねーよ探せよヴォケ
このスレで暴言を吐くな 厨臭くなって困る
>>585 このスレで暴言を吐くな
厨臭くなって困る
これが厨
これはしたり ほんものの厨だったかw
589 :
デフォルトの名無しさん :2006/03/15(水) 17:05:33
32歳だけど厨な俺が来ましたよっと
荒れてきたな
おしりがいい感じ
虚しい会話ばっかw
宿題ないとダメだなここw
誰か人助けだと思って宿題を投下してくれないか?
脳内で発生した宿題でもいいか?
メンドーな問題じゃなきゃおk
[1] 授業単元:脳内 [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
じゃあ俺も [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使用禁止
>>599 綺麗なやり方じゃないが誰もが思いつくであろう物を上げておく
unsigned my_sqrt(unsigned long n)
{
unsigned i;
for (i=1; i*i<=n; ++i);
--i;
return i;
}
>>599 math.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;}
何故 数当ては誰も作ってくれないグレるぞ俺
>>598 後はBだけまで来た
はずかしいソースができた
604 :
601 :2006/03/15(水) 23:36:22
同じ事をまとめられるので微修正
int 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;}
>>599 ニュートン法。誤差がない保証はどこにもない。
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;
}
[1] 授業単元:脳内 [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] その他の制限: 仕様が足りない部分は、適当に補完してください。
608 :
605 :2006/03/16(木) 00:05:48
気づきましたよ 自分でやってて気づきましたよ 2H 3B あれ?
ここってプロプログラマ率どんくらいだろうか
漏れは趣味の人だお
俺ただの大学生
俺もただの大学一年生
俺は中学と高校の狭間
俺ただの高校生
OpenJaneからJaneViewへの移行が今終わった、 お気に入りがすっきりした。
>>608 Blowの仕様はそれでいいのかな?
例えば、正解が6501のとき
6555って入力すると
2H 2B
って出るけど
2H 0B
が正しいんじゃない?
まあ、各桁がすべて異なった数値以外は
受け付けないようにすればラクなんだけどね
たしかに受け付けないほうが楽な上に親切ですね。 脳内で修正しときますw
>>611 ただの大学生だお
>>607 本題と関係ないんだが、C89ってのを久しぶりに見たんで一瞬何かと思った
みんなはANSIとC89、標準のどれで表記してる?これ以外もあったらよろ
血も涙もないなw
625 :
624 :2006/03/16(木) 01:58:08
バグってた。 compare_fractionの最初の行は for(int i = 1; ; i++)
>>622 ちょwwwwwwwこれでもテンプレ要るのかよwwww
[1] 授業単元:プログラミング用語C
[2] 問題文(含コード&リンク):ISO/IEC 9899:1990を別の表記にせよ
[3] 環境
[3.1] OS:All
[3.2] コンパイラ名とバージョン:gcc3.4.4
[3.3] 言語:C
[4] 期限:無期限
[5] その他の制限:日本語・英語以外は使ってはいけない
>>626 C/C++で書いちゃいけないんならスレ違いだ。>日本語・英語以外は使ってはいけない
オマイラなんでそんなに厳しいんだw
>>626 そんなのこのスレ見て自分で判断しろよカスが
さ〜て雑談で1000まで行くかぁ?
>>632 実装をみてみたけど、それだと
x2-y08 < x2-y7
で仕様に反してるな。
>>599 昔平方根を筆算で解いてたのを思い出してやってみた
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
とりあえず模範解答置いときますね
int 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;
}
すいません。悩んでも悩んでも無理でした。。。 [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] その他の制限:制限はありません 宜しくお願いします。
>>636 struct B {char str[8];};
B b;
strcpy(b.str, "Whee!");
std::vector<B> m_v(5, tmp);
char * autoVariable = m_v[2];
ってことか?
>>636 え、よくわからんけど
こういうことじゃまいか?
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];
要素はポインタをメンバに持ってないんだが要素のポインタってなんだ?
業務に1票 理由:わけのわからん名前をつけてるから。
おれはSTL使わせる課題なんて見たことないのぉ
業務にもう一票。この時期そんな宿題はでない。 でも授業単元は情報処理w
流れに乗って業務にもう1票
[1] 授業単元: ゼミで出た話題 [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] その他の制限: 特になし.
これはいいネタがやってまいりました
645 :
643 :2006/03/16(木) 20:07:58
>>643 追加
・並び替えは最短手数のものを表示してください.
・n は高々256 とします.
問題の意味が理解できない
ゲェー、最短手数? 総当りしか解き方を思いつかない俺にはだめだ
650 :
643 :2006/03/16(木) 20:17:15
>>646 すんません。
>>647-648 長さ 2 の列を選んで並び替えるのは(巡回を無視して)バブルソートですが,
それを長さ 4 の列でやりたい,ということです.
巡回ってのは 2 3 4 5 1 とか 4 5 1 2 3 みたいなのです.
分からないことがあったら聞いてください.
>>649 幅優先探索なら総当りでも最短性が保障できますが,
n! くらいのオーダーがかかるので n が 256 近いときに終わらない気がします.
652 :
643 :2006/03/16(木) 20:26:25
>>651 [1] を他のメンバーの評価(コメント)ということにして使います.
追試のあとにごっついのきたなオイ
>>643 元の列を巡回的になるように・・・
なんとなく理解した。
長さ5のとき。
4 3 2 1 5
ってのもアリにする?
昇順っしょ
656 :
643 :2006/03/16(木) 20:37:57
>>654 逆順は駄目です.が,もし逆順でもいいなら簡単に解けるぞ,ということであれば
それはそれで面白いので,是非教えてください.
どっちかというと数学の範疇な気がしなくも無い
6 6 5 2 3 1 4のやつ これ単調増加列とかじゃないけど どんな列なのかいまいちわからん 例でいいから計算してみてよくわからん
>>658 それ
6 5 2 3 1 4
の間違いっしょ
ちょっと考えればわかるだろ・・・
最初の6はnの意味での6でしょ。んで残り6個が初期配置。
宿題ではないのですが、面白いと思いまして。(スレ違いならそのようなスレに誘導をよろしくです 次の配置のものはどのような方針で作られますか 100 010 001 や 001 100 010 つまり、縦から見ても横から見ても 1 がひとつあるような全ての配置です
>>643 がうまくいかなくてついカッとなってやった
>>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 のソースみている
どうでもいいんだが、
>>662 のコンパイラだと
#include <algorithm>
これいらんのか
665 :
661 :2006/03/17(金) 06:06:20
>>663 C++が不勉強で読めてないのですが、Cでの実現を考えると特殊なライブラリが必要になりそうですか
>>665 そんなことない
一応これは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
って感じになる
もっといい方法あるかもしれんけど
667 :
666 :2006/03/17(金) 06:23:29
>>666 間違えた
> 0010
> 0100
> 0010
> 1000
じゃなくて
0010
0100
0001
1000
だった
668 :
661 :2006/03/17(金) 06:41:31
ども。勉強不足だ。つながらないや。primitiveとの関連が解決ずみかもわかんないのに。余地がありそうだ
>>662 深さの見積もりが多分おかしい(といってもじゃあ一体どういう式にすべきか思いついてないけど)。
そのソースだと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
ごめん
>>669 はまちがい、さらに短いのがあった。
深さを1ずつ増やしながら順次まわしてけばいいかも。
…って、それが幅優先かorz
近いほうでいいから最大30手か?
連投すまんがさらに間違い。 長さ6だと操作による群のパターン数は360だが、昇順パターンはそのうち3パターン。 (123456,345612,561234)と(234561,456123,612345)は違う群を作る。なので解けるパターンは720パターン。 あと分布空間は長さ6だと少なくとも3次元(多分4次元)なので、最大手数はもっと少ないかもしれん。
674 :
643 :2006/03/17(金) 08:09:08
675 :
643 :2006/03/17(金) 08:11:19
676 :
643 :2006/03/17(金) 08:46:36
>>643 循環するようにってことだね?
巡回と循環じゃ随分意味が違う
うろ覚えですまんが、 15パズルはピースの入れ替えが複数個じゃないと解けない っていうのがあった気がする。 同様にこの循環(巡回?)パズルも簡単なルールを発見できると面白そうね。
ごめん、charじゃ範囲足りない(かもしれない)。intかunsigned charだ。
スレ違いを承知してるけど、ここのC++使いたちはどんな本で勉強したのでつか? 書店でAccelerated C++って本を見付けたんだけど、これいい本なのかな?
C++知らないけど かなり面倒くさそう
>>643 が解けない腹いせに答えてみる。
>ここのC++使いたちはどんな本で勉強したのでつか?
俺はwebで勉強してとりあえず書けるようになった後、
「プログラミング言語C++」を読んだ。
>書店でAccelerated C++って本を見付けたんだけど、これいい本なのかな?
Amazonで初めの数ページを見てみた限りではまともな事が書いてある。
入門書として優れているかは別の話だが。
宿題なんですが、乱数の意味を知ってても 使い方がよくわかりません。 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。
>>685 「同じ値があったらどうするか。」ってのは問題文なのか?
問1に吹いたwwww 問2もあいまいだな。 2つの配列の同じ内容って、 A[index] == B[index]; が真となる最初のindexの場所を探せってことか?
最初だけじゃなくて全部じゃないのか?
漏れが引き受けた しばし待たれよ
690 :
685 :2006/03/17(金) 22:33:45
問題文ですね・・ よく確認したら「同じ値があったらどうする の か」 「の」が抜けてました、すみません。 それでも意味がわかりませんよね。 >687さんが言うとおり 問題2は配列は別で要素数は同じだと思います。
ばか
期限がいつでもってのも意味不明だよな
694 :
685 :2006/03/17(金) 23:37:59
>>693 有難うございます。ちゃんと表示できました。
意味不明な問題を解いてもらって申し訳ない(汗
他の問題も悩んで解いていて寝不足気味なので、
すみませんが寝ますね・・
695 :
デフォルトの名無しさん :2006/03/18(土) 00:07:41
3 1 5 6 2 4がなんで[6 5 1 3]を選択できるの? [6 5 1 3] 2 4
3 1 5 6 2 4 のうち、"3 1 5 6"の部分を選んで逆転させた、という表示が [6 5 1 3] 2 4
よくわかってないんだけど、長さが4つの列を 適当に選んで逆順にしていって結果的にソートして ある状態にすればいいってこと? 条件は最適解だせよってことでOK?
長さのnの列から部分列4を選んで 並び替えろって話なんだな 簡単かなぁ何使って求めようかな
え、、ただ4列選んで逆にするだけなの?
連続した4要素な。
702 :
661 :2006/03/18(土) 01:52:33
Cに書き換えることができませんでした。
>>661 をお願いできませんか
>>702 つまり
010
100
001
をCで表示しろってことか?
704 :
661 :2006/03/18(土) 02:02:26
そうです。縦からも横からも同じにみえるように
全部出力するのか? それともランダムで1つだけ出力するのか?
すこぶる強引にできた #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; }
>>661 ってN-Queen問題を簡単にした奴か?
>>679 を見て思ったが・・
連続した4つを逆順にする操作は、隣同士の数の置換を6回(偶数回)するので、
答えにたどり着くまでには、隣同士の置換は偶数回行われるはず。
てことは、nが偶数なら、半分(奇置換で辿り付く分)は解けないことになるのかな。
例えば、123456と612345は奇数回の置換で結びつくから、
123456から612345へは4つを逆順にする操作ではたどり着けない。
でも、nが奇数だと、列を巡回させるのは、偶数回の置換で可能だから、
こういうことは言えないか。
ん?逆か。 nが偶数で、問題文が123456..に対して奇置換での操作で作られたものなら、 612345(と、そこから偶置換でたどり着ける答え)を目指せばいいのか。 nが奇数だと、どう巡回させても偶奇を変えられないから、 答えにたどり着けない配位が出てくるのか・・。
みんなはコマンドプロンプトの背景と文字は何色にしてる?
背景青 文字白
デフォルト
背景も文字も黒w
>>709-710 事実として、個数(=n)/全パターン数(=n!)/解けるパターン数
4/24/8
5/120/10
6/720/720
7/5040/2520
8/40320/40320
9以上は時間の関係上未探索。
5以下は特例とすると、偶数だと全パターンとけて奇数だと半分とけないってことになる?
補足。 個数(=n)/全パターン数(=n!)/解けるパターン数/最大最適置換回数 4/24/8/1 5/120/10/1 6/720/720/9 7/5040/2520/7 8/40320/40320/9
717 :
643 :2006/03/18(土) 11:30:05
>>715 証明できました.以下 n ≧ 6 とします.
補題:任意の偶置換を連続する4要素のリバースで実現できる.
証明:
偶置換は三要素の巡回置換に表せるので,三要素の巡回置換が表せれば十分.そのためには,列 [...,a,b,c,...] を [...,b,c,a,...] に移せればいい(ただし左右の ... は動かさない).
この置換は,右側に3つ以上スペースがある場合は8手でできる.右側に2つ以上,左側に1つ以上のスペースがある場合は9手でできる(手順省略).
長さを 6 以上に制限しているので,かならずこのどちらかの条件か,左右を入れ替えた条件が成立するのですべて実現できた.//
定理:n が偶数の場合はすべて解け,奇数の場合は半分解けない.
n が偶数のときは列全体の巡回置換が奇置換になるので,4要素の入れ替えと全体の巡回置換を合わせてすべての置換を生成する.n が奇数のときは偶置換になるので,奇置換のものは生成できない.//
>>717 >>678 間 違 っ た 日 本 語 を い つ ま で も 使 い 続 け る の は な ぜ ?
>>718 どうでもいい。
それから、「巡回置換」は正しい術語。
どうでもいいわきゃないがそれはともかく >「巡回置換」は正しい術語。 アラやだ恥ずかしい
巡回置換。ぐーぐるセンセでもたくさんヒットする。 言葉を正確に使いたい気持ちはわかるんだが、 人に強制はしないほうがいいと思う。 たまに、自滅する。(漏れも、以前は良くやった) 相手の意図を汲み取るのに力を割いたほうが 人生、幸せになると思うんだ。
>>717 ということは6以上でimpossibleになるのは、
要素数が奇数でバブルソートしたときに交換回数が奇数のものってことでOK?
そうでなければ反復深化してればいつかは解けるってことかな。
(まぁそのいつかをどれだけ早くするかが問題なわけだが。)
724 :
643 :2006/03/18(土) 15:38:54
>>723 OKです.
ただ反復深化だと,n = 12 くらいが限界っぽいですね.
指数かかるアルゴリズムなので,仕方が無いんですが.
>>643 なんか文字列探索のアルゴリズムと同じような気がしてきたよ。
久しぶりにマジメに考えてみよう。
・出現パターンをノードに多分木を作って、循環が見つかったらそれをリーフとし、 そこからルート向かって集めたノード列が答えになる。 ・出現パターンはデータベース化しておいて、ノードを作る際のチェックに使う。 ・ノードを作る際、既出で、かつ、自身よりも浅い深度で出現したパターンなら、 それ以上深く探索するのは無駄。したがって無効ノードになる。 ・すべての子ノードが無効ノードになったら、親ノードも無効ノードになる。 ・子ノード生成深度を1づつ深くしてゆくと、どこかでリーフが見つかるか、 ルートノードが無効ノードになるのでそこで探索終了。 ・ルートが無効になったときが、すなわちimpossible。
補足 多分木のルールは、あるパターンに1回操作したとき生成されるパーン群を、子ノードとする。
あと、子ノードは幅優先で生成するってことで。
?
730 :
726 :2006/03/18(土) 18:18:43
ポイントはここ >・すべての子ノードが無効ノードになったら、親ノードも無効ノードになる。 これによって、あるノードが無効化されたとき、親の方向へ向かってノードの無効が発生する。 そして解がない場合には、最終的にノードの無効化がルートノードにまで達してしまう。
それって BFS 木を陽に作ってるだけじゃないの? 何にせよ実装キボンヌ
732 :
http://www.vector.co.jp/soft/win95/util/se072729.html :2006/03/18(土) 18:55:48
TextSS の64bit化おながいします もしくは64bitにネイティブ対応した置換ソフトないですか?
>>685 もう答えでてるみたいだけど。
問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;
}
>>726 問題は
>・出現パターンはデータベース化しておいて、ノードを作る際のチェックに使う。
これのサイズと
>・ノードを作る際、既出で、かつ、自身よりも浅い深度で出現したパターンなら、
> それ以上深く探索するのは無駄。したがって無効ノードになる。
これの早さ。
順列はハッシュ化できるのでハッシュマップにすれば早さはかせげるが要素数14で1GBをこえてしまう。
線形探索だと要素数と手数が増えた時点でかなり遅くなる。
ハッシュ値を無限精度整数にして二分探索すればましかもしれないがサイズの問題は以前として残る。
最大手数を見積もるか、一番近い巡回列(循環列?)までの距離がわかれば改善されるのだろうが…。
[1] 授業単元: 脳内 [2] 問題文(含コード&リンク): マルコフ連鎖プログラムの日本語版を作成せよ [3] 環境 [3.1] OS: コンソール [3.2] コンパイラ名とバージョン: メジャーなコンパイラで通ること [3.3] 言語: C/C++どちらでも可 [4] 期限: [無期限] [5] その他の制限: ライブラリは標準ライブラリのみ 漢字コードはプログラム作成上都合のよいものを選択してよい
最適置換回数は9個のとき9手、10個のとき11手。 11個は30分以上かかりそうなので求めてない。
738 :
709 :2006/03/19(日) 02:06:42
>>643 なるほど!
偶置換は三要素の巡回置換で表せる事実から出発すると、
簡潔に証明できるんだな・・。
任意の偶置換を4要素のリバースのみで実現することによって
証明しようとしたまではいいけど、力業に走って
ゴチャゴチャしてきて投げてしまった。結構面白かった。
巡回対称性を用いたら探索空間を1/nに減らせる…と思ったのだが、 置換操作に巡回対称性がないためだめだったorz
春になったらまた初心者を虐めてやろうではないか
[1]授業単元:無し [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で割った余りを文字列に格納してそれを逆順に表示 させるという方針を立てたのですがどうコーディングしたらよいのかがわからないです。 よろしければお願いいたします
>>743 #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;
}
>>743 #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;
}
>>743 #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;
}
>>744-746 ありがとうございます。
ソースを参考にコーディングの方法を勉強したいと思います<(_ _)>
749 :
743 :2006/03/19(日) 22:58:28
>>746 を参考にこういうコードを書きました
#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;
}
そうか
漏れも自分の小説を>739に入れたらおかしくてげらげら笑っているうちに作る気なくしたw 自分を見失わずに仕上げた>751は偉い。
自分のHPを表示したらfirefoxがクラッシュした・・・orz
m9(^Д^)プギャーッ
757 :
755 :2006/03/20(月) 18:45:51
感動の実話です
758 :
643 :2006/03/20(月) 18:54:36
ゼミやってきました.報告テンプレ使うと予告したので使います. [1] 先生の評価: (他のメンバーの評価ということで) 結局指数のアルゴリズムなので,まあそんなものか,という感じでした. 存在に関する議論と同じようにすれば最適とは限らない手順は多項式で作れるので,それを簡約化できないかという意見などが出ました. [4] 回答者にコメント(愚痴等は禁止): 100レス程度付き合っていただきありがとうございました.
[1] 授業単元:C言語実習 [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等 宜しくお願いします。
#include <stdio.h> int main() { for(;;) printf("単位ください!\n"); }
ファイルを読み込んで別ファイルに書き出す #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; }
762 :
759 :2006/03/20(月) 21:46:31
因みに、高校1年レベルで良いです。
763 :
デフォルトの名無しさん :2006/03/20(月) 21:55:45
>>761 先生!
#0A0A0A色で塗ったビットマップをコピーすると#0D0A0Dと#0A0D0Aのストライプになってしまいます!
ファイルサイズも倍近くになってしまいます!
こんな恣意的な質問をする生徒はどうしたらいいでしょうか?
あー、つまんね。
昼寝してしまって寝付けないのでおもしろい宿題捏造してください。
じゃあ問題 [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;}}}
>>766 >>759 向けに高校1年レベルの実用的なプログラムということで考えたのだが
明日デートで早めに寝なきゃならんので代わりに作ったってくれ。
[2] 問題文(含コード&リンク):
xの三次関数とxの最小値・最大値を入力として受け取り、
三次関数全体の増減表と概形、与えられたxの範囲での関数の最大値・最小値を出力するプログラムを作れ。
関数の入力の仕方、概形の出力の仕方は各自で工夫すること。
xの最小値・最大値はいずれかまたはその両方を未入力とすることもできるようにする。
[1][3][4][5]
>>759 に順ずる。
769 :
デフォルトの名無しさん :2006/03/21(火) 00:54:22
>767 囲まれてるってのは8方向全部で囲まれてるってこと?
y = x^3 こういうやつだよ
うん、それはわかるけどさ、最大値とか最小値とかグラフとか 思い出すところから始めるとか、暇潰しのテンションではむりぽ
y=ax^3+bx^2+cx+dだな 微分してその解が0になるxから極値が求まるぞ
とりあえず、適当な感覚で 三次関数 f(x) の値を列挙するところから始めれ。
structが使えないとやってられないわけだが。
>>775 おまえは全国300万人のN88BASIC野郎を敵に回した
習って無くてもstructぐらいいいだろー? ちょっとぐらいCを自分で学んでたら絶対に知ってるだろうし
でも概形ってムリだな
779 :
767 :2006/03/21(火) 01:44:46
一つの座標に対して上下左右や四方八方だけなら簡単だけど 例えば ***** *+++* *++* *** のような部分を ***** *111* *11* *** のようにする。
よくわからんが上下左右の外郭から到達できないすべての+が該当するんじゃねーの?
>>779 ----略-----
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;
}
こんな感じか?
つまりお絵かきそふとのpaintでつか。
>>767 #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');
}
785 :
784 :2006/03/21(火) 02:51:25
改行条件がおかしいか? i 初期値を = 1 として、 if(i % 16 == 0) putchar('\n'); とすればいいか・
786 :
767 :2006/03/21(火) 03:00:52
すごいね 俺、解答が解らないから書き込んだけど やっぱ、頭のいい人は違うは 解答を見て勉強さして頂きます。
787 :
784 :2006/03/21(火) 03:18:36
16 を N, 15 を N-1 とおきかえれば、任意の大きさに対応できるけど、 Nを大きくすると再帰のネストがドンドン深くなって、しまいにはプログラムが落ちます。 うちの環境だと、N = 50 で落ちたり落ちなかったりする。メモリ1G実装。
788 :
784 :2006/03/21(火) 03:26:53
よくみたらバグってる。paint() の判定の最初に、x, yが負なら処理しないようにしないと駄目だ。
N=50で落ちるのはバグの性だったようです。これならN=100でも落ちない。 #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'); } }
誰か暇なおれに問題を投下してくれ。 専門的なやつとか数値計算とかはやめてくれw 簡単なやつでいい、頼む。
>>790 Hello World!!と表示するプログラムを作成せよ。
794 :
790 :2006/03/21(火) 05:48:20
>>795 あ、ごめん実行ファイルのサイズかと思ってた
ソースのサイズだったのか
65文字が限界のようだ
25文字のソースが見たいわ
#include"/WINDOWS/Temp/a"
main(a,b){scanf("%d%d",&a,&b);printf("%d",a+b);} これで通るっぽいが48バイトか 43バイトも遠いな
よくわからんが、プログラムが保存されていることを期待して、 main() {system("./prog");} というのはどうだろう。 (無論、progを作るプログラムを別途走らせるんだが)
>>799 それが許されるなら25バイトを軽く切るな
いくつかの異なってる値が飛んできてるようなので 対応する値をテーブルに入れておいて乱数で選択 何度か送ればいつか AC
>>801 どういうこと?
ランクインされてるやつは偽装してるってこと?
送信して相手の応答を見るのがいんちきっぽく見えるかもしれないけど 入力の上下限を調べたりするのはよくやること。程度問題。
806 :
デフォルトの名無しさん :2006/03/21(火) 07:46:09
main(){printf("2\n2\n");} これで25バイト。 サンプルを見ると末尾に改行がつくことは分かる。 何回起動されるかは分からんが、2回なら上でいつかは通る。 結果がすぐに返ってくるなら、 最初に入力毎にウェイト入れるのを送って返ってくる時間で回数を調べられるかも。
ageちまった。
>>806 は入力が乱数という仮定な。
[1] 授業単元:暇つぶし
[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] その他の制限:極力標準の範囲内で作る。
>>808 訂正
「答えが複数ある場合はいずれかひとつでよい」のほうが問題としてはいいね。
そゆことで。
>>799 プログラムは保存されない。
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を切りたいなら乱数のマジックで頑張れ。俺は気力がないから乱数には手は出さん
25バイトのやつってどうやるんだ? 解説してもらってもおれにはさっぱりだ \aってのがよくわからん フォルダじゃないよね?
813 :
759 :2006/03/21(火) 13:36:17
電卓でお願いしますorz
なんでorzなのかは知らんが、電卓って作るの結構メンドイってわかってるのかな?
二項限定の足し算だけのコマンドライン電卓なら簡単。
>>817 ダウンロードしました
ここにあるソースファイルをメモ帳で開くと
文字化けしてたり、改行されてなかったりで見にくいんですけど、
VC++で開くと、きれいに表示されるのはなぜでしょうか?
>>818 改行コードがLFだから。すれ違いだが。
821 :
◆864fRH2jyw :2006/03/21(火) 17:13:45
1] 授業単元: プログラミングC++ [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] その他の制限: 等々) なし
822 :
◆864fRH2jyw :2006/03/21(火) 17:16:42
[1] 授業単元: プログラミングC++ [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] その他の制限: 等々) なし
動作は未定義でよろしいですか?
824 :
◆864fRH2jyw :2006/03/21(火) 17:20:02
[1] 授業単元: プログラミングC++ [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] その他の制限: 等々) なし
825 :
◆864fRH2jyw :2006/03/21(火) 17:23:36
[1] 授業単元: プログラミングC++ [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] その他の制限: 等々) なし
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ 久々にとってもスルー 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
827 :
◆864fRH2jyw :2006/03/21(火) 17:26:04
[1] 授業単元: プログラミングC++ [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] その他の制限: 等々) なし
アップローダー使え!ゴルァ!
main(){} だけ残して全行削除すれば通ると思う
いいかげんだな
授業単元はC++なのに言語がCになってるぞ どういうことだ???
832 :
◆864fRH2jyw :2006/03/21(火) 17:40:44
授業単元Cでした。
正直こういうのはファイルとしてUPしてほしいな
ここは宿題をするスレであって、コンパイルするスレでも、デバッグをするスレでもないわけだが。
一つにまとめるのマンドクセ('A`)
てゆか問題あるならそのまま丸投げしてくれないと読む気しないんだけど。
[1] 授業単元:C言語実習 [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回押すと計算結果が出る。
>>837 もう一回自分の書いた文章を読み直せ
そして自分の説明のまずさと期限がもう過ぎていることに気付け
>>837 あなたが習ったもの以外を使っていけないのなら、実行できるプログラムがかけませんよ。
だって、mainを習ったって書いていないもん。
int を習ってないと無理だし、charも習ってないのでしょうか?
840 :
837 :2006/03/21(火) 18:01:34
>>838 2006/03/22 06:30までの間違いでした。
>>839 すいません。
main,int,charも習いました。
841 :
◆864fRH2jyw :2006/03/21(火) 18:04:48
問題文が長くて書き込めなかったので分けました。すみません。
>>837 仕様まだー?
とりあえず、最低でも入力の受付方式 (自由に (1+2)*4+3 とかを入力していいとか )
くらいは無いと何やっていいかさっぱりわからん。
>>837 お前は電卓がそんな簡単に作れるものだとでも思っているのか?
>>839 流石にmainとか基本型に関しては屁理屈のような希ガス
>>843 四則演算のみ、入力は逆ポーランド
ということにすればたぶん30行くらいでかけるんじゃまいか
#include<stdio.h> int 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; } 反省はしていない
int main(){ int 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
848 :
847 :2006/03/21(火) 19:31:16
いま実行してみて6行目と8行目が逆になってることにきづいた
逆ポーランド計算機書いてみたお #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; }
-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 calc(int a, int b, char c) { return c=='+'?a+b:c=='-'?a-b:c=='*'?a*b:c=='/'?a/b:(longjmp(env,3),0); }
逆ポーランド計算機はK&Rに載ってたな
高校生なら単位とか関係ねぇんじゃね?
>>853 ここまで真面目にやってると(いい意味で)笑いしか出てこないな
856 :
768 :2006/03/22(水) 01:25:26
>>853 すごいよー、あっちゃんすごすぎるよー。
2つ気づいた点。
make_comの1つめreturn文のmake_rat(nf, dr)はmake_rat(nf, df)じゃないでしょうか?
また2つめreturn文のmake_rat(nf, dr)はmake_rat(nf, dr*df)だと思います。
しかしこの素晴らしいできのを見せられては、自分で挑戦するのもおこがましいっす。
勉強させていただきました。
857 :
◆864fRH2jyw :2006/03/22(水) 02:12:11
859 :
◆864fRH2jyw :2006/03/22(水) 18:39:15
ビットシフトか?
861 :
◆864fRH2jyw :2006/03/22(水) 18:49:45
>>858 は
>>857 のアンカーが間違ってるって言いたいだけだろwww
なんか釣られてる気がしてきた
863 :
デフォルトの名無しさん :2006/03/22(水) 23:15:02
問:キーボード整数a,b,cを読み、最大値を表示するプログラムを作れ /* 題名・・ */ #include<stdio.h> void main (void) { ---------------- ---------------- } ---から---までの間を回答してもらえると助かります
864 :
デフォルトの名無しさん :2006/03/22(水) 23:16:51
問:キーボード整数a,b,cを読み、最大値を表示するプログラムを作れ /* 題名・・ */ #include<stdio.h> void main (void) { ---------------- ---------------- } ---から---までの間を回答してもらえると助かります
ぜんぶじゃねえか(゚Д゚)
void main(void) これ誤りだろ つーかキーボード整数ってなんだよ。
>>864 「キーボード整数」!
#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;
}
int a[3],i,b=0;
scanf("%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 嫁
>>863 なんか全く同じ内容を各地で見かけるな。
流行り?
ロダに質問をブチ込みました。 宜しくお願いします。 詳しい仕様等はロダ参照です・・・
872 :
デフォルトの名無しさん :2006/03/23(木) 20:28:57
>871 4番はソケットプログラミングってことですか?
DLは人手じゃね?とESP
課題4番も課題1を例にしろって事だから 多分ですが英文(英単語)適当に打って(テキストファイル作成) それを表示し、その単語(例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 みたいな・・・[悪魔で私のイメージですが ソケットプログラミングというのは知らない無知者です ググって見たら送受信(情報系?)のプログラム技術なのですね
#include <stdio.h> #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; }
たった今単純なバグのラビリンスを抜け出したorz
>>874 情報系の意味がわからんが、Socketは通信用の物
インターネット・LAN等で使う場合もあれば、IPCで使うこともある
for文を使い下図の様な三角形を画面に表示させなさい。 半角スペース5個* 半角スペース4個*** 半角スペース3個***** 半角スペース2個******* 半角スペース1個********* 半角スペース0個*********** 宜しくお願いします。
\\_ :三ニ=:::::::ヽ :ヽ.ニ=::て.>廴_ テンプラ使ってないからスルー 三.ヽ= (⌒ヽ;:;:;,.二) ニ=-ヽ:ヽ、,∠.^^ぅ 〃,べ= ̄ニ二 ̄ /;:ィリ ノノ ,.へヽ ;:ヘ/ ̄ ̄ ̄Vヽヽ ソ ├┤|
半角じゃなくて全角スペースじゃないのか
>>878 #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;
}
for(i=1; i<=6;i++){ for(k=i; k<=5;k++){ putchar(' '); } putchar('*'); for(j=i-1;j>=1;j--){ putchar('*'); putchar('*'); } putchar('\n'); }
int i,j,n; for(i = 0; i < 列表示数; i++) { for(j = 列表示数-i; j > 0; j--) putchar(' '); for(n = i*2+1; n > 0 ; n--) putchar('*'); putchar('\n'); } 俺だとこうするかな・・
884 :
デフォルトの名無しさん :2006/03/24(金) 17:22:52
[1] 授業単元: 宿題 [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] 期限: 明後日 宜しくお願いします。
入力のフォーマットは?(名前も入力させるの?) 並び替えの順序は?
886 :
デフォルトの名無しさん :2006/03/24(金) 17:48:24
入力のフォーマットは特に指定はされてないです。 名前は入力させます。 点数の良い順に並び替えます。 お願いします。
#include <stdio.h> #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); }
>>878 #include <stdio.h>
int main( void )
{
int i;
for(i=0;i<6;i++)
printf("%*.*s\n",i+6,i*2+1,"***********");
return 0;
}
英語ワケワカメ
ひどい仕様だなあ。なんでこんな簡単なプログラムのために22個も関数用意させるんだか。
ctype.hにあるだいたいの関数を自分でつくれってか 大変やのう
ワシントン大学のページから流用してんのか?
>>892 >なんでこんな簡単なプログラムのために22個も関数用意させるんだか。
こういうスタイルで書くのも一つの見識だと思う。教育目的ならなおさら。
まあ、ここで歓迎される種類の課題ではないがな。
教育目的というよりも採点目的のような気がする
英語で問題文が出されると 所々に fuckin' を挿入して読んでしまう。
頭とケツにサーと言え
サー('A`(サー*サー)
サー 余裕の fuckin 900 get サー
(´Д)<福 (´Д)<原 (´Д)<愛 (´∀)<サァ!
愛ちゃんは海兵隊出身だったのか
サァ?
904 :
890 :2006/03/25(土) 23:26:45
>>904 ('A`) サーと言えってば
とりあえず 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;
}
ほれよ。
EBCDIC環境です、Sir!
[1] 授業単元:プログラミングC [2] 問題文: 2進数での四則演算のプログラムのフローチャートを作成せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: ? [3.3] 言語: C [4] 期限: 2006年3月30日15:00まで [5] 特になし
ではプログラムで結構なのでヨロシクお願いします。
>>909 二進数の表現方法は? {0,1} を要素に持つ配列?
('A`)ヨイヤッサー
912 :
890 :2006/03/26(日) 10:18:19
∠( ゚д゚)/ サー!! assvalue = (int)character; こんな感じですか?
>>913 じゃあ a+b, a-b, a*b, a/b でいいだろ。内部表現は二進数なんだから。
恐ろしくキモイ課題だな
なんか、たとえば足し算なら 10100110 + 00011011 11000001 という風に計算するプログラムを作るってことです。
整数なら二進数と十進数は表現が違うだけで全く同じなんです。 そりゃ筆算の解き方は違うけど
918 :
890 :2006/03/26(日) 12:33:06
英語よめません><
>>918 たとえば
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);
に変えてみると。
>>916 914はその仕様を満たしてる。不満があるならもっと詳細に仕様を挙げれ。
もっと詳細な仕様か。。。 2進数で入力した2つの値の四則演算を2進数で出力するプログラムを作る。 尚、2進数から10進数に変換し計算することはしないこととする。 とか、どうだろう。 難しいな。仕様書の勉強から始めようかな。
>>923 最初からそれだけ言えてればいじめられてなかったのに・・・(´・ω・`)
どっちにしろ誰もフローチャートなんて描かないがな
>>923 10進数に変えちゃいけないなんて。
信じられない。
| ^ & ~でするのかね
フリップフロップ考えろ、ってか?
コンパイルしないで投稿 あくまで考え方、つうことでカンベン めんどくせーから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`)
>>907 単純に「2進数」ってだけでは定義が充分ではないな。
符号の処理と小数の処理が分からん。
単純に数学的に考えれば(-1001.011)2とかでいいのかもしれんがな。
「プログラミングC」っつー授業ならなんか暗黙の偏向があるかもしれん。
その辺をクソ講師に確認してこい。
930 :
デフォルトの名無しさん :2006/03/26(日) 17:32:29
A〜Jの10個のアルファベットに0〜9までの数字が それぞれひとつずつ対応しています。 Aは1で割り切れ、AB(2ケタの数)は2で割り切れ、 ABCは3で、ABCDは4で、・・・・・と続いていき最後に ABCDEFGHIJは10で割り切れます。 A〜Jがどの数と対応しているかを求めなさい というのをプログラムでやりたいんですけど、 反復処理のところがうまく表現できません。どうすればいいですか
テンプレ読まないのはいけないな
代わりに俺が読んでおいたからもう大丈夫
934 :
930 :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] その他の制限: 標準ライブラリは使ってはいけない
>>930 #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;
}
ちょっとまて、その[5]はなんだ
標準出力したいわけじゃないんだよ
938 :
930 :2006/03/26(日) 17:51:34
すいません[5]はミスです。制限はありません。
939 :
930 :2006/03/26(日) 17:55:51
>>935 それ重解あった時まずくない?
実際にはねえけどさ
問題がハードコーディングなんだから解の数もハードコーディングでいんじゃね?
>>940 call 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;
}
>>934 long 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;
}
>>944 この問題の場合浅い条件で探索を打ち切れるので、とりあえず順列全生成する
next_permutation はそんなによろしくない。再帰の順列生成にすべき。
947 :
946 :2006/03/26(日) 23:32:22
あ、ごめん。連体修飾節のかかりかたを取り間違えてた。
#include<stdio.h> int main(){ unsigned int m = 0xE37BE3DA; for(char c='J';m;m/=10,c--) printf("%c = %d\n",c,m%10); return 0; }
949 :
948 :2006/03/27(月) 01:47:38
手計算で求めた暇人でした('д`)
950 :
930 :2006/03/27(月) 04:01:02
>>944 ありがとうございます!
longはまだ習ってなかったので助かりました。
/⌒ヽ / ´_ゝ`) すいません、ちょっと通りますよ .| / .| /| | // || U .U
>>928 わざわざありがとうございました。
考え方がわかったので自分でフローチャートは書けそうです。
xの2次方程式です。Cのプログラムで答えお願いします a*x*x + b*x + c = 0
あっちで飛ばされ こっちで叩かれる カワイソスwwwww
double D=b*b-4*a*c; if (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));
俺が神だったらこのスレ神だらけですがな(´・ω・`)
平方根を小数に近似化していいのかどうかが分からんな だめならちょい上の方にある三次関数がどうたらこうたらを参考にするといい
テンプレ無視に回答をやるとはあまり感心しないな
>>959 おそらく出題者の求める回答と気がするんだが
>>958 まるめ誤差とかの課題なんじゃねぇ?
>>964 ちゃんと情報がそろってて見やすければテンプレに乗せんでもいいかもしれんな。
今回は情報そろってねえけどな。
テンプレ使わないと暇つぶしに叩かれるよ
テンプレに準拠しなくても必要十分な情報を書いてくれりゃ問題ないけど、 条件の後だしで、もう一度お願いします>< とかマジでウンコ。
オレは "><"←これ書いた時点でやる気無くす
(><;)
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< おおっとここでダンゴムシの大群が! ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
>([[[[[) >([[[[[) >([[[[[) >([[[[[) >([[[[[)< >([[[[[) >([[[[[) >([[[[[) ああっと皆さんお帰りなさいますようだ! >([[[[[) >([[[[[) >([[[[[) >([[[[[) >([[[[[) >([[[[[) >([[[[[) >([[[[[)
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< >([[[[[) ([[[[[)< ん?なんだ?? ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)<
([[[[[)< ([[[[[)<
([[[[[)<
([[[[[)< ([[[[[)<
>([[[[[)
∧
([[[[[)<
>>972 独りだけおいていくなお(´・ω・`) ([[[[[)<
([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)<
([[[[[)<
([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< 進め〜! ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< 敵は目前だ〜! ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
ゴキブリ行進スレに変わりました。
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ・・・・・・ ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
連投救済しとく?
シャッカイ起動準備!
([[[[[)< ♥ >([[[[[)
\ / ・ \ / ;(●)llll((●); (●)(●)(●)(●) \__ (●)(●)●)●)(●)__/ カサカサ (●)(●)(●)(●)(●) __(●)((●`∀´●))(●)__ / (●)(●)(●)(●)(●)(●) \ _ (●)(●)(●)(●)(●)(●)_ / (●)(●)(●)(●)(●)(●) \ _(●)(●)●)(●)(●)(●)_ / (l●)(●)(●)(●)(●l;) \ | . (l;●)(●)(●)(●)(●) | | . (0●)(●)(●)(●)O) |. カサカサ ,;; (:●)●)(●)(●;) 。 (о●)(●)●0) ( ;●ξ●:) 。 ・
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< で、出た━━(;゚Д゚)━━!!! ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< は、早く流すんだ! ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< 流せ流せー! ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)< ([[[[[)<
そんな事やってるなら俺にC言語オシエレ
OKいいだろう では質問だ! メモリを動的に確保するにはどうやったらいいんだ!?
OKまずはこれをコンパイルして実行だ #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; }
やだよ、漏れ疲れてるもん
>>985 char *str;
str = malloc(10);
sprintf(str,"hahahhhhhhhhhhhahahahahahahhhhhhhhhhhhhhhhhahahhhhhhhhhhhhhhhhhhhahah");
989 :
984 :2006/03/29(水) 11:50:51
本当に俺と勉強してくれるんだね!!有難う御座います。
>>985 stdlibをインクルードしてmallocかcalloc。
>>986 わかめ
>>988 charポインタにキャストしなくていいのですか?
>>990 キャスト必要なのは昔のC
ってゆーかつっこむところ他にあんだろw
>>991 インクルードしてないとか言うのは辞めて下さいよ。それ以外ならサイズオーバー位ですかね
わざとなんだろうがメモリ破壊するな
>>992 100回ループ
配列に1〜100の.vbs格納し、ファイルポインタに1〜100の.vbsを書き込みモードで開く。
そしてファイルポインタにMsgBox馬鹿を出力してファイルクロー字→終了。おk?
もっとオシエレ。
1000ならおまいらが次スレでも僕に勉強教える。
>>986 のを使用
間違い探し
#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;
}
1000ならおまいらは僕に教えれる程暇人
1000get
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。