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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/09(木) 00:31:01
C言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 3
http://pc8.2ch.net/test/read.cgi/tech/1160682950/

過去スレ
Part 1 http://pc8.2ch.net/test/read.cgi/tech/1146700389/
Part 2 http://pc8.2ch.net/test/read.cgi/tech/1153818463/


関連スレ
くだすれC言語(初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1153542424/

【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130
http://pc8.2ch.net/test/read.cgi/tech/1159613789/
0705デフォルトの名無しさん2006/11/24(金) 13:46:02
>>704
それでもコンパイルは通るだろ。
char **fpとかじゃねぇの?
07066942006/11/24(金) 16:56:30
解決しました。
レスくれた人、有難う。
勘だらけで内容くちゃぐちゃだけど、
結果オーライ。
0707デフォルトの名無しさん2006/11/24(金) 17:19:43
fork execlで蹴った子プロセスが
終了したか監視したいんだけども

どうやるんざますの?
0708デフォルトの名無しさん2006/11/24(金) 17:34:33
>>707
>>1
0709デフォルトの名無しさん2006/11/24(金) 17:34:55
http://kasamatusan.sakura.ne.jp/cgi-bin2/src/ichi62093.txt.html
0710ぴゅあ2006/11/25(土) 00:29:31
>>688-690
あちしの場合はwhile (1)よりfor ( ; ; )を好んで使いますね
賢いコンパイラならwhile (1)をfor ( ; ; )として解釈してくれそうでもあるけど
なんか「キメェ」って感じなので。。。(使い方合ってます?)
(while(1)は、毎回「1だよね」って確認してくれてそうな…)

#define forever() for ( ; ; )
とかすることもあったりするけど(色んなコードを見てるとそんな風にしているのも多くあったりする?し)
サラッと書いて済ますときは(特に)for ( ; ; )だったりですけど

実際while(1)を使うかfor ( ; ; )を使うかはそのときの気分?かな
圧倒的にfor ( ; ; )の方が多いのは間違いないけど

仕様もない話ですが。。。
0711デフォルトの名無しさん2006/11/25(土) 00:37:14
てめえの好みなんか聞いてねえ。
while(1)を最適化しないコンパイラなんて糞コンパイラだ。
for(;;)はANSIが無限ループのために規格化した書き方だ。
0712デフォルトの名無しさん2006/11/25(土) 00:41:07
for (;;) ; /* ひげのおじさん */
for ( ; ; ) ; /* 悲しそう */
while (1) ; /* ょぅι゛ょの割れ目?卑猥です */
0713デフォルトの名無しさん2006/11/25(土) 08:02:35
マジックナンバーを含まないっつーポリシーに従うなら for(;;) の方がベターだとは思うが、
while(1) はもう while(1) というパターンとして認識されてるから、正直どっちでもいいと思うぜ。
0714デフォルトの名無しさん2006/11/25(土) 09:15:28
for (;;)こそパターンとして認識されているだろと俺は思っている。
0715デフォルトの名無しさん2006/11/25(土) 09:51:26
質問なんだけど、bccコンパイラでコンパイルした時に出来るexeファイル
以外のファイルってなんなの?
.makと.objと.tdsなんだけど。
教えてくださらんか。
0716デフォルトの名無しさん2006/11/25(土) 09:53:30
もう一点質問です。
C言語で他の実行ファイルを実行させたい場合、
どういう風に記述すればいいのだろうか。
0717デフォルトの名無しさん2006/11/25(土) 09:56:35
漏れは
while (1==1)
だな。
0718デフォルトの名無しさん2006/11/25(土) 11:08:35
>>715
.makはコンパイル時には作られないだろう
BCCDeveloperかなんか使ってるんじゃねーの?
ちなみに.makはメイクファイルといってコンパイルやリンク時の手順を記述したもの
自分で書いたりIDEが吐いてくれたメイクファイルを元にコンパイル等を実行する。

tdsは何か忘れた

.objは純粋にコンパイルしたときに作られるオブジェクトファイル

本来EXEを生成するには
・hoge.cをコンパイルしてhoge.objを生成
・hoge.objと必要なライブラリ等をリンクしてEXE生成
という大まかに分けて2つの手順を踏む必要があるが、
bccは-cオプションをつけない限り、リンクも自動的にやってくれるようになっている

間違ってるかもしれないけど、大体こんな感じ
07197152006/11/25(土) 11:32:22
>>718
回答どうもありがとう!
0720ぴゅあ2006/11/25(土) 13:21:20
>>716
system関数周りとかexec系の関数辺りとかを見てみれば

>>714
当然パターンとしてコンパイラは認識する筈だけど
中身(式)なしのforがどうなるかだろうけど

アセンブラをずっとやっているときにCが出てきて
アセンブラからCを中から見て理解したけど(特にポインタとか)
中身なしのforは中身なしのコードで出てきてた記憶はあるけど

いずれにしても余程変なことでもしてなきゃ
好みで選んでいいだろうと思うけど

>>711
ANSI Cが定められたのを知っても特に興味も沸かなくて
気にしてこなかったけど
あちしがずっと好んでだけで使ってきてたことを
適切であっただろうとわざわざ立証してくれてありがとう
0721デフォルトの名無しさん2006/11/25(土) 13:27:59
あちこちのスレにしゃしゃり出てくる人がウザイですー
0722デフォルトの名無しさん2006/11/25(土) 13:43:27
>>721
?
0723デフォルトの名無しさん2006/11/25(土) 13:52:57
C言語なら俺に聞け(入門篇) Part 4
http://pc8.2ch.net/test/read.cgi/tech/1162999861/l50

Cなら俺に聞け(応用編)
http://pc8.2ch.net/test/read.cgi/tech/1163246166/l50

【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130
http://pc8.2ch.net/test/read.cgi/tech/1159613789/l50

くだすれC言語(初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1153542424/l50

渡辺篤史のGoogle Code Search探訪
http://pc8.2ch.net/test/read.cgi/tech/1160188096/l50


どこに質問していいのか分かりません
ビットシフトについてなんですが・・・
0724デフォルトの名無しさん2006/11/25(土) 14:10:21
ここでおk?
0725デフォルトの名無しさん2006/11/25(土) 14:34:11
>>721
夏休みはまだ早いぞ
0726デフォルトの名無しさん2006/11/25(土) 15:22:47
おkおk
0727デフォルトの名無しさん2006/11/25(土) 19:40:35
ファイルの中身を配列に入れて配列を表示させると順番が
ぐしゃぐしゃです。
助言くれーー。
0728デフォルトの名無しさん2006/11/25(土) 19:42:03
ソース見せないと
0729デフォルトの名無しさん2006/11/25(土) 19:42:32
#include "sengen.h"


#define NUM 500


int main(){

FILE *fp;
int ch;
int chx[NUM]={0};
int i=0;
0730デフォルトの名無しさん2006/11/25(土) 19:43:09
if((fp=fopen("C:\\tools\\ten.bat","r"))==NULL)
puts("読み取りオープン失敗");
else{

puts("元の内容");
while((ch=fgetc(fp)) != EOF){
chx[i]=ch;
putchar(chx[i]);
i++;
}
}
putchar('\n');
0731デフォルトの名無しさん2006/11/25(土) 19:44:09

puts("配列chxの内容");

for(i=0;i<NUM;i++)
putchar(chx[i]);


getchar();
return 0;
}

07327272006/11/25(土) 19:45:04
さらすのに手間取りました

07337272006/11/25(土) 19:47:51
NUM=1000にしてもだめです。
07347272006/11/25(土) 19:58:04
NUM=2000にしたらできました。でもファイル読み込みのときって
設定配列数オーバーしても関係ないんですね。
>>720どうもありがとう、ぐぐってみます!
0735デフォルトの名無しさん2006/11/25(土) 20:06:58
>>727
iがNUM以上になるのを何故放置するのか?
0736デフォルトの名無しさん2006/11/25(土) 20:08:50
>>727
#include <stdio.h>
#define SIZE 1000
main(){FILE *fp; int i, c, chx[SIZE];
if((fp=fopen("C:\\tools\\ten.bat","r")) ==NULL) puts("どんまい");
else {puts("もとの");
for (i=0; i<SIZE && (c=fgetc(fp))!=EOF; i++) putchar(chx[i]=c);
chx[i]='\0';}

getchar(); puts("\nはいれつのなか");

for (i=0; i<SIZE && chx[i]; i++) putchar(chx[i]);
getchar();return 0;}
0737デフォルトの名無しさん2006/11/25(土) 20:25:04
fclose はしないのかにゃ
0738デフォルトの名無しさん2006/11/25(土) 20:26:48
fclose()は省略しても、まあ、問題ないな。
0739デフォルトの名無しさん2006/11/25(土) 20:28:00
>>736
#define SIZE 1000
for (i=0; i<SIZE
chx[i]='\0';
’SIZE’以上のファイルだと i は1000になって chx のサイズオーバー
0740デフォルトの名無しさん2006/11/25(土) 20:59:53
>>739
>>737
ゴメンなさい。反省してます。
07417162006/11/25(土) 22:12:56
ファイル実行させるソースを書きたいんだけど
こんな感じにやって駄目でした。
#include <stdio.h>
#include <process.h>
int main(){
execv("C:\\tools\\ten.bat",NULL);
getchar();
return 0;
}
ヒントいただけないでしょうか
0742デフォルトの名無しさん2006/11/25(土) 22:30:57
system() 使っとけ。
07437162006/11/25(土) 22:57:04
#include <stdio.h>
#include <process.h>
int main(){
system("C:\\tools\\ten.bat");
getchar();
return 0;
}
あっさりできたw
どうもありがとうございます。
0744デフォルトの名無しさん2006/11/26(日) 01:26:50
バイナリファイルへの読み書きについて、構造体単位で扱うことは可能でしょうか?
1個の構造体では出来たのですが、一つのファイルに二つ以上入れたとき、一つ目のデータが破棄されてしまうのです。

具体的には
1、no番目の構造体データをfseek(fp,no*sizeof(str),SEEK_SET)後fwrite(&str_a,sizeof(str),1,fp)で入力。
2、別のnoについて同様に入力。
3、確認の為、no番目のデータををfseek(fp,no*sizeof(str),SEEK_SET)後fread(&str_b,sizeof(str),1,fp)でstr_aにコピー。
4、printfでstr_bの中身を見ると、0になっている。
コンパイルエラーは起きないし、もちろんメモリ保護違反等も起きてないのですが…
0745デフォルトの名無しさん2006/11/26(日) 01:28:58
>>744
ソースコードを晒して
0746デフォルトの名無しさん2006/11/26(日) 01:30:59
>>744
んでstr_bはどこで読み込んでんの?
0747デフォルトの名無しさん2006/11/26(日) 01:48:46
int main(void)
{
int no,sel;
str_a alpha;
FILE *fp;
printf("plz input no\n");
scanf("%d",&no);
printf("plz input RorW(W=1,R=2)\n");
scanf("%d",&sel);
switch (sel){
case 1:
fp=fopen("data.bin","wb");
fseek(fp,sizeof(str_a)*no,SEEK_SET);
printf("plz input a,b,c\n");
scanf("%d%d%d",&alpha.a,&alpha.b,&alpha.c);
fwrite(&alpha,sizeof(str_a),1,fp);
break;
case 2:
default:
fp=fopen("data.bin","rb");
fseek(fp,sizeof(str_a)*no,SEEK_SET);
fread(&alpha,sizeof(str_a),1,fp);
break;
}
printf("%d\t%d\t%d\n",alpha.a,alpha.b,alpha.c);
fclose(fp);
return 0;
}

上で書いたまんまのソースはいじりまくってしまったので申し訳ないですけど、↑で。
もちろん、同じ状況である事は確認しました。
0748デフォルトの名無しさん2006/11/26(日) 01:54:52
と、肝心の構造体を書き忘れました。

typedef struct
{
int a,b,c;
} str_a;

です。
0749デフォルトの名無しさん2006/11/26(日) 01:54:54
>>747
noはゼロじゃなくていきなり 1 から初めてんの?
多分最初のfseek()が失敗してるよ。戻り値をみてみ。
0750デフォルトの名無しさん2006/11/26(日) 02:02:34
貼ってあるソースコードで書いているとおりに動作したぞ。
期待した動作と違うって事だろうから、エスパー解答
fp=fopen("data.bin","wb");
↓
fp=fopen("data.bin","r+b");
0751デフォルトの名無しさん2006/11/26(日) 02:04:05
>749
no=0とno=1でfseekの戻り値見てみましたが、0でした。
fseekの引数でnoを(no-1)にしてnoを1と2で試してみましたが、やっぱりno=1を読むと0 0 0になってしまいました。
戻り値の意味が間違ってるならごめんなさい。
0752デフォルトの名無しさん2006/11/26(日) 02:07:13
>>751
0なら成功してますね。
>>750
あっそういう事か。ファイルを上書きして消してしまってるという事ね。
元のファイルを残したいならr+bだな。
0753デフォルトの名無しさん2006/11/26(日) 02:11:07
>750
それで試したら無事表示できました、ありがとうございます!
オープンモード、もう一度勉強しなおしてきます。

>751
わかりづらくて申し訳ありませんでした。
上書きはwbやwb+とはまた別の書き方なんですね…

こんな深夜にお付き合い頂き、ありがとうございました。
0754デフォルトの名無しさん2006/11/26(日) 10:26:00
せめて構造体の前後に#ptagma pack(0)みたいなやつでも入れといたほうがいいよ。
0755デフォルトの名無しさん2006/11/26(日) 10:33:40
>754
初心者なんでptagmaが何かわかりません。
わかりやすく説明してくださいませんか?
0756デフォルトの名無しさん2006/11/26(日) 10:36:23
ptagmaってのはスメグマみたいなもんだ。
0757デフォルトの名無しさん2006/11/26(日) 13:23:19
リナックスのソースコードをダウンロードしたんだけど、どうやって
内容をみるのでしょうか。何か専用のツールがあるのかなあ。
こんな感じのファイルです。
MAKEDEV-3.1.0-19.src.rpm
ご存知の方教えてください。
スレちがいならすまん。
0758デフォルトの名無しさん2006/11/26(日) 13:29:48
>>757
それはインストール用パッケージだ。詳しくは犬板でどうぞ。

>>755
>754はpragmaと言いたかったのだろう。
要は、構造体のメンバ間に埋め草が必要になる可能性を排除しておけと言うことだ。
0759デフォルトの名無しさん2006/11/26(日) 13:33:21
>>753
モード,動作,ファイルがないとき,ファイルがあるとき
r,読み込み専用,エラー,開く
w,書き込み専用,作る,クリアする
a,追記専用,忘れた,開いて末尾に移動
r+,読み書き,エラー,開く
w+,読み書き,作る,クリアする
a+,追記部で読み書き,忘れた,開いて末尾に移動
0760デフォルトの名無しさん2006/11/26(日) 13:42:00
>>755
#ptagma ではなく #pragma
C言語の範疇では定義されていない部分について、コンパイラに対して
特殊な指示を出すためのもの。
VC++なら pragmaだったけど、他のコンパイラなら違ってるかも。良く知なくてすまん。

C言語の学習を始めたばかりなら、まだpragmaとかは意識しないほうがいいかも。
ある程度基礎ができてきてから出いいので、
変数をメモリに割り当てるときの境界調整だとか、
構造体のメンバの間に詰め物がされる場合があるとか、
そういう話も調べて見るといいかも。

以下のページの説明が分かりやすそう。
ttp://mag.autumn.org/Content.modf?id=20050430014843

とりあえず、今やっている構造体のメモリ内容をファイルに書き出す&読み込む
というのは、同じ環境でやっている分には使えるけど、
書き出したファイルを別の環境で読み出す上手く行かないことがあるというのを
知っていればいいと思うよ。
0761デフォルトの名無しさん2006/11/26(日) 13:42:02
曖昧なくせに講釈垂れんじゃねーよ
0762デフォルトの名無しさん2006/11/26(日) 13:50:48
そもそも構造体をそのままfread,fwriteするのがアレなんで、
中途半端にpragmaどうこうは気にしなくてもいいかもしれんけど。
0763デフォルトの名無しさん2006/11/26(日) 13:51:08
761 は
759 宛て
0764デフォルトの名無しさん2006/11/26(日) 15:58:57
int型の数値を送ってもらい、最上位ビットを反転して、
1以上の値だったらマイナスをつけて返す、
-1以下の値だったらプラスをつけて返す関数を作成したいのですが、
最上位ビットを確認し、反転する一番いい書き方ってどんなんでしょうか?
0765デフォルトの名無しさん2006/11/26(日) 16:01:15
int hoge(int x)
{
    return -x;
}
0766デフォルトの名無しさん2006/11/26(日) 16:12:31
2の補数で格納されてるから
最上位ビットを反転しても符号が逆でも絶対値が同じにはならん。
>>764が結局何をしたいのか書かないから

>1以上の値だったらマイナスをつけて返す、
>-1以下の値だったらプラスをつけて返す関数を作成したいのですが、

の部分より>>765が正解のように思える。
0767デフォルトの名無しさん2006/11/26(日) 16:25:27
1次元配列a[10],b[10]をそれぞれ0と’a’でクリアし、
ってなんだよ〜。くそorz
0768デフォルトの名無しさん2006/11/26(日) 16:35:31
>>767
クリアじゃなくフィルだな
int i;
for (i=0; i<10;i++) {
a[i]=0;
b[i]='a';
}
07697672006/11/26(日) 16:40:13
自己解決します・・ありがとうございます。
おっと>>768ありがとうございます。
0770デフォルトの名無しさん2006/11/26(日) 18:17:24
main関数内でkaikiという関数を呼び出し、
そのときmainの中にある配列atai[10]の値をkaikiに渡して,
kaiki内で計算した結果のkotae1,kotae2という二つの変数をmainに返したいのですが、
どのように書いたらいいのでしょうか?
0771デフォルトの名無しさん2006/11/26(日) 18:20:46
>>770

void kaiki(int n, int* kotae1, int* kotae2)
{
...
}

main()
{
int atai[100];
int kotae1, kotae2;
...

kaiki(atai[10], &kotae1, &kotae2);
...
}
0772デフォルトの名無しさん2006/11/26(日) 18:45:02
struct kotae {
int kotae1;
int kotae2;
};
struct kotae kaiki(int n, int const * atai)
{
struct kotae rtn;
//
rtn.kotae1 = 0;
rtn.kotae2 = 0;
//
return rtn;
}

int main()
{
int atai[100];
struct kotae kotae = kaiki(sizeof(atai) / sizeof(* atai), atai);
printf("kotae1:%d, kotae2:%d\n", kotae.kotae1, kotae.kotae2);
return 0;
}
0773デフォルトの名無しさん2006/11/26(日) 21:56:15
エクセルファイルで
Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm
0 23 0 374.2 0 0 0 0 0 0 0 0 0
1 22 ・・・
があるのですが、2行4列目の数字だけをfscanf等で取り込みたいです。
このようなエクセルファイルが365個あり、順々に2行4列目だけをP[i]へ格納していこうと思うのですが、読み込みの部分が上手くいきません。
よろしくお願いします。
0774デフォルトの名無しさん2006/11/26(日) 22:04:59
>>773
その365個のファイルは、ファイル名に規則性があるの?
それとも、全部、手入力?
0775デフォルトの名無しさん2006/11/26(日) 22:22:55
>>774
年間データで
1_1.xls〜12_31.xls(1月1日〜12月31)
です。
0776デフォルトの名無しさん2006/11/26(日) 22:37:36
>>773
読みこむ部分だけ。
一行256文字以下で、二行目が整数、整数、整数、実数の並びになっているとして。

int readVal(const char *filename, double* d)
{
FILE *fp;
char line[256];
int dmy1, dmy2, dmy3;

fp = fopen(filename, "r");
if (fp == NULL)
return 0;
if (fgets(line, sizeof line, fp) == NULL)
return 0;

if (fgets(line, sizeof line, fp) == NULL)
return 0;

if (sscanf("%d %d %d %lf", &dmy1, &dmy2, &dmy3, d) != 4)
return 0;

fclose(fp);

return 1;
}
07777762006/11/26(日) 22:39:50
もう寝なきゃならないので、他の部分は、
↓まかせた。
0778デフォルトの名無しさん2006/11/26(日) 22:40:45
>>777
来週もよろしく頼むぞよ
0779デフォルトの名無しさん2006/11/26(日) 22:46:58
2行4列目って決まってんのなら
fgets(s, sizeof(s), fp),
fgets(s, sizeof(s), fp);
P[i] = s[3]-'0';
で良いんじゃね?
0780デフォルトの名無しさん2006/11/26(日) 22:54:27
つか、perlかRuby使えよそんなの。
0781デフォルトの名無しさん2006/11/26(日) 23:04:28
>>779
テキストとしての4列目なのではなく、4セル目なんでね?
>>776
何故%*dとせずにダミーに格納する?
>>775
xlsファイルを読むのは途方もなく面倒なわけだが、csvか何かに変換できないのか?
0782デフォルトの名無しさん2006/11/26(日) 23:46:01
拡張子を直接txtかcsvに直せばどうにかなりますかね?
>>776の方法では駄目でしょうか?
もう少しで試せるので出来次第報告します。
0783デフォルトの名無しさん2006/11/26(日) 23:48:57
>>782
拡張子ではなく内容の問題
書式等の情報が含まれるからめんどくさい
0784デフォルトの名無しさん2006/11/26(日) 23:54:55
txtに直接直したら、セル間はタブで分けられてます。
行間は勿論改行です。
0785デフォルトの名無しさん2006/11/26(日) 23:58:56
>>784
データ保存する際にtxtとかにするって意味か
ファイル名の変更で拡張子変えるって意味かと思った
0786デフォルトの名無しさん2006/11/27(月) 00:28:19
>>785
スイマセン、そういう意味です。
伝わりにくい言い方で申し訳ないです。
0787デフォルトの名無しさん2006/11/27(月) 01:20:44
grepか何かでもっと単純な形に
とりあえず切り出したらどうだろ?
0788デフォルトの名無しさん2006/11/27(月) 03:03:39
某サイトより
#include <stdio.h>
#include <conio.h>

int main()
{
int a = -32769, b = 32768;/*コメント*/

printf("a = 15\nb = 20\n");
printf("a + b = %d\n", a + b);
printf("何かキーを押してください\n");
getch();
printf("End");
return 0;

これってVC++だとコンパイルできないようなんですが、BCCではコンパイルできてしまいます。何か理由ってあるんでしょうか。
0789デフォルトの名無しさん2006/11/27(月) 03:06:44
>>788
標準じゃないライブラリconioがあるかどうか。
0790デフォルトの名無しさん2006/11/27(月) 03:15:57
>>788
括弧が足りない。
0791デフォルトの名無しさん2006/11/27(月) 03:18:25
>>788
愛も足りないねぇ 標準で済むのに
0792デフォルトの名無しさん2006/11/27(月) 03:22:00
>>790
どの括弧が足りないんでしょうか?

それとコンパイルできないのが正しい形なんでしょうか?
0793デフォルトの名無しさん2006/11/27(月) 03:29:23
たぶん VC++ の方は
getch(); → _getch();
にすればコンパイルできるんじゃないかなかな。
0794デフォルトの名無しさん2006/11/27(月) 03:39:15
例えばsin2θ=xで、xがわかっている場合にθの値を求めるにはどうすればいいですか?
0795デフォルトの名無しさん2006/11/27(月) 03:40:57
>>794
ニュートン法とか二分法とか
07967942006/11/27(月) 04:02:27
>>795
具体的にはどうすればいいんですか?
まったくわからないので教えて下さい。
0797デフォルトの名無しさん2006/11/27(月) 04:04:12
>>796
ぐぐれよ

例えば平方根を求める場合
http://www.sm.rim.or.jp/~shishido/newton.html

これのx*xをsin(x)にかえて、2*xをcos(x)に変えるとか
07987942006/11/27(月) 04:50:43
>>797
ぐぐっていろいろ試してみましたができませんでしたorz
0799デフォルトの名無しさん2006/11/27(月) 05:17:08
>>798
だいたいこんな感じ
#include <stdio.h>
#include <math.h>

#define f(x) (sin(2 * (x)) - 0.5) /* x = 0.5 */
#define g(x) (2 * cos(2 * (x)))

#define MAXCOUNT 10

int main(void)
{
double x = 0.5;
int k;

for (k = 1; k <= MAXCOUNT; k++) {
x = x - f(x) / g(x);
printf("%17.12f %15.8e\n", x, fabs(f(x)));
}

return 0;
}
0800デフォルトの名無しさん2006/11/27(月) 06:43:31
>>794
theta=asin(x)/2;
0801デフォルトの名無しさん2006/11/27(月) 06:47:48
math.hをインクルードするのを忘れんようにな
0802デフォルトの名無しさん2006/11/27(月) 14:15:57
sin2θって表記は2が上付きなのをまんま書いてるかも。
そうだとasin(sqrt(x))とasin(-sqrt(x))。
0803デフォルトの名無しさん2006/11/27(月) 15:24:01
putchar,getcharを使って、20061109のように日付を入力すると
曜日を出力するプログラムを作成せよ、って課題が学校で出たんですが
全く分かりません・・・
誰か教えてください
0804デフォルトの名無しさん2006/11/27(月) 15:32:16
>>803
宿題スレへどうぞ。
■ このスレッドは過去ログ倉庫に格納されています