[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 20:08 / Filesize : 94 KB / Number-of Response : 422
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇) Part 30



1 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 23:38:08 ]
言語の入門者向け解説スレです。

教えて欲しいのではなく宿題を丸投げしたいならこちらへ。
 C/C++の宿題を片付けます 108代目
 pc11.2ch.net/test/read.cgi/tech/1211980711/

・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・開発環境や動作環境も晒すと答えが早いかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 29
pc11.2ch.net/test/read.cgi/tech/1212329099/
過去スレ
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

372 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:46:01 ]
しかし開発要員に採っておいて使えないのにクビ宣告しないなんて
世の中良心的な会社もあったもんだね
つまり当たりを引いたわけだ

373 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:10:48 ]
ワシは単にコネでねじこまれたという説を推すよ

374 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:28:24 ]
俺が新人の頃は同期に全然できない奴がいて、そのうちのひとりは研修中に辞めたよ

375 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:32:03 ]
まあ開発部隊に入りたいならゆっくりでもいいから勉強することだねー

376 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:32:40 ]
入らないほうが幸せにはなれるかもな

377 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:55:38 ]
ゆっくりしていってね(AA略)

378 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 11:38:52 ]
公務員はプログラミングできるのか?
医者はプログラミングできるのか?
弁護士はプログラミングできるのか?


379 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 11:42:39 ]
趣味でプログラムできる人もいるんじゃね?

380 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 11:47:56 ]
仕事でそういう二足のわらじを履いてる人は結構いるよ
有名どころだとLZHの作者はお医者さんだったっけ



381 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:09:26 ]
森田将棋の人も医学部だったね
医師免許はとってないのかな

382 名前:デフォルトの名無しさん [2008/06/18(水) 20:40:56 ]
文字列の入力を促し、入力。
その文字列の先頭の文字と同じ文字が文字列の中にいくつふくまれるかを求めるプログラム。
先頭の文字も数のうちに入れる。
(ポインタを用いる)

お願いします

383 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:41:56 ]
>>382
>>1を100回読め

384 名前:デフォルトの名無しさん [2008/06/18(水) 20:43:33 ]
>>381
時間がないのです。



385 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:45:16 ]
ここはC言語を学ぼうとしている人のためのスレです
情報処理の単位が欲しいだけの人はお帰りください

386 名前:デフォルトの名無しさん [2008/06/18(水) 20:46:55 ]
>>382
答えてあげてくださいな



387 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:48:35 ]
ばればれの自演は逆効果w

388 名前:デフォルトの名無しさん [2008/06/18(水) 20:49:45 ]
文字列の入力を促し、入力。
その文字列の先頭の文字と同じ文字が文字列の中にいくつふくまれるかを求めるプログラム。
先頭の文字も数のうちに入れる。
(ポインタを用いる)

389 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:54:20 ]
大学で資格の関係でどうしてもC言語をやらなければなりません
どうしてもわからない問題があるのでどなたか教えてください

問題1
三角形の底辺の幅、あるいは段数(どちらか一つ)を入力すると、逆三角形を表示する。例えば、底辺5あるいは段数3を入力すると
*****
***
*
となる。

2
下記のように横と縦の累計を計算して表示する。
配列は使わないこと。

3
10個以下の任意のn個(データ数は入力)のデータを入力し、逆順に出力する。
実行結果は奇数と偶数個の例を示すこと。

4
下記のように横と縦の累計を計算して表示する。
ただし、1次元配列を使うこと。

どの問題でもかまいません
本当に困っているので教えてください




390 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:55:57 ]
>>382

#include <stdio.h>
int main(void)
{
  /* 入力された文字列を収めるためのcharの配列を宣言 */
  /* その他の必要な変数を宣言 */

  fputs("please input a string : ", stdout);

  /* fgets()を使ってcharの配列に入力された文字列を格納 */

  /* 文字の数を数えるint変数を0に初期化する */

  /* charへのポインタにcharの配列の先頭の文字を指させ、
    chraへのポインタが指している先の文字が'\0'でない間、
    charへのポインタを1ずつ文字列の先へずらしながら、
    以下の処理を繰り返す */;
    /* もしchraへのポインタが指している先の文字が
       charの配列の先頭の文字と等しければ */
      /* 文字の数を数えるint変数を1増やす */

  /* printf()を使って文字の数を数えたint変数の値を表示する */

  return 0;
}



391 名前:デフォルトの名無しさん [2008/06/18(水) 20:55:59 ]
C言語始めて2ヶ月でこんなもんだいだされました。
文字列の入力を促し、入力。
その文字列の先頭の文字と同じ文字が文字列の中にいくつふくまれるかを求めるプログラム。
先頭の文字も数のうちに入れる。
(ポインタを用いる)



392 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:58:04 ]
>>1を読んでください
それでわからないようならあなたの日本語力と知性は壊滅的なのでおとなしく退学することを勧めます

393 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:58:10 ]
>>389
自分でできないなら資格はありません

394 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:58:13 ]
ああそうですか。
マルチ視ね

395 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:06:28 ]
>>382
#include<stdio.h>
#include <stdlib.h>
int main()
{
 int *c, count = 1, i;
 c = (char *)malloc(1);
 puts("入力どうぞ");
 if ((i = getchar()) == EOF) {
  printf("ちゃんと入力しろ\n");
  exit(1);
 }
 while ((*c = getchar()) != EOF) {
  if (i == *c) count++;
 }
 printf("%d\n", count);
 return 0;
}
できました

396 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:08:14 ]
これはひどい(笑

397 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:10:26 ]
>>382
#include<stdio.h>
#include <stdlib.h>
int main(void)
{
int *c, count = 1, i;
c = (int *)malloc(1);
puts("入力どうぞ");
if ((i = getchar()) == EOF) {
printf("ちゃんと入力しろ\n");
exit(1);
}
while ((*c = getchar()) != EOF) {
if (i == *c) count++;
}
printf("%d こです\n", count);
return 0;
}
すいませんこっちでした

398 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:11:32 ]
どっちも微妙にまちがってんじゃねえか

399 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:14:07 ]
だめだこりゃ

400 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:28:26 ]
故意だろ



401 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:33:36 ]
>>382
有限長の文字列を総当りで生成して、それをコンパイルしていくプログラムを作れば
そのうち自分が作りたかったプログラムが自動生成されるんじゃね?

402 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:35:19 ]
>>401
すっげぇ頭いいなおまえw

403 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:36:59 ]
そして自分が作りたかったプログラムかどうかを
判定するプログラムが要るという話になるんですね分かります

404 名前:デフォルトの名無しさん [2008/06/18(水) 21:44:13 ]
故意はかんべん

405 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:44:54 ]
なんだこのviper的なノリはwww

406 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:28:54 ]
>>389
どうしても分からないなら資格取れるわけないじゃん
なんかおかしくね?

407 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:30:56 ]
またこの流れかよw
>>60へどうぞww

408 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:31:54 ]
恋はかんべん

409 名前:デフォルトの名無しさん [2008/06/18(水) 23:28:46 ]

関数を呼び出す時って他の文字に置き換えてから使えたほうがいいんですか?

例えばadd関数を呼び出してif文に入れるときの場合
x=add(n);
if(x==1)
みたいな感じか
if(add(n)==1)
どちらがいいんでしょうか?
下のほうでやっていたら友達にそのやり方は見にくくてありえないしプロがそんなことやったら確実に怒られるといわれたんですがどうなんでしょうか?

410 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:31:17 ]
場面にもよるが、ステップによるデバッグがしづらいかもしれない。>後者



411 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:31:44 ]
いや好きにすればいいと思うよ
ただ、関数の結果を他にも使う予定があるなら上の方が良いんじゃない?

412 名前:デフォルトの名無しさん [2008/06/18(水) 23:36:20 ]
できる限り前者でやったほうがいいんですか?
習ってる途中で後者の方がわかりやすいと思ったのですがプログラムできる友達に言われたので…


413 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:39:07 ]
>>409
その関数が非常に高コストで、その判定部がループの中にあるなら
よくないなあとは思うけど、そうでないなら別に気にしない。

その友達がプロで怒られた経験があるのであれば、もう少し細かい
理由を教えてもらえばいいんでない?

414 名前:デフォルトの名無しさん [2008/06/18(水) 23:40:21 ]
ほかにも使うというのは
x=add(n);
if(x==1)
if(x==2)
みたいな感じですか?
あとプログラマーみたいな人たちの間ではどちらが主流なんでしょうか?


415 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:40:54 ]
ちなみに、プロになれば周りのコードにあわせるということのほうが大事。
優劣をつけられない記法の差において、俺はこうすべき!って一人で
走ってるなら怒る。

416 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:40:58 ]
>>409
その友達がどの程度のプロなのかはこの際置いておくとして、どちらがいいとか悪いとか言うことはない。
明確なことは、前者は変数を一つ使用し、後者は使用しないということである。
add() の返す値をただ一回しか評価しないのなら、後者のように書いて何の問題もない。
値を何度も評価するのなら、前者のように一時変数に格納する必要があるか、なくても効率がいいかもしれない。
後は単なる好みの問題である。

417 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:41:32 ]
文脈によるがこの場合はどちらでもいい。
ところでこのお題はホントはこうじゃなかった?
x = add(n) ; if (x == 1) 

if ((x = add(n)) == 1) 
の比較。

418 名前:デフォルトの名無しさん [2008/06/18(水) 23:42:40 ]
>>413
友達はプロではありません 
普通に大学生なので…
多分趣味でやってる程度だと思います。
どこで習ったかはわかりませんが

419 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:43:35 ]
値を使い回したい場合に変数に入れるのは当然として、
そうでない場合はメリットとデメリットがあるので好きにすればいいと思うよ。

○ メリット
・ 関数呼び出しが長い場合、読みやすくなる
・ デバッグ時に戻り値が何だったか分かりやすい

○ デメリット
・ その場でしか使わないような無駄な変数が広いスコープ上に現れてしまう場合もある

420 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:44:20 ]
慣用句的なもの
 if ((fp = fopen(〜)) == NULL)
Is系のメソッドに代表される真偽返却メソッド
 if (isalnum(〜))

これ以外は大抵分けて書くようにしてるね。
多少冗長に思えても、他の人が読みやすいか、また、
誤解を与えにくい書き方になっているか、それを重視してる。



421 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:55:16 ]
誤解を与えにくいように、というのはあまりメジャーではない二項演算子を
使う時などに、冗長ではあるが、括弧をつけて明示するようなことね。

ちゃんと知ってればその括弧が無くても正しく動作する事は理解できるが、
うろ覚えの人でも勘違いを起こさない。

もしかしたら研修明けの新人がメンテするかもしれないし。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<94KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef