C言語なら俺に聞け(入門編)Part 96
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2012/02/04(土) 03:01:40.24★前スレ
C言語なら俺に聞け(入門編)Part 95
http://toro.2ch.net/test/read.cgi/tech/1326459906/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 156代目
http://toro.2ch.net/test/read.cgi/tech/1328276597/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
# サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
長くなりそうなコードはcodepadに貼り付けてもいいでしょう
http://codepad.org/
0159デフォルトの名無しさん
2012/02/07(火) 16:21:29.31単位がくれるっていう前提で3段階っていっちゃったね。
ふつうはどの大学も合格がABCの3つだからね。
0160デフォルトの名無しさん
2012/02/07(火) 16:29:03.64未提出があるにもかかわらずAを与えうる回答をそれまでにしたかどうかが気になるな
0161デフォルトの名無しさん
2012/02/07(火) 16:30:27.440162デフォルトの名無しさん
2012/02/07(火) 16:46:10.86単位が貰えるか不安だったけど安心した俺内野手
0163デフォルトの名無しさん
2012/02/07(火) 17:01:57.43「単位をくれる」なのか「単位が貰える」なのか
つか前提ってすごいな。最近の大学はそんなもんなのか?
>>162
教授次第だけど1/3以上未提出なら普通はDになるんじゃないかな
0164デフォルトの名無しさん
2012/02/07(火) 17:02:21.170165デフォルトの名無しさん
2012/02/07(火) 17:10:40.98必修ならほぼ落とすことは無いか
0166デフォルトの名無しさん
2012/02/07(火) 17:25:23.020167デフォルトの名無しさん
2012/02/07(火) 17:31:58.140168デフォルトの名無しさん
2012/02/07(火) 17:57:20.43レポート半期で12本初回抜き打ち試験中間試験定期試験とか当たり前のようにやって
全部提出出席しても試験でしくじって落とされるやつがちらほらいて地獄絵図だった
後輩にはうちの大学には絶対に来るなと忠告したよ
0169デフォルトの名無しさん
2012/02/07(火) 18:34:08.840170デフォルトの名無しさん
2012/02/07(火) 18:35:02.150171デフォルトの名無しさん
2012/02/07(火) 18:43:35.47普通だろそれ
0172デフォルトの名無しさん
2012/02/07(火) 18:53:04.520173デフォルトの名無しさん
2012/02/07(火) 18:59:29.22int data[177][23]が定義されており、データが関数内で入れられるとします。
この関数の外から、2次元配列のポインタのポインタを渡し、int data[177][23]のアドレスを引数で返したいのですが、
void func( �@ ){
int data[177][23];
�A = data;
}
void func2(void){
0174デフォルトの名無しさん
2012/02/07(火) 19:01:40.10改めまして
関数func()内で
int data[177][23]が定義されており、データが関数内で入れられるとします。
この関数の外から、2次元配列のポインタのポインタを渡し、int data[177][23]のアドレスを引数で返したいのですが、
void func1(�@){
int data[177][23];
�A = data;
}
void func2(void){
�B // 2次元配列のポインタのポインタの宣言
func1(�C);
}
�@〜�Cの記述は、どの様にしたらよろしいでしょうか?
0175174
2012/02/07(火) 19:03:24.76他の関数からその中身を参照にしたいのです(グローバル変数使用不可)
宜しくお願い致します。
0176デフォルトの名無しさん
2012/02/07(火) 19:06:05.040177デフォルトの名無しさん
2012/02/07(火) 19:07:47.550178デフォルトの名無しさん
2012/02/07(火) 19:15:15.24int data[177][23];
*pArray = data;
}
void func2(void){
int *pArray[177][23]; // 2次元配列のポインタのポインタの宣言
int ans;
func1(pArray);
ans = pArray[0][0] + pArray[176][22];
}
イメージとしてはこんな感じですが、もちろんこれでは上手く行きません・・・
0179174
2012/02/07(火) 19:17:27.61事情があって、それが出来ないのです・・・
※私に与えられてる権限としては、func1の引数の変更、func2の製作
0180デフォルトの名無しさん
2012/02/07(火) 19:18:57.510181デフォルトの名無しさん
2012/02/07(火) 19:20:25.28エスパー待ち
0182デフォルトの名無しさん
2012/02/07(火) 19:25:29.62以下のいずれかの修正をしてもらう必要がある。
�@
void getData(*****) {
. static int data[N][M];
}
�Aソースを分割して、
static int data[N][M];
void getData(*******);
�B
malloc つかう。
0183174
2012/02/07(火) 19:29:37.65おお!
すみません・・・static扱いでお願いします。
実際はstaticでした。懸案事案の抽象化に失敗してしまいました・・・
void func1(�@){
static int data[177][23];
�A = data;
}
void func2(void){
�B // 2次元配列のポインタのポインタの宣言
func1(�C);
}
0184デフォルトの名無しさん
2012/02/07(火) 19:31:48.22知りたいのは、「2次元配列のポインタのポインタ」を引数に渡してアドレスを入れてもらう
やり方です
0185デフォルトの名無しさん
2012/02/07(火) 19:43:35.47�A*value
�Bint** data
�C&data
で、できると思うけど、何がやりたいのかは知らないし、あまりよくないコードな気がする。
やりたいこと書いて代案出してもらったほうがいいと思うけど、まあ、とりあえず。
0186デフォルトの名無しさん
2012/02/07(火) 19:53:39.40いや、グローバルはグローバルだって意識できるからまだいいけど
これじゃあソレもできないから最低最悪だな
0187デフォルトの名無しさん
2012/02/07(火) 20:40:54.32これ以上の情報を意識する必要はないし、意識しなけりゃならないのは最低最悪。
グローバル? 今時使わないよね。w
0188デフォルトの名無しさん
2012/02/07(火) 20:44:17.33関数って引数は何個までとか何バイトまでにした方が良いってのはある?
ある程度を超えるとメモリに積む作業が増えるので急激に遅くなる、とか。
大差無いのかな。
0189デフォルトの名無しさん
2012/02/07(火) 20:49:42.420190デフォルトの名無しさん
2012/02/07(火) 20:54:56.96こいつ最高にアホ
0191デフォルトの名無しさん
2012/02/07(火) 20:59:26.69知らなかったわ、すまん。
0192デフォルトの名無しさん
2012/02/07(火) 21:03:19.05変数固めて構造体にして、ポインタで渡す
俺なら
0193はちみつ餃子 ◆8X2XSCHEME
2012/02/07(火) 21:03:52.10パフォーマンスへの影響は環境によるので実測しないとなんとも言えないけど、
計算量的によほど厳しい条件下でなければはっきりわかるような差は出ないよ。
回数が多く呼ばれる関数ならちょっとした差が全体に多きく影響することもあるけど、
どこまで許容できるかは程度問題なのでスパッと基準を決められるものではないな。
0194デフォルトの名無しさん
2012/02/07(火) 21:07:52.89腐りだしたら破棄して作りなおしゃいい
ダしゃいいタマがうずくなら
0195デフォルトの名無しさん
2012/02/07(火) 21:09:28.84決まりではないが鉄則ではある
0196デフォルトの名無しさん
2012/02/07(火) 21:10:39.31大雑把に1KB以下なら気にしなくていい
0197はちみつ餃子 ◆8X2XSCHEME
2012/02/07(火) 21:12:29.93Windows API はそういう感じだね。
でも、その構造体だってどこかでメモリを消費するわけだし、
構造体に値を放り込むのだってゼロコストなわけじゃない。
同じデータをある程度何度も繰り返して渡すような状況ならいいが、
そうでないならパフォーマンスの差はほとんど出ないと思う。
バイナリ互換性を維持したまま構造体に要素を追加して拡張できる点で有利ではあるので、
長期的にインターフェイスを維持したいときには考慮に値する方法と言える。
0198デフォルトの名無しさん
2012/02/07(火) 21:19:43.770199デフォルトの名無しさん
2012/02/07(火) 21:42:00.85正しい順序、個数で記述するには丸以上1日かかる。自信がある。
0200デフォルトの名無しさん
2012/02/07(火) 21:43:16.81超特大構造体ならさすがにポインタ渡すけど、
十数バイトで気にする事はないんですね。
0201デフォルトの名無しさん
2012/02/07(火) 21:45:15.310202デフォルトの名無しさん
2012/02/07(火) 21:47:06.98なんだその程度の理解か
0203デフォルトの名無しさん
2012/02/07(火) 23:02:11.0510数バイトって…
int 4個で気にしてちゃ何もできんだろw
0204デフォルトの名無しさん
2012/02/07(火) 23:25:21.500205デフォルトの名無しさん
2012/02/07(火) 23:27:51.80また楽しいコードかいてるねぇ
再帰使わないで書いたのはいいだろう
ただ、あえてfor文内にあえて詰め込まなくても。。
0206デフォルトの名無しさん
2012/02/07(火) 23:30:35.690207デフォルトの名無しさん
2012/02/07(火) 23:31:11.680208デフォルトの名無しさん
2012/02/07(火) 23:33:16.33質問じゃないならヘボは出てこなくていいよ。
0209デフォルトの名無しさん
2012/02/07(火) 23:38:09.82ブーメラン?
0210デフォルトの名無しさん
2012/02/07(火) 23:39:44.650211デフォルトの名無しさん
2012/02/07(火) 23:41:06.48現実世界で認められてないの?
0212デフォルトの名無しさん
2012/02/07(火) 23:43:12.850213デフォルトの名無しさん
2012/02/07(火) 23:45:40.050214デフォルトの名無しさん
2012/02/07(火) 23:46:41.930215デフォルトの名無しさん
2012/02/07(火) 23:47:44.810216デフォルトの名無しさん
2012/02/07(火) 23:48:55.96. / (ー) (ー)\ <「再帰使わないで書いたのはいいだろう」
/ ⌒(__人__)⌒ \
| |r┬-| |
\ `ー’´ /
ノ \
/´ ヽ
| l \
ヽ -一””””~~``’ー?、 -一”””’ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー’´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l バンバン
ヽ -一””””~~``’ー?、 -一”””’ー-、
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
0217デフォルトの名無しさん
2012/02/07(火) 23:49:31.47そんなに行数を少なくすることが重要なんだろうかというただの感想
そう思わないか?
0218デフォルトの名無しさん
2012/02/07(火) 23:51:34.030219デフォルトの名無しさん
2012/02/07(火) 23:53:36.13だったらすまん
0220デフォルトの名無しさん
2012/02/07(火) 23:55:38.610221デフォルトの名無しさん
2012/02/07(火) 23:59:32.22せっかくの高級言語なんだしさぁ。。
0222デフォルトの名無しさん
2012/02/08(水) 00:00:53.26制御文増やすとわかりにくくなる
0223デフォルトの名無しさん
2012/02/08(水) 00:04:48.96まったく、基礎知識のあるやつがほとんどいないのが原因だよな。
0224デフォルトの名無しさん
2012/02/08(水) 00:06:58.980225デフォルトの名無しさん
2012/02/08(水) 00:10:01.41せめて計算機の勉強した人が書けばいいのに。
0226デフォルトの名無しさん
2012/02/08(水) 00:12:30.87じゃあ書き直せば?
0227デフォルトの名無しさん
2012/02/08(水) 00:13:36.960228デフォルトの名無しさん
2012/02/08(水) 00:14:47.51基礎知識がない呼ばわりしてるくせして矛盾したこと言ってんじゃねぇぞ
0229デフォルトの名無しさん
2012/02/08(水) 00:21:26.670230デフォルトの名無しさん
2012/02/08(水) 00:27:31.99あるんだったらお前が書けよ。
0231デフォルトの名無しさん
2012/02/08(水) 00:29:41.89じゃあ、今のままでよい
0232デフォルトの名無しさん
2012/02/08(水) 00:31:03.840233デフォルトの名無しさん
2012/02/08(水) 00:36:36.620234デフォルトの名無しさん
2012/02/08(水) 00:37:37.510235デフォルトの名無しさん
2012/02/08(水) 00:38:55.320236デフォルトの名無しさん
2012/02/08(水) 00:42:57.25> VM静的型付け > C++ > C > asm > バイナリ
こんな感じか
0237デフォルトの名無しさん
2012/02/08(水) 00:45:03.520238デフォルトの名無しさん
2012/02/08(水) 00:46:48.19えっ?おまえが書いたんじゃなかったの?w >>236
0239デフォルトの名無しさん
2012/02/08(水) 00:50:26.07http://en.wikipedia.org/wiki/High-level_programming_language
0240デフォルトの名無しさん
2012/02/08(水) 00:51:27.59ハードウェアよりであれば低級
Cが高級だったのは昔の話
0241デフォルトの名無しさん
2012/02/08(水) 00:54:45.23書いてあるけどね。。
In computer science, a low-level programming language is a programming language that provides little or no abstraction from a computer's instruction set architecture. Generally this refers to either machine code or assembly language.
0242デフォルトの名無しさん
2012/02/08(水) 00:55:04.67翻訳してるだけじゃねーか
しかもTalkで議論されてるw
0243デフォルトの名無しさん
2012/02/08(水) 00:56:59.15ど う で も い い
0244デフォルトの名無しさん
2012/02/08(水) 00:57:06.02いやいや、翻訳しただけだよもちろん、そう書いてあるよってだけだからw
0245デフォルトの名無しさん
2012/02/08(水) 00:58:13.06>>244は無視して
0246デフォルトの名無しさん
2012/02/08(水) 00:59:55.63乙
一般に低水準(低級)言語と言った場合は機械語かアセンブリ言語を指す
0247デフォルトの名無しさん
2012/02/08(水) 01:16:48.070248デフォルトの名無しさん
2012/02/08(水) 01:21:06.850249デフォルトの名無しさん
2012/02/08(水) 01:27:33.93どのようにすれば軽くなりますか?
また、ifよりswitchを使用したほうが重くなるのでしょうか?
http://codepad.org/KPVko90j
0250デフォルトの名無しさん
2012/02/08(水) 01:29:36.88うっせーバカ
0251デフォルトの名無しさん
2012/02/08(水) 01:31:49.96最適化オプションいれてみた?
-Osとか-O3とか
0252デフォルトの名無しさん
2012/02/08(水) 01:34:03.04http://stackoverflow.com/questions/5020246/how-low-does-c-go-as-a-low-level-language
こんだけ盛り上がる話題だぞ
0253デフォルトの名無しさん
2012/02/08(水) 01:36:05.840254デフォルトの名無しさん
2012/02/08(水) 01:36:53.530255デフォルトの名無しさん
2012/02/08(水) 01:50:47.06-Osや-O3とは何でしょうか?
特に最適化オプションは行っていません
0256デフォルトの名無しさん
2012/02/08(水) 01:53:34.37簡単に行ってしまえば、多少下手な書き方しても、コンパイラが
その処理の意味を理解して、一番無駄のないマシン語に書き換えて
くれるようにするオプションです
>>249程度のソースなら、最適化オプションを入れれば、
ifやswitchなどほぼ関係なくなります
0257デフォルトの名無しさん
2012/02/08(水) 01:54:13.89http://codepad.org/lFsULIT3
0258デフォルトの名無しさん
2012/02/08(水) 01:54:58.63了解しました
有難う御座います
■ このスレッドは過去ログ倉庫に格納されています