トップページ⇒tech
1001コメント306KB

C言語なら俺に聞け(入門篇) ぱぁと2〜

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/07/25(火) 18:07:43
ではどうぞ

前スレ
C言語なら俺に聞け(入門篇)
http://pc8.2ch.net/test/read.cgi/tech/1146700389/
0002デフォルトの名無しさん2006/07/25(火) 19:32:50
ところで、俺一人暮らしなんだが最近後ろから気配を感じるんだが誰もいないはずなんだが、
ただ俺だけなんだがなんでだろう?
0003デフォルトの名無しさん2006/07/25(火) 20:57:57
そうだね、プロテインだね。
0004デフォルトの名無しさん2006/07/25(火) 21:38:52
>>2
ドッペルゲンガーかもしれん・・・・・
今のうちに出来ることをやっておいた方がいい。
0005デフォルトの名無しさん2006/07/25(火) 21:39:32
>>2
オヤシロサマの祟りじゃ〜
0006デフォルトの名無しさん2006/07/26(水) 11:15:26
オナヌーでもして寝たほうがいいよ。
疲れてるんだよきっと。
0007デフォルトの名無しさん2006/07/26(水) 12:03:25
インクルードファイル 'stdio.h' をオープンできない

っていうエラーが出るんですけど、どうしたらいいんでしょうか・・・
ボーランドのコンパイラで、例のhello〜っていうプログラムも実行できずにいます><
超初心者ですみません><
0008デフォルトの名無しさん2006/07/26(水) 12:37:06
>>7
入門以前の事だろそれは
出て行け
二度と来るな
0009デフォルトの名無しさん2006/07/26(水) 12:50:36
自己解決しますた^^
0010デフォルトの名無しさん2006/07/26(水) 13:45:56
おめでとお^^
0011デフォルトの名無しさん2006/07/26(水) 13:53:52
突然ですみません。3つほど質問があります。

�@モーターへの出力命令の与え方

�Agoto文の使い方

�B作図の仕方


何度調べてもわかりませんでした。
知っている方、教えて下さい。
0012デフォルトの名無しさん2006/07/26(水) 14:18:26
>>11
入門以後の事だろそれは
出て行け
二度と来るな
0013デフォルトの名無しさん2006/07/26(水) 14:27:48
>>12
失礼しました
0014デフォルトの名無しさん2006/07/26(水) 23:20:40
>>11
�@ Cの話じゃない
ハードの構成に依存する

�A goto <ラベル>


�B Cの話じゃない
紙に鉛筆などで好きに書け
0015M2006/07/29(土) 15:05:06
1.duble型変数へのポインタ変数dPtrを宣言する。
2.float型ポイント変数aにfloat型変数numberのアドレスを代入する。
3.ポインタ変数aが指すオブジェクトの値を1インクリメントする。
4.文字型配列aに格納されてる文字列をプリントする。
C言語でどうやってプログラムするんですか?(><)
0016デフォルトの名無しさん2006/07/29(土) 15:30:30
// 1.
duble * dPtr;
// 2.
float * a = & number;
// 3.
* a += 1;
// 4.
printf("%s", a);
0017M2006/07/29(土) 15:33:01
ありがとうございます☆
0018デフォルトの名無しさん2006/07/29(土) 17:13:17
"¥7"って何??

7円とかそういう落ちではなく、、
7回改行とか7文字分空白を空けるのかと思ったんだが。。
 cmdじゃ効果無いかな・・
0019デフォルトの名無しさん2006/07/29(土) 18:07:30
>>18
7の値を持つ文字のこと。ASCIIではBELと定義されいるので、一般的にコンソールに出力すればベルが鳴る。
#そういう意味においては、"\a"と等価。
0020デフォルトの名無しさん2006/07/29(土) 18:46:10
な、なんだって〜。。
だからエラーの時プープーて鳴るのか。
 (2つ書いたから)

なるほど、、トンクス>>19
0021デフォルトの名無しさん2006/07/29(土) 23:51:43
return文を書くときに、後ろに0とか-1とかつけるじゃないですか。
あれって、0を返すのと他の数値を返すのとではどう違うんですか?
プログラムを実行しても何も変わらないので、疑問に思いました。
どなたか教えてくれれば、幸いです。
0022デフォルトの名無しさん2006/07/30(日) 00:05:12
>>21
おそらく0と-1だったら向こう側ではエラーの有無をチェックしているのでは?
返す値によって何がどう違うかは戻り値の目的による。
0023デフォルトの名無しさん2006/07/30(日) 00:05:46
それは main のことか?
例えば、system 関数でそのプログラムを実行した時に
system の戻り値が変わったりする(でも、どうなるかは環境依存か)。
あとはシェルで実行した時に
プログラムの成功/失敗の判定に影響したり(これも環境依存か)。
まあ、環境依存だが、そんなところだ。
0024212006/07/30(日) 00:08:10
ありがとうございます。
入門書を読んでも書いてなかったので。
ネットでも調べてみます。
0025デフォルトの名無しさん2006/07/30(日) 00:11:16
-10とか-100とかってのもあったなw

エラーで終わらせるのなら、exit()でないといかんか。。
0026デフォルトの名無しさん2006/07/30(日) 00:19:29
C言語なら自分でやれ(実践篇) ってタイトルのスレを立ててみてはいかがでしょうか?
何も書かずに自分で勝手にやれってことですけどw
0027T2006/07/30(日) 00:29:55
C言語で2Dないしは3Dのゲーム作りたいんですけどうまく解説してくれているサイトはありませんか?
0028デフォルトの名無しさん2006/07/30(日) 00:29:57
2get禁止にしないとものすごい勢いで荒れるぞそれwww
0029282006/07/30(日) 00:33:33
すごい勢いでかぶったorz

>>27
こんなのあったけど
ttp://www.plustarnet.com/aspil/Programming/

つかググれよ
つ「DirectX C言語 ゲーム プログラム」
これで3個目に出たぞ
0030デフォルトの名無しさん2006/07/30(日) 00:38:48
C廚ってスキル低いね。
遅いのにJavaが全盛なのが理解出来た。
Cで組める香具師って絶滅種?
0031デフォルトの名無しさん2006/07/30(日) 00:39:48
っつか、アルゴリズムの勉強なら言語を選ばなくても良いし
初心者が手軽に手を出すからじゃね?
0032デフォルトの名無しさん2006/07/30(日) 00:47:20
JavaはGUI簡単だからな
ただな・・・仕事で使うんじゃないならJavaに利用価値があんまりないんだよ
0033282006/07/30(日) 00:56:26
自分、VBですから
0034デフォルトの名無しさん2006/07/30(日) 12:50:10
やっぱBCBだな
0035デフォルトの名無しさん2006/07/30(日) 14:19:04






以下のやつの結果が表示されないのですけれど
どうすればよいのかご教授ください



#include <stdio.h>

int main()
{
int a;
a=10;
printf("変数aには%dが代入されています。", a);
return 0;
}
0036デフォルトの名無しさん2006/07/30(日) 14:36:24
うまくいくはずですが
0037デフォルトの名無しさん2006/07/30(日) 14:36:52
>>35
結果というのが何を指すか分からないが、
「変数aには10が代入されています。」
と表示されないということか?
まず、環境を書け。俺は表示された。
0038デフォルトの名無しさん2006/07/30(日) 14:54:06
出力される前に終了してるのか?
printfの後にfflush(stdout);を入れてみてもだめなのか?
0039352006/07/30(日) 14:57:52
>>37
表示されたのですか!
>>38
これから試して見ます。

環境は
    WXP
    Borland 5.5です。

0040デフォルトの名無しさん2006/07/30(日) 14:59:17
表示されて、一瞬でコマンドプロンプトが閉じてるに一票。
0041352006/07/30(日) 15:03:50
#include <stdio.h>

int main()
{
int a;
a=10;
printf fflush(stdout);("変数aには%dが代入されています。", a);
return 0;
}

こんな感じやってみたのですが
だめでした.....
0042デフォルトの名無しさん2006/07/30(日) 15:07:30
>>41
おいおいw
それじゃコンパイル通らないんじゃ?
こうだろ?
#include <stdio.h>

int main()
{
int a;
a=10;
printf("変数aには%dが代入されています。", a);
fflush(stdout);
return 0;
}
0043デフォルトの名無しさん2006/07/30(日) 15:10:09
まさかコマンドプロンプトからの実行でなく
エクスプローラで実行ファイルダブルクリックなのかな?orz
0044352006/07/30(日) 15:10:51
>>40
コマンドプロントは閉じていないと思われます。
その代わりプロントタイプ宣言のない関数printfの呼び出し
という警告がでていますが.....
0045デフォルトの名無しさん2006/07/30(日) 15:13:08
俺はBorland C++ 5.5.1でやってるけど問題なく>>35でいけてるよ
stdio.hをインクルードしてるし、警告も出ない
0046352006/07/30(日) 15:16:44
>>45
stdio.hをインクルードできてないのですが
どうすればよいのですか?
0047デフォルトの名無しさん2006/07/30(日) 15:17:35
>>46は結果が表示されないうんぬん以前にコンパイルできていないとみたがどうよ?
0048352006/07/30(日) 15:25:49
>>47
その可能性もあるのでいれなおして見ます。
0049デフォルトの名無しさん2006/07/30(日) 15:26:24
>>48
ちゃんとbcc55のインストール手順に従ってインストールした?
bcc55を展開したディレクトリのreadme.txtに書いてあるはず
たぶんbcc32.cfgとilink32.cfgの設定を忘れてると思う
0050デフォルトの名無しさん2006/07/30(日) 15:34:06
だいたいコンパイル(&リンク)できてるかどうかなんて
実行ファイルの有無で一目瞭然だ
その可能性もあるなんて状況がいまいち分からん
0051352006/07/30(日) 15:39:30
>>49
その手順は一度やり直してあるので
多分大丈夫だと思います。
0052デフォルトの名無しさん2006/07/30(日) 15:40:10
学校から出た課題なんですが,教えてください。
二次方程式ax^2+bx+c=0 の根を求めるプログラムを作成せよ。

ここまでは思いついたのですが,あと,どのようにすれば良いですか?
#include <stdio.h>
#include <math.h>

double d, x1,x2; int a,b,c;



x1=(-1*b+sqrt(d))/(2*a);
x2=(-1*b-sqrt(d))/(2*a);

この間に何を入れれば良いのでしょうか?
0053デフォルトの名無しさん2006/07/30(日) 15:51:08
scanf
0054デフォルトの名無しさん2006/07/30(日) 15:51:16
>>52
根の公式知ってるなら難しくはないと思われ
a=1;
b=3;
c=2;
d=b*b-4*a*c;
でも虚数解の場合はいらないのかい?
0055デフォルトの名無しさん2006/07/30(日) 15:58:24
>>54
はい。虚数解の場合は良いと思います。ただし,a≠0の場合です。
#include <stdio.h>
#include <math.h>
main(){

double d, x1,x2; int a,b,c;

a=1;
b=3;
c=2;
d=b*b-4*a*c;

x1=(-1*b+sqrt(d))/(2*a);
x2=(-1*b-sqrt(d))/(2*a);
}
こうですか?
0056デフォルトの名無しさん2006/07/30(日) 15:58:38
>>52
課題なら宿題スレに行けばたぶん完全なプログラムを書いてくれるよ
でも、その課題はさんざん既出な気がするよ
0057デフォルトの名無しさん2006/07/30(日) 16:00:33
>>55
基本的にはOK
でも、求めたx1とx2の値を表示する文が最後にほしいかな
0058デフォルトの名無しさん2006/07/30(日) 16:22:08
>>57
ありがとうございます。
具体的にx1とx2の値を表示する文とはどのように表現すれば良いのですか?
a,b,cの値をそれぞれ式に代入することですか?
0059デフォルトの名無しさん2006/07/30(日) 16:29:22
>>58
printf("ax^2+bx+c=0,a=%lg,b=%lg,c=%lg -> x1=%lg,x2=%lg\n",a,b,c,x1,x2);
をreturn文の前に入れておけば?
ってなんだこりゃー
int a,b,c;
は
double a,b,c;
にするべきかと
0060デフォルトの名無しさん2006/07/30(日) 16:33:02
この場合にはまあうまく答が出てくるけど一般的にするなら係数はintでなくdoubleの方がいいと思う
0061デフォルトの名無しさん2006/07/30(日) 16:39:19
すまん
return文が無かった
x1とx2への代入文の次に>>59のprintfを入れておいて
0062デフォルトの名無しさん2006/07/30(日) 16:41:25
初心者の俺が実況用のブラウザ作る!1!!11!
http://ex16.2ch.net/test/read.cgi/news4vip/1154167137/
まとめ
http://vanbl.blog.shinobi.jp/


現在新しい専ブラを開発中ですプログラミングに詳しい方
>>1にアドバイスをお願いします
0063デフォルトの名無しさん2006/07/30(日) 16:42:51
つまりはこういうことですか?
#include <stdio.h>
#include <math.h>
main(){

double d, x1,x2; double a,b,c;

a=1;
b=3;
c=2;
d=b*b-4*a*c;

x1=(-1*b+sqrt(d))/(2*a);
x2=(-1*b-sqrt(d))/(2*a);
printf("ax^2+bx+c=0,a=%lg,b=%lg,c=%lg -> x1=%lg,x2=%lg\n",a,b,c,x1,x2);

}
0064デフォルトの名無しさん2006/07/30(日) 16:46:15
>>63
まあ警告は出るけどそんなものでしょ
mainは暗黙のうちにintを返す関数とみなされてるから
最後にreturn 0;でも書いておけば警告も無くなると思う
実際実行してみれ
0065デフォルトの名無しさん2006/07/30(日) 16:50:19
>>64
ありがとうございます。
助かりました。
0066デフォルトの名無しさん2006/07/30(日) 19:48:03
#includ <stdio.h>
#includ <math.h>

int main()
{
   double a, b, c, d, x1, x2;

   scanf("%d", &a);
   scanf("%d", &b);
   scanf("%d", &c);

   d = b * b - 4 * a * c;

   if (0 > d)
   {
      return ー1;
   }

0067デフォルトの名無しさん2006/07/30(日) 19:49:48
>>66続き


   else
   {
      *x1 = (-b + sqrt(d)) / (2 * a);
      *x2 = (-b - sqrt(d)) / (2 * a);

      printf("x1 = %f\n", x1);
      printf("x2 = %f\n", x2);
   }

   return 0;
}


多分どこか間違ってると思う。
ってか、宿題ってこんなものでるんだ。f^_^;
知らなかった。
0068デフォルトの名無しさん2006/07/30(日) 20:04:38
>   scanf("%d", &a);
まともに動かないだろ。
0069デフォルトの名無しさん2006/07/30(日) 20:16:48
>>66
#includ > #include
return ー1 > return 1
scanf("%d", &a); 以下double型で宣言されている変数に対して %d > %lf
0070デフォルトの名無しさん2006/07/30(日) 20:18:41
あと>>66-67の全角スペースはここに書くために書いたのかもしれないけど
全角文字はタブー
0071デフォルトの名無しさん2006/07/30(日) 21:05:15
>>68-70
ご指摘ありがとうございます!!
0072デフォルトの名無しさん2006/07/30(日) 21:08:48
そんな時には&nbsp;と普通の半角空白を交互に並べればいい。
0073デフォルトの名無しさん2006/07/30(日) 21:21:24
最終的な全プログラムはどうなりますか? こうですか?
#include <stdio.h>
#include <math.h>

int main()
{
   double a, b, c, d, x1, x2;

   scanf("%d", &a);
   scanf("%d", &b);
   scanf("%d", &c);

   d = b * b - 4 * a * c;

   if (0 > d)
   {
      return 1;
   }
 else
   {
      *x1 = (-b + sqrt(d)) / (2 * a);
      *x2 = (-b - sqrt(d)) / (2 * a);

      printf("x1 = %f\n", x1);
      printf("x2 = %f\n", x2);
   }

   return 0;
}
0074デフォルトの名無しさん2006/07/30(日) 21:24:12
>>73
ですかって、自分でコンパイルして実行してみたの?
else { } 不要、*x1 *x2 前の * も不要
0075デフォルトの名無しさん2006/07/30(日) 21:27:07
>>73
scanf("%d", &a);  < %d を変えていないからエラーが起こる
0076デフォルトの名無しさん2006/07/30(日) 21:41:40
>>74
明日,学校で実行してみます。ご指摘ありがとうございました。
0077デフォルトの名無しさん2006/07/30(日) 21:49:13
>>76
自分のコンピュータにコンパイラを入れてやれいw
0078デフォルトの名無しさん2006/07/30(日) 22:13:25
>>74 これでだいたいおkかな?

#include <stdio.h>
#include <math.h>
int main(){
double a,b,c,d,x1,x2;
scanf("%lf",&a);
scanf("%lf",&b);
scanf("%lf",&c);
d=b*b-4*a*c;
if(0>d) {return 1;}
x1=(-1*b+sqrt(d))/(2*a);
x2=(-1*b-sqrt(d))/(2*a);
printf("x1=%f\n",x1);
printf("x2=%f\n",x2);
return 0;
}
0079デフォルトの名無しさん2006/07/30(日) 22:36:03
>>76
おまえ何回か宿題スレにいたやつじゃないだろうな?
0080デフォルトの名無しさん2006/07/30(日) 22:37:13
complex.hをインクルードして、複素数を扱いたいと思っています。
complex<double> x と書けば、実数部と虚数部がそれぞれdouble型として定義されますよね?
その後、それぞれに任意の値を代入するために、どのようにして各部にアクセスすれば
良いのでしょうか?
x.real、x.imagというようにしてもコンパイルエラーがでました。
↓エラーの内容
「メンバー関数は呼び出すかそのアドレスをとらなければならない」
0081デフォルトの名無しさん2006/07/30(日) 22:50:34
>>80
C++ はスレ違い。
0082802006/07/30(日) 22:53:42
>>81
失礼しました(汗)
0083デフォルトの名無しさん2006/07/31(月) 12:01:09
#include<stdio.h>
int main()
{
printf("Hello");
return 0;
}

こんな初歩的なプログラムでヘッダファイルの#include<stdio.h>を消して実行してみたら普通に実行できたんだけど・・・
普通に実行できるならヘッダファイルいらなくね?という疑問です。
0084デフォルトの名無しさん2006/07/31(月) 12:08:58
自転車組み立ててみたんだけど、ブレーキつけると巧く動かないから外したら普通に動いたんだけど……
普通に動くんだからブレーキなんて外しちゃってもよくね?
0085デフォルトの名無しさん2006/07/31(月) 12:11:36
言いたいことはなんとなく分かる。
でもなんか納得いかない。
「普通に動くけど、ないとダメな安全装置」って感じなのかな?
0086デフォルトの名無しさん2006/07/31(月) 12:12:36
int main(void)
{
 double d = fabs(-1.5);
 printf("%lf\n", d);
 return 0;
}

とやってみるとわかる。 ヘッダー有り無しで挙動違うから。
0087デフォルトの名無しさん2006/07/31(月) 12:16:09
>>83
printf()ならインクルードファイルなしでも動くけど、
ファイル操作もできなければ数学関数(sinなど)も使えない状態だね。
つまり、たまたま使える関数だけしか使わないのでない限り、標準インクルードファイルは必要。

単に、環境設定に失敗しているだけだろうから、使っている処理系関連のスレで聞いて味噌。
0088デフォルトの名無しさん2006/07/31(月) 12:47:10
>>86
プログラム自体が動かなすorz

逆にさ、#include<stdio.h>がないと正常に動作しねーよ!っていうプログラムって何か無いかな?
例をみないと理解できないよ...
0089デフォルトの名無しさん2006/07/31(月) 12:50:43
>>88
関数()の中身がプロトタイプ宣言されていないとintとみなされ、
戻り値の型もintと見なされるので、それでは都合の悪いプログラム
ならなんでもいいだろう。

int main(void)
{
}
0090デフォルトの名無しさん2006/07/31(月) 12:51:54
間違って改行してしまった。

printf("%f", sin(0.5)); とかね。

プロトタイプ宣言がないと、-1, 0, 1のどれかしか表示されないはず。
0091デフォルトの名無しさん2006/07/31(月) 12:56:39
#include<stdio.h>
int main(){
int i,j;
for(i=1; i<=1000; i++)
j=i+j;
printf("%d \n",j);
return 0;
}

これやって表示される結果の数を教えてください。
0092デフォルトの名無しさん2006/07/31(月) 13:01:30
いや、自分で試せよ
0093デフォルトの名無しさん2006/07/31(月) 13:02:43
いま手元に携帯しかなくて…
お願いします。
0094デフォルトの名無しさん2006/07/31(月) 13:05:05
悪いがオレも携帯なんだ
だがろくでも無い結果になるのはすぐに分かる
jを初期化してないからな
0095デフォルトの名無しさん2006/07/31(月) 13:05:51
そもそも初期化していない変数 j の値を元にする演算結果って不定じゃないのか?
0096デフォルトの名無しさん2006/07/31(月) 13:09:48
500500 + jの初期値
かな
0097デフォルトの名無しさん2006/07/31(月) 13:41:03
>>86
gcc だと math.h の関数の型は
math.h なしでもちゃんと認識される。
0098デフォルトの名無しさん2006/07/31(月) 14:05:45
>>97
暗黙の変換で int 化しないの? (特に引数側
微妙に拡張機能っぽいけど…

# プリプロセスの段階 or PASS1 の段階で math.h に含まれるシンボル比較してるんかな?
0099デフォルトの名無しさん2006/07/31(月) 14:10:27
>>96

あ、初期化してなかった^^;
ありがとうございました。
0100デフォルトの名無しさん2006/07/31(月) 16:14:22
>>98
微妙も何も、紛う方無く拡張機能
0101デフォルトの名無しさん2006/07/31(月) 21:45:20
つうか初心者の為にも警告して欲しいね
■ このスレッドは過去ログ倉庫に格納されています