C/C++の宿題を片付けます 121代目 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
08/12/31 08:02:03 BE:378684285-PLT(43140)
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
【C 関数検索 man on WWW】 URLリンク(www.linux.or.jp)
【過去ログ検索】        URLリンク(chomework.sakura.ne.jp)
【wiki】               URLリンク(www23.atwiki.jp)

前スレ
C/C++の宿題を片付けます 120代目
スレリンク(tech板)

2:デフォルトの名無しさん
08/12/31 15:00:12
janeの隠し機能

1.書き込みウィンドウを出し半角入力に切り替える
2.Wキーを押しっぱなしにする
3.Wキを押しっぱなしにしながらsageのチェックするところをおもむろにクリック


3:デフォルトの名無しさん
08/12/31 15:03:11
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

4:デフォルトの名無しさん
08/12/31 15:03:57
ひっかかった

5:デフォルトの名無しさん
08/12/31 15:23:55
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

6:デフォルトの名無しさん
08/12/31 15:58:20
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

7:デフォルトの名無しさん
08/12/31 18:33:49
南蛮戦時だよまったく

wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

8:デフォルトの名無しさん
08/12/31 18:38:19
wwwwwwwwwwwwwwwwwwwwwww

9:デフォルトの名無しさん
08/12/31 22:20:15
やっぱ冬休みだから少ないのかね

10:デフォルトの名無しさん
09/01/01 02:32:12
wの数が?

11:デフォルトの名無しさん
09/01/01 02:41:43
Grass

wWWwwww

12:デフォルトの名無しさん
09/01/01 03:49:57
[1] 授業単元: プログラミング演習2
[2] 問題文(含コード&リンク):
引数として、「char型のポインタ(a)、int型整数(b)、int型2048以下の整数(c)」を渡し、
関数内で、受け取ったポインタ(a)の指定された位置のビット(b)から、11ビットで指定された整数(c)を書き込む。
というプログラム(関数)を書くのですが、どうもうまくいきません。よろしくおねがいします。

例えば引数が「*a, 3, 5」だったときは、
*aの3ビット目から11ビットで5(0000 0000 101)を書き込む。という感じです。

説明下手ですいません。
[3] 環境
 [3.1] OS: WindowsXP home sp3
 [3.2] コンパイラ名とバージョン: VisualC++6.0
 [3.3] 言語: C
[4] 期限: 1月11日(できれば早いほうが助かります。)
[5] その他の制限: 特に無いです。


13:デフォルトの名無しさん
09/01/01 03:58:39
この前
10進数を16進数に変換せよ
って課題に

cin >> a;
cout << hex << a;

で提出したら課題が増えた

14:デフォルトの名無しさん
09/01/01 04:06:04
へーーっくすょん、なんか寒いな・・・

15:デフォルトの名無しさん
09/01/01 05:25:25
>>12
void unko(char * a, int b, int c)
{
int mask, i;
assert(0 <= c && c <= 2048);
for (mask = 2048; !(mask & c); mask >>= 1);
for (i = b - 1; 0 <= i && mask; --i, mask >>= 1) {
*a |= (c & mask ? 1 : 0) << i;
}
}

こういうことでいいのか?

16: 【小吉】 【1233円】 株価【45】
09/01/01 09:13:40
>>15
いったい何ビットの整数を扱うつもりなんだw
まあ、元がcharだから1バイトしか使えないが

>>12
その説明ではどうとでも取れる
書き込み後のバイト列を具体的に書け

ポインタ(b)で指定されたアドレスのMSBが1ビット目としてビッグエンディアンか?
それとも、LSBを1ビット目としてリトルエンディアンか?

17:デフォルトの名無しさん
09/01/01 09:40:00
>>16
そういう解釈もあるのか
何も考えずにシフト演算ならどっちでもいい気がしたんだが

18:デフォルトの名無しさん
09/01/01 12:10:53
[1] 授業単元:実践プログラミング 8.2 競馬
[2] 問題文(含コード&リンク):
 (先生の配慮により問題が易しくなったようなのでもう一度)
 次の課題A,Bから一方を選び,そこに書かれている数値について,
  問(1) 100.0以上1000未満の数
  問(2) 1000以上10000未満の数
  問(3) 10000以上の数
 はそれぞれいくつあるか数え表示するプログラムを完成せよ.
  課題[A] JRAのホームページから左にある「競争成績」をクリックし,
      下部にある過去の競争成績(カレンダー)から5阪(12月7日阪神)をクリック,
      下のほうにスクロールすると11Rとあるがそこをクリックせずにその行の一番右にある
      「最終オッズ」をクリック,その後,「3連単オッズ」をクリック.そこに表示されるページの表について。URLを入力するなどして
      他のレースの数値についても同様にすぐに数値を数えられるプログラムにすること。(激難)
  課題[B] 課題[A]が難しいので,通常はこちらを解くとよい.次のテキストは課題[A]の数値の一部を
      コピー・アンド・ペーストしたものである.これを[Ctrl+C]でコピーし,scanfの入力において
      [Ctrl+V]で貼り付け,[Ctrl+D]を入力すると入力を終え,数え始めるようにせよ.他の数値を入力
      するときも,[Ctrl+D]を入力することで入力を終え,カウントできるように.
       URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
 [3.3] 言語:C
[4] 期限:2008年1月4日中山第11R(中山金杯)の発売締め切り時刻を提出期限とする.
[5] その他の制限:次回は「8.3 パチンコ」を学習します. 、だそうです。

19:デフォルトの名無しさん
09/01/01 12:33:19
>>18
回答を用意しているかどうか聞いとけ

20:デフォルトの名無しさん
09/01/01 16:53:32
>>18
前スレで言われたことわかってないな
URL入力では絶対に不可能なんだよ

21:デフォルトの名無しさん
09/01/01 17:29:10
>>18
#include <stdio.h>
int main()
{
double val;
int count[3] = {0};
while (scanf("%lf", &val) != -1) {
if (100.0 <= val && val < 1000) {
count[0]++;
} else if (1000 <= val && val < 10000) {
count[1]++;
} else if (10000 <= val) {
count[2]++;
}
}
printf("問(1) 100.0以上1000未満の数 : %d\n", count[0]);
printf("問(2) 1000以上10000未満の数 : %d\n", count[1]);
printf("問(3) 10000以上の数 : %d\n", count[2]);
return 0;
}

B

22:デフォルトの名無しさん
09/01/01 18:00:58
>>20
HTMLとJAVASCRIPTの知識があればできるんじゃね?

23:デフォルトの名無しさん
09/01/01 18:10:14
>>22
そうじゃなくて結果表示のページがPOSTリクエストの結果表示だから
URLだけじゃ不可能なんだよ

24:デフォルトの名無しさん
09/01/01 18:16:33
doActionとかいうメソッドの第二引数に何を渡すのかを探るのが重要であって、URLはそれほど重要じゃないってことだろ

25:デフォルトの名無しさん
09/01/01 18:22:30
>>23
確かに

26:デフォルトの名無しさん
09/01/01 18:25:11
でもブラウザにそのままソースを貼り付けてやったらちゃんと動いたけどこれじゃだめなの?
C言語でPOSTするプログラムを書くとかはできないのかな?

27:デフォルトの名無しさん
09/01/01 18:31:53
それリクエストの結果から動的に作成されたhtmlソース(AccessO)でしょ?
AccessOのURLだけを入手しても、リクエストの結果が埋め込まれてないから無意味。

28:デフォルトの名無しさん
09/01/01 18:51:16
         *
        ***
       *****
      *******
     *********
    ***********
   *************
  ***************
 *****************
*******************

この三角形を出力するプログラムを教えてください。
forを使った場合とwhileを使った場合。

29:デフォルトの名無しさん
09/01/01 18:54:24
>>26
そもそも cname を何処からか取得しなくてはいけないが、法則性が不明。
おそらく、競走成績のページ(accessS.html)から辿って行くしかない。
あと、おそらく宿題のフリした図抜けたバカのリクエスト。

30:デフォルトの名無しさん
09/01/01 18:54:30
断る

31:デフォルトの名無しさん
09/01/01 18:55:48
>>28 for の場合
#include <stdio.h>
int main()
{
int i, j, n;
n = 10;
for(i = 0; i < n; i++){
for(j = 0; j < n + i + 1; j++)
if(j <= n - (i + 1))
putchar(' ');
else
putchar('*');
putchar('\n');
}
return 0;
}


32:デフォルトの名無しさん
09/01/01 20:56:38
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

33:デフォルトの名無しさん
09/01/01 21:06:44
>>32>>34
何このアホ

34:デフォルトの名無しさん
09/01/01 21:15:31
?


35:デフォルトの名無しさん
09/01/01 21:17:54
forとwhileってどっちの方が
いいんですか?

36:デフォルトの名無しさん
09/01/01 21:20:08
どっちでもいいよ
ループの境界条件に関して
一定の形式でまとめられるforの方が
可読性がいいのではないかという意見もあるけど

まぁどっちでも

37:デフォルトの名無しさん
09/01/01 21:21:28
>>35
機械にとっては大差ないんじゃね?
forの方が決まりが多いから、その分、読み手に分かりやすく書けると思う。

38:デフォルトの名無しさん
09/01/01 21:25:39
一般的にどちらの方が多く使われてるとか
ありますか?

39:デフォルトの名無しさん
09/01/01 21:26:24
>>38
アンケートをとってきなさい

40:デフォルトの名無しさん
09/01/01 22:35:12
>>31
解くコツとかあるんですか?
俺そんなすぐにはとけません・・

41:デフォルトの名無しさん
09/01/01 22:43:40
>>40

絵に描いて考えればわかるんじゃない?

42:デフォルトの名無しさん
09/01/01 22:45:14
>>41
えっ!?

43:デフォルトの名無しさん
09/01/01 23:01:20
>>40
別解だが山を二つに区切っちゃおう というのがあるよ
頂点の*の右側を垂直に直線を下ろし、それを境界として考える

上からx行目の空白は10-x個、右側の*はx個、左側の*はx-1個

int i,j,k; // iは空白、jは右側の*、kは左側の*
int line; //行数をカウント

for(line = 1;line <= 10;line++) {
for(i = 10;i > line;i--) printf(" "); //まず空白 
for(j = 1;j <= line;j++)printf("*") //左側の個数の*を出力
for(k = 1;k <= line - 1;k++)printf("*") //右側の個数の*を出力  k <= line - 1 に注目
putchar('\n'); //改行
}

テストしてないけどまあ大丈夫じゃね?

44:デフォルトの名無しさん
09/01/01 23:10:15
つセミコロン

45:デフォルトの名無しさん
09/01/01 23:11:24
それやるんだったら
x行目の空白は10-x個、*は2x-1個でいいじゃん
何のために分割してんの?

46:デフォルトの名無しさん
09/01/01 23:12:11
ついでに、空白の数をwhileの停止条件にすれば、
forとwhileの両方を満たせるなw

47:デフォルトの名無しさん
09/01/01 23:23:57
まあひとつずつ書いていった結果じゃね?w
分割はちょいイミフだがw

48:デフォルトの名無しさん
09/01/02 00:06:36
きっと>>43は宿題出した教授で
何人コピペしてくるか調べたいんだよw

49:デフォルトの名無しさん
09/01/02 00:08:08
>>40
コツってわけじゃないけど、おれの場合こんな流れかな

問題を見つける(質問投稿から 106秒)
空白と*が左上から順に1つずつ表示される様子をイメージする(+20秒)
複数行にまたがる出力なので、そこでまず for ループ1個書く(+10秒)
1行の中でで処理を反復するのでそこでも for ループを1個書く(+10秒)
ループに必要な変数を記述(+20秒)
どういう条件で*が出るかを考えて(+20秒)
実際に書き下す(+10秒)
コンパイル(+3秒)
実行(+2秒)
頂点が1つ足りないので条件を修正(+10秒)
コンパイル(+3秒)
実行(+2秒)
*の右側にも空白を書いていたことに気づく(+15秒)
内側の for ループの条件を修正(+20秒)
コンパイル(+3秒)
実行(+2秒)
出力は問題なさそうだが、main の return 0; を忘れていたので加筆(+2秒)
コンパイル(+3秒)
実行(+2秒)
Janeの書き込みボタンを押してウィンドウを開く(+2秒)
一言書く(+4秒)
ソースを全選択してコピー(+1秒)
書き込みウィンドウにペースト(+1秒)
書き込み投下(+1秒)

50:デフォルトの名無しさん
09/01/02 00:32:21
そして一生の後悔

51:デフォルトの名無しさん
09/01/02 01:03:30
別解示すならこれくらいでないと
取りあえず、2重ループを排除

char *s = "*******************";
char *p;
int n;
for(n = 10, p = s + 18; n < 20; n++, p -= 2) {
printf("%*s\n", n, p);
}

52:デフォルトの名無しさん
09/01/02 07:45:41
>>28
while使った場合
#include <stdio.h>
int main(void)
{
int i = 0, j;
while(j = 10 - i++) {
while(--j > 0) putchar(' ');
while(++j < i << 1) putchar('*');
putchar('\n');
}
return 0;
}

53:デフォルトの名無しさん
09/01/02 08:59:25
while(j = 10 - i++)   (・∀・)

54:デフォルトの名無しさん
09/01/02 09:26:18
>>53

55:デフォルトの名無しさん
09/01/02 09:30:05
54 名前:デフォルトの名無しさん 投稿日:2009/01/02(金) 09:26:18
>>53

56:デフォルトの名無しさん
09/01/02 09:31:23
while(j = 10 - i++)   while(j = 10 - i++)   while(j = 10 - i++)   
while(j = 10 - i++)   while(j = 10 - i++)   while(j = 10 - i++)   

今年一発目の・・・なぁ〜にぃ〜!?やっちまったな!

57:デフォルトの名無しさん
09/01/02 09:31:49
>53-55が何を言いたいのか理解できない

58:デフォルトの名無しさん
09/01/02 09:33:50
やべえ>>52程度が理解できないバカがいるとはw

59:デフォルトの名無しさん
09/01/02 10:10:58
C言語の0以外ならばTRUEという仕様を利用しているんでしょ。

60:デフォルトの名無しさん
09/01/02 10:18:03
=だけ見て脊髄反射したのか

61:デフォルトの名無しさん
09/01/02 10:42:43
#include <stdio.h>

int main(void){
int i;
printf("%d\n", i = 10);
return 0;
}

62:デフォルトの名無しさん
09/01/02 10:48:34
>>59=>>60
あの程度の不備が理解できないなら、プログラミングなんてやらない方が良いぞ、ド素人

63:本当の馬鹿
09/01/02 10:50:08
58 名前:デフォルトの名無しさん 投稿日:2009/01/02(金) 09:33:50
やべえ>>52程度が理解できないバカがいるとはw

やべぇ、あのコードの不備が理解できない知ったか大馬鹿がいるとはw
人間、年を取ると自信過剰になって、指摘する人間に圧力をかければ
自分が正当化され、正しいことを言っていると勘違いするようだな。
まるで、あの集団のように。ただ、行き過ぎて、自分らが間違っていることに
選挙で負けて気づくと。

64:デフォルトの名無しさん
09/01/02 10:55:57
>>52 は都合よくコンパイラが解釈して通すが、繰り返しの条件判定としては不適切。
指摘されて、気づかないくらい、自分が正しいと思い込んでいるんでしょうね。
逆に、指摘した側が知らないと思い込んでもいるようだし。

65:デフォルトの名無しさん
09/01/02 10:57:40
>>64
何かと勘違いしてるんだろうけど、評価順は決まってるよ。

66:デフォルトの名無しさん
09/01/02 11:08:20
インクリメントでコンパイラ依存になるのってどんな場合だったっけ?思い出せない

67:デフォルトの名無しさん
09/01/02 11:11:37
>>58
知能が低い奴ほど罵倒発言を平気でする。自分が馬鹿だと言う事にも気づかず、
擁護してくれる人がいないからって、IDのない板で、自作自演で複数を装うやり方もするしな。
コンパイラが通すんだから良いんだろ?って考えだろ。while文の括弧の中は、
本来は条件式が入るんだが、それは代入だろ。例え括弧で代入式を括っても、
それに対して条件式にあう措置をとるべき。
まぁ、コンパイラ任せの未熟者がプログラミングに手を出す時代になったってことだな。

68:デフォルトの名無しさん
09/01/02 11:16:06
>>67
だから代入したあとにその代入した値が評価値になるんだろ?>>61見ろよ。

69:デフォルトの名無しさん
09/01/02 11:18:58
while(j = 10 - i++)   代入と条件判定式の区別がつかないゆとり?

70:デフォルトの名無しさん
09/01/02 11:23:39
>>69
0以外がTRUEだから条件文は10でも100でも1000でも-1000でもいいの


#include <stdio.h>

int main(void){
int i;
if(i = 10) printf("Hello World!");
return 0;
}

71:デフォルトの名無しさん
09/01/02 11:25:49
>>67
whileの括弧の中は条件式じゃなく、値だ。
そして代入演算子の値は代入後の変数の値。
なんかコンパイラが都合よく解釈してくれていると勘違いしているようだが、
>>52は完全にCの文法に合致してるぞ。

72:デフォルトの名無しさん
09/01/02 11:30:19
if(A) を if(A > 0) と書いちゃう人だから相手にすんな

73:デフォルトの名無しさん
09/01/02 11:30:40
それは自由だ。

74:デフォルトの名無しさん
09/01/02 11:46:49
>>66
こんなか?
#include <stdio.h>
int main(){
int i=10;
i=10;
i=(i++);
printf("%d\n",i);
i=10;
i=(i++)+0;
printf("%d\n",i);
//
i=(i++)+100;
printf("%d\n",i);
i=10;
i=(i++)+(i++);
printf("%d\n",i);
//
i=10;
int j;
j=(i++)+100;
printf("%d\n",j);
i=10;
j=(i++)+(i++);
printf("%d\n",j);
return 0;
}


75:デフォルトの名無しさん
09/01/02 11:51:14
相手を罵倒したり、必死に否定して間違っている自分を正当化する奴は、余計に信じられない。
不適切、適切の区別もつかないような奴がプログラミングをやると、最悪、予期できるのに
自らの不手際で考えられないバグを出すから困る。

76:デフォルトの名無しさん
09/01/02 11:54:02
>>74
これもか?
#include <stdio.h>
int main(){
int i=10;
i=(++i);
printf("%d\n",i);
i=10;
i=(++i)+0;
printf("%d\n",i);
//
i=(++i)+100;
printf("%d\n",i);
i=10;
i=(++i)+(++i);
printf("%d\n",i);
//
i=10;
int j;
j=(++i)+100;
printf("%d\n",j);
i=10;
j=(++i)+(++i);
printf("%d\n",j);
return 0;
}


77:デフォルトの名無しさん
09/01/02 11:55:08
>>75
世の中にバカがひとりも居ないなら兎も角、
全員が間抜けなのに、何を言っているんだ?

78:デフォルトの名無しさん
09/01/02 11:59:40
なにやら喚いてる奴は
if( !( fp = fopen( 〜 ) ) )
とかも許せないんだろうか

79:デフォルトの名無しさん
09/01/02 12:03:22
>>77
こんにちは、間抜け

80:デフォルトの名無しさん
09/01/02 12:10:53
>>79
ディルバートの法則も読んだことが無いなんて・・・

81:デフォルトの名無しさん
09/01/02 12:37:34
>>76
>i=(i++)+100;
の前にi=10;が抜けているな。
>>74

82:デフォルトの名無しさん
09/01/02 12:38:15
>>80
ユークリッドの原論も読んだことがないようだな

83:デフォルトの名無しさん
09/01/02 12:42:56
弱い犬ほどよく吠える とは言ったものだ。素人以下の基地外が、こんな時期に
寂しく過疎ってるスレで、IDが出ないからって自作自演で擁護してファビョってやがるぜ。

84:デフォルトの名無しさん
09/01/02 14:20:40
麻呂の初暴れか
大喜びで揚げ足とったつもりで自分だけが間違うって、何度やっても学習しないな。

85:デフォルトの名無しさん
09/01/02 14:57:10
>>67
条件判定式が返す「値」で判定するんであって、判定式が必須じゃないんだがw
よく無限ループで使われるwhile(1)についてはどう思ってるの?

86:デフォルトの名無しさん
09/01/02 20:12:52
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
[3.3] 言語:C
[4] 期限:1月9日
[5] その他の制限:特にないです。

87:デフォルトの名無しさん
09/01/02 20:38:19
>>86
URLリンク(kansai2channeler.hp.infoseek.co.jp)

88:86
09/01/02 21:48:44
>>87
ありがとうございました。

89:デフォルトの名無しさん
09/01/03 02:39:12
>>85
知ったか無知乙。whileの中が条件式ではなく、代入式なんだが?w
それから、条件式の真偽でif文にしろ判定していることくらい、周知のこと。
何を指摘されたか分からないなら、黙ってろ。

>>84=本物の馬鹿麻呂
自分で言ってて恥ずかしくない?お前にとって、指摘する奴=麻呂って何それ?w

90:デフォルトの名無しさん
09/01/03 02:41:12
さらに、条件式でなくても、while(1)などで分かるように、そこに変数を用いて
その変数が0か否かで判定するやり方も知っているが、
>>52

while(j = 10 - i++) {

どーーーー考えても代入式です、ありがとうございますたwwwwwww
さてと、自信過剰知ったか無知は以後放置よろ。質問スレでも大ボケかましたよ。

識  別  子  (笑)

91:デフォルトの名無しさん
09/01/03 02:42:53
眠いね

92:デフォルトの名無しさん
09/01/03 02:44:02
a = b = 10;

93:デフォルトの名無しさん
09/01/03 02:47:44
>>90
横槍ですまんが、>>52

int i = 0, j;
while(j = 10 - i++){

これって10回ループしたら抜けないの?
俺の知識がおかしいのか…

94:デフォルトの名無しさん
09/01/03 02:50:12
while(*dst++=*src++);
この有名な文字列コピーの手法はどう見ても代入式ですw

95:デフォルトの名無しさん
09/01/03 02:51:57
>>93
冬休みなだけだよ

96:デフォルトの名無しさん
09/01/03 02:52:46
>>95
こいつは年中無休だからw

97:デフォルトの名無しさん
09/01/03 02:54:03
>>93
jに代入される数が10から0まで減っていくから、問題なくループは終了するよ。

98:デフォルトの名無しさん
09/01/03 02:54:10
[1] 授業単元:cプログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: win
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: c
[4] 期限: 日曜午後6時
[5] その他の制限:よろしくお願いします。

99:デフォルトの名無しさん
09/01/03 02:54:53
明らかにこの辺と呼応してるし。同じヤツだろ。
普段いるやつじゃないよ。
スレリンク(tech板:503番)


100:デフォルトの名無しさん
09/01/03 02:55:36
>>95 >>97
そっか
ありがとー

101:デフォルトの名無しさん
09/01/03 02:57:01
52はwhileの中に代入式を書くという技巧を見せつけたかったってことでいいじゃないか。
規格上何ら問題なくコンパイルは通るのも事実だし、
それを初心者に見せびらかして自慢すべき事柄ではないのもその通り。

102:デフォルトの名無しさん
09/01/03 03:01:17
>>99
最近この板に来た人?
こいつは何年もC系のスレでファビョりまくってるアホだから。

103:デフォルトの名無しさん
09/01/03 03:09:51
俺は52なんだが、まさかこんなことになるとは思わなかった。
単に行数減らしたかったから()内で代入しただけなんだが。

>>92
まさかこの程度のことで技巧とか自慢とか言われるとは思わなかったw

104:デフォルトの名無しさん
09/01/03 03:10:21
>>92ってなんだw
>>101の間違いね

105:デフォルトの名無しさん
09/01/03 03:15:06
while(j = 10 - i++)

どう考えても、while文の中は代入式で、条件式ではありません。
コンパイラも、ここの部分に対しては警告を出しているし。
while文の使い方や説明を見直すことを、お勧めします。
何を指摘されたのか分からないなら、今すぐプログラミングなんて
お止めになった方が、今後の人生のためですよ。人間、適性なんて
やってみなければわからないものですからね。これ以上、自分の
適性に合わないプログラミングは、死ぬまでの人生を無駄にしますよw

106:デフォルトの名無しさん
09/01/03 03:19:39
while()の括弧内が代入式でもCの規格として何の問題もありません。
代入式でなければいけないと主張するのならば、根拠を示してください。

107:デフォルトの名無しさん
09/01/03 03:20:05
>>105
別にコンパイラが警告出したっていいんじゃない?
動くし。

FILE *fp;
if(!(fp = fopen("hoge.txt", "r"))) return 1;

みたいなのと一緒だと認識してる
違うんかな?

108:デフォルトの名無しさん
09/01/03 03:22:17
while(j = 10 - i++)
jが0か否かで判定するのもありだが、これはどう考えても

代入式

だ罠。分からないなんて、どこのクズ講師だよ?
変な自身を持っているのも、迷惑だな、生徒が。
こんな奴にだけは、絶対に習いたくないね。
教える立場だから、間違っては困るにしろ、間違っていても
指摘した人間を陰湿に罵倒して正当化する性格になってしまったんだね。
生徒も低レベルなんだろうけど。

109:デフォルトの名無しさん
09/01/03 03:22:56
代入式で警告出るのは==を=にするミスが多すぎたからじゃなかったっけ?
昔は出なかったから、定数を左に書くテクニックとかあったわけだし。

110:デフォルトの名無しさん
09/01/03 03:23:40
>>108
>>94についてはどう思う?

111:デフォルトの名無しさん
09/01/03 03:28:26
誰も j = 10 - i++ が代入式じゃないとは言ってないのに。
Cの規格として代入式でも全く問題ないって言ってるのが理解できないのか?

112:デフォルトの名無しさん
09/01/03 03:31:08
いや・・・・どうみてもこいつは・・・・・
つられるなよお前ら・・・・・・・・・

113:デフォルトの名無しさん
09/01/03 03:32:20
>>111
お前こそ、それが規格上問題ないということに誰も異論を述べていないことに気付け。
推奨される書き方ではないからやめろと言われ続けているだけだ。

114:デフォルトの名無しさん
09/01/03 03:33:22
まぁ、議論(?)はそのくらいにして
みんなで>>98でもやろうぜ。

fgetsでchar型配列を使わないってなんだろ
ポインタ使えってことかな

115:デフォルトの名無しさん
09/01/03 03:37:05
>>98
#include <stdio.h>
int main() {
int k, c, l, n, m=0;
for (k = 0; k < 3; k ++) {
for (n = l = 0; (c = getchar()) != '\n'; l ++) {
if (l == 0 && c == '-') {
printf("Error!!負の数\n");
return 1;
}
if (l < 8) {
if (c < '0' || c > '9') {
printf("Error!!数字文字以外の入力\n");
return 1;
}
n = n * 10 + c - '0';
}
}
if (l == 0) {
printf("Error!!改行のみの入力\n");
return 1;
}
m += n;
}
printf("合計は%d\n", m);
return 0;
}

116:デフォルトの名無しさん
09/01/03 03:37:24
fgetcの間違いなんじゃね?

117:デフォルトの名無しさん
09/01/03 03:41:17
代入式を使う場合のヒント
(FILENAMEはファイル名を示すものとする)

if( (fp=fopen(FILENAME , "r")) == NULL )
何かついているよね?fp=fopen() だけで、果たして通用するかにゃ〜? ( ^ω^)
fpの中身で条件判定するにしても、何かあるよにゃ〜♪

118:デフォルトの名無しさん
09/01/03 03:43:10
真である事を条件にするならfp=fopen()で通用するだろ。

119:デフォルトの名無しさん
09/01/03 03:51:46
真:0以外
偽:0
これが全てじゃね?

120:デフォルトの名無しさん
09/01/03 03:53:52
コードが多くて申し訳ありません。

[1] 授業単元:画像処理演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)

mypgm.hのコード:URLリンク(kansai2channeler.hp.infoseek.co.jp)
minutiae.cのコード:URLリンク(kansai2channeler.hp.infoseek.co.jp)
labeling.cのコード:URLリンク(kansai2channeler.hp.infoseek.co.jp)
問題に用いる画像サンプル:URLリンク(www.uploda.org)

[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:09年1月11日24:00まで
[5] その他の制限:説明文が下手ですいません。C言語の基礎的な関数のみでお願いします。

121:デフォルトの名無しさん
09/01/03 03:55:58
結局、文法上 while(式) のところを while(代入式) だと勘違いしていただけでしたとさ。

122:デフォルトの名無しさん
09/01/03 03:57:06
違った、代入式じゃなくて条件式に訂正。

123:デフォルトの名無しさん
09/01/03 04:10:14
そもそも、ifだのwhileだのforだの、C言語に限ったことじゃないから
プログラミングをお止めになった方がよろしいかと?思われているんだが。

124:デフォルトの名無しさん
09/01/03 04:13:15
>>56
>>62
>>63
>>64
>>67
>>69
>>75
>>83
>>89
>>90
>>105
>>108
>>113
>>117
>>123

お前が止めろw

125:デフォルトの名無しさん
09/01/03 04:13:56
!= == < > <= >=のことなら比較演算子、それを使った式は比較式というほうが正確だよ。
whileやifの中身の意味で条件という言葉の用法もあるから混同しないで。

>>123
大抵のよその言語はコンパイルエラーになるから親切だ。

126:デフォルトの名無しさん
09/01/03 04:17:22
どこにC言語以外の話があったのかわからない

127:デフォルトの名無しさん
09/01/03 04:20:35
123という書きこみ自体だけだな

128:デフォルトの名無しさん
09/01/03 04:21:40
だからぁ、議論(?)は止めて>>120でもやろうぜ。

俺?
眠いからパス

129:デフォルトの名無しさん
09/01/03 04:23:23
どこの講師か知らんが、まじウザッ。while文も適切に使えない、教えられないで
教師なんてやるなよw

130:デフォルトの名無しさん
09/01/03 04:32:39
思い込みの激しい>>129に適切にwhileを教えることのできる教師なんていないだろうなw

131:デフォルトの名無しさん
09/01/03 04:33:55
分かったからそういうスレでやれ

132:デフォルトの名無しさん
09/01/03 04:58:14
これからは、このスレでは while(代入式) でも良いそうですよ?w

133:デフォルトの名無しさん
09/01/03 07:35:14
ほっほっほ、麻呂の今朝の食事は、スパゲッティーミートクソースでおじゃるが、何でおじゃる?
麻呂は余計な口出しはしないでおじゃるよ。勝手に議論してたもう。
ただし、このスレのスレタイを読んで、スレ違いだと気づいて、それ相応のスレで
議論するでおじゃるよ。いつまでも譲らない二者で。第三者を巻き込まないでたもう。

134:デフォルトの名無しさん
09/01/03 07:50:10
>>78
それは括弧がついているんだが?w

135:デフォルトの名無しさん
09/01/03 07:53:13
>>134
代入式を真偽として扱うのがいやなわけじゃないんだな

136:デフォルトの名無しさん
09/01/03 08:54:13
>>101
アホか

137:デフォルトの名無しさん
09/01/03 08:59:23
みんな、落ち着けよ。
代入式が値を持つことを知らないCプログラマなんて、いるワケ無いだろ。

138:デフォルトの名無しさん
09/01/03 09:26:55
今北産業

139:デフォルトの名無しさん
09/01/03 10:14:52
>>134
OKOK、じゃあ
if( fp = fopen( 〜 ) ) printf("ファイルオープン成功\n");
にするよw
実用的なところだとassert( fp = fopen( 〜 ) )とかどうよw

140:デフォルトの名無しさん
09/01/03 10:25:58
j=10-i++ が代入式ではなく、条件式なんだってさー えーーーっ!?

141:デフォルトの名無しさん
09/01/03 10:28:48
>>140
Cの条件式が論理演算子を必要としないのは最初に習うだろ。

142:デフォルトの名無しさん
09/01/03 11:25:42
>>120
もっと他に情報ないの?


143:デフォルトの名無しさん
09/01/03 11:35:30
>139
> 実用的なところだとassert( fp = fopen( 〜 ) )とかどうよw
そして NDEBUG を定義するとまともに動作しないプログラムができあがるわけだな。
assert 内で副作用のある式を評価しちゃ駄目。

144:デフォルトの名無しさん
09/01/03 11:55:59
スレリンク(tech板:395-399番)
やっぱり気持ち悪がられてるw

145:139
09/01/03 12:42:18
('A`)
たしかに、全然実用的じゃなかった
いつもは>>78だからなあ


146:デフォルトの名無しさん
09/01/03 12:43:33
なんで「文法上問題ない」はスルーなんだよw

147:デフォルトの名無しさん
09/01/03 14:08:39
>>137でFAなんだがな
みんなわかってるよな?

148:デフォルトの名無しさん
09/01/03 14:10:42
暴れてるのがCプログラマじゃないとしたら?

149:デフォルトの名無しさん
09/01/03 15:53:58
>>120
URLリンク(cis.k.hosei.ac.jp)
まず、「真マニューシャ」「偽マニューシャ」の定義がわからん。

下記では、"true minutiae"はエキスパートが抽出したマニューシャ、
"false minutiae"はアルゴリズムが抽出した点で、"true minutiae"に含まれて居ないもの。つまりハズレ。
URLリンク(books.google.co.jp)

「選別」と言うのは、minutiae.cの結果から、本来の定義のマニューシャだけを残すということのようだが、
pdfの18ページをみると「真マニューシャ」に含まれない端点の基準とかが分からない。

150:デフォルトの名無しさん
09/01/03 17:12:38
>>147
コンパイラの警告が見えない馬鹿ですね?w

151:デフォルトの名無しさん
09/01/03 17:13:45
>>150
警告がどうしたんだ?

152:デフォルトの名無しさん
09/01/03 17:17:39
つべこべ言ってないで
>>52を正しく直してみろ!!

153:デフォルトの名無しさん
09/01/03 17:17:53
最近は似非プログラマーがC言語を扱っているノカー、時代は変わったもんだな。
while文すらまともに使えないなんて、終わってますね。進路を変えな、今すぐ。
その程度じゃ人生を失敗するぞ。

154:デフォルトの名無しさん
09/01/03 17:22:06
>>152
正しいから、これ以上、直らないだろ。

155:デフォルトの名無しさん
09/01/03 17:28:58
>>153
さすが人生失敗してる人が言うと説得力が違うw

156:デフォルトの名無しさん
09/01/03 17:41:44
>>120
labelsetの処理はなんとかならんもんかね。

>>149
多分、>>120の講義では指紋照合についてプログラムを書くということをやってるっぽい(ググった)。
  ・指紋の線の端点だと確定できる点を真マニューシャ
  ・指紋の線の端点だと確定できない点を偽マニューシャ
と定義してるくさい。

指紋認証だと、スキャナに指を押し付ける力加減により、スキャンする指の画像が変わってくる。
画像の境界線上にできる点を偽マニューシャと呼びたいたいのではないかと思う。

そこで、問題の意図としては、「その境界線をどうやって判断するのか?」を解かせようとしてるのかも
(処理思いつかんが)。

つーか、ほとんど推理ゲーだな。

157:156
09/01/03 17:56:33
>>149
すまん。
境界線ではなく、同じラベル中で距離が近い点を全部消してるのかも。
どの程度の距離かは不明だけど。

158:デフォルトの名無しさん
09/01/03 21:57:05
>>157
稜線上の距離が基準だとすると、以下の二つの扱いが納得できない。
URLリンク(up2.viploader.net)
URLリンク(up2.viploader.net)

下の点は、本当に消えるべき点なのだろうか?

159:デフォルトの名無しさん
09/01/03 23:08:03
実用とほとんど関係の薄い問題を解かせて何が楽しいんだろ。教授の自己満足か。

160:デフォルトの名無しさん
09/01/03 23:10:21
>>159
技術ありき
実用にするかどうかはアイディア次第

161:デフォルトの名無しさん
09/01/03 23:12:16
>>159
パターン認識の実用がどんなか知らないが、これは指紋の照合では基礎なのでは?

162:157
09/01/03 23:39:52
>>158
申し訳ありません。
距離を基準とすると下の点は消えるべきではないですね。
取り下げさせていただきます。

163:デフォルトの名無しさん
09/01/04 00:02:47
>>162
依頼にも「同じ隆線上で近接して出現 したマニューシャは」云々と書いてあるし、なにかしてるはずだけど・・・
pdfに載ってる処理結果を見ると、他にも何か処理をしていなくては、辻褄が合わない。
それこそ境界線上の端点の除外とか。

工夫を考えろと言うことなのかな。

164:デフォルトの名無しさん
09/01/04 01:57:57
>>143
詳説もとめます。

165:120
09/01/04 02:03:11
山ほど説明不足でホントにすいませんでした。マニューシャの定義などは、すべて下のファイルに入っています。

ただ、課題でHilditch.cを使うかは分かりません。

URLリンク(www1.axfc.net)
(pass:1)

マニューシャについては11のpdf、Hilditch.cをつかって,細分化するコードについては10のpdfに書いてあります。
丸投げでごめんなさい。

166:デフォルトの名無しさん
09/01/04 02:05:11
訂正:URLリンク(www1.axfc.net)の He_177945.zip です。(pass:1)

何度も迷惑かけてすいません・・・



167:デフォルトの名無しさん
09/01/04 02:12:06
>>164

 >>143ではないが、assert(expr)は、NDEBUGが#defineされているときにはexprが評価されない。
 実装によるが、たいていマクロだから副作用がある式を評価させてはならない。

 とりあえず、自分の環境のassert() (多分assert.hにでも書いてある)を読んでみるといいよ。

168:デフォルトの名無しさん
09/01/04 02:48:09
>>166
学校のサイトはもう見つけた。>>149


169:デフォルトの名無しさん
09/01/04 02:50:36
>167
一応補足。
C言語規格 9899:1999 7.2/1 によれば #include <assert.h> 時に NDEBUG が定義されている場合、assert は以下のように定義される。
#define assert(ignore) ((void)0)
ということで、expr 部分(上だと ignore だが)全体が消滅する。
# ちなみに 7.2/2 では関数じゃなくてマクロで実装しろと規定されている。

そもそも assert とはプログラムのバグ(ロジックエラー)を引っかけるものであって、実稼働中に発生するようなエラーに対処するものではない。
ということで例えば VC++ だと Release ビルドでは既定で NDEBUG が定義されたりする。
結果、assert 内に副作用のある式を記述してしまうと、Debug ビルドと Release ビルドで挙動が異なるコードを生み出してしまう。

170:デフォルトの名無しさん
09/01/04 02:53:30
>169 != >167 で >169 では >164 に対する返答補足のつもり。

171:デフォルトの名無しさん
09/01/04 03:07:44
HTMLテキストデータから数値(浮動小数点)のみを順に抽出して
いきたいのですが、どういう風にすればよろしいでしょうか?
ご教授ください。


172:デフォルトの名無しさん
09/01/04 03:10:41
>>1

173:デフォルトの名無しさん
09/01/04 03:10:42
>>171
HTMLテキストデータのサンプルくらい提示して欲しいもんだ

174:デフォルトの名無しさん
09/01/04 03:26:16
>>171
後付で条件足すなよ!

#include<iostream>
#include<iterator>
#include<string>
#include<cstdlib>
#include<cctype>
int main(){
    std::string src;
    copy(std::istreambuf_iterator<char>(std::cin),std::istreambuf_iterator<char>(),back_inserter(src));
    for(const char*s=src.c_str();;){
        if(*s=='\0')break;
        if(std::isspace(*s))++s;
        char*next=const_cast<char*>(s);
        std::strtod(s,&next);
        if(s == next){++s;continue;}
        std::cout.write(s,next-s);
        std::cout << std::endl;
        s = next;
    }
}

175:デフォルトの名無しさん
09/01/04 03:29:27
2箇所訂正
#include<algorithm>
が抜けているのでcctypeの下に追加

if(std::isspace(*s))++s;
が空白1つにしか対応できていないので
任意個数の空白に対応するためにcontinueするする
if(std::isspace(*s)){++s;continue;}


176:デフォルトの名無しさん
09/01/04 04:54:08
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限:特にはありません。よろしくお願いします。

177:デフォルトの名無しさん
09/01/04 05:25:09
>>176
一応元のコードをベースにしたけどこんなんでおk?
#include <stdio.h>
#include <math.h>
int main(void)
{
    {   int i, n, Limit;
        n = 0x7FFFFFFF;
        for(;;--n){
            Limit=(int)sqrt(n);
            for (i=Limit;i>1;i--)
                if (n%i == 0)break;
            if (i==1)break;
        }
        printf("int型の最大の素数は%dです\n",n);
    }{  unsigned int i, n, Limit;
        n = 0xFFFFFFFF;
        for(;;--n){
            Limit=(unsigned int)sqrt(n);
            for (i=Limit;i>1;i--)
                if (n%i == 0)break;
            if (i==1)break;
        }
        printf("unsigned int型の最大の素数は%uです\n",n);
    }
    return 0;
}

178:デフォルトの名無しさん
09/01/04 05:32:48
INT_MAXとかを使った方がいいと思う

179:デフォルトの名無しさん
09/01/04 05:42:11
>>178
それを使うか悩んだんだけど、limits.hを授業でやったか分からない。
それとintのサイズが32bitであると問題文でわざわざ定義されている。

そんな感じで、今回はマジックナンバーを決めうちで実装した。

180:デフォルトの名無しさん
09/01/04 06:24:02
麻呂のクソースではおじゃるね、まずそれぞれの変数に-1を入れてやんよ?
さすれば、何ビットだろうとその変数が扱える最大のFFFF・・・になるでおじゃるし。
え?邪道?それがクソースでおじゃっ!

181:デフォルトの名無しさん
09/01/04 06:32:22
unsigned int uint=-1;
signed int sint=uint>>1;
printf("uint:%u \nsing:%d\n",uint,sint);

きんもぉ〜★なクソースでおじゃっ

182:デフォルトの名無しさん
09/01/04 07:06:07
>>176
URLリンク(kansai2channeler.hp.infoseek.co.jp)


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5237日前に更新/235 KB
担当:undef