07/09/24 11:12:55
教えあおう。
2:デフォルトの名無しさん
07/09/24 11:19:44
コマンドライン引数を受けとるメインは
main(int argc, char *argv[])
とかいってみる
3:デフォルトの名無しさん
07/09/24 11:20:46
すごい勉強になった。
4:デフォルトの名無しさん
07/09/24 12:35:17
const char *argv[]のほうがよくね?
5:デフォルトの名無しさん
07/09/24 12:36:41
ノーコメント
6:デフォルトの名無しさん
07/09/24 14:50:22
すごい勉強にならなかった。
7:デフォルトの名無しさん
07/09/24 15:02:59
ヘコんだ…orz
8:デフォルトの名無しさん
07/09/24 15:58:37
const つけたら規格違反じゃん
9:デフォルトの名無しさん
07/09/24 20:49:05
>>8
規格読んだこと無いのがバレバレだな
10:デフォルトの名無しさん
07/09/24 21:19:30
++a = a++ + ++a;
って、どうなるの?
11:デフォルトの名無しさん
07/09/24 21:23:35
さぁ
aの型と値による
12:デフォルトの名無しさん
07/09/24 21:29:23
>>10
少なくとも鼻から悪魔が出ることは間違いない・
13:デフォルトの名無しさん
07/09/25 11:07:40
>12
ちょwww間違いないのかw
14:デフォルトの名無しさん
07/09/25 21:51:10
>>13
間違いというわけでなく結果が未定義なので処理系依存。
URLリンク(www.st.rim.or.jp)
15:デフォルトの名無しさん
07/09/26 20:57:09
>14
いあいあ
「鼻から悪魔」ってのは「結果が未定義なので何が起きてもおかしくない」って意味だろ?
それを「鼻から悪魔が出ることは間違いない」って言っちゃうと
「間違いなく鼻から悪魔が出る」という意味になって「未定義」って意味でなくなっちゃうって意味で笑ったのだけど…
分かりにくかったらスマンカッタ
16:デフォルトの名無しさん
07/09/26 21:09:34
いや、俺はわかったぞ。
17:デフォルトの名無しさん
07/09/26 21:45:28
鼻から悪魔が出ることは間違いない=未定義であることが間違いない。
ってことか。
18:デフォルトの名無しさん
07/09/27 00:43:55
>>15
>13を「間違いなのか」って読み間違えて「間違いじゃなくて未定義だよ」ってレスした。
>>14で言いたかったことは>>17みたいな感じ。
壊れた日本語で誤解させてスマソ。
19:デフォルトの名無しさん
07/10/08 15:49:01
do{
printf("%d\n", i);
ji = getchar();
i++;
}while(i <= 5);
このループを回すと、
a ←入力
1
2
d ←入力
3
4
というふうに勝手に二度回ってしまうんですけど、どうしてでしょうか?
コンパイラはgcc4.1.2なんですが。
20:デフォルトの名無しさん
07/10/08 15:58:43
>>19全部を見せてくれないとなともいえねぇ
21:デフォルトの名無しさん
07/10/08 16:09:19
>>19
全部を見るまでもない。getchar()は一文字入力関数なのに
aを入力した段階で'a'と'\n'の二文字を入力してしまっているので
二度目のループに到達してしまう。
回避するには、改行文字を読み捨てるか一行入力単位で処理するか。
22:デフォルトの名無しさん
07/10/08 16:10:46
>なともいえねぇ
馬鹿丸出しだな。
23:デフォルトの名無しさん
07/10/08 16:37:53
例えば
int a[5],x;があって
scanf("%d",&x);で123と入力したとき
a[0]に1 a[1]に2 a[2]に3
を入れるにはどうすればいいでしょうか
24:デフォルトの名無しさん
07/10/08 16:47:39
>>23
a[0] = x / 100;
a[1] = x / 10 % 10;
a[2] = x % 10;
or
scanf("%1d%1d%1d", & a[0], &a[1], &a[2]);
25:デフォルトの名無しさん
07/10/08 16:50:26
>>24さんありがとうございます
しかしそれだと不特定多数の場合使えないので
一般化してもらえないでしょうか?
26:デフォルトの名無しさん
07/10/08 16:51:06
すみません聞き方が間違っていました
一般化したものも作ってもらえないでしょうか
27:デフォルトの名無しさん
07/10/08 17:00:17
不特定多数って入力の桁数に依存しないって意味か?
とするなら下位はa[0]に入れるのが自然な気がするが、上位に入れるのでいいのか?
28:デフォルトの名無しさん
07/10/08 17:04:07
さっきはint a[5]でしたが要素は
#define N 20などとしておきNを要素とします
入力はNを超えない程度にお願いします
良く分からないので上位下位どちらもお願いしてよろしいでしょうか
29:デフォルトの名無しさん
07/10/08 17:05:08
>>25
ヒントだけでは何にもできないならこのスレにいる意味がないのでは?
少しくらいはない知恵を絞ってみてから他人を頼りなさいよ。
30:デフォルトの名無しさん
07/10/08 17:06:42
つーか、>24の下の方法は充分一般化されていると思うのだが。
そもそも、一桁ずつ配列に入れたい理由が判らんからなんとも言えんが。
31:デフォルトの名無しさん
07/10/08 17:08:33
>>24の下のほうでは入力される値が12345など桁が増えれば
それにしたがってコードも書き直さなければいけないので十分一般化されているとはいえません
32:デフォルトの名無しさん
07/10/08 17:08:34
>>21
レスありがとうございます。
文字当てゲームを作りたかったのですが、
とりあえずの解決策として、以下のようにしてみました。
33:32
07/10/08 17:10:05
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define BIGSMALL 97
int main(void)
{
char qchar[10];
char ji[256];
int i = 0;
srand((unsigned int)time(NULL));
qchar[0] = (rand() % 25) + BIGSMALL;
printf("%c", qchar[0]);
do{
scanf("%s", ji);
printf("%c\n", ji[0]);
if (ji[0] == qchar[0]){
printf("正解!\n");
return 0;
}else if (ji[0] < qchar[0])
printf("届かない\n");
else if (ji[0] > qchar[0])
printf("行き過ぎ\n");
i++;
}while(i <= 5);
printf("ゲームオーバー\n");
return 0;
}
あまりスマートでない気がしますが、より良い方法はないでしょうか?
34:32
07/10/08 17:11:41
失礼しました。
テスト中のソースなので、余計なものが入ってます。
ご了承ください。
35:デフォルトの名無しさん
07/10/08 17:18:41
gets(s);
n = strlen(s) - 1;
a = malloc(sizeof(int) * n);
for (i = 0; i < n; i++) *(a + i) = *(s + i) - '0';
free(a);
36:デフォルトの名無しさん
07/10/08 17:27:01
なぜfor文に値を掛けてさらに代入しているんでしょうか?
37:デフォルトの名無しさん
07/10/08 17:28:52
入力された時点で桁数が分からないから桁数分だけ処理をするため。
もうちっと、読解しようとする努力をしてみてもいいんじゃない?
38:デフォルトの名無しさん
07/10/08 17:47:49
>>36
>29
つーか、forに値を掛けるって何だ?
39:デフォルトの名無しさん
07/10/08 18:03:43
たぶん for (i = 0; i < n; i++) * (a + i) のことだと思われ
* は掛け算じゃない
40:デフォルトの名無しさん
07/10/08 18:10:51
* (a + i)
↓
a[i]
41:デフォルトの名無しさん
07/10/09 09:22:59
20回くらいコンパイルエラーやセグ違反を繰り返して出来た
人生初のCプログラムをここに記す
#include <stdio.h>
main()
{
int i;
int a[99];
i = 0 ;
while ((a[i] = getchar()) != '\n')
i++;
a[i] = '\0';
i = 0 ;
while (a[i] != '\0')
putchar(a[i++]);
putchar('\n');
return 0;
}
実行結果
$ a.out
おまんこ
おまんこ
$
42:デフォルトの名無しさん
07/10/09 09:30:37
>>41
カレントディレクトリをPATHに入れるのは危険なのでやめた方がいい。
それはいいとして、アナクロな書き方だなぁ。
43:デフォルトの名無しさん
07/10/09 09:38:47
>>42
なるほど危険なことしてましたね。
それにしてもUNIXっていいですね。DOSなら暴走ですね
44:デフォルトの名無しさん
07/10/09 09:46:00
大丈夫、UnixでなくともWindowsならそこそこ保護機能は働く。
PATHにカレントを含めると何が危険なのかというと、例えば/tmpにうっかり(或いは故意に)
lsと言う名前の実行ファイルを置いてしまっているときにcd /tmpしてlsしたときにはまるから。
また、既存プログラムとたまたま同じ名前のプログラムを作ったときにも同じことが言える。
例えば、calというプログラムをつくってしまい、./calではなくcalと実行すると/bin/calが動くわけで。
45:デフォルトの名無しさん
07/10/09 22:24:37
#include <stdio.h>
#include <stdlib.h>
typedef struct lst_t {
char chr;
struct lst_t *next;
} lst_t;
lst_t *makelist(char *);
void putlist(lst_t *);
int main(int argc, char *argv[])
{
lst_t *lst;
lst = makelist("\nopurun");
putlist(lst);
return 0;
}
lst_t *makelist(char *str)
{
lst_t *lst = NULL;
if (*str) {
lst = (lst_t *)malloc(sizeof(lst_t));
lst->chr = *str;
lst->next = makelist(str + 1);
}
return lst;
}
void putlist(lst_t *lst)
{
if (!lst) return;
putlist(lst->next);
putchar(lst->chr);
free(lst);
}
46:ワカメ高専
07/11/27 01:07:10
[-3,3] fx=1/(1+5x^2) 分点の数 10個(n=9)
これをラグランジュで求めて結果を出力するプログラムを作れって言われたけどさっぱりでしゅ(c c++)
47:デフォルトの名無しさん
07/11/27 01:57:51
>>46
課題丸投げは宿題スレへ
スレリンク(tech板)
48:デフォルトの名無しさん
07/12/01 19:33:28
C言語を始めてもうかれこれ1年くらい経ちますけど
FFみたいなソフトはどうやって作るんですか?
ゲーム作成を歌ってる書籍に載ってるゲームなんて
他人にゲームとして公開できるレベルではありませんよね
49:デフォルトの名無しさん
07/12/01 19:41:08
>>48
まずはそのレベルでも達しないと、さらにその上には行けないと思うよ
50:デフォルトの名無しさん
07/12/01 20:30:03
>>48
他人に後悔もできないレベルのゲームが作れない人間がいきなりいいものなんてなかなか作れないよ。
ゲームは画像処理やサウンド制御、データ作成、バランス調整、シナリオ作成、企画などなどプログラム技術
以外の知識や経験、センスも多く必要。
51:デフォルトの名無しさん
07/12/02 02:13:17
ゲームって一人で作れるもんなのか?
低レベルの俺には想像できんな
52:デフォルトの名無しさん
07/12/03 13:32:04
>>48
英語始めて一年くらい経ちますけどハリーポッターみたいな長編小説はどうやって書くんですか?
というくらい頓珍漢な質問だね。
53:デフォルトの名無しさん
07/12/03 23:58:28
>>52
あんたアフォ?
54:デフォルトの名無しさん
07/12/04 00:41:19
いや、適切な喩えだと思うぞ。
55:デフォルトの名無しさん
07/12/04 02:20:08
微妙なところだと思う。言いたいことはわかるけど、それを英語初めて一年目の
人間に言われても「なんで?」ってなりそうでうまくたとえられていないような気がする。
56:デフォルトの名無しさん
07/12/04 06:55:45
>>48
> ゲーム作成を歌ってる書籍に載ってるゲームなんて
> 他人にゲームとして公開できるレベルではありませんよね
何のゲームかは知らんが、君はその書籍に載っているゲーム
くらいは作れるのかい?
その書籍のソースをコピペするだけなら誰でも出来る。
要は、その書籍からゲームの作り方を学び取り
そこから初めて自分なりのゲームを考え始めるもんだろう
まぁC言語1年って事は、まだまだ先の話だろうけど。
57:デフォルトの名無しさん
07/12/04 13:01:56
>>55
>それを英語初めて一年目の人間に言われても「なんで?」
まさにこれだろ。
>それをプログラム初めて一年目の人間に言われても「なんで?」
て事。
58:デフォルトの名無しさん
07/12/04 21:34:50
ゲーム作成入門書籍(簡単なテトリス)
↓
プログラムのシステムの壁(FCのFF)
↓
越えられないボリュームの壁(SFCのFF)
↓
越えられないマルチメディアの壁(PSのFF)
↓
指をくわえて見てるだけの存在(PS2のFF)
無理です
59:デフォルトの名無しさん
07/12/06 00:25:44
>>58
すごくわかりやすいwww
60:デフォルトの名無しさん
07/12/06 12:43:47
システムとかは勉強すりゃいいが
ボリュームの壁はきびしい
61:デフォルトの名無しさん
07/12/06 14:04:02
何十人-何百人ものスタッフが何ヶ月-何年もかけて作ってるわけだからなぁ。
62:デフォルトの名無しさん
07/12/06 21:35:52
>>58
>プログラムのシステムの壁(FCのFF)
俺、もうこの時点でマルチメディアの壁が越えらんネ。
63:ケンイチ
07/12/06 22:50:02
皆さん。
今、C言語の勉強をしているのですが、どうしても分からないので、分かる方がいましたら教えてもらいたいのですが・・・。
キーボードから文字を入力して(scanf)を使用して、1を押したら「+」が表示され、2を押したら「###」、3を押したら「*****」
と+、#、*を判断して押したキーボードにより結果が変わる仕組みなのですが、さっぱり分かりません。
例えば、3をおすと、
+
###
*****
5を押すと、
+
###
*****
+++++++
#########
と、言うプログラムなのですが・・・。
使用する関数は、if、for、while等です。
分かる方、ぜひ教えてください。
よろしくお願いします。
64:デフォルトの名無しさん
07/12/06 22:54:01
何年か前に、同人製作板のゲーム関係のスレをチェックしてたことがあったけど、
「市販レベルのゲームをめざします。うちはスタッフにもそれなりのレベルを要求しますよ」
みたいな募集がいっぱいあったね。
募集してる当人たちは「総指揮」とか「ディレクター」とか「アドバイザー」とか、実作業は
しないであろう肩書きばっかりなの。
(ゲームデザイナーをやるって言うやつでさえマシに見えるレベル)
65:デフォルトの名無しさん
07/12/06 23:04:05
今はそんな募集すらない気が
66:デフォルトの名無しさん
07/12/06 23:40:03
リア厨の儚い夢だったってことさ
67:デフォルトの名無しさん
07/12/07 00:05:34
>>61
何年もかけてるわけない
そんなにかかったらM取れねーよ
68:デフォルトの名無しさん
07/12/07 09:33:49
>>63
そのぐらいの丸投げなら宿題スレの方が早いと思うぜ。
テンプレちゃんと守れば。
丸投げじゃないなら、何が分からんかもうちょい詳しく。
>>64
2chで総指揮なんて、実作業してるメンバーより大変そうなんだがな。
メンバーの作業速度すら分からないのに、
作業項目洗い出して、細分化して、担当振って、予定表出して、
予定とズレたら他の担当分と調整しながら修正修正修正。
そして遅れてるヤツのケツを叩く。
ん?なんか言葉にしたら簡単そうに見えるなww
69:デフォルトの名無しさん
07/12/07 18:46:33
ろくに才能も知識も経験もないしこつこつ努力する気もないけど
自分の名前で何かすごいものを出してちやほやされたい
などという厨な望みが叶うほど現実世界は甘くない
ということを悟るのが早いか遅いかの違いだけ
漏れにはまだその願望が残っていることを認めよう
70:デフォルトの名無しさん
07/12/08 01:37:31
>>68
実作業やるスタッフのほうが大変にきまってるだろ。
そもそも「全職種募集。おれ総指揮」なんて言ってるやつはなんにもできないから、そんなことを言っているん
であって、作業項目の洗い出しとかできるわけない。
(実際、ゲーム作ったことのやつばっかだったし)
さらに言えば、数人程度でやってる作業に、専業の監督なんていらないし。
71:デフォルトの名無しさん
07/12/08 08:42:22
でも金持ちなら話は別だな
年数十億をポケットマネーで出せる奴なら人も集まるだろう
72:デフォルトの名無しさん
07/12/08 15:16:24
>>70
あー、いや。
>そもそも「全職種募集。おれ総指揮」なんて言ってるやつは
>なんにもできないから、そんなことを言っているんであって
めっちゃ同意なんだけど。
言いたかったのは「ちゃんとやる総指揮って、んなに楽なもんじゃないぞ」ってことで。
実際シキリ役居なかったときに1回やったけど、もうやりたく無いわ。
単なるADVだったんだけど、何もノウハウ無いし
ネットで検索しながらADVゲームの作り方を1から勉強して、WBSおこして・・・。
遊びでマジメにやり過ぎたと後悔した。
ちなみにプログラマと兼任だった。
経験上数人でも専業監督は欲しい。
73:デフォルトの名無しさん
07/12/09 15:15:52
なんかコピペであったな。失敗する同人ゲームとかなんとか。
うろ覚えだけど
・発起人(管理人)がディレクター、アドバイザーを名乗る(もちろんプログラム未経験)
・自分はなにもできないのに周りのメンバーには高いレベルを要求する。
・「遊びじゃないんで」「本気です」が口癖。
・集まってくるのメンバーが「テスター」「声優」ばかり。
・管理人の仕事(実作業)はブログで夢(壮大な計画)を語ること。
・そのブログも「病気」とか「コンピュータウィルスにやられて・・・」とかで休みがち。
・ペンネームに「月」とか「水」とかがつく。
とかなんとか。忘れたwテキトーに書いたんでみんなも忘れてくれ。
74:デフォルトの名無しさん
07/12/09 16:17:04
それは大失敗だな
75:デフォルトの名無しさん
07/12/09 22:31:14
板違いだカスども
76:デフォルトの名無しさん
07/12/11 16:00:46
自動でゲームを作ってくれるプログラムをC言語で書け
77:デフォルトの名無しさん
07/12/20 16:45:29
mpeg compass.jp
名古屋駅近辺でお話しましょう
78:デフォルトの名無しさん
08/01/07 12:37:00
>67
スクエニ辺りは何年も掛かってそうだが
発売延期繰り返したからな、一時期w
79:デフォルトの名無しさん
08/01/21 20:06:35
Cプログラマの為に、ポイントをまとめたドキュメントを販売しています。
プロのプログラマでもあまりにレベルが低い人が多すぎます。
そんな人に限って、自分のレベルの低さを自覚していない、、、
本人は構わないかもしれませんが、その下についた新人プログラマは
たまったものではありません。(私が経験しました。)
今になって分かりました。
彼らもまた、理解できていなかったのです。
プログラミング言語の一番の習得の近道はきちんと理解している人にアドバイスをもらうこと。です。
私のC言語に取り組んだ7年間をすべてぶつけたつもりでテキストを作りました。
私の会社の後輩からは、どんなテキストよりもわかりやすかった!や、
今まで教えてくれていた先輩や、テキストたちが、ちゃんと理解できていないことがわかりました。
と、嬉しいコメントをたくさんもらいました。
そしてなにより、彼らの社内での評価がとても高いということが、私の誇りです。
興味がある方はどうか、下のサイトをみてみてください。
URLリンク(mori.eco.to)
80:デフォルトの名無しさん
08/01/21 20:13:45
二日も連続でマルチとな・・・
誰か買ってやれよ、んでアップして突っ込み所みんなで探そうぜ。
俺は金ないからパスね。
81:デフォルトの名無しさん
08/01/21 23:22:10
>>80
qsort()の実装にmalloc()の使用を認める程度だから買うだけ野暮でしょ。
82:デフォルトの名無しさん
08/01/22 00:22:06
>>81
そこは目を疑ったな。
マージソートを想定してるのかね。
普通はクイックソート+O(N^2)ソート(要素数少ない時)な実装にするはずだが。
83:デフォルトの名無しさん
08/01/22 02:49:52
こちとらメモリをGB単位で使うってのに、qsort()でmalloc()されたらたまったもんじゃねぇっての。
84:デフォルトの名無しさん
08/01/23 00:13:38
printf("C言語の学習");
これを
printf("C言語の
学習");
のように改行しても大丈夫なようにする方法ってありますか?
85:デフォルトの名無しさん
08/01/23 00:14:50
printf("C言語の\
学習");
86:デフォルトの名無しさん
08/01/23 00:15:21
printf("C言語の"
"学習");
87:デフォルトの名無しさん
08/01/24 12:20:16
>> 85,86
ちょうどそのことに調べようと思ってた時だった。
サンキュ~
88:デフォルトの名無しさん
08/03/23 20:25:01
初めて作ったプログラムです。
どうですかね。うまくできてますかね。
#include <stdio.h>
#include <stdlib.h>
/*関数roの宣言*/
int r(int si,int tai);
int main(int argc, char *argv[])
{
int ro,si;
int tai;
printf(" ローレル指数を計算します。\n");
printf(" ローレル指数とは\n ");
printf("あなたが痩せているか太っているかを調べる数値です。\n");
while (1){
printf(" \n 身長を入力してください。(cm): ");
scanf("%d",&si);
if (si<0){printf(" error!!\n");break;
}
printf(" \n 体重を入力してください。(kg): ");
scanf("%d",&tai);
if (tai<0){printf(" error!!");}
ro=r(si,tai);
89:デフォルトの名無しさん
08/03/23 20:31:36
l三`ー 、_;:;:;:;:;:;:j;:;:;:;:;:;:_;:;:;_;:〟-三三三三三l
l三 r=ミ''‐--‐';二,_ ̄ ,三三三彡彡l_ この感じ・・・・
lミ′  ̄ ー-'" '=ミニ彡彡/‐、ヽ
l;l ,_-‐ 、 __,,.. - 、 彡彡彳、.// zipか・・・・
_______∧,、_∥ `之ヽ、, i l´ _,ィ辷ァ-、、 彡彡'r ノ/_ ______
 ̄ ̄ ̄ ̄ ̄ ̄ ̄'`'` ̄ 1  ̄フ/l l::. ヽこ~ ̄ 彡彳~´/  ̄ ̄ ̄ ̄ ̄ ̄
ヽ ´ :l .l:::. 彡ィ-‐'′
ゝ、 / :. :r-、 彡′
/ ィ:ヘ `ヽ:__,ィ='´ 彡;ヽ、
_,,..-‐'7 /:::::::ヽ _: :_ ヽ ィ´.}::ヽ ヽ、
_,-‐'´ { ヽ:::::::::ヘ `'ー===ー-- ' /ノ /::::::ヘ, ヽー、
90:デフォルトの名無しさん
08/03/23 22:52:55
>>88
エラーチェックがそれじゃダメなんじゃないの?
91:デフォルトの名無しさん
08/03/24 07:27:46
変数名taiとかsiじゃ意味通じにくいから、ローマ字表記ならtaiju、shinchoとかの方がよくね?
92:デフォルトの名無しさん
08/03/24 11:17:56
>>90
scanf()を生で使うとどの途填まるから、エラーチェックなんて無意味だね。
93:88
08/03/24 16:23:46
すいまっせん。途中で書き込めなくなってしまいまして・・
つづきです。
printf(" \nあなたのローレル指数は%dです。\n",ro);
if (ro>=114&&ro<144){
printf(" \n全国的に見て、平均的な体系です。\n\n");}
if (ro>144&&ro<=154){printf(" \n全国的に見て、太り気味な体系です。\n\n"); }
if (ro>154){printf(" \n全国的に見て、太り過ぎな体系です。\n\n");}
if (ro<114&&ro>=104){printf(" \n全国的に見て、やせ気味な体系です\n\n");}
if (ro<104){printf(" \n全国的に見て、やせ過ぎな体系です。\n\n");} }
system("PAUSE");
return 0;
}
int r(int si,int tai){
int ro;
ro=100*tai/(si*0.1*si*0.1*0.1*si)*100;
return ro;}
94:デフォルトの名無しさん
08/03/24 17:23:29
int でうまく行くのかも知れないけど、よくわかんないや。
95:デフォルトの名無しさん
08/03/24 17:41:58
途中で0.1を掛けているから割り算もdoubleで行なわれるので一応問題にはならない。
しかし、100を掛けたり0.1を何度も掛けたり、なんだこの式。
96:88
08/03/24 18:53:46
>>95
いや~
intって、3万まででしたよね。
だから、できないのかなぁ~なんて思っただけです。
できるんですかね。
97:デフォルトの名無しさん
08/03/24 19:10:03
int が3万までって DOS 時代かよ。
98:デフォルトの名無しさん
08/03/24 19:29:59
int でやるんだったら、もうひとふんばりして unsigned char でやる手もあるのでは?
99:デフォルトの名無しさん
08/03/24 19:33:41
>>96
だから、0.1を掛けている段階で(intオンリーで計算しようと言う目論みは)台無しなんだってば。
どうせdoubleで計算するなら素直な式にしておくべき。
100:88
08/03/24 20:34:13
>>97
なんか、工学社の
やさしいC++っつー本にはそう書いてあるんスよ。
101:デフォルトの名無しさん
08/03/24 20:36:05
十何年前の本だ?
102:デフォルトの名無しさん
08/03/25 01:40:09
やさしいC++ = C
ってなんか微妙な表現だな。
どーせ、構造体に関数が書けるとか書いてあるのだろう。
103:デフォルトの名無しさん
08/03/25 07:28:50
まあ、どんな環境でも 32767 までは保証している・・・というのなら正しいけどな。
本を持ってないからどういう記述してるのかは知らんが。
104:88
08/03/25 10:27:17
>>101
2003年の本ス。
付録のコンパイラが悪いんかもしらん。
105:デフォルトの名無しさん
08/03/25 12:13:26
試食版はもう学習用途で配布するのはやめたほうがいいと思う
106:デフォルトの名無しさん
08/03/25 17:58:11
ああ、あのコンパイラか。
それなら確かに int は 32767 までだな・・・。
107:デフォルトの名無しさん
08/03/25 23:30:16
コンパイラの問題っていうより本の問題だろ。
コンパイラ換えたら今度はintって4バイト固定だと思うんじゃね?
108:デフォルトの名無しさん
08/04/02 20:49:06
<limits.h>で確認すりゃいいんじゃね
109:デフォルトの名無しさん
08/04/02 22:54:15
規格は32767までなんだからいいんでねぇの
110:デフォルトの名無しさん
08/04/02 22:55:09
c言語で、ニブルを、扱いたいですが、どうしたら、うまく、いきますか、?
111:デフォルトの名無しさん
08/04/03 00:23:48
>>110
ニブルってググったら4bitデータだったみたいだけど、これでいいのかな?
別にintの下4bit使えばいいじゃんとか思うけど、それが嫌ならビットフィールドかな。
112:デフォルトの名無しさん
08/04/03 07:06:59
>>109
32767 は最大値の下限であって・・・
113:デフォルトの名無しさん
08/04/03 08:27:27
>>112
組み込みならそんなの当たり前なのであって・・・
114:デフォルトの名無しさん
08/04/03 18:23:00
教科書なら 「32767 にしかならない」 ような表現は避けるべきだろ。
115:デフォルトの名無しさん
08/04/03 23:10:04
「規格上の最低ラインはこうだが現実としてはこうである」って説明が欲しいね。
116:デフォルトの名無しさん
08/11/27 22:53:21
117:氷魚
09/01/22 02:45:33
#ifdef H
#define G Baka()
#else
#define (ここにGは何もしないというのを入れたい)
#endif
↑
もう長く使ってなかったから忘れたんですが
何入れたらいいんでしょうか。
118:デフォルトの名無しさん
09/01/22 06:23:44
do {} while (0)
119:氷魚
09/01/22 06:31:04
>>118
ありがとうございます。
120:デフォルトの名無しさん
09/01/22 22:29:28
((void)0) だろ。普通。
121:デフォルトの名無しさん
09/02/11 16:28:11
getcとかの標準入力ってバッファが空の時だけ入力を待つんですか?
122:デフォルトの名無しさん
09/02/11 21:06:24
はい。
123:デフォルトの名無しさん
09/02/12 02:44:06
((void)0)って何だよw
124:デフォルトの名無しさん
09/02/12 13:37:44
空文ではなく、何か式を書かないといけないけど何もすることが無いときに使う。
125:デフォルトの名無しさん
09/02/13 23:47:48
void式も知らんようでは素人と言わざるを得ない。
((void)0)にしておくとコンマ演算子が使えるというメリットがある。
126:デフォルトの名無しさん
09/02/13 23:56:58
そりゃ素人のスレだし・・・
127:よろしければ教えてください。
09/03/05 15:26:38
何がまずいのか分かりません。仕様を分かってないだけなんだと思うのですが、
どこの部分の仕様を勉強すればいいでしょう?教えてください。
// 参考:
// URLリンク(homepage2.nifty.com)
// 猫でもわかるプログラミング 第28章 構造体とポインタ ・ 第33章 メモリの動的確保
#include <stdio.h>
#include <stdlib.h>
struct tpl_address_list { //struct template
long* ptr;
long num;
long ix;
};
void allocst(struct tpl_address_list **pt, long n) {
long i, j, k;
struct tpl_address_list *pl, *pm;
*pt = (struct tpl_address_list *)malloc(n * sizeof(struct tpl_address_list *)); // 確保
printf("%ld malloc\n", *pt); // dbg
if (*pt == NULL) {
printf("allocation failed.\n");
return;
}
for (i = 0; i < n; i++) { // 初期化。値はてきとーです
(*(*pt+i)).ptr = NULL + i;
(*(*pt+i)).num = 0 + 10*i;
(*(*pt+i)).ix = 0 + 100*i;
}
pl = *pt;
pm = *pt;
中略(printfとfor文だけ)
return;
} 以下略。
128:デフォルトの名無しさん
09/03/05 16:55:36
エラー内容も貼れ
129:デフォルトの名無しさん
09/03/05 20:41:49
>(*(*pt+i)).ptr = NULL + i;
が怪しい。
130:127です。エラーの状況です。お願いします。
09/03/06 01:47:15
allocst関数に初期化部分を加えたらexeが落ちたが何のエラーも出ず。
allocst関数よりも後の、mallocの直前までは動いてました。nの値を変えると落ちたり最後までいったり。
以下n=8のときの例。構造体は以下のアドレスになりました。
i .ptr .num .ix
a 0 4077688 4077692 4077696
a 1 4077700 4077704 4077708
a 2 4077712 4077716 4077720
a 3 4077724 4077728 4077732
a 4 4077736 4077740 4077744
a 5 4077748 4077752 4077756
a 6 4077760 4077764 4077768
a 7 4077772 4077776 4077780
初期化のfor文直後に読み出した、上記アドレスの中身がこれ。( i >= 6 は略。設定値通りでした)
i .ptr .num .ix
c 0 0 0 0
c 1 1 10 100
c 2 2 20 200
c 3 3 538976288 909588792
c 4 540162359 40 400
c 5 5 50 500
構造体の中身をprintf文で見たところ、書き換わっていってます。(列が多いのは、書式がおかしいのかと思っていろいろ試したため)
i &pl[i].ix (*(*pt+i)).ix (*(pl+i)).ix (*(pm++)).ix pl[i].ix
c 0 4077696 0 0 0 0
c 1 4077708 100 100 100 100
c 2 4077720 200 200 200 200
c 3 4077732 926363700 859190070 809054521 875900985
c 4 4077744 729051178 729051178 729051178 729051178
c 5 4077756 538976288 538976288 538976288 538976288
c 6 4077768 690563883 690563883 690563883 690563883
c 7 4077780 1764646249 1764646249 1764646249 1764646249
131:デフォルトの名無しさん
09/03/06 01:59:01
>*pt = (struct tpl_address_list *)malloc(n * sizeof(struct tpl_address_list *)); // 確保
何を確保してるか説明してみろw
132:127
09/03/06 02:14:03
構造体配列n個分の領域(の先頭アドレス)?
133:デフォルトの名無しさん
09/03/06 02:23:17
例えば、intをn個領域確保するには
int ip, n;
p = malloc(n * sizeof(int));
するだろ?
じゃあ構造体struct tpl_address_listをn個領域確保するにはどう書くべきだ?
134:デフォルトの名無しさん
09/03/06 02:24:08
ミスった。
ipじゃなくて*pな
135:127
09/03/06 03:42:15
ぬふぁ!
~malloc( n * sizeof(struct tpl_address_list) )ですね。
ポインタのポインタが理解できなくて悩んでたときに
よく考えずに * を増やして回ったんです。
結果、確保した領域の外まで書き込んでいたということですか。
<ポインタのポインタ使うのか~。mainで渡したポインタのアドレスが
**pt になると。すると、*pt の意味は、、、、あれ、どうなるの??
うーん、まぁ配列はポインタだからsizeofに * 要るよね。
この例でもついてるし。(<-たぶんポインタの配列の確保の例)>
といった具合に混乱しておりました。え?メシマズスレにいそうだって?
おかげさまで無事動くようになりました。皆々様ありがとうございました。
ていうかくだらないミスでごめんなさい
136:デフォルトの名無しさん
09/05/05 18:40:08
Windowsで、コマンドプロンプトが消えないように、
system("pause");
で停止しておく方法は有名だと思います。
pauseコマンドを使用せずに、C言語の関数だけで記述できないでしょうか?
ちなみに、
getchar()
だと、[ENTER]を押さないと次にすすまないのが難点です。
137:デフォルトの名無しさん
09/05/05 20:59:10
>>136
ENTERを叩かないと次に進まないのはPAUSEも同じだと思うのだが。
138:デフォルトの名無しさん
09/05/05 22:53:45
Sleep(1000);で1秒止めるとかの意味?
139:136
09/05/07 14:49:59
137,138>
私の質問の内容があいまいでした。申し訳ございません。
PAUSEだと、ENTERだけでなく、任意のキーで次に進めたと思います。
任意のキーで次に進みたいのですが?
140:デフォルトの名無しさん
09/05/07 15:28:00
>>139
標準入力は、通常の端末エミュレータでは改行文字の入力で有効になるから、任意の文字一文字で反応させるのは無理。
つまり、標準関数だけではできないのでなんらかの環境依存する手段が必要になる。
141:デフォルトの名無しさん
09/05/09 16:21:49
>なんらかの環境依存
>Windowsで、コマンドプロンプトが消えないように
...まぁそれはともかく、コンパイラに何を使っているかに夜けど getch() とか使え内科医?
142:デフォルトの名無しさん
09/05/12 09:58:50
>>141
>136は、こう書いている。
>C言語の関数だけで記述できないでしょうか?
これを>140はこう判断しただけだろ。
>標準関数だけではできない
そしてあんたは、getch()を「C言語の関数」と判断したわけだ。
143:デフォルトの名無しさん
10/01/03 01:55:37
はじめまして。
下記問題で質問があります。
URLリンク(www.rs.kagu.tus.ac.jp)
下から16行目
●if((nen==yyyy)&& (strncmp( shina,scode,8 ) == 0))
ifの条件の後に、実行文がありませんが、何を意味しているのでしょうか?
また、下から7行目
●kstack[wi][wj]/1000
という文?がありますが、
下から19行目の
●for (wi = 0; wi < TMAX; wi++ )
for (wj = 0; wi < HMAX;wj++ ) kstack[wi][wj] = 0;
で、全て「0」を代入しているのに、どうして1000で割れるのでしょうか?
非常に初歩的な質問で、単なる私のとんでもない勘違いかもしれませんが、
よろしくお願いします。
144:デフォルトの名無しさん
10/01/03 12:25:40
>>143
問題が間違ってるな。if文の次の行が抜けてる。
ググったら、こんなん出てきた。
URLリンク(club.pep.ne.jp)
145:143
10/01/03 13:19:19
>>144
ありがとうございます!!!!!!!!!!
この問題で年末からずっと悩んで?いました!!!!
本当にありがとうございます!!!!!!
146:デフォルトの名無しさん
10/01/06 14:26:57
>>143
まさかとは思うが、0を1000で割れないなんてすっとこどっこいなこと言わないよね?
>143の問題のままでは意味がないのだけれど、>144を見ると問題の消えた一行で
きちんと値を代入しているからちゃんと意味もある。
って、よくよく見たら>144でも本文の方は代入してないよ。
やっぱり情報処理技術者試験を受けようとするのは馬鹿ばっかりだ。
147:デフォルトの名無しさん
10/01/06 14:36:57
>本ホームページにリンクを教育的観点から張ることは自由ですが,営利目的にリンクを張ることは厳禁とする。
>リンクを張られるときにはご一報ください。
>違反行為が発見されたときには当該国の法律にもとずき相応の処置を取らせていただきます。
確かにすげぇ馬鹿だ。
148:デフォルトの名無しさん
10/01/08 00:41:28
>>146
は?何言っての?
>>143と>>144の会話の意味理解してる?
C言語以前の問題。知能指数低そうだね
149:デフォルトの名無しさん
10/01/08 00:44:03
Cのプリプロセッサ作ってやたら遅いと思ったらpragma once実装してなかったわろす
150:デフォルトの名無しさん
10/01/08 00:56:58
プログラミング言語Cで
int strlen(char *s)
{
char *p = s;
while (*p != '¥0') {
p++;
}
return p - s;
}
ってのがあったんだけど、sってのは配列sの先頭のアドレスですよね
*pってのはアドレスがpのchar型を指してるポインタだと思うんですが、
なんで代入するときは *p = *s; とか p = s; じゃないんですか?
*pがsの先端のアドレスを指すポインタだと考えても、次の行で*pが実際の配列の中身を比較してるのが理解できないです。
誰か考え方教えてください。
151:デフォルトの名無しさん
10/01/08 01:04:23
何がわからないのかわからないけど
char* p;
p=s;
と
char *p=s;
は同じ効果
*pはcharの実態 p[0] と同じ効果
で謎は解決するだろうか
152:デフォルトの名無しさん
10/01/08 01:10:51
変数宣言時の初期化って式の見方が違うんですね。
ありがとうございます。
153:デフォルトの名無しさん
10/01/09 14:52:41
choahitoutou89387998u9ifiotuqio
154:デフォルトの名無しさん
10/01/13 21:39:46
>>146
>って、よくよく見たら>144でも本文の方は代入してないよ。
してないね。>>145 は何を納得したんだろう。
>やっぱり情報処理技術者試験を受けようとするのは馬鹿ばっかりだ。
件の if にある無駄な括弧とか、スタイルの不統一とか
(>>144 に至っては所謂全角文字すら使用している)
下手糞っぽい雰囲気を醸し出してる。
155:デフォルトの名無しさん
10/01/14 14:15:13
>>154
>>144が示したサイトの誤字ぐらいは、すぐに「これは打ち間違いだ」と分かる。
分からないの?
>>143が示したサイトが間違っていたのだから、「これも間違いかな?」と直ぐに普通気がつくはくはず。
分からなかったのか。>>154は。
>>144の示したサイトの間違いっているところは、>>143の示したサイトでは間違っていない。
そんなことも気がつかないの?
そもそも>>146は話の本質に関係ないことを得意げに書いている。
マジで知能指数低い。話の流れが全く理解できていない。
って言うか、問題文が論理的に有りえても、
そんなの試験問題に出るわけないじゃん。
そこまで考えが及ばないの?
156:デフォルトの名無しさん
10/01/14 14:36:10
だな。
ここで重要なのは
最初の問題で「一行丸まる抜けていた・・・」ということ。
157:デフォルトの名無しさん
10/01/14 15:07:35
もう既に直っているようだけどね。
158:デフォルトの名無しさん
10/01/14 15:20:30
ここ見て修正したんなら155が本人くせーなw
159:デフォルトの名無しさん
10/01/14 16:02:44
っていうか直すなら、ちゃんと直せよ。まだ間違ってるぞ。
160:デフォルトの名無しさん
10/01/15 07:04:54
>>146 >>154
このふたりは何を言っているのだろうか?
最初のサイトで一行丸まる抜けていたことが分かったことにより、
他の小さい間違いは単に「打ち間違いだな」とわかる。
他の者も皆わかって書き込みしている。
それがわからないようなら、本当にC言語知っているのか?アルゴリズムを知っているのか?
それに>>146も>>154も、そもそも論点がずれている。
161:デフォルトの名無しさん
10/01/15 07:55:42
だから>>146も>>154も
抜けていた一行が最初からあったとしても
大雑把なプログラムの流れがわからないんだよ。
だからあんな発言が出る。
162:デフォルトの名無しさん
10/02/14 16:38:06
fread()関数とfwrite()関数がわかりません。
163:デフォルトの名無しさん
10/02/14 16:49:14
ファイルを読み書きする関数です。
164:デフォルトの名無しさん
10/02/14 16:55:23
>>162
普通バイナリモードでopenしてランダムアクセスに使う
165:デフォルトの名無しさん
10/03/01 10:28:21
>>164
敢えて書こう。
バイナリモードでfopenな。
166:デフォルトの名無しさん
10/03/11 18:51:45
別ウインドウで画像を表示させるにはどうすればいいんですか?
167:デフォルトの名無しさん
10/03/11 21:40:37
>>166
別ウインドウってことは、すでにウインドウのオープンはできているのか。