C言語何でも質問掲示板


アンケートにご協力下さい → >> アンケートフォーム <<

規約と使い方

 
   おしえてください   
     ・[3806] バグ 
     ・[3810] 初心者 
   消費者金融について   
   専門学校の課題で・・ ....   
     ・[3802] box 
   はじめまして   
     ・[3725] keichan 
     ・[3739] こう 
     ・[3743] box 
     ・[3745] Justy 
     ・[3748] GPGA 
     ・[3752] こう 
     ・[3759] こう 
     ・[3760] Justy 
     ・[3761] こう 
     ・[3765] Justy 
     ・[3786] 管理人 
     ・[3796] こう 
   クイックソート解説ア ....   
     ・[3788] アプリ 
     ・[3792] 管理人 
   c言語   
     ・[3778] box 
     ・[3785] 管理人 
   関数について   
     ・[3769] バグ 
     ・[3774] Justy 
     ・[3775] box 
     ・[3782] きよてる 
     ・[3784] 管理人 
   入れ子の構造体と関数   
     ・[3776] box 
   最短経路問題について   
     ・[3717] box 
     ・[3718] box 
     ・[3724] エラーマン 
     ・[3726] keichan 
     ・[3727] エラーマン 
     ・[3729] box 
     ・[3731] エラーマン 
     ・[3732] エラーマン 
     ・[3734] mas 
     ・[3738] box 
     ・[3741] エラーマン 
     ・[3742] エラーマン 
   文字を一文字ずつ表示   
     ・[3737] 夏天 
   複素数のプログラム   
   はじめまして。   
     ・[3720] バグ 
     ・[3723] keichan 
   C言語で方程式を解く   
     ・[3709] box 
     ・[3721] ぴよ 
   ご報告 (雑談版)   
   エラーについて   
     ・[3661] box 
     ・[3662] 困ったさん 
     ・[3663] バグ 
     ・[3664] box 
     ・[3665] 困ったさん 
     ・[3666] GPGA 
     ・[3667] Yuki 
     ・[3668] box 
     ・[3669] 困ったさん 
     ・[3670] Yuki 
     ・[3671] box 
     ・[3672] 困ったさん 
     ・[3673] box 
     ・[3674] Yuki 
     ・[3676] 困ったさん 
     ・[3677] GPGA 
     ・[3678] 困ったさん 
     ・[3679] box 
     ・[3680] 困ったさん 
     ・[3681] box 
     ・[3682] 困ったさん 
     ・[3683] box 
     ・[3684] 困ったさん 
     ・[3685] GPGA 
     ・[3686] box 
     ・[3687] box 
     ・[3689] 困ったさん 
     ・[3690] box 
     ・[3691] box 
     ・[3710] 困ったさん 
   ウインドウタイトルの ....   
     ・[3698] GPGA 
     ・[3699] バグ 
     ・[3700] keichan 
     ・[3701] バグ 
     ・[3707] tr 
   構造体   
     ・[3622] box 
     ・[3702] mika 
     ・[3703] box 
     ・[3705] Yuki 
   slnファイルが開け ....   
     ・[3597] keichan 
     ・[3643] ヒロ 
     ・[3644] keichan 
     ・[3696] ヒロ 
   金額の変換いついて   
     ・[3653] box 
     ・[3655] バグ 
     ・[3692] 超初心者 
     ・[3693] box 
     ・[3694] 超初心者 
   CDの録音について   
     ・[3586] みみっく 
     ・[3588] 管理人 
     ・[3688] ダッシュ 
   エラー   
     ・[3568] box 
     ・[3570] P 
     ・[3571] box 
     ・[3572] バグ 
     ・[3675] P 
   無題   
     ・[3621] box 
     ・[3625] ☆ 
     ・[3627] box 
     ・[3628] ☆ 
     ・[3631] box 
     ・[3633] ☆ 
     ・[3641] ☆ 
     ・[3645] keichan 
     ・[3646] ☆ 
     ・[3648] box 
     ・[3652] ☆ 
     ・[3654] box 
     ・[3657] ☆ 
     ・[3659] box 
     ・[3660] ☆ 
   辞書検索を行うプログ ....   
     ・[3617] box 
     ・[3619] ☆ 
     ・[3620] box 
     ・[3624] ☆ 
     ・[3626] box 
     ・[3634] ☆ 
     ・[3635] 通りすがり 
     ・[3642] ☆ 
     ・[3647] ☆ 
     ・[3649] バグ 
     ・[3651] バグ 
     ・[3656] ☆ 
   たくさんの画像に対す ....   
     ・[3460] GPGA 
     ・[3462] box 
     ・[3464] GPGA 
     ・[3466] Yuki 
     ・[3468] GPGA 
     ・[3469] Yuki 
     ・[3477] しっぽ 
     ・[3479] Justy 
     ・[3482] GPGA 
     ・[3485] Justy 
     ・[3495] Sleepy 
     ・[3496] GPGA 
     ・[3636] Sleepy 
     ・[3640] GPGA 
   積分およびファイルへ ....   
     ・[3638] box 
     ・[3639] box 
   2次元配列に存在する ....   
     ・[3596] バグ 
     ・[3598] keichan 
     ・[3599] バグ 
     ・[3629] Justy 
     ・[3630] バグ 
     ・[3632] Justy 
   無題   
     ・[3582] バグ 
     ・[3587] みみっく 
     ・[3589] Yuki 
     ・[3623] ももた 
   質問です   
     ・[3590] keichan 
     ・[3613] こぎつね 
   ポインタの使い方   
     ・[3603] box 
     ・[3605] Yuki 
     ・[3607] fumu 
     ・[3609] box 
     ・[3611] Yuki 
     ・[3612] fumu 
   今日の日付?   
     ・[3608] box 
     ・[3610] maru 
   無題   
     ・[3584] ダッシュ 
     ・[3585] みみっく 
     ・[3600] ユウ 
     ・[3602] バグ 
     ・[3604] ユウ 
   助けてください・・・   
     ・[3592] バグ 
     ・[3594] よっしー 
   ポインタについてです ....   
     ・[3577] box 
     ・[3578] ふわりん 
     ・[3579] box 
   構造体の問題   
     ・[3480] 管理人 
     ・[3481] オルムント 
     ・[3483] オルムント 
     ・[3486] 管理人 
     ・[3487] 管理人 
     ・[3494] box 
     ・[3504] オルムント 
     ・[3506] box 
     ・[3531] オルムント 
     ・[3536] box 
     ・[3574] オルムント 
   無題   
   3次元配列   
     ・[3425] 管理人 
     ・[3471] しゅう 
     ・[3475] 管理人 
     ・[3476] 管理人 
     ・[3489] しゅう 
     ・[3535] しゅう 
     ・[3537] 管理人 
     ・[3569] しゅう 
   エンディアン判定   
     ・[3563] しっぽ 
     ・[3564] box 
     ・[3565] しっぽ 
     ・[3566] しっぽ 
   複素数の計算   
     ・[3549] Yuki 
     ・[3550] box 
     ・[3553] 困ったさん 
     ・[3555] box 
     ・[3556] 困ったさん 
     ・[3557] しっぽ 
     ・[3558] box 
     ・[3562] 困ったさん 
   構造体の配列を用いて ....   
     ・[3500] Yuki 
     ・[3501] box 
     ・[3503] 困ったさん 
     ・[3505] box 
     ・[3507] 困ったさん 
     ・[3508] box 
     ・[3509] GPGA 
     ・[3510] 困ったさん 
     ・[3511] box 
     ・[3512] 困ったさん 
     ・[3513] GPGA 
     ・[3514] 困ったさん 
     ・[3515] Yuki 
     ・[3516] 困ったさん 
     ・[3517] GPGA 
     ・[3518] box 
     ・[3519] 困ったさん 
     ・[3520] 管理人 
     ・[3521] 困ったさん 
     ・[3522] box 
     ・[3523] 困ったさん 
     ・[3524] バグ 
     ・[3525] 困ったさん 
     ・[3526] box 
     ・[3527] 困ったさん 
     ・[3528] GPGA 
     ・[3529] 困ったさん 
     ・[3530] GPGA 
     ・[3533] 困ったさん 
     ・[3539] しっぽ 
     ・[3540] しっぽ 
     ・[3542] 管理人 
     ・[3546] 困ったさん 
     ・[3561] しっぽ 
   質問です・・・・・   
     ・[3554] box 
     ・[3560] ユウ 
   課題で・・・   
     ・[3442] box 
     ・[3454] 管理人 
     ・[3502] C初心者 
     ・[3543] C初心者 
     ・[3544] C初心者 
     ・[3545] 管理人 
     ・[3548] C初心者 
   大学の課題で・・・   
     ・[3463] box 
     ・[3465] Yuki 
     ・[3467] あっきぃ 
     ・[3497] あっきぃ 
     ・[3499] Yuki 
   課題のことで   
     ・[3472] box 
     ・[3493] ライアン 
   画像照合プログラム   
     ・[3491] 管理人 
     ・[3492] 管理人 
   大学の宿題を解決して ....   
     ・[3488] 管理人 
   あけましておめでとう ....   
     ・[3419] ダッシュ 
     ・[3420] 管理人 
     ・[3421] ダッシュ 
     ・[3422] 管理人 
     ・[3423] ダッシュ 
     ・[3426] 管理人 
     ・[3427] 管理人 
     ・[3429] ダッシュ 
     ・[3430] 管理人 
     ・[3431] ダッシュ 
     ・[3432] 管理人 
     ・[3433] ダッシュ 
     ・[3436] 管理人 
     ・[3458] ダッシュ 
     ・[3473] 管理人 
   課題で   
     ・[3440] box 
     ・[3443] イシモト  
     ・[3444] イシモト 
     ・[3446] box 
     ・[3448] イシモト 
     ・[3449] box 
     ・[3450] イシモト 
     ・[3451] ま〜く 
     ・[3452] box 
     ・[3456] 通りすがり 
     ・[3457] イシモト 
   無題   
     ・[3447] box 
     ・[3453] Yuki 
     ・[3455] 管理人 
   テキストファイルの処 ....   
     ・[3402] バグ 
     ・[3403] box 
     ・[3404] しっぽ 
     ・[3408] 管理人 
     ・[3428] 名無しさん 
     ・[3434] フリオ 
     ・[3435] Justy 
     ・[3438] フリオ 
     ・[3439] フリオ 

Name: 初心者  ..入門者(4,521ポイント)   Date: 2007/01/21(日) 22:37   No:3805       
Title: おしえてください    
はじめまして。大学に通っている者なのですが次のような問題がでてわからずに困っています。

「問題」
ポインタ、構造体、関数分割、ファイル分割のすべてを使ったプログラムをつくりなさい

という問題がでました。僕はIF文かswitch関数を使えば簡単なプログラムができるのではないかと思うのですがどのようにプログラムを組み立てればよいのかわかりません。もしよろしければ教えていただけないでしょうか?


140ポイント を手に入れた。


Name: バグ  ..上級者(22,350ポイント)   Date: 2007/01/21(日) 23:05   No:3806     
Title: Re:おしえてください    
過去レスで全く同じ質問をされていた方が居ましたが、その方は関数分割とファイル分割が分からないという事で質問されていました。あなたは何が分かりませんか?
せめて自分が何を作りたいかくらいは、決めてもらわないと誰もアドバイスのしようがないですよ。


118ポイント を手に入れた。

Name: 初心者  ..入門者(4,601ポイント)   Date: 2007/01/21(日) 23:39   No:3810     
Title: Re:おしえてください    
すいません。授業を体調不良などで休んでいて友達に授業内容を聞いたりしたのですが今回の問題のことについてはあまり理解できていません。ポインタ、構造体、関数分割、ファイル分割のすべてを使ったプログラムで計算機のようなものは作れないでしょうか?

80ポイント を手に入れた。



Name: ミンク  ..ぴよぴよ(221ポイント)   Date: 2007/01/21(日) 23:33   No:3808       
Title: 消費者金融について    
はじめまして
元金と年利率(単位%)を入力し,返済完了までの各月毎の累積返済額とローン残高を画面に表示するプログラムを作成せよ.
という問題で以下のように解いてみたのですがどうでしょうか、いまいち自信がもてず悩んでいます
#include<stdio.h>


int main(int argc, char *argv[])
{

int shaku, hensai, ruiseki, zankin, tuki;
float riritu;

printf("借入金額を入力して下さい(円)");
scanf("%d", &shaku);
printf("月々の返済金額を入力して下さい(円)");
scanf("%d", &hensai);
printf("年利率を入力して下さい(%)");
scanf("%f", &riritu);

tuki = 0;
zankin = shaku;

printf("返済月  ローン残高  累積返済額\n");

while(zankin > hensai){
tuki++;
zankin = zankin * (1. + riritu / 12. / 100);
zankin = zankin - hensai;
ruiseki = tuki * hensai;
printf("%3dカ月目 %8d円   %8d円\n", tuki, zankin, ruiseki);
}
printf("最終月     0円   %8d円\n", ruiseki+zankin);

}


221ポイント を手に入れた。




Name: c言語難しい  ..ぴよぴよ(211ポイント)   Date: 2007/01/21(日) 00:49   No:3781       
Title: 専門学校の課題で・・・    
入力データ中の英文字(大文字、小文字)を、携帯電話の10キー入力のキー番号(押す回数は考慮しない)に置きかえて、それ以外の文字はそのまま出力するプログラムを作成せよ。文字を入れたファイルと、文字を出力するファイルを作り、2つのファイル名をコマンドライン引数に入れて実行せよ。
という問題なんですがぜんぜん中身をどう作っていいのかわかりません。教えていただければ幸いです。

今できているのは↓だけです。

#include <stdio.h>


int main(int argc, char *argv[])
{
FILE *fpin, *fpout;
int i=0;

if((fpi=fopen(argv[1],"r"))==NULL) {
fprintf(stderr, "入力ファイルを開けません <%s>.\n", argv[1]);
return(-1);
}

if((fpo=fopen(argv[2],"w"))==NULL) {
fprintf(stderr, "出力ファイルを開けません <%s>.\n", argv[2]);
return(-1);
}

while(argv=/0){
if(argv[i++]==a||argv[i++]==b||argv[i++]==c||argv[i++]==A||argv[i++]==B||argv[i++]==C){
fprintf("");
}
}

fclose(fpin);
fclose(fpout);
return (0);
}

ここまででも全然見当違いのことを書いていると思うのでよろしくおねがいします。


211ポイント を手に入れた。


Name: box  ..プログラマー(38,891ポイント)   Date: 2007/01/21(日) 22:00   No:3802     
Title: Re:専門学校の課題で・・・    
プログラム全体の大まかな流れは、下記のとおりです。

1)コマンドライン引数の内容に従い、入出力ファイルをオープンする。
2)入力ファイルにデータがある間、2−1)〜2−3)を繰り返す。
2−1)入力ファイルから1文字読む。
2−2)その文字が英大文字または英小文字ならば、携帯電話キーボード上での
対応する数字を出力ファイルに書く。
2−3)その文字が英大文字でも英小文字でもなければ、出力ファイルに
そのまんま(東じゃないですよ)書く。
3)入出力ファイルをクローズする。

C言語の標準関数を使えば、コードが書けます。
先に挙げられたコードになかった分としては、
・入力ファイルから1文字読む(fgetc)
・英大文字または英小文字であることを判断する(isalpha)
・出力ファイルに1文字書く(fputc)
あたりです。これらについて、調べてみてください。


301ポイント を手に入れた。



Name: こう  ..ぴよぴよ(5ポイント)   Date: 2007/01/19(金) 15:51   No:3722       
Title: はじめまして    
今大学でc言語を習い始めているのですが、ただ課題をやらされているだけでc言語というものがどういうものなのかいまいちよくわかりません。c言語はどのようなものが作れるのでしょうか?教えてください

5ポイント を手に入れた。


Name: keichan  ..中級者(10,673ポイント)   Date: 2007/01/19(金) 15:53   No:3725     
Title: Re:はじめまして    
コンピューター上で動作するプログラムであればどんなものでも作れると思います。

35ポイント を手に入れた。

Name: こう  ..ぴよぴよ(38ポイント)   Date: 2007/01/19(金) 18:58   No:3739     
Title: Re:はじめまして    
ありがとうございます
家庭用ゲーム機などのソフトもc言語で作っているのでしょうか?


33ポイント を手に入れた。

Name: box  ..プログラマー(36,852ポイント)   Date: 2007/01/19(金) 21:29   No:3743     
Title: Re:はじめまして    
> 家庭用ゲーム機などのソフトもc言語で作っているのでしょうか?

詳しくは知らないのですが、中にはCやC++で開発したソフトがあるかもしれません。

他におもしろそうな分野としては、デジタル家電や各種通信機器などを
制御するためのソフトウェア(組込ソフトウェア)を
CやC++(他の言語の場合もあります)で開発しています。


109ポイント を手に入れた。

Name: Justy  ..熟練のプログラマー(53,350ポイント)   Date: 2007/01/19(金) 22:24   No:3745     
Title: Re:はじめまして    
家庭用ゲーム機などのソフトもc言語で作っているのでしょうか?
 PS1・Sサターン以降はほぼC言語です。
 但し、ドリキャス以降はC++という選択肢もあり、後発のマシンパワーのあるものほどC++の傾向が強くなるようです。
 ちなみにで携帯ゲーム機だといろいろと非力なのでC言語なことが多いのですが、DSくらいになるとC++を使っても大丈夫らしいです。


206ポイント を手に入れた。

Name: GPGA  ..上級者(18,104ポイント)   Date: 2007/01/19(金) 23:20   No:3748     
Title: Re:はじめまして    
携帯電話ゲームですとAU機がC/C++で動きます。
昔はCで組んでいましたが、一年くらい前から
C++で組んでいます。ただし、STLとか例外とか使えませんけどね。


54ポイント を手に入れた。

Name: こう  ..ぴよぴよ(28ポイント)   Date: 2007/01/20(土) 10:03   No:3752 解決!     
Title: Re:はじめまして    
みなさんありがとうございました

10ポイント を落としてしまった。

Name: こう  ..ぴよぴよ(6ポイント)   Date: 2007/01/20(土) 16:41   No:3759     
Title: Re:はじめまして    
あとc言語をマスターするのにどの程度の数学力があればいいのでしょうか?

22ポイント を落としてしまった。

Name: Justy  ..熟練のプログラマー(53,578ポイント)   Date: 2007/01/20(土) 17:00   No:3760     
Title: Re:はじめまして    
どの程度の数学力
 C言語をマスターするだけなら、小学生で習う算数レベルで十分だと思います。

 C言語は所詮ツールの1つなので、何をしたいか、どんなのを作りたいのかでどの程度の数学が必要かどうかが決まります。
 例えば文字列を処理するツールを作るならほとんど数学は必要ないですが、3Dのゲームを作りたいとなったら高校レベルの数学が必要になります。

 こうさんはC言語でどんなことをしたいと考えていますか?


228ポイント を手に入れた。

Name: こう  ..ぴよぴよ(45ポイント)   Date: 2007/01/20(土) 17:53   No:3761     
Title: Re:はじめまして    
私は将来的にパソコンで3Dゲームなどつくりたいと漠然と考えているのですが
大学で習う数学などはとくに必要ないのでしょうか?


39ポイント を手に入れた。

Name: Justy  ..熟練のプログラマー(53,677ポイント)   Date: 2007/01/20(土) 20:27   No:3765     
Title: Re:はじめまして    
3Dゲームなどつくりたい
 普通の3Dゲームであればベクトル・行列などの高校レベルで十分です。

 では大学レベルの数学が必要ないか、というとどちらとも言えません。
 作りたいゲームの内容によっては必要になるかもしれませんし、必要ないかもしれません。

 ただまぁ、知っておいた方が何かと応用が利くのではないでしょうか。


99ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(167,511ポイント)   Date: 2007/01/21(日) 01:24   No:3786     
Title: Re:はじめまして    
こんにちは。管理人です^^

>ただ課題をやらされているだけでc言語というものがどういうものなのかいまいちよくわかりません。

非常に共感できます><

私もそうでした。私が大学1年のときはそれはそれはプログラムの出来が悪く、友達の課題を見せてもらうしまつでしたからC言語で何ができるのか?

こんなのならって意味あるのか?と疑問を持ちました。

この掲示板の元になっている私のHPですが、そこで色々な作品を紹介しています。

http://dixq.net/sakuhin.html

これは私の作ったプログラムなんですが、これ全部C言語で書いています。しかも初歩的な手続きしかしていません。

でも見栄えはそこまで簡素ではないかと思います。

グラフィックを表示する、音を出力するといった「関数」を使うことでこういうことが可能になるんですよ。

そういう関数がまとめられているものをライブラリというのですが。

Windows自体もC言語で出来ています。C言語があればなんだってできますよ。他の言語も結局Cに似ていますしね。(ここで言うCはC++を含みます)

ソフトと呼ぶには大げさですが、簡単なプログラミングの解説アプリを作っています。

http://dixq.net/sort.html

こんなことも出来ます。

ゲームを作るときに物理の公式をあてはめた運動を行ったりするときにはそういう知識が必要ですが、

ないからといってプログラムが書けないというわけではないです。

3Dでしたら行列計算をよく行いますけど、高校で習っている範囲ですし。

だいたいプログラムを書くのに数学を使わないようなプログラムのしかたをすれば一切必要ないですしね。


117ポイント を手に入れた。

Name: こう  ..ぴよぴよ(76ポイント)   Date: 2007/01/21(日) 11:11   No:3796 解決!     
Title: Re:はじめまして    
皆さんご丁寧な回答どうもありがとうございました。
とても参考になりました。


31ポイント を手に入れた。



Name: アプリ  ..ぴよぴよ(165ポイント)   Date: 2007/01/21(日) 01:55   No:3787       
Title: クイックソート解説アプリについて    
こんにちは。初めての投稿です。
クイックソート解説アプリについてなんですが、ダウンロードして、拝見しました。
何度か読み返させてもらったんですが、
67番の字幕が「3までを右範囲として」って出てますが、これで説明はいいのでしょうか?
ちょっとよくわからなかったので、聞かせてもらいました。
くだらないことを聞いてしまってごめんなさい。


165ポイント を手に入れた。


Name: アプリ  ..ぴよぴよ(201ポイント)   Date: 2007/01/21(日) 02:02   No:3788     
Title: 無題    
もう一つなんですが・・最後にVOICE-CHONGって出ているんですが、私の環境では音声が出ていないようです・・。

どこかおかしいのでしょうか?


36ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(167,904ポイント)   Date: 2007/01/21(日) 04:59   No:3792     
Title: Re:無題    
こんにちは^^
アプリ使ってくださりありがとうございます☆

>3までを右範囲として

あ、確かにおかしいですね。意味合いとしては右から見た時に3までってことは一番範囲の左って意味になるからそういう意味だったんですが、

〜までって言う言い方をすると右端のように受け取れますね!文章を変更しておきます。

ご報告ありがとうございます^^

>私の環境では音声が出ていないようです・・。

あ、CASTに書いたままでした^^;

実は元々このアプリは音声付だったんですよ。

音声も用意していました。しかしあれだけの量しゃべるファイルを作るのはホント大変で、

途中音楽が変わるところから作ってなかったんですよ。

途中から音声がなくなるのは変だから全部なしにしてしまいました。

えぇと、次回アップロード時には音声を入れます!!(いつか・・ホントいつか^^;

なので音声が出ないのは正常です。

ご報告ありがとうございました♪


393ポイント を手に入れた。



Name: まりな  ..ぴよぴよ(364ポイント)   Date: 2007/01/20(土) 23:17   No:3773       
Title: c言語    
こんばんは。よろしくおねがいします
@からOの文章は、正しく書けているでしょうか?
どこか、一箇所でも誤った箇所や、おかしな部分がありましたら教えていただきたいです。

@10進数58を、8ビットの2進数で表現すると、01000111となる。

A8ビットの2進数10101100を2桁の16進数で表すとABとなる。

BC言語でchar型では-128〜+128までの整数を表現することができる。

CC言語の算術演算子には+、*、-、/などがある。

D10進数の13を16進数で表すとDである。

EB=a++の意味はaとbに代入してからaに1を加えるである。

Fc言語の論理演算子で[&&]は論理和(OR)を表す。

G次のプログラムを実行すると配列の各要素の平均を出力する。

#include <stdio.h>
#define YOUSO 5
main8()
{
int data[YOUSO]=[3,6,5,8,2];
int total;
int*p;

total=0;
for(p=data;p<YOUSO;p++)
total+=*p;

printf("Total=%d,total/YOUSO);
}

H次のプログラムを実行すると入力した整数の奇数偶数の判定ができる。
#include<stdio.h>
main()
{
int a;
printof(“整数を入力して下さい。”);
scanf(“%d”,&a);

if(a%2==0)
printf(“奇数です。\n”);
else
printf(“偶数です。\n”);
}

IC言語でint型では-32768〜+32767までの整数を表現することができる。

J10進数の15を2進数で表すと1111である。

K2進数の1001を16進数で表すと9である。

Lb=a—の意味はaをbに代入してからaから1を引くである。

Ma=>bの意味はaはbより大きいか等しいである。

N次のプログラムを実行すると1から10までの整数の和を出力する。

#include<stdio,h>
#define MAX 5
main()
{
int I,total;
total=1;
for(i=0;I<MAX;i++>){
total+=I;
}
printf(“%d”,total);
}

O次のプログラムを実行すると変数cの値は3になる。

#include<stdio,h>
#define MAX 10
main()
{
int a,b,c;

a=1;
b=a++;
c=++b;
}


364ポイント を手に入れた。


Name: box  ..プログラマー(37,955ポイント)   Date: 2007/01/20(土) 23:56   No:3778     
Title: Re:c言語    
> @10進数58を、8ビットの2進数で表現すると、01000111となる。

誤っています。

> A8ビットの2進数10101100を2桁の16進数で表すとABとなる。

誤っています。

> BC言語でchar型では-128〜+128までの整数を表現することができる。

誤っています。

> CC言語の算術演算子には+、*、-、/などがある。

正しいです。
ところで、「など」は具体的に何を指しますか?

> D10進数の13を16進数で表すとDである。

正しいです。

> EB=a++の意味はaとbに代入してからaに1を加えるである。

誤っています。

> Fc言語の論理演算子で[&&]は論理和(OR)を表す。

誤っています。

> G次のプログラムを実行すると配列の各要素の平均を出力する。

コンパイル時にエラーが出ます。したがって、実行できません。

> H次のプログラムを実行すると入力した整数の奇数偶数の判定ができる。

同上

> IC言語でint型では-32768〜+32767までの整数を表現することができる。

ある処理系においては、正しいです。
別の、ある処理系においては、もっと広い範囲の整数を表現できます。

> J10進数の15を2進数で表すと1111である。

正しいです。

> K2進数の1001を16進数で表すと9である。

正しいです。

> Lb=a—の意味はaをbに代入してからaから1を引くである。

誤っています。マイナスが1個足りませんか?

> Ma=>bの意味はaはbより大きいか等しいである。

誤っています。C言語には=>という演算子はありません。

> N次のプログラムを実行すると1から10までの整数の和を出力する。

コンパイル時にエラーが出ます。したがって、実行できません。

> O次のプログラムを実行すると変数cの値は3になる。

誤っています。


160ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(167,394ポイント)   Date: 2007/01/21(日) 01:13   No:3785     
Title: Re:c言語    
十進数と2進数についてですが


(2) 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000
(10)0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

ですね。つまり2進数の1111を見てみます。

1 1 1 1
↑2の3乗 ↑2の2乗 ↑2の1乗 ↑2の0乗

2の3乗は8ですね、2乗は4、1乗は2、0乗は1です。
8+4+2+1=15
つまり2進数の1111は十進数の15です。上の表で確かめてください。

2の乗数は1,2,4,8,16,32...となっていきますね。
今11を2進数に変えたい時は、

11までに一番近い乗数は8がありますから
8である2の3乗のところは1になります。

11-8=3です。
2の2乗は4です。
3以下に4はありませんから
4である2の2乗のところは0になります。

現在3です。
2の1乗は2です。
2は3以下にあります。
2である2の1乗のところは1になります。

3-2=現在1です。
2の0乗は1です。
1は1以下あります。
1である2の0乗のところは1になります。

これを並べると1011つまり十進数の11です。

筆算で計算する方法もあります。
でも筆算で計算するより理論を覚えたほうが忘れないので良いと思います。

・・・と全部答えているとすごく時間がかかってしまいそうなので、
どうしてもわからない部分があったらまた聞いてください。


439ポイント を手に入れた。



Name: きよてる  ..ぴよぴよ(174ポイント)   Date: 2007/01/20(土) 21:39   No:3767       
Title: 関数について    
はじめまして。質問させてください。
大学でC言語を習っているのですが、
ただ漠然と教えられた事(structとかforとか)を教えられたとおりに使って、
課題を解いていただけでした。
ところが、この前、「関数とその役割について実例を用いて説明せよ」という問に
つまずいてしまいました。
習った事は使えても、意味をあまり理解していなかったのです。
僕は「main関数の行数を減らす役割」
と答えたのですが、全くもって見当違いですよね。
教えてください。


174ポイント を手に入れた。


Name: バグ  ..上級者(22,232ポイント)   Date: 2007/01/20(土) 22:36   No:3769     
Title: Re:関数について    
物凄く極論ではありますが、ある意味正しい解釈かもしれません(;^_^A

私が個人的に考える関数の存在意義というか、関数化の利点は…

1:同じコーディングを繰り返さなくてもよい。

2:エラーや変更があった場合に、その関数の中身だけを直せばよい。

などがありますね。ようするに、プログラムをする人が分かりやすくなるというのが、関数化の最大の目的ではないかと思っています。


142ポイント を手に入れた。

Name: Justy  ..熟練のプログラマー(53,776ポイント)   Date: 2007/01/20(土) 23:29   No:3774     
Title: Re:関数について    
 加えて捕捉するなら関数を使うことで

3: 複雑さの軽減
 使う側は内部で何をしているか気にしなくても良く、ただ何を渡すと何が戻ってきて何をしてくれるのかだけ知っていればいい。

4: 処理内容を明確にできる
 一連の処理に名前がついていると判りやすいし、(適切な名前が付いていれば)目的を明確にできるのでコードが読みやすくなる。

 ということが期待できます。



99ポイント を手に入れた。

Name: box  ..プログラマー(37,759ポイント)   Date: 2007/01/20(土) 23:40   No:3775     
Title: Re:関数について    
大規模なソフトウェアを開発する場合、一人ですべてを開発するよりも
複数人のチームで開発する方がコストや時間の点で有利になることがあります。

そういう場合、ソフトウェア全体で満たすべき機能を適切に関数分割しておくと、
・関数aとbの作成と単体テストは、鈴木さんに任せる
・関数cとdとeの作成と単体テストは、小林さんに任せる
・関数fとgの作成と単体テストは、田中さんに任せる
・全体の管理は、自分が行なう
という具合に、仕事の分割ができます。

他の人が担当する関数を使うときは、その中身のロジックを知らなくても、
Justyさんが書かれたように「何を渡せば何が返ってくるかを知っていさえすればよい」
ことになります。


84ポイント を手に入れた。

Name: きよてる  ..ぴよぴよ(215ポイント)   Date: 2007/01/21(日) 00:51   No:3782 解決!     
Title: Re:関数について    
なるほど、関数を使うとそのような利点があるのですね。
皆さんありがとうございます。
何となくですが、理解できました。


41ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(166,955ポイント)   Date: 2007/01/21(日) 00:58   No:3784     
Title: Re:関数について    
実例はいいのでしょうか?

どんなものかを教えてもらうより、自分で色々関数作って実行してみたほうが
よい文章が書けると思いますよ。

入門のサイトは沢山ありますから、その辺をながめて、自分で色々作ってみてください。


11ポイント を手に入れた。



Name: ME  ..初心者(5,948ポイント)   Date: 2007/01/20(土) 22:53   No:3771       
Title: 入れ子の構造体と関数    
構造体を使ってデータ処理をするプログラムを作っています。
struct list {

char name[12]; //科目名
int sub; //科目コード

struct test{
int seito; //生徒番号
int kekka[5]; //テスト結果
//※kekka[1]=1のように「問1ができたら1、できなかったら0」を入力する
}

struct list *next;
};
という入れ子の構造体にデータ入力をしたいのですが、入れ子状態でどのように使うかわかりません。

入れ子になっていない状態での入力は以下のプログラムを使っています。
struct list *write(int code, struct list *head)
{
char name[10];
int sub;

printf( "科目を入力:" ); scanf( "%s", name );
printf( "コードを入力:" ); (scanf("%d",&sub);
head = add_sort( name, sub, head );

return(head);
}

struct list *add_sort( char *str, int sub, struct list *head )
{
struct list *p, *new_p;

if ( ( new_p = ( struct list * )malloc( sizeof( struct list ) ) ) == NULL ) {
printf( "malloc error\n" ); exit( 1 );
}
strcpy( new_p->name, str );
new_p->sub = sub;

if ( head == NULL || sub > head->sub ) {
new_p->next = head;
return new_p;
}

for ( p = head; p->next != NULL; p = p->next )
if ( sub > p->next->sub ) break;

new_p->next = p->next;
p->next = new_p;
return head;
}
void dispall( struct list *p )
{
while ( p != NULL) {
printf( "%s %d\n", p->name, p->sub );
p = p->next;
}
}
void free_list( struct list *p )
{
struct list *p2;

while ( p != NULL ) {
p2 = p->next;
free( p );
p = p2;
}
}
int main( void )
{
struct list *head= NULL;
int code;

while( 1 ) {
printf( "入力:%d 表示:%d 終了:%d\n" ,1,2,3);
printf( " 処理>>" );
scanf( "%d", &code );

if ( code == 3 ) break;
else if ( code == 1 ){ head = write(code, head);
}else if ( code == 2T ){ dispall(head);
}else{
fflush(stdin);
}
}
free_list( head );

return 0;
}

write関数で入れ子の構造体データにデータ入力するように変更するには
どのように記述したらいいのでしょうか?
複数の生徒のデータを入力したいのですが、このソースコードで可能でしょうか?

どなたか教えていただけると助かります。


675ポイント を手に入れた。


Name: box  ..プログラマー(37,795ポイント)   Date: 2007/01/20(土) 23:45   No:3776     
Title: Re:入れ子の構造体と関数    
> という入れ子の構造体にデータ入力をしたいのですが、入れ子状態でどのように使うかわかりません。

入れ子になっていないつもりで、

new_p->seito = 何とか;
new_p->kekka[0] = かんとか;

のように書いていいのではないでしょうか。


36ポイント を手に入れた。



Name: エラーマン  ..かけだし(1,140ポイント)   Date: 2007/01/18(木) 23:35   No:3711       
Title: 最短経路問題について    
学校の課題で最短経路問題を解くプログラムを作っていて点の数、点と点を結ぶ辺を作る確率を設定してpに0〜1の乱数を発生させてprobability以下なら長さ1の辺をつくりそれで直径(最短経路の最大値)を求めるプログラムを作ったのですが
なぜか大きい数をいれるとSegmentation fault(core dumped)とだけ表示して終了します
あと小さい数をいれたときでも直径が大きくなりあっていない気がします

これの前にテキストファイルから始点、終点、距離を読み込んで最短経路を求める問題をやりそれを変更したものなので最短経路を求める関数dist_researchはあっていると思うんですが・・・

コンパイラはCygwinです
どなたか原因わかりませんか?


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>
#include <limits.h>

#define MAX 20000


static int root_cnt, cnt=0;

void dist_research( int, int [][], int [] );

int main (void)
{
static int root[MAX][MAX]; //始点と終点の距離
int count=0, i, j=0;
int z, k=INT_MIN;
static int dist, dist_ans[MAX];
double probability, p;
char InName[FILENAME_MAX];
char OutName[FILENAME_MAX];
FILE *fpin, *fpout;

time_t seed;

time(&seed);
srand(seed % UINT_MAX);

printf("点を何個発生させますか?>>>");
scanf("%d", &root_cnt);
printf("辺を作る確率を設定してください(少数で)>>>");
scanf("%lf", &probability);

printf("点:%d個\n", root_cnt);

for( i=1 ; i <= root_cnt ; i++ ) dist_ans[i] = INT_MAX; //全ての点の始点からの距離を最大に

for( i=0 ; i < root_cnt ; i++ )
{
for( j=0 ; j < root_cnt ; j++ )
{
p = (double)rand( ) / RAND_MAX;
if( p > probability )
{
root[i][j] = 1; //始点と終点の距離を代入
count++;
}
}
}

printf("ネットワーク個数:%d個\n", count);

for( i=0 ; i <= count ; i++) dist_research( i, root, dist_ans );

printf("始点:0\n");

for( i=1 ; i < count ; i++ )
{
if( k < dist_ans[i] )
{
k = dist_ans[i];
z = i;
}
}

printf("ネットワークの直径:%d\n点:%d", k, z);

return 0;
}

void dist_research( int k, int root[][MAX], int dist_ans[] ) //最短距離探索関数
{
int i, j=0;

for( i=0 ; i < root_cnt ; i++ ) //始点
{
if( root[k][i] != 0 )
{
if( dist_ans[i] > dist_ans[k] + root[k][i] )
{
dist_ans[i] = dist_ans[k] + root[k][i];

}
}
}


}




1,140ポイント を手に入れた。


Name: box  ..プログラマー(36,306ポイント)   Date: 2007/01/19(金) 09:25   No:3717     
Title: Re:最短経路問題について    
> なぜか大きい数をいれるとSegmentation fault(core dumped)とだけ表示して終了します

何に対してどんな値を入力したときですか?


9ポイント を手に入れた。

Name: box  ..プログラマー(36,330ポイント)   Date: 2007/01/19(金) 10:04   No:3718     
Title: Re:最短経路問題について    
> なぜか大きい数をいれるとSegmentation fault(core dumped)とだけ表示して終了します

変数countの値がMAX以上になって、配列の定義範囲を超えてしまう場合がありませんか?


24ポイント を手に入れた。

Name: エラーマン  ..かけだし(1,281ポイント)   Date: 2007/01/19(金) 15:52   No:3724     
Title: Re:最短経路問題について    
> 変数countの値がMAX以上になって、配列の定義範囲を超えてしまう場合がありませんか?

点1000個、辺確率0.9でやった場合Segmentation faultがおこりました
それでよく見たら配列限界を超えていたので
#define MAX 20000を
#define MAX 200000にすると

xc_2_2.c: In function `main':
xc_2_2.c:16: error: size of array `root' is too large
xc_2_2.c:16: error: storage size of `root' isn't known

と表示されます
なぜでしょうか?



141ポイント を手に入れた。

Name: keichan  ..中級者(10,756ポイント)   Date: 2007/01/19(金) 15:58   No:3726     
Title: Re:最短経路問題について    
静的記憶領域に sizeof(int)*200000*200000
sizeof(int)が4byteであると仮定すると 4*200000*200000 ≒ 160Gbyte
確保しようとしています。

そりゃ無理がありますよね。。。
メモリに160Gの容量は確保できませんから。。


83ポイント を手に入れた。

Name: エラーマン  ..かけだし(1,451ポイント)   Date: 2007/01/19(金) 16:04   No:3727     
Title: Re:最短経路問題について    
> 静的記憶領域に sizeof(int)*200000*200000
> sizeof(int)が4byteであると仮定すると 4*200000*200000 ≒ 160Gbyte
> 確保しようとしています。
>
> そりゃ無理がありますよね。。。
> メモリに160Gの容量は確保できませんから。。

それはムリですね(´Д`;)
じゃあそれを踏まえて
#define MAX 20000として

点を何個発生させますか?>>>100
辺を作る確率を設定してください(少数で)>>>0.9
点:100個

としたとき

ネットワーク個数:1026個
始点:0
ネットワークの直径:2147483647
点:100

となります・・・
これはどういうことなのでしょうか?

あと追加なのですが
確率を0.9あたりにしないと0.8とかにしたとき一気に辺が9000個近くにあがるのはなぜですか?


170ポイント を手に入れた。

Name: box  ..プログラマー(36,688ポイント)   Date: 2007/01/19(金) 16:25   No:3729     
Title: Re:最短経路問題について    

根本的なことをお聞きします。

> root[i][j] = 1; //始点と終点の距離を代入
> count++;

ここが、辺を作る処理なのですか?だとすると、
変数probabilityに例えば0.99などいう値を与えると、
ほとんどの場合に辺を作る、という風にしたいのでしょうか?

> p = (double)rand( ) / RAND_MAX;
> if( p > probability )

このif文だと、pが0.99を超えたら辺を作る、つまり、
ほとんどの場合は辺を作らない、ということになりませんか?
不等号の向きが反対のような気がするんですけど…。


2倍のポイントを手に入れた! 358ポイント を手に入れた。

Name: エラーマン  ..かけだし(2,114ポイント)   Date: 2007/01/19(金) 17:56   No:3731     
Title: Re:最短経路問題について    
.cは添付できないのかorz

現在のプログラムは

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>
#include <limits.h>

#define MAX 20000


static int root_cnt;

void dist_research( int, int [][], int [] );

int main (void)
{
static int root[MAX][MAX]; //始点と終点の距離
int count=0, i, j=0;
int z, k=INT_MIN;
static int dist, dist_ans[MAX];
double probability, p;
char InName[FILENAME_MAX];
char OutName[FILENAME_MAX];
FILE *fpin, *fpout;

time_t seed;

time(&seed);
srand(seed % UINT_MAX);

printf("点を何個発生させますか?>>>");
scanf("%d", &root_cnt);
printf("辺を作る確率を設定してください(少数で)>>>");
scanf("%lf", &probability);

printf("点:%d個\n", root_cnt);

for( i=1 ; i <= root_cnt ; i++ ) dist_ans[i] = INT_MAX; //全ての点の始点からの距離を最大に

for( i=0 ; i < root_cnt ; i++ )
{
for( j=0 ; j < root_cnt ; j++ )
{
p = (double)rand( ) / RAND_MAX;
if( p < probability )
{
root[i][j] = 1; //始点と終点の距離を代入
count++;
}
}
}

printf("ネットワーク個数:%d個\n", count);

for( i=0 ; i <= root_cnt ; i++) dist_research( i, root, dist_ans );

printf("始点:0\n");

for( i=0 ; i < root_cnt ; i++ )
{
if( k < dist_ans[i] )
{
k = dist_ans[i];
z = i;
}
}

printf("ネットワークの直径:%d\n点:%d", k, z);

return 0;
}

void dist_research( int k, int root[][MAX], int dist_ans[] ) //最短距離探索関数
{
int i, j=0;

for( i=0 ; i < root_cnt ; i++ ) //始点
{
if( root[k][i] != 0 )
{
if( dist_ans[i] > dist_ans[k] + root[k][i] )
{
dist_ans[i] = dist_ans[k] + root[k][i];

}
}
}


}



です


663ポイント を手に入れた。

Name: エラーマン  ..かけだし(1,850ポイント)   Date: 2007/01/19(金) 18:00   No:3732     
Title: Re:最短経路問題について    
投稿されてない・・・

根本的なことをお聞きします。

> root[i][j] = 1; //始点と終点の距離を代入
> count++;

ここが、辺を作る処理なのですか?だとすると、
変数probabilityに例えば0.99などいう値を与えると、
ほとんどの場合に辺を作る、という風にしたいのでしょうか?

> p = (double)rand( ) / RAND_MAX;
> if( p > probability )

このif文だと、pが0.99を超えたら辺を作る、つまり、
ほとんどの場合は辺を作らない、ということになりませんか?
不等号の向きが反対のような気がするんですけど…。

この文のとおりに不等号を逆にすると確率どおりに辺ができるようになりました
しかし
点を何個発生させますか?>>>100
辺を作る確率を設定してください(少数で)>>>0.8
点:100個
ネットワーク個数:7973個
始点:0
ネットワークの直径:2
点:9
と確率を大きくすると答えができますが

点を何個発生させますか?>>>100
辺を作る確率を設定してください(少数で)>>>0.3
点:100個
ネットワーク個数:3042個
始点:0
ネットワークの直径:-2147483647
点:0

確率を小さくするとでてきません

そして答えがでても直径が妙に小さい気がします

なぜでしょうか?


264ポイント を落としてしまった。

Name: mas  ..初心者(5,763ポイント)   Date: 2007/01/19(金) 18:02   No:3734     
Title: Re:最短経路問題について    
上のプログラムでは、root[i][j]とroot[j][i]の値が一致していませんね。

20ポイント を手に入れた。

Name: box  ..プログラマー(36,743ポイント)   Date: 2007/01/19(金) 18:57   No:3738     
Title: Re:最短経路問題について    
いったんプログラムから離れて、点の数が数個の場合に
どうなればよいのか、手で求めてみてはいかがでしょうか。


55ポイント を手に入れた。

Name: エラーマン  ..かけだし(1,929ポイント)   Date: 2007/01/19(金) 19:26   No:3741     
Title: Re:最短経路問題について    
> 上のプログラムでは、root[i][j]とroot[j][i]の値が一致していませんね。

・・・そうでした
root[i][j]とroot[j][i]両方に1を代入するようにしました

>いったんプログラムから離れて、点の数が数個の場合に
>どうなればよいのか、手で求めてみてはいかがでしょうか。

手計算の結果、直径が小さくても問題ないことがわかりました


始点が0と課題で決められているのでroot[0][j]が1つもできなかったときネットワーク作成失敗とするようにしました

これでなんとか課題が終わりそうです
みなさんありがとうございました