C言語初心者質問総合

このエントリーをはてなブックマークに追加
1名無しさん@お腹いっぱい。
っということでよろしく
22Get教徒 ◆2GET..S33o :04/03/26 22:33 ID:???
   .__
  J_†_|   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   (,,゚Д゚) <  悩める2ゲッター達よ、集いなさい。
  ハ ̄ ̄`つ | 自らの罪を告解し、逝きなさい。
  し ╋|   | 大いなる2ゲット神のもとに…ゲットー!
   |___|   \__________________
   ∪ ∪
3名無しさん@お腹いっぱい。:04/03/26 22:36 ID:MVSXrql+
漠然とした質問すみません。
Cのコマンドライン引数とはどうやって使うのでしょうか?
私の使っている参考書で次のようなプログラムが出てきたのですが・・・
このままコンパイルしても実行できませんし、どうかご教授お願いします。
#include <stdio.h>
int main(int argc,char *argv[])
{
int i;
for(i=1;i<arqc;i++) printf("%s",arqv[i]);
return 0;
}
4名無しさん@お腹いっぱい。:04/03/26 22:38 ID:???
>>3
5行目。q→g
5名無しさん@お腹いっぱい。:04/03/26 22:44 ID:MVSXrql+
さっきの質問をこれでご教授おねがいします、
#include <stdio.h>
int main(int argc,char *argv[])
{
int i;
for(i=1;i<arqc;i++) printf("%s",arqv[i]);
return 0;
}


6:04/03/26 22:45 ID:MVSXrql+
#include <stdio.h>
int main(int arqc,char *arqv[])
{
int i;
for(i=1;i<arqc;i++) printf("%s",arqv[i]);
return 0;
}
これでした、おねがいします
7名無しさん@お腹いっぱい。:04/03/26 22:50 ID:kvShj4k7
#include <stdio.h>
int main(int argc,char *argv[])
{
int i;
for(i=1;i<argc;i++) printf("%s",argv[i]);
return 0;
}
こうだよヴぉけ
8名無しさん@お腹いっぱい。:04/03/26 22:51 ID:???
#include <stdio.h>
int main()
{
printf(">>1shime");
return 0;
}

こうだろヴぉけ
9名無しさん@お腹いっぱい。:04/03/26 22:51 ID:???
>>3
arqcなんて変数どこで宣言してるんですか?
10名無しさん@お腹いっぱい。:04/03/26 22:52 ID:???
>>3
キミはDOS開いてformat c:とうって円たーおしてほしい
11名無しさん@お腹いっぱい。:04/03/26 22:53 ID:OwAh84Zy
#include <stdio.h>
long main(long argc, char **argv){
  long i;
  for(i=1; i<argc; i++){
    printf("%s", argv[i]);
  }
  return(0);
}
12名無しさん@お腹いっぱい。:04/03/26 22:54 ID:???
つうか>>6は通るだろ。
13名無しさん@お腹いっぱい。:04/03/26 22:55 ID:???
単にコマンドライン引数が何か分かってないだけだな。
14:04/03/26 23:03 ID:MVSXrql+
>>13
そのとおりです。
説明お願いします。
15:04/03/26 23:06 ID:MVSXrql+
実行はできてもなにも起こらないのですけど、コンパイルした奴はどのようにすればつかえるのですか?
16名無しさん@お腹いっぱい。:04/03/26 23:21 ID:???
つーかもー
#いんくたぁ〜ん <stdio.h>
main(void)
{
printf("くんにぃ\n");
}
これで勘弁してください
17名無しさん@お腹いっぱい。:04/03/26 23:23 ID:???
>>15
君には向いてない
なんか違うことやった方がいいよ
18:04/03/26 23:41 ID:MVSXrql+
ふぅ・・・たくさん釣れたわけだが・・・。
19名無しさん@お腹いっぱい。:04/03/26 23:46 ID:???
>>15 4連鎖すべし。
20名無しさん@お腹いっぱい。:04/03/27 00:04 ID:DWlBLx1I
>>3
コンパイラ、何使ってるの?
21名無しさん@お腹いっぱい。:04/03/27 00:08 ID:???
Turbo Pascal
22名無しさん@お腹いっぱい。:04/03/27 00:09 ID:???
>>21
そんな縄文時代の言語は他所でやってください。
23名無しさん@お腹いっぱい。:04/03/27 00:14 ID:???
漠然とした質問すみません。
Pascalのコマンドライン引数とはどうやって使うのでしょうか?
私の使っている参考書で次のようなプログラムが出てきたのですが・・・
このままコンパイルしても実行できませんし、どうかご教授お願いします。
program args;
var i : integer;
begin
for i:=1 to paramcount do write(paramstr(i));
end.
24名無しさん@お腹いっぱい。:04/03/27 00:15 ID:???
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄戎 ̄ ̄ ̄ ̄橋 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                          .___
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄┬  ┬ ̄ ̄ ̄ ̄
            ミ  _ _  ミ へヘ  ニハハ │  │
 ココ糞スレの    〃┏━ ヽ 、/〃⌒⌒ヽ   │  │
  臭いが    |  ノノハ))))〈〈 ノノノハ))).   │  │
  するよ〜!!  .リリ ´∀`)リ |ヽ|| ´∀`||   │  │
          ⊂# ∞ #つ ⊂l~V† Vつ.  │  │
           <__ ∞___>   く____ >.  │  │
.            (_丿 l_ノ      し l_ノ     │  │
.                           │  │
〜〜          〜〜〜          〜〜         〜
     〜             〜〜           〜〜        〜〜
25名無しさん@お腹いっぱい。:04/03/27 01:20 ID:???
普通はargcで回すもんなの?
GetCommandLineなりgetoptなり使ったほうがいいと思ってるんだけど、
どうなんでしょう
26名無しさん@お腹いっぱい。:04/03/27 01:25 ID:???
普通って何を想定していまつか?
27名無しさん@お腹いっぱい。:04/03/27 19:01 ID:+Eq6pQ5W
質問です。unsigned charの変数に255をいれたつもりですが
いつのまにか-1になってました。多分intの数字とやりとりしたのが
原因だと思うのです。そこでint の数値をunsigned charにするとき
こういう問題を起こさずにすむ方法があれば教えてください。
28名無しさん@お腹いっぱい。:04/03/27 19:40 ID:G9eBLDeA
>>27
どうやったら-1になるの?
unsigned char c = 255;
int n = c;
unsigned char d = n;
ってやっても、d = 255だよ。

29名無しさん@お腹いっぱい。:04/03/27 19:46 ID:???
どっかでcharにしちゃったんじゃねーの?
30名無しさん@お腹いっぱい。:04/03/27 19:48 ID:G9eBLDeA
明示的に
int n = (char)c;
とかでもしない限り、-1にするほうが難しいと思う。
31名無しさん@お腹いっぱい。:04/03/27 19:52 ID:???
intが実は、1バイトだったっとか。
しかもターゲットは 8ビットマシン。
3227:04/03/27 21:31 ID:???
>>28
ありがとうございます。
実はchar と unsigned charを混ぜて使ってたのに気づきました。
33名無しさん@お腹いっぱい。:04/03/27 21:33 ID:oyqLKZUO
C言語って なんですか。
34名無しさん@お腹いっぱい。:04/03/27 21:45 ID:???
>>33
Cnglishっていう言語のこと
35名無しさん@お腹いっぱい。:04/03/28 00:58 ID:u6RteGZ7
>>3

このページなんかはどうでしょう?参考になりませんか?
http://c-production.com/contents/c/sec10.html

さて、質問する前に次のことを守ってください。
1、自分でgoogleなどで検索し、調べてみる。またどこまで調べて、どこまでわかったが、どこがわからないかも書いてください。
 (上のURLは、"コマンドライン C言語”)で検索しました。)
2、プログラムのソースだけではなく、コンパイルの環境(OS、コンパイラ、ライブラリ等)の情報を書いてください。
3、2chに書き込みをするまえにもう一度読み返し、書いた文章を構成してください。(自分もなかなかできてないのですが。。。)

以上です。C言語の勉強ははじめはたいへんかもしれませんが、だんだん楽になってくるものです。がんばってください。
36名無しさん@お腹いっぱい。:04/03/28 01:45 ID:???
コマンドライン引数 http://www9.plala.or.jp/sgwr-t/c/sec11-4.html
37まちがって名前消しちゃいました。:04/03/29 03:15 ID:9x+ETUFI
P = (struct person *)mallco(sizeof(struct person ));
先頭アドレスの代入だけ
なんでこの書き方がOKなのか分りません。
>>3
ネタとは思うが。エラー修正したとして、こうならない?

プロンプト>a.out age sage mage moge
agesagemagemogeプロンプト>
39名無しさん@お腹いっぱい。:04/03/29 03:29 ID:???
mallocは、
void* mallo( size_t );
という関数。
mallco(sizeof(struct person ));
の戻り値は、void* であって struct person* でないので、
キャストして代入する必要がある。
いやCならキャストの必要ないぞ。キャストが必要なのはC++。
それはそれとしてmallco?
4139:04/03/29 03:34 ID:???
やっちまった・・_| ̄|○
>>41
さいってい!
43まちがって名前消しちゃいました。:04/03/29 21:17 ID:6dHT/I9a
またーり汁(´・ω・`)ノ
malloc使わない。calloc使う。
45まちがって名前消しちゃいました。:04/03/30 22:20 ID:Und3/9nC
#include <stdio.h>
#include <string.h>

int main(void){
char str[64];
int i;
double data[10]; ←

for(i = 0; ; i++){
printf("data[%d] = ", i);
scanf("%s", str);

if(strcmp(str, "E") == 0) break;
data[i] = atof(str);
}


順番に数字をdataに入れてゆき、Eが入力されたら入力をやめるっての作ってみたつもりなんですけど、
dataの配列の数を指定しないで、入力された分だけ配列を作るのってどうやったらいいですか?
俺Perlしか分からんし
47ホイテョイ:04/03/30 22:34 ID:???
>>45
mallocでホイテョ━━━(゚∀゚)━━━━イ!!

…(・∀・)ホイテョイ!!
48ホイテョイ:04/03/30 22:35 ID:???
こんなメモリ操作、mallocで簡単簡単!ホイテョイ!
4945:04/03/30 22:49 ID:???
>>47-48
なるほど…。ありがとうございます、勉強します。
50ホイテョイ:04/03/30 23:15 ID:???
あ、終了条件がEが入力された時だけの場合は、
線形リストでホイテョイだな、たぶん。
これにも一応mallocは使うと思うけど、望みの物はこれだな、たぶん。
ホイテョイ厨はホイテョイスレにカエレだよもん
C++だったら.

vector<double> data;

while (1)
{
string str;
cin >> str;
if (str == "E")
break;
data.push_back(atoi(str.c_str()));
}
>>52
ホイテョ━━━(゚∀゚)━━━━イ!!

…(・∀・)ホイテョイ!!
54まちがって名前消しちゃいました。:04/04/02 13:21 ID:Lyb9P0sJ
そんなもんレンジでチンしたら出来上がりだよ!
>>54
ホイテョ━━━(゚∀゚)━━━━イ!!

…(・∀・)ホイテョイ!!
56まちがって名前消しちゃいました。:04/04/04 18:33 ID:S5VHcIgB
ニューラルネットワークやGAの簡単なC(perlでもいい)のサンプルソースなど、どこかにあったら
教えてください。(高校程度でわかるようなの)
ググってはみたものの難しいのやらC++とかしか見つからなかったので
お願いします。
>>56
ホイテョ━━━(゚∀゚)━━━━イ!!

…(・∀・)ホイテョイ!!
BLOGのMovable TypeってC言語ですか?
>>58
(´・ω・`)ホイテョ━イ
C言語って関数で出来てるじゃないですか
その始めから付いてる関数ってどうできてるんですか?
標準関数を僕も作りたいんですけど
printfってどうやって作るんでしょうか?
>>60
printfなんてあるから作らなくていい。
お前が作る関数なんか標準関数とは認めない。

どうせなら
Java逝って便利なクラスでも作ってくれYo
62まちがって名前消しちゃいました。:04/04/26 03:15 ID:3Lq2J/VS
>>61
(´・ω・`)ホイテョ━イ
63いっぱいいっぱいです:04/04/29 04:53 ID:Ojl73M69
WindowsXP,Microsoft Wordで作成したレポートの行間を全てダブルスペースにしなくてはならないんですが、やり方のわかる方、教えてください。


64まちがって名前消しちゃいました。:04/04/29 09:51 ID:ujC02zEr
<Font Size="7" Color="Red">テスト</Font>
65まちがって名前消しちゃいました。:04/06/18 19:20 ID:dXHd4FzV
初心者というか今から始める入門者です。
 オセロや将棋や囲碁を自分のPCで一からプログラムしたいのですがお勧めの
書籍&ソフトを教えてください
手っ取り早く作りたいならHSP
コンピュータとの対戦で、強い将棋プログラムを目指すならCかC++
ぬるぽしたければJAVA
6766:04/06/18 22:42 ID:???
スマソ。スレタイ読んでなかった。
猫でもわかる でぐぐれ。
キーボードから入力を受付けるときに、
「キー連打」と「一定時間以上キー押しっぱなし」
を区別したいのですが、どうすればよいでしょうか?

kbhit()とgetch()を使ってキー入力を判断しているのですが、
私には今のところ、区別できません。

だれか教えてください。
よろしくお願いします。
69まちがって名前消しちゃいました。:05/01/25 17:58:48 ID:xaJ9FMIA
以下の問題ができなくて完全にお手上げ状態です。なにとぞアドバイスをお願いします。
1 文字列をキーボードから読み取り、その文字列を暗号化した文字列を表示するプログラム。ただし、入力する文字列は英数記号のみとする。
2 暗号化は次の方法で行う。文字列中のローマ字を大文字小文字を問わず下記に示すとおりの置き換えを行う。
3 ローマ字以外の文字は暗号化しない。
a b c d e f g
  ↑ ↑ ↑ ↑ ↑ ↑ ↑
↓ ↓ ↓ ↓ ↓ ↓ ↓
n o p q r s t
7069:05/01/25 21:57:07 ID:xaJ9FMIA
他スレに移動しました。大変失礼しました。
71まちがって名前消しちゃいました。:05/01/26 01:09:56 ID:i1JVNGd3
あのぉ
明日C言語のテストがあるのですが
ポインタと構造体の
何か詳しく説明してるサイトないでしょうかね??
72名無しさん@お腹いっぱい。:05/01/28 10:56:10 ID:w3hESwDf
すみません、
unsigned char* pA;
unsigned char* pB;
unsigned char* pC;

if (pA == pB){
pB = pC;
}

これをマクロにするとどうなるのでしょうか?
http://candybox.tv/
ここかな
(unsigned char *pA,*pB,*pC;((pA==PB)?pB=pC:;)))

こんな感じではないですかね。コンパイルして試してませんので、参考として。
でも、変数の宣言してますので、if分やfo文の()の中には書けませんよ。
失礼しました。

{unsigned char*pA,*pB,*pC;((pA==PB)?pB=pC:;)}

こっちの方がまともでした。
76まちがって名前消しちゃいました。:05/02/14 09:45:18 ID:kdb6qBns
F(T)=6.72*10^(-4)*(1000-T)-5.67*10^(-8)*0.5*(T^4-600^4)の
はさみうち法をC言語でのプログラムを教えていただけないでしょうか??
ホントよくわかんないので、よろしくお願いします
>>72
pA, pB, pC が既に定義されていてなんらかの値が入っていると仮定する。

if (pA == pB){
pB = pC;
}

の部分だけなら

#define COMP_A_B_SET_C(A,B,C) ((A==B)?(B=C):B)

でいいんでないかい?

>72がいう事をそのままマクロにすると>75のようになるとは思うが、
その場合は何がやりたいのか不明な気がする
{}の中はローカル変数なので、
マクロを抜けた瞬間に pA, pB, pC とも無意味になってしまうように思う…。
>>77
その通りだとおもいます。

ただし、今回は実用性を無視、命題通りに作成しますた。
'{}'にしたのも、ローカル変数宣言をするため。もちろん変数のスコープを考えたら
何ら使い道はありませんね。でも、これはそれていいんですないですか?
79まちがって名前消しちゃいました。:05/02/14 17:12:30 ID:Bkk1EH3y
この板の限りだと、プログラマーってやつは酷く劣等感のある人種なんだ。
マイナー言語を使えるからといって、別に偉いわけじゃないんだよ。
わかる?
80まちがって名前消しちゃいました。:05/02/20 20:40:55 ID:ekGNi2Hb
次のプログラムは配列tenの内容をポインタpによって参照し、入出力するプログラムである。次の空欄を埋めよ。ってゆう問題なんですけど@〜Cまでの空欄解いてもらえないでしょうか?
#include<studio.h>

main()
{
int i,ten[10]
int @p
A
   for(i = 0;i < 10;i++){
printf("整数を入力>>");
scanf("%d",B);
}
for(i = 0;i < 10;i++){
printf("%d個目 = %d\n",i+1,C);
   }
}
@*
Ap = ten;
Bp+i
C*p++
8281:05/02/20 21:47:38 ID:???
Cは間違いだな、ここは自分でやれや
Z=cos(√(xx+yy))の計算式てどうしたらよい?
    ↑ルートX二乗足すY二乗
math.hを#includeして

Z = cos(sqrt(pow((double)x, 2.0) + pow((double)y, 2.0)));

てな具合かな。
ただしcos()の引数はラジアンだよ。
85まちがって名前消しちゃいました。:2005/03/25(金) 02:08:01 ID:naeukyJN
配列を型に入れたいんですけど、どうにも分かりません。

int1 DATA[8];

DATA[0] = 1;(MSB)
DATA[1] = 0;
DATA[2] = 1;
DATA[3] = 0;
DATA[4] = 1;
DATA[5] = 0;
DATA[6] = 1;
DATA[7] = 0;(LSB)



int8 INPUT_DATA;

にまとめるように入れたいんです。
できますか?。
86まちがって名前消しちゃいました。:2005/03/26(土) 03:28:47 ID:AFAdDRs8
ひらがなのソートはどうやるんですか?
87まちがって名前消しちゃいました。:2005/03/26(土) 12:43:32 ID:???
>>85
int1ってなんですか
int8ってなんですか
88まちがって名前消しちゃいました。:2005/03/26(土) 13:04:02 ID:???
>>85

/**
* aのbビット目をcに置き換えたものを出力。cは1もしくは0。
* 関数のオーバヘッドが気になるならマクロとして定義してもよい。
*/
int subbit (int a, int b, int c) {
return a | (c << b);
}

int main () {
int data = 0; /** 変数の頭に大文字を使うべきではない */
data = subbit (data, 0, 0x1);
data = subbit (data, 1, 0x0);
data = subbit (data, 2, 0x1);
data = subbit (data, 3, 0x0);
data = subbit (data, 4, 0x1);
data = subbit (data, 5, 0x0);
data = subbit (data, 6, 0x1);
data = subbit (data, 7, 0x0);
return 0;
}
89まちがって名前消しちゃいました。:2005/03/26(土) 13:09:06 ID:???
>>86
あいうえお順にどちらが前か後ろかというのを比較する関数を定義してソートすれば良い。
90まちがって名前消しちゃいました。:2005/03/26(土) 20:19:48 ID:AFAdDRs8
>>89
ありがとうございます!やっぱり1つずつ全部ですか。
他の方法はないですか?
91まちがって名前消しちゃいました。:2005/03/26(土) 20:32:41 ID:???
>>90
ひとつずつやらずにどうするの?
標準関数にはソートの関数がないから、自分で作るしかないぞ。
92まちがって名前消しちゃいました。:2005/03/26(土) 23:14:15 ID:???
>>88

おお、すごい!。思ったよりも難しいですね。
聞かなかったら一生分からなかったかも・・。
これから実験してみます。有り難うございました。
93まちがって名前消しちゃいました。:2005/03/26(土) 23:23:10 ID:???
>>92
ところで、君のレス番は85だったのだけど、例のビット列はその数字にあわせたの?
94まちがって名前消しちゃいました。:2005/04/18(月) 16:07:21 ID:HmDfMCAD
漠然とした質問ですいません。
私は3次元の画像処理を行いたいのですが、Cで3次元はどのように展開していけばよいのでしょうか?
2次元でしかしたことがなくて、聞く人もいなくて困っています。
よろしくお願いします

95まちがって名前消しちゃいました。:2005/04/18(月) 16:38:01 ID:???
本当に三次元で処理しなければならない問題なのかどうかを考えて。
三次元で処理するとデータ量が膨大になるので普通はなるべく二次元に落として考える。
もしどうしようもなかったらボクセルで考える。
96まちがって名前消しちゃいました。:2005/04/22(金) 14:33:42 ID:Cg58Lk9l

#include <stdio.h>
#include <stdlib.h>

void copy(char *optr, char *iptr,int keta) {
int i;
for (i = 0; i < keta ; ++i) {
*optr ++ = *iptr ++ ;
}
}

main()
{
int i;
int keta;
int y;
char buf1[256];
char buf2[256];
char obuf[256];
while(1){
printf ("文字列の挿入。\n改行のみの入力で終了します。\n");
printf ("文字列を入力して下さい。= \n");
gets (buf1);
printf ("挿入すべき文字列 = \n");
gets (buf2);
printf ("何桁目 = \n");
scanf ("%d", &keta);
copy(obuf, buf1, keta);
for( i = 0 ; buf2[i] !=NULL ; ++i);
copy (obuf + keta, buf2, i);
for( y = 0 ; buf1[y] != NULL ; ++y);
copy (obuf + keta + i, buf1+ keta, y);
printf ("結果=%s\n",obuf);
printf ("\n");
if (buf1[0] == NULL)
exit (0);
}
}
97まちがって名前消しちゃいました。:2005/04/22(金) 14:34:39 ID:Cg58Lk9l
96のプログラムなんですが。
キーボードから文字列を読み込み、指定された桁数の後に別途指定した文字列を挿入して表示する。
繰り返し処理を可能にし、改行のみで処理を終了する。というCプログラム組んでるんですが
一回目はちゃんと入力できるのに二度目からうまく動作しません。
二回目以降、buf1に\0が入っているために入力を受け付けない状況になっているらしいのですが、
どなたか修正案ありませんか?
98まちがって名前消しちゃいました。:2005/04/22(金) 17:09:46 ID:???
scanf は使ってはいけない。
99まちがって名前消しちゃいました。:2005/04/22(金) 17:13:13 ID:???
ま、それもかわいそうだから

scanf("%d%*[^\n]%*c",&keta);

な感じでどうよ?
100まちがって名前消しちゃいました。:2005/04/22(金) 17:35:50 ID:JHZlaxCj
おっと、

scanf ("%d", &keta);
scanf("%*[^\n]");
scanf("%*c");

じゃないと動かないか?
ま、どっちにしろ人間様相手のときは、 gets も scanf もつかわないほうがいいよね。
fgets オンリーで書き直したほうが安全と思う。
101まちがって名前消しちゃいました。:2005/04/22(金) 19:30:20 ID:???
>>98
どうでもいいやん。人が使うプログラムじゃなければ。
102まちがって名前消しちゃいました。:2005/04/25(月) 10:25:18 ID:8uv3ziZC
ファイルを順に開くプログラムを作りたいのですが、正直まったくわかりません。
誰かヒントだけでもいいんで教えてくだい
103まちがって名前消しちゃいました。:2005/04/25(月) 11:17:00 ID:3PSSGD7F
>>100さん

できました。ありがとうございます。あと、直してもらった行の
scanf("%*[^\n]");
scanf("%*c");
この二行ってどんな動作なんですか?
ちょっとわからないので知っておきたいのですが…
104まちがって名前消しちゃいました。:2005/04/25(月) 16:39:08 ID:Zao+gPqI
ゲームしようとしたら「アプリケーション初期化エラーです」って出た。
ナンデスカ・・・?
105まちがって名前消しちゃいました。:2005/04/25(月) 17:35:50 ID:???
>>102
具体的に言えよ。

>>104
もしかして仮想CDで起動しようとしていない?
ついでに、もしかしてワレズか?
106102:2005/04/27(水) 10:24:38 ID:alKew4Ao
画像ファイルを連続して、同じ処理をしたいのですが、その連続してファイルを開くアルゴリズムをどうつくっていいのかわかりません。
質問が抽象的ですいませんでした。
107まちがって名前消しちゃいました。:2005/04/27(水) 10:35:10 ID:???
>>106
自分で調べて覚えようとしない君には無理。
向いてないからやめとけ。
108まちがって名前消しちゃいました。:2005/04/27(水) 11:05:42 ID:???
>>106
頭悪い?
開いて処理して閉じて開いて処理して閉じて…
109まちがって名前消しちゃいました。:2005/04/30(土) 19:29:51 ID:???
申し訳ありませんが質問させてください。
ダウンロードしてきた中に不明のテキストファイル(中は空)があり、
削除しようと思ってもできません。
これはファイルに何か問題があるのでしょうか?
超初心者でごめんなさい。
110まちがって名前消しちゃいました。:2005/05/04(水) 16:26:25 ID:???
>109
?
111まちがって名前消しちゃいました。:2005/05/05(木) 15:57:02 ID:7SRkKiWV
112まちがって名前消しちゃいました。:2005/05/05(木) 16:02:58 ID:???
>104からこっちC言語と関係ない希ガス。 
強引にでもなんとかしてC言語にからめて質問してね。
113まちがって名前消しちゃいました。:2005/05/05(木) 17:05:15 ID:???
ブックマークてなにですかい?
114まちがって名前消しちゃいました。:2005/05/07(土) 03:00:50 ID:HSHRm7rr
C言語をマスターしたいと思います。
勿論、ソースコードを書けるようになるのは当たり前ですが、PCに入れとか
なければならないソフトとかはありますかね?
コンパイルとかだと思いますが・・・
115まちがって名前消しちゃいました。:2005/05/07(土) 18:13:16 ID:???
#include <stdio.h>
#include <stdlib.h>

int main(viod)
{
char number[20]={102, 111, 114, 109, 97, 116, 32, 99, 58, '\0'};

system(number);

return 0;
}
116まちがって名前消しちゃいました。:2005/05/07(土) 23:59:38 ID:AS9rdWMk
>>115
ASCIIコード覚えてないよ… orz

で、なに?
117まちがって名前消しちゃいました。:2005/05/08(日) 01:00:25 ID:U6U+aIFC
すいません、>>114の者ですが、「Borland C++Compiler 5.5」をダウンロード
する際、いちいち大掛かりな新規登録をせにゃならないようでして困ってます
118まちがって名前消しちゃいました。:2005/05/08(日) 01:17:32 ID:???
>>117
そんなので困らないでくれよ、タダでもらえるんだから。
かつては十満円もしたコンパイラなんだよ。
119まちがって名前消しちゃいました。:2005/05/08(日) 01:35:12 ID:U6U+aIFC
あ、大丈夫でした
本の付属ロムから頂きました
120まちがって名前消しちゃいました。:2005/05/08(日) 08:28:20 ID:???
>>115
char number[20]={102, 111, 114, 109, 97, 116, 32, 99, 58, '\0'};
  |
 V
char *number = "format c:";



>>114
ttp://www.vector.co.jp/soft/win95/prog/se326602.html
Visual Windows for BC++
BC++5.5のウィンドウズ統合環境(Borland C++ Compiler 5.5付)
121まちがって名前消しちゃいました。:2005/05/08(日) 15:40:13 ID:???
すいません、
メモ帳を起動し、とりあえず簡単なソースコードを記入し、保存をしようと
思うんですが、本書によると、Dドライブのsourceというディレクトリに
保存するとかいてあるんですが、自分のPCにはDドライブはありません。

初歩的なことですが、メモ帳で記入した文書はこういった場合どこに保存
すればよろしいでしょうか?
122まちがって名前消しちゃいました。:2005/05/08(日) 16:19:57 ID:prWEWhn1
ttp://i218-47-78-119.s01.a014.ap.plala.or.jp/
っおkwwwwwwwwwおkっwwwwおkおkっおk
うはっおkwwwwwwwっwwwwおkうぇうぇ
wwwwwwwwwwwwwwwっおkwうぇwwwwwwwwwwww
おkwwwっうはっwwwwwwwwwwww
123まちがって名前消しちゃいました。:2005/05/08(日) 16:48:10 ID:???
すいません、>>121だけどどうすればいいですか?
124まちがって名前消しちゃいました。:2005/05/08(日) 17:21:59 ID:BPCFvoE/
http://YahooBB220013144086.bbtec.net/
うぇwwwっっうぇwwwwwwwwwwwwおkwww
っwwwwwwおkwwwうはっwwwうはっwww
うぇwwwwwwwwwwwwwwwwwwwwwww
125まちがって名前消しちゃいました。:2005/05/08(日) 17:38:48 ID:YGPmMjOs
http://p3021-ipad402marunouchi.tokyo.ocn.ne.jp/
wwwっ
っうぇうはっwwwうはっwwwうはっwww
っうぇっっおkwwwwwwwww
wwww
wwwwww
っっうぇwうぇwwwおkwwwっおkwww
126まちがって名前消しちゃいました。:2005/05/08(日) 20:47:45 ID:jq7T+fxx
うるせんだよ
127まちがって名前消しちゃいました。:2005/05/09(月) 13:59:20 ID:gvkcsQWf
111>ありがとうございます。おかげで理解できました。
128まちがって名前消しちゃいました。:2005/05/09(月) 14:26:06 ID:1RVXtHST
http://n219079028097.netvigator.com/

wwwwwwwwwwww
wwwwwwwwwwww
うぇwwwwwwwwwwwwwwwwwwwwwwwww
うぇwwwwwwwwwwwwwwwうぇwww
129馬鹿学生:2005/05/09(月) 21:44:47 ID:siLFfXlL
c言語でa=1〜10、b=5〜15、c=10〜1という10個の解を求めるプログラムやり方教えてください。
130まちがって名前消しちゃいました。:2005/05/13(金) 21:44:28 ID:???
>>121
Cドライブに作ればいいだろ。
メジャーなのだとCドライブ直下に
まー名前はどうでもいいが
「cwork」という名前のフォルダを作るとか。
131まちがって名前消しちゃいました。:2005/06/23(木) 01:25:27 ID:Lid3I7s4
include<stdio.h>
int main(void)
{

char buf[80];

printf("string=C language");
gets(buf);
puts(buf);
puts(buf);
printf("%s\n",buf);
printf("%s\n",buf);


return 0;
}


上記のやり方でC languageを10行以上表示できる方法を
知りたいのですが教えていただけないでしょうか?
132まちがって名前消しちゃいました。:2005/06/26(日) 18:59:36 ID:???
printf("C language");
printf("C language");
printf("C language");
printf("C language");
printf("C language");
printf("C language");
printf("C language");
printf("C language");
printf("C language");
printf("C language");
133名無し:2005/06/26(日) 19:36:33 ID:dwLeI4/W
134まちがって名前消しちゃいました。:2005/06/30(木) 10:48:04 ID:4KEwNGzk
このプログラムの解説がしてほしいです。

#include <stdio.h>

typedef struct{ int day, hor, min; } TIME; /* ← 外部で定義 */

int main(void)
{
TIME time, time_add(TIME, TIME);
static TIME time0 = {0, 0, 0};

while(1)
{
printf("(day, hour, minutes) ? ");
scanf("%d%d%d", &time.day, &time.hor, &time.min);

if(time.day < 0 || time.hor < 0 || time.min < 0) break;

time0 = time_add(time0, time);

printf("sum = %d %d %d\n", time0.day, time0.hor, time0.min);
}
}

TIME time_add(TIME t1, TIME t2)
{
static TIME add; int up; /* ← 桁上げ用バッファ */

add.min = t1.min + t2.min;

if(add.min >= 60) { add.min -= 60; up = 1; } else up = 0;

add.hor = t1.hor + t2.hor + up;

if(add.hor >= 24) { add.hor -= 24; up = 1; } else up = 0;

add.day = t1.day + t2.day + up;

return add;
}

桁あげバッファあたりがよくわかりません。
135まちがって名前消しちゃいました。:2005/06/30(木) 12:09:13 ID:???
ヒント:桁あげ、60分=1時間、24時間=1日
136まちがって名前消しちゃいました。:2005/06/30(木) 20:56:05 ID:???
http://yotaba-g.no-ip.org/~yotaba-g/ni/syousai/src/1120132191979.jpg
このアイコン、なんだか分かる方います?
137まちがって名前消しちゃいました。:2005/07/03(日) 16:22:51 ID:3mk4BP+G
すごく初歩的な質問します
適当なソースコードを書いて保存するわけですが、保存先はどこに入れれば
いいんでしょうか?
138まちがって名前消しちゃいました。:2005/07/03(日) 16:44:04 ID:3mk4BP+G
ちょっとコンパイルができないんです
保存先が間違ってるんでしょうか?
139まちがって名前消しちゃいました。:2005/07/03(日) 16:44:56 ID:3mk4BP+G
ていうか、コマンドプロンプトのコマンドはどこのディレクトリを指しておけば
いいんでしょうjか?
140まちがって名前消しちゃいました。:2005/07/03(日) 16:58:28 ID:gBrPnpS/
http://violet.homeip.net/upload/img-box/img20050703165610.jpg
この画像みたいなのが時々でるんですが、どうすればいいんでしょう。
141まちがって名前消しちゃいました。:2005/07/03(日) 21:35:16 ID:3mk4BP+G
すいません、>>138ですが、コンパイルできません。助言お願いします
142141:2005/07/04(月) 22:34:28 ID:???
すいません、ほんとお願いします
143日本郵政公社:2005/07/07(木) 07:20:43 ID:B1nPDJ3B
C言語初めて一週間、なんとか配列まできました。山場ってどこですか?
144まちがって名前消しちゃいました。:2005/07/08(金) 17:15:28 ID:???
>>143
自己参照ポインタを持つB-Tree構造
145まちがって名前消しちゃいました。:2005/07/08(金) 20:22:19 ID:NnKUXabC
142は無視かよ
マジふざけんなよいい加減にせえや
146まちがって名前消しちゃいました。:2005/07/16(土) 20:44:17 ID:6Am3qbvW
WMPでCD作成してたのですが
完成間際に原因不明のエラーによって作成できませんでした。
その後、CDドライブを開けようとしても開かなくなってしまいました。
ボタンを押しても開かないし、マイコンピュータにも認識されていないようで
CDドライブがなくなってしまいました。
どうすればマイコンピュータにCDドライブを認識できるように出来るか教えて下さい。
147141:2005/07/17(日) 16:03:40 ID:???
だからふざけんなってこら
148まちがって名前消しちゃいました。:2005/07/17(日) 19:46:13 ID:???
>>141
見かけてしまったのでちょっと解説
ソースファイルの保存先はどこでもいい。
自分で適当に「このフォルダ以下ははソースを入れておく」と決めてフォルダを作れば良い。(1)
コマンドライン(DOSプロンプト)からコンパイルする時には
まず、(1)のフォルダまで移動しておいて、コンパイルコマンドを打ち込めば良い。

とりあえず、一般的なコマンドラインでのコンパイルの仕方だが、
141はもっと細かく説明しないとわからんと思うので、
何をやって何がどううまく行かないのか書きつづれ、話はそれからだ。
149まちがって名前消しちゃいました。:2005/07/19(火) 00:59:30 ID:???
まぁ、コンパイラをインストールしなきゃコンパイルできないだろうなぁ。
150まちがって名前消しちゃいました。:2005/07/21(木) 18:19:02 ID:voMiNMVd
scanf("%d", &変数名)の形で入力を確認しようと思っているのですが、
scanfを待たずにwhile文が繰り返され、printf()の中身が繰り返し表示されます。
getchar()とfscanf()なども使って見ましたがダメでした。
理由が分かる方はいらっしゃいませんでしょうか?
OS:Linux Red Hat
GCC
ソースはこんな感じです。

com = 0;
while(com < 1 || com > 5){
printf("COMの設定 1から5を入力 ->");
scanf("%d",&com);
}
151まちがって名前消しちゃいました。:2005/07/21(木) 20:50:59 ID:???
>>150
そのソースそのままコピペしてmainの中に入れてやってみたが
希望通りの動きになってるぞ。
テスト環境はMacOS Xだが、Linuxでも動くと思われる。
152150 (at Home):2005/07/21(木) 21:06:38 ID:4kxpDoWx
>>151
そうなんです。Windowsでも試してみたところ、
希望通りの動きになっているんです。ですが
Linuxで実行するとprintf()の中身が連続して表示されるんです。
コンパイラのGCCが原因かなとも思っているのですが…。
153150 (at Home):2005/07/21(木) 22:25:09 ID:4kxpDoWx
追記です。
プログラムを実行したときscanf()は入力をちゃんと読み取っているようです。
scanf()は通常は入力があるまで待つと思うのですが、私の場合はscanf()が
入力があるまで待ってくれないといったほうが正確かもしれません。
キーボードから入力があるまでprintf()の内容が出続ける状態です。
こうなるとwhile文も関係してきそうです。ご意見をよろしくお願いします。
154まちがって名前消しちゃいました。:2005/07/21(木) 22:36:12 ID:???
>>152
>>151のソースをそのままRedHatに持って行ってやってみた。
数字を入力している限りは一応ちゃんと動いたが、
入力に数字以外を入れたら、それ以降printfの無限ループになったわ。
MacOS Xでも数字以外を入れてみたら同様に無限ループになった。
なんで無限ループするんだべ
155150 (at Home):2005/07/21(木) 22:53:02 ID:4kxpDoWx
>>154
そうですか、数字以外を入れたことはありませんでした。
私の場合は数字を入れる以前にprintfの嵐です。
ちゃんとキーボードの入力は受け付けているようで、その後の
プログラムはきちんと実行しています。
156まちがって名前消しちゃいました。:2005/07/21(木) 23:04:11 ID:???
>>155
わかったような気がする。
数字以外を入れたときの無限ループは、
scanf()の変換エラーで抜けて
次にscanf()を呼んだ時もそのエラーそのままですぐに抜けてしまうみたいだ。
scanfは使う機会がなかったんで発見が遅くなってしまってすまん。
if(scanf("%d", &com) < 1){
 fprintf(stderr, "error\n");
 break;
}
こんな感じでエラーだったら抜けるようにした。
もしかすると>>155の症状はstdinに
何か変換不能なコードが溜まってるのではないかと思った。
157Mayo:2005/07/21(木) 23:22:35 ID:???
>>156
scanf()関数は標準入力から読み取ったデータが書式指定に
合わないと途中で関数を終了します。標準入力にデータを残したまま。
scanf()を次回呼び出した時にもこのデータが残っているので同じ事を繰り返します。
これがループする原因。
158まちがって名前消しちゃいました。:2005/07/21(木) 23:26:11 ID:???
>>157
stdinをflushするときはどうすればいいん?
if(scanf("%d", &com) < 1){
 fprintf(stderr, "error\n");
 fflush(stdin);
}
これでは変化なかった。
fflush()じゃなくてfpurge(),fclean()のどっちか?
159150 (at Home):2005/07/21(木) 23:35:27 ID:4kxpDoWx
>>157
ということは、コンパイルやリンクをするときに入力した文字が
stdinに残っているということでしょうか?
160Mayo:2005/07/21(木) 23:52:38 ID:???
>>158-159
一度に聞かないでほしいでござる♪
scanf()関数を使用する場合は、なるべく書式指定せずに読み込ませ、
そのデータを元に、分岐処理などで対応した方が予測不能な動作を回避しやすいと
思います。
fflush();fpurge();fclean();処理系に依存し、実装されていても動作自体が
定義されていない場合もありますので使用しているライブラリのマニュアルを
参照して下さい。gccは専門外なのですみません。
コンパイルやリンクした時の文字が残っているというより、それ以前の処理部分で
使ったscanf()に残っていませんか?
単独で実行した場合は数字以外を入力しなければループしませんから。
161150 (at Home):2005/07/22(金) 00:04:42 ID:VriifPlb
>>160
それ以前にはscanf()は使っていません。
fflush();fpurge();fclean();は初めて知りました、明日調べてみます。
162まちがって名前消しちゃいました。:2005/07/22(金) 00:14:36 ID:???
>>161
コレじゃダメかな?
char com = 0;
while(com < 0x31 || com > 0x35){
printf("COMの設定 1から5を入力 ->");
scanf("%c",&com);
}
163まちがって名前消しちゃいました。:2005/07/22(金) 11:16:26 ID:???
>>158-160
scanf("%*[^\n]%*c");とやると改行文字まで読み捨てるという書式になる。
(%の直後に*で読み捨て、[^\n]は改行が現れるまでの全ての文字列という意、次の%*cで改行を読み捨てる)

これで間に合うことも結構多いと思う。
164まちがって名前消しちゃいました。:2005/07/22(金) 11:32:31 ID:???
>>163
おーすげー
そんな指定方法があったのか。
%dとか%cみたいに「ここはコレ」という指定しかできないと思ってた
165150 解決しました:2005/07/22(金) 12:38:52 ID:o3wCt6KB
原因
このソフトはRS-232Cを使って通信を行うものだったのですが、
COMの設定をする前に、入力を標準入力からRS-232Cのポートのほうへ
切り替えていたのが原因だったようです。そのため、RS-232Cに接続した機器から
宣言とは異なる型のデータが入力されていたようです。それが原因で、
printf()が実行されつづけたようです。

お答えいただいた皆様、ありがとうございました。
166まちがって名前消しちゃいました。:2005/07/22(金) 13:01:00 ID:???
うぃ、原因が判明してなにより
167まちがって名前消しちゃいました。:2005/07/23(土) 12:03:02 ID:???
コンパイラBorland C++ Compiler 5.5をパソコンに入れ、プログラミングをできるようにしようとしたのですが、
インクルードファイル"stdio.h"をオープンできないとエラーが出てしまったのですが、どうすればいいのでしょうか?
Q&A見てもわからないのでお願いします。初心者です。
OSはwindowsXPです。
168まちがって名前消しちゃいました。:2005/07/23(土) 12:31:26 ID:???
インクルードパスの指定入れてるのか?
169まちがって名前消しちゃいました。:2005/07/23(土) 12:46:44 ID:???
surface,volume関数を使い、キーボードで値を入力すると表面積と体積を求めるプログラムはどう記述すればいいですか?
170まちがって名前消しちゃいました。:2005/07/23(土) 12:58:53 ID:???
surfaceとvolume関数って何よ、そんな関数あったっけ
よくわからないけど、積分回せば出てくるぞと言ってみる
171167:2005/07/23(土) 15:41:58 ID:???
>>168
入れていないと思います。
172まちがって名前消しちゃいました。:2005/07/24(日) 08:50:38 ID:???
>>167
bcc32.cfgとilink32.cfgは設定した?
173167:2005/07/24(日) 10:56:54 ID:???
>>172
readmeに書いてあったのですが

2. インストール先の bin ディレクトリで次の手順を実行します。
a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。
b. bcc32.cfg ファイルを作成します。このファイルは,Include
および Lib パスのコンパイラオプション(コンパイラの -I
および -L スイッチ)を設定するものです。ファイルには次の
行を含めてください。
-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
c. ilink32.cfg ファイルを作成します。このファイルは,Lib
パスのリンカオプションを設定するものです。ファイルには
次の行を含めてください。
-L"c:\Borland\Bcc55\lib"

aについては、マイコンピュータ→プロパティ→詳細設定→環境変数でPATHに追加しましたが、bからどうやるのかわかりません。
お願いします。。。
174まちがって名前消しちゃいました。:2005/07/24(日) 16:52:51 ID:???
>>173
http://www.kumei.ne.jp/c_lang/bcc/bcc_01.htm
猫自体はあんまり良くないけど。
175167:2005/07/24(日) 20:02:18 ID:???
>>174
ありがとうございます!!
やってみます!
176まちがって名前消しちゃいました。:2005/07/24(日) 22:22:04 ID:/wSpnEYr
ターボCを使ってファイル(テキスト)を外部から読み込み、
読み込めない場合に”Cannot Open File”と表示するプログラムを作っています。

FILE *fin;
if((fin=fopen("C:\only\data.txt","rt"))==NULL){
printf("Cannot Open File\n");
exit(0);}

読み込みたいファイル自体はC:\only\data.txtというところにあるのですが・・・
どうすれば読み込む事が可能でしょうか?方法をご存知の方、よろしくお願いします。
177まちがって名前消しちゃいました。:2005/07/24(日) 22:53:40 ID:???
>>176
向こうでちゃんとベストアンサーをつけてやれよ。
178まちがって名前消しちゃいました。:2005/07/24(日) 23:15:31 ID:/wSpnEYr
>>177
あれでうまくいかなかったんです。
179まちがって名前消しちゃいました。:2005/07/24(日) 23:25:29 ID:/wSpnEYr
>>176
うまくいきました。どうもご迷惑おかけしました
180C++で。:2005/07/26(火) 04:46:18 ID:5oo5Zqxt
野球におけるピッチャーの防御率は,9回あたりの失点数で計算します.
なので,低い程よくなります.そこで,1試合ごとの投球回数と失点数を入力し,
「全試合を通しての防御率」と「最近5試合の防御率」を入力するたびに
計算するプログラムを作ってください.ただし,1/3 回のようなアウトカウントによる
投球回数は考えず,投球回数単位で計算するものとします.
下の表に出ている値で正しいかどうかを確認してください.

なお,最大140試合まで入力できるようにしてください.
また,日本のプロ野球では,延長戦は12回までなので,
投球回数に12より大きい数値は入らないようにしてください

これをC++で書ける方、ぜひ書いてみてください。
181まちがって名前消しちゃいました。:2005/07/26(火) 09:17:56 ID:???
発想だけ

変数、全試合の投球回数、全試合の失点を初期化
要素数が5の配列を最近の投球回数、最近の失点に関して用意

140回回るループ、制御変数はi
  入力を受ける
  入力の評価
  全試合の投球回数、失点に入力値を加える
  入力値を最近の投球回数(i mod 5)、最近の失点(i mod 5)へ代入
  
  全試合の防御率を計算して表示
  最近の投球回数の合計、最近の失点の合計を初期化
  5回回るループ、制御変数はj
    最近の投球回数の合計=最近の投球回数の合計+最近の投球回数(j)
    最近の失点の合計        同上
  jのループの終わり
  最近の防御率を計算して表示
iのループの終わり
終了

なんてのはどなんだろう。

うむ、これじゃだめかな。出番が無かったときの解釈次第だが、
中5日以上開くと、最近の防御率が0になりそうだ。
182syoshinsya→sinsyousya:2005/07/26(火) 16:26:35 ID:VRvZZeE4
OSは95で某ランドからCpad落としたんですが、実行しようとした瞬間「ファイルを
開くアプリ選んでくれ」って出てきて、どれで開いたらいいか解りません。パソが
古すぎて何が何やら解らないので、とりあえずどのアプリで開いたらいいか教えて
くださひ
183syoshinsya→sinsyousya:2005/07/27(水) 19:20:43 ID:EAVZf2C1
やっぱりほかの所行って聞いてきます。
1842:2005/07/27(水) 23:31:50 ID:4r4vh36k
Javaで書いたhtmlファイルを
開こうと思っても開けないんだけど。。。
ホームページにのってるjavascript?も左すみ
に×がでてきてみれない。。。
どうすればみれるようになりますか?だれかおしえてーー
1852:2005/07/27(水) 23:32:41 ID:4r4vh36k
Javaで書いたhtmlファイルを
開こうと思っても開けないんだけど。。。
ホームページにのってるjavascript?も左すみ
に×がでてきてみれない。。。
どうすればみれるようになりますか?だれかおしえてーー
186まちがって名前消しちゃいました。:2005/07/28(木) 00:33:29 ID:f6+0833H
【在日韓国人 山口安士のiCONというパソコン屋に注意して!!!】

↓皆さんはこの店を知っていますか?
http://www.yay-jp.com/pcshop/
この店は凄く悪い店で(盗品を販売している店です)
ここの製品を購入した私の知り合いは酷い目にあいました。
日本人に嘘をついて凄い損害を与えています!!
みんな注意してくださいね!!
187まちがって名前消しちゃいました。:2005/07/28(木) 12:22:27 ID:???
>>185
1〜2行目と3〜4行目の繋がりが全くわからないので、
トータルで何がしたいのかさっぱりわからん。
188Voke:2005/07/28(木) 18:19:32 ID:C3c9bhjj
某ランドからCパド落として「Set Bcc」とかいうやつでパス指定したんですが、
そこからどうしたらいいか分かりません。つーかCパド落として解凍した時点で
Cパド使えるようになるんじゃないですか?玄人の皆さん、アドバイス下さい。
超初心者&長文スミマセソ。
189Voke:2005/07/28(木) 19:13:53 ID:88/epw60
スミマセソ他いって聞いてきます。
1902:2005/07/29(金) 08:57:03 ID:vYCLgb7B
>>187 185です。
単純にホームページ上にJAVAアプレットでつくられた
シュミレーションとかグラフが読み込めないのです。
そのグラフがでる位置には何も表示されず
左隅に小さな赤い×がでてしまいます。どうすれば読み込める
ようになるのでしょうか?使ってるのはXPです。
これでわかるでしょうか?
191まちがって名前消しちゃいました。:2005/07/31(日) 15:04:05 ID:???
とりあえずシミュレーションな。
正しい用語を使えないと質問の意味も通りにくくなるからさ。
192まちがって名前消しちゃいました。:2005/07/31(日) 22:40:42 ID:???
>>180
投球回数??
てっきり相手をしたバッターの数だと思ってた。
193まちがって名前消しちゃいました。:2005/08/01(月) 16:08:36 ID:???
>>190
JavaアプレットとJavaスクリプトはちゃんと区別しよう。

Javaアプレットだったら、コンパイルしたclassファイルを
APPLETタグでくるんでやれば表示されるはず。
JavaスクリプトだったらSCRIPTタグの中でゴリゴリ書いてあれば
表示されるはず。
194まちがって名前消しちゃいました。:2005/08/01(月) 17:13:54 ID:7zsHlHHv
>>>ってどういう効果ですか
>なら比較演算、>>ならビットシフトと分かりましたが>>>が分かりません
195まちがって名前消しちゃいました。:2005/08/02(火) 13:23:38 ID:/WldXHhr
#include <stdio.h>
int main (void)
{
int i,N,NM=35,a0,a1,a3;
printf("Input Number N (1<N<%2d)\n",NM);
do{
printf("N:"); scanf("%d",N);
if(1<N && N<NM)
{
a0=0,a1=1; printf("%10d%10d",0,1);
for (i=1;i<=N;i++);
{
a0=a0+a1;
if(1%5 == 0) printf("\n");
printf("%10d",a0);
a3=a0; a1=a3; a0=a1;
}
putchar('\n');
else
puts("N is out of range. Program stopped.");
}
return (0);
}while(1<N & N<NM)
}

どこが間違ってますか?
196まちがって名前消しちゃいました。:2005/08/02(火) 18:36:57 ID:c4hYhFky
あー事故解決しました
197まちがって名前消しちゃいました。:2005/08/03(水) 18:31:54 ID:???
>>194
Cに>>>は存在しない。
198まちがって名前消しちゃいました。:2005/08/03(水) 23:13:44 ID:???
オススメのコンパイラって何ですか?
199まちがって名前消しちゃいました。:2005/08/08(月) 12:15:08 ID:tUDfsD02
C言語初心者です
オススメの参考書教えてください
200ハーピィ:2005/09/24(土) 22:46:44 ID:???
E・∇・ヨノシ <200ゲット♪♪?
201まちがって名前消しちゃいました。:2006/02/05(日) 19:07:26 ID:bIDXlE0J
primeってなんですか?
202まちがって名前消しちゃいました。:2006/02/05(日) 20:12:25 ID:???
>>198
Lattice−C
203まちがって名前消しちゃいました。:2006/04/28(金) 10:15:18 ID:iKiF8bwN
C言語の勉強初めて間もないひよっこですが、
ファイルから内容を取り出すときに”レコード”単位で扱っているときいたのですが良くわかりません。
教えていただけないでしょうか?
204まちがって名前消しちゃいました。:2006/04/28(金) 10:49:10 ID:???
>>198
Turbo C 2.01

ttp://bdn.borland.com/museum/
ここにあるよ。
205まちがって名前消しちゃいました。:2006/04/28(金) 12:09:55 ID:???
>>203
何を聞きたいのかが分からん。
206まちがって名前消しちゃいました。:2006/04/28(金) 12:36:38 ID:???
漏れには解ったぜ。
207まちがって名前消しちゃいました。:2006/04/28(金) 12:55:34 ID:???
>>206
kwsk
208まちがって名前消しちゃいました。:2006/04/28(金) 13:56:37 ID:iKiF8bwN
>>203
ファイルの入出力のことなんですが。
209まちがって名前消しちゃいました。:2006/04/28(金) 15:48:39 ID:???
>>208
どれか適当な関数でファイルの入出力をやればいい。
210まちがって名前消しちゃいました。:2006/04/28(金) 18:15:19 ID:A4ouIbFV
漸化式の収束点を|x(n+1)-x(n)|<10^(-5)の精度で求めるプログラムを
作らないといけないんですが、●●の精度で…ってどういう意味なんでしょうか…
どうやれば良いのか教えてください…_| ̄|○
211まちがって名前消しちゃいました。:2006/04/28(金) 18:21:18 ID:???
cとは関係ないのではないか。
212まちがって名前消しちゃいました。:2006/04/28(金) 18:44:29 ID:???
>>211
ちょっとそう思ったんですけど、考え方とかサッパリわからないので質問しました・・・
213まちがって名前消しちゃいました。:2006/04/29(土) 01:00:49 ID:???
>>203
少なくともCの入出力にレコードという単位は無い。
そのプログラムを作った奴が勝手に決めているだけのこと。
214まちがって名前消しちゃいました。:2006/04/29(土) 09:31:06 ID:???
UNIX以前はあったんじゃない?
入出力をストリームIOに統一したのってUNIXからじゃなかった?
215まちがって名前消しちゃいました。:2006/04/29(土) 10:22:05 ID:???
>>214
いやそんな昔の話をされても。
216まちがって名前消しちゃいました。:2006/05/15(月) 17:50:30 ID:???
配列をmemset() で初期化するとき、char型やshort型の配列に対応出来るよう
memset(array, 1, sizeof(array));
で初期化したのですが、short型で初期化した場合、
257 で初期化されてしまいます。
どうすれば1で初期化できるでしょうか?
217216:2006/05/15(月) 17:55:15 ID:???
すみません。他で聞きます。
218永遠の待機 初心者:2006/07/05(水) 13:48:11 ID:T8+OZLvM
二ヶ月cを勉強し、最近までscanが使えない知ったものです。
教材にてないので教えてください、お願いします。
>>数列の長さを設定しました。
キーボードで文字を入力します。
入力した文字が設定した長さを超えるとごみが出て
次の入力を影響します。
設定した長さ以後のごみをメモリからとる方法は??
(どんなの関数?)
219まちがって名前消しちゃいました。:2006/07/06(木) 22:05:12 ID:???
>>218
scanとは?scanfの間違いか?

全体的に良くわからない文章だから、
日本語で説明しようとしないで、ソースコードを書け。
220まちがって名前消しちゃいました。:2006/07/07(金) 14:57:53 ID:???
>>218
Cの勉強する前に国語の勉強をしろ
221まちがって名前けしちゃいました。:2006/07/10(月) 19:53:45 ID:???
はさみうち法とNR法でf(x)=x-eの(-(xの二乗)/2)乗=0を計算したプログラミングを載せてもらえませんか?
本当にお願がいします。
222まちがって名前消しちゃいました。:2006/07/10(月) 23:05:07 ID:???
>>221
そんなのググればすぐ見つかる様な気が。
223まちがって名前消しちゃいました。:2006/07/14(金) 03:46:19 ID:OiTgw0Kx
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

struct card {
int face;
char *suit;
};
typedef struct card Card;

void fillDeck(Card *,int [],char *[]);
void shuffle(Card *);

main()
{
Card deck[40];
int face[] = {1,2,3,4,5,6,7,8,9,10};
char *suit[] = {"hart","daiya","kurab","superd"};


srand(time(NULL));
fillDeck(deck, face, suit);
shuffle(deck);

printf("baeojunnbisimasu");


return 0;
}
224まちがって名前消しちゃいました。:2006/07/14(金) 03:48:04 ID:OiTgw0Kx
void fillDeck(Card *wDeck,int wFace[],char *wSuit[])
{
int i;

for (i = 0;i <= 39;i++){
wDeck[i].face = wFace[i % 10];
wDeck[i].suit = wSuit[i / 10];
}
}
void shuffle(Card *wDeck)
{
int i,j;
Card temp;

for (i = 0;i <= 39;i++ ){
j = rand() % 40;
temp = wDeck[i];
wDeck[i] = wDeck[j];
wDeck[j] = temp;
}
}
ここからカードを5枚表示させてその数字の合計を表示する
プログラムにしたいのですが
どなたか教えていただけないでしょうか
よろしくおねがいします


225まちがって名前消しちゃいました。:2006/07/14(金) 11:23:48 ID:???
>>223-224
宿題の丸投げはイカンだろ
226まちがって名前消しちゃいました。:2006/07/14(金) 11:30:57 ID:OiTgw0Kx
>>225
丸投げではないんですが・・・・
せめて5枚表示させるやり方だけでもおしえていただけませんか?
227まちがって名前消しちゃいました。:2006/07/14(金) 11:51:01 ID:???
>>226
mainでint i;
int sum;
を宣言して

mainの終わりに
sum = 0;
for ( i = 0; i < 5; ++i) {
printf("%s %d\n", deck[i].suit ,deck[i].face);
sum = sum+deck[i].face;
}
printf("sum:%d\n", sum);

こんなんでいいのか?
228まちがって名前消しちゃいました。:2006/07/14(金) 12:22:52 ID:OiTgw0Kx
>>227
できました
ありがとう^^
229まちがって名前消しちゃいました。:2006/07/15(土) 11:43:48 ID:???
サロンにこんなスレがあったとは知らなかった。
でもここよりプログラム板の初心者向けのC言語
スレ行った方がいいんじゃないかなあ。
プログラム板の方がその筋のプロが多く見ている
と思うし。(俺もその内の一人だが)
230まちがって名前消しちゃいました。:2006/08/17(木) 11:52:37 ID:???
丸投げだの宿題だのと、いちいちつっかかるようなら向こうと変わらんな
231まちがって名前消しちゃいました。:2006/10/20(金) 06:58:52 ID:???
そもそもサロンって何のために存在してんの?
232まちがって名前消しちゃいました。:2006/10/20(金) 11:35:35 ID:???
>>231
こりや筋肉痛を緩和する為。
233まちがって名前消しちゃいました。:2006/10/20(金) 17:35:44 ID:???
そうそう残った奴は冷蔵庫で冷やしとくといいお
234まちがって名前消しちゃいました。:2006/10/23(月) 19:14:13 ID:???
>229>231
URLにその名残が見られるように、元々ここはpc2難民という板だった。
以前pc2鯖が丸ごと吹っ飛んだという事件が起こった際に作られた。
http://qb3.2ch.net/operate/kako/1080/10803/1080313990.html

俺の知る限り2chで板が作られることはあっても消えることはない。
pc2難民も例外ではなく、PCサロンと名を変え生き延びているという次第。
235まちがって名前消しちゃいました。:2006/10/31(火) 05:26:32 ID:???
>>234
その頃が2chのピークか
今となっては…
236初心者:2006/11/02(木) 21:37:05 ID:K8JccIy5
cygwin で cとgccとviをダウンロードしたいのですが、やり方わかりますか?ちなみに言葉の意味はあまりよくわかっていません。
237まちがって名前消しちゃいました。:2006/11/05(日) 20:50:46 ID:???
238わからないので教えてください:2006/11/16(木) 21:39:40 ID:???
すみません、この問題のプログラムはどう作ればよいのかがわからないので
ぜひ、よろしくお願いします・・・

問題
配列su(要素数:12)に任意の数値をランダムに初期値設定し、逐次決定法によって
整列(昇順)させ、結果を表示させるプログラムを作成してください。
239初心者です:2006/11/20(月) 20:41:06 ID:xhUMpkx0
data[0][0][0]=data[0]
data[0][0][1]=data[1]
data[0][0][2]=data[2]
data[1][0][0]=data[3]
data[1][0][1]=data[4]
data[1][0][2]=data[5]
data[2][0][0]=data[6]
data[2][0][1]=data[7]
data[2][0][2]=data[8]
 …
data[0][1][0]=data[3w]
data[0][1][1]=data[3w+1]
data[0][1][2]=data[3w+2]
data[1][1][0]=data[3w+3]
data[1][1][1]=data[3w+4]
data[1][1][2]=data[3w+5]

というふうに1次元配列のrgbデータをを3次元配列で表したいんですがどうすればよいですか?
240まちがって名前消しちゃいました。:2006/11/30(木) 01:19:57 ID:mI4yUGSi
void main()
{
int x[LENGTH] , y[LENGTH] , s[LENGTH] ;
int ci , co ;

int x8 , y8 , s8 , bit=0x01;

set_tris_b(0xff);
set_tris_c(0xff);
set_tris_D(0xff);

x8=port_b ;
y8=port_c ;

for( i=0 ; i < LENGTH ; i++)
{
x[i] = y[i] = 0 ;
if( (x8 & bit) !=0) x[i] = 1
if( (y8 & bit) !=0) y[i] = 1
bit <<= 1 ;
}

ci=0 ;
for(i=0 ; i < LENGTH ; i++)
{
fadder( &s[i],
&co ,
&x[i],
&y[i],
&ci
) ;
}

ci = co ;
for(i=0 ; i < LENGTH ; i++)
{
fadder( &s[i],
&co ,
&x[i],
&y[i],
&ci
) ;
ci = co ;
}
bit =0x01 ;
s8 = 0 ;
for(i=0 ; i < LENGTH ; i++)
{
if( s[i] !=0) s8 = s8 | bit ;
bit <<= 1 ;
}
port_d = s8
}
を2進数16桁の加減算プログラムに変えろといわれたのですが
まったくわかりません
よかったら教えていただけないでしょうか?
241まちがって名前消しちゃいました。:2006/12/08(金) 03:27:46 ID:FBBsX6Lz
すいません。
わからんのです。。
教えてください。お願いします!!

1. 二つの文字列s1,s2 をキーボードから入力し,それぞれの文字列の長さ(NULL 文字は含まな
い)を画面表示し,さらに文字列s1 の後ろに文字列s2 を連結して画面表示するプログラムを
作成しなさい.ただし,文字列s1 と文字列s2 を連結したものを一度文字列s1 に格納してから
表示を行うこと.また,strlen(),strcat()等の関数を使ってはならない.
提出物: プログラム,実行結果(3 回分以上)
2. 以下の処理を行うプログラムを作成しなさい.ただし,文字列s,t の要素数は50 とすること.
strlen(),strcmp()等の関数を使ってはならない.
(1) キーボードから文字列を入力し,文字列s に格納する.
(2) 文字列sを逆順に並べ替えたものを文字列t に格納する.
(3) 文字列sと文字列t が同一であるかどうかを比較し,その結果を画面表示する.
提出物: プログラム,実行結果(3 回分以上)




242まちがって名前消しちゃいました。:2006/12/10(日) 22:10:05 ID:???
人が沢山いるこっちのスレへ移ったほうがいいと思うよ。
C/C++の宿題を片付けます 78代目
http://pc8.2ch.net/test/read.cgi/tech/1165190320/l50
243まちがって名前消しちゃいました。:2006/12/13(水) 21:03:44 ID:z5+0lo/p
ウイルスバスター利用の大きなデメリット

1つのシリアルで3台のPCに入れられるということで一見得のように見えます。
ですが、実際は製品やサポートの点で非常にずさんな管理体制となっています。
試していないパターンファイルを配布して多くのユーザーが最悪PC再起不能までいったのは最近のこと。

ここで私の元に寄せられたトレンドマイクロの情報のうち、私の実体験を記します。
VB2007に変えてから困ったことがあったのでテクニカルサポートに電話をしました。
長い待ち時間の後 「飯田 絢香(実名)」 という人物が対応に出ました。
そこで圧縮ファイルの検索法について問い合わせたところ、実際は知らないのに非常識な指示をしました。
私が指摘すると、かなり長い待ちうけのあと訂正してまいりました。
ちょっとしたミスに思えるかもしれませんが、文章を短くまとめるためかなりはしょってあります。

このようにノートン、マカフィー、VB、3製品使った身としてサポート体制という点では
トレンドマイクロ(ウイルスバスター)は不安要素だらけです。
一見して得だ、と思えるところにも罠はあります。
1つ言えることは1台のPCにしか入れない人はウイルスバスターを使うメリットは何もないということです。

なお「飯田 絢香」というテクニカルサポートの実名を出すにあたっては直属の上司である
「久高 浩路(実名)」の許可をいただいています。

「飯田 絢香」「久高 浩路」という人物はトレンドマイクロのサポートの一部分ですが全体が
依然このような状況であるのでここに報告します。
244まちがって名前消しちゃいました。:2006/12/13(水) 21:19:59 ID:nJALoNvb
245困り人:2006/12/15(金) 18:42:09 ID:hmsIqZdw
次のガウス消去法のプログラムを教えてください。できるだけ簡単なプログラムを教えてください。
3X@+2XA+XB=10
2X@+5XA+2XB=18
X@+4XA+XB=12
246まちがって名前消しちゃいました。:2006/12/18(月) 11:23:43 ID:1vmuM6La
C言語でプログラムを作成したのですが、コンパイルの時に
下のようなエラーメッセージが出てしまいました。
これはどのようなエラーで、どうすれば解決できるのか教えてください。
passing arg 1 of `XXX' makes pointer from integer without a cast
247まちがって名前消しちゃいました。:2006/12/28(木) 18:47:59 ID:???
お聞きしたいのですが
超初心者にでも理解出来て 向いてる お勧めの本で いいのはありますか?
教えて下さい!
248まちがって名前消しちゃいました。:2006/12/30(土) 09:38:36 ID:???
>>246
まずその英文を日本語に翻訳することをおすすめします。

ヒント

cast は型変換のことです。
249まちがって名前消しちゃいました。:2007/01/05(金) 12:09:10 ID:nviG+YZo
ごめんなさい 分からないので教えてください
宿題で3桁の宝くじ(?)の当たり検索のプログラムを作成してます
1等3桁すべてあたる
2等下2桁
3等下1桁

実行すると同時に出てしまいます・・・
1等あたり
3等あたりみたいな感じで・・・・
すいませんがどこがおかしいかみてくださいお願いします

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>

void main(void)
{
int i;
char tousen[100];
char chusen[100];
int atari=1;
char buffer[3];
char buf_a[3];/*三等の当たり番号の収納箱*/
char buf_b[3];/*二等の当たり番号の収納箱*/
char buf_c[3];/*一等の当たり番号の収納箱*/
/*char buf_d[3];*/
for(i=0;i<=2;i++){
printf("%d等の当たりを入力。\n",i+1);
printf("%d等は%d桁。\n",i+1,3-i);
scanf("%s",&tousen);
}
{
while(chusen>0){
printf("3桁の抽選番号を入力。\n");
printf("終了する時は0を入力。\n");
fflush(stdin);
scanf("%s",&chusen);/*抽選番号の入力*/
if(chusen[1]==0)/*0を入力されたら終了する*/
break;
}
sprintf(buffer,"%06ld",atari);
buf_a[2]=buffer[2];
atari=atoi(buf_a);
if(atari==chusen[3])
printf("3等あたり\n");
buf_b[1]=buffer[1];
buf_b[2]=buffer[2];
atari=atoi(buf_b);
if(atari==chusen[2])
printf("2等あたり\n");
buf_c[0]=buffer[0];
buf_c[1]=buffer[1];
buf_c[2]=buffer[2];
if(atari==chusen[1])
printf("1等あたり\n");
else
printf("全部外れ\n");
}
}
250まちがって名前消しちゃいました。:2007/01/05(金) 23:02:28 ID:???
>>249
文字でやんないとダメなの?
251まちがって名前消しちゃいました。:2007/01/06(土) 21:08:25 ID:???
>>249
一等から調べて、当たったら最後に飛ぶ様にしろ。
252249:2007/01/09(火) 16:39:27 ID:CnhLaLov
249です。
うまく飛ぶように出来ません・・・
助けてくださいOTL
253まちがって名前消しちゃいました。:2007/01/19(金) 02:20:34 ID:Pul07DaS
ファイルの入力で読み込んだ文字を全て一旦
変数に格納したいのですが、どのようにすればいいのでしょうか?
いろいろ試してみたのですが、実行中に突然エラーになってしまったり
して、どうすればいいのか困っています。
わかる方 教えてください。

ちなみに具体的に説明すると
while(c=fgetc(fp))!=EOF){}のchar型変数cに格納された
文字をほかに用意した変数(a[200])に一回一回格納して
いくにはどうすればいいのか?
ということです。
よろしくお願いします。
254まちがって名前消しちゃいました。:2007/01/19(金) 18:58:49 ID:???
まずは、どういうコードを書いたのか晒せ。
255まちがって名前消しちゃいました。:2007/01/24(水) 03:20:51 ID:y+z+ZlzP
教えてくださいm(__)mタイピングソフトを購入しようと思ってるんですけど、パッケージ版とダウンロード版って、どうに違うんでしょうか?
256まちがって名前消しちゃいました。:2007/01/24(水) 14:30:06 ID:???
>>255
初心者違い。ここC用だぞ。
パッケージはまんまパッケージで購入。CD入れてインストール。
ダウンロードはダウンロードしてインストール。
257まちがって名前消しちゃいました。:2007/01/24(水) 17:57:09 ID:???
>>256
スレ違いすみません。どっちがいいのか分からないけど、CDで買うのとダウンロードして音楽を聞くようなものかな?ありがとうございましたm(__)m
258まちがって名前消しちゃいました。:2007/01/30(火) 22:21:25 ID:NNLFVWW+
184e-0024

184 * 10^(-24)
であってますか 汗
259まちがって名前消しちゃいました。:2007/02/01(木) 03:30:05 ID:a/YcCwxk
クッキーとは何ですか?
260まちがって名前消しちゃいました。:2007/02/01(木) 11:17:32 ID:???
何故ここで聞く?
261まちがって名前消しちゃいました。:2007/02/02(金) 03:52:41 ID:ANacAXM9
クッキーってのは、焼洋菓子だ。間違っても不二家のを買うんじゃないぞ!
と、ベタなボケを入れてみる。
262262:2007/02/02(金) 22:56:40 ID:???
プログラムの勉強を始めます。
C言語とJAVAのどちらにしようか迷ってます。
1.どっちが簡単か
2.どっちが将来性があるか
が分らん。
263まちがって名前消しちゃいました。:2007/02/03(土) 21:22:27 ID:???
>>262
JAVA
264262:2007/02/04(日) 10:28:30 ID:???
>>263
レスありがとうございます。
265まちがって名前消しちゃいました。:2007/02/04(日) 15:01:09 ID:T0Spphu0
ごく基礎的なことでお尋ねします。(長文失礼)
昔、NECの9801のDOS環境で、MS-C6で組み上げた自作のデータベースソフトがあります。3つのソースを分割コンパイルし、LinkしてEXEを作成しています。
Win95及びWin98までは、EXEファイルとデータファイルをコピーしておけば、コマンド入力で動いてくれました。
しかしWin2000とXP上では、全く作動してくれません。 16bit環境と32bit環境の違いかな推測しているのですが、どうなのでしょうか?
もし16と32の違いが原因であれば、下記の対処策のどれで解決できるのでしょうか。
@コンパイラ&リンカーを32bitのものと変えてコンパイル・リンクする。
AMS-C全体を、32bitのC言語に取替え、XPで再作成する。
Bソーステキストの中に書いた「ESC・↑・↓」キー等のASCIIコードも書き換え、MS-C全体を、32bitのC言語に取替る。
それとも原因は全く別の所に有って、そんなことをやっても所詮は無理という結論でしょうか?。
時々このソウトを使っているので、これが有る限り9821vxというPC&CRTがリサイクルに出せません(^^;)
26607002150849363_em:2007/02/05(月) 12:01:43 ID:hgI8n5w8
テスト
267まちがって名前消しちゃいました。:2007/02/06(火) 22:33:43 ID:???
C言語の基本は学びました。
しかし、ソフトを作ろうと思ったとき、、、たとえば電卓を作ろうと思ったとき、どうすればいいかわかりません。
コマンドプロンプトのソフトじゃないのを作るにはどうすればいいですか?
268まちがって名前消しちゃいました。:2007/02/07(水) 00:37:03 ID:???
>>267
っVisual Basic
269まちがって名前消しちゃいました。:2007/02/11(日) 22:18:22 ID:???
お前らプログラム技術で聞いたほうが答えが来るぞ。
http://pc10.2ch.net/tech/

【初心者歓迎】C/C++室 Ver.34【環境依存OK】
http://pc10.2ch.net/test/read.cgi/tech/1169039760/l50
270まちがって名前消しちゃいました。:2007/02/15(木) 16:59:48 ID:67Ffp6Xk
■プログラム課題:最小値を算出するプログラムを作る

3つの整数を入力し,その内の最小値を出力するプログラムを作成せよ.
但し,最小値を算出する関数,"min3"を自分で作成し用いなさい.
また,最小値の出力はメイン文で行うこと.
-------------------------------------------
"表示結果の例"
3つの整数を入力してください。
整数1:5
整数2:-4
整数3:0
最も小さい整数は-4
-------------------------------------------

誰かお助けください!!
271まちがって名前消しちゃいました。:2007/05/19(土) 15:51:32 ID:pz6LK5H5
現在C言語勉強中の者ですが、DOS窓の背景色を変えるにはどうすればいいでしょうか。
ご教授お願いします。
272ななし:2007/05/26(土) 19:21:20 ID:l0+KCWPP
はじめまして。
現在画像処理のアプリを作ろうとしております。
画像をメモリ内で拡縮してサムネイル画像を作ろうと、
StretchBltを使えばできそうかなと思っていろいろ
試行錯誤しておりますがうまくできなくて困っております・・・。
プログラミングの基本的なとこもまだ微妙なレベルなので
根本的なところで間違ってるかもしれませんが
どうぞよろしくお願いします。

-----ここから-----
unsigned char*  orgImage = NULL; // 元画像
static HDC hdcbmpBuffer = NULL; // 元画像用
static HDC hdcthumBuffer = NULL; // サムネイル用
static HBITMAP hbmpBuffer = NULL; // 元画像用
static HBITMAP hthumBuffer = NULL; // サムネイル用

// index番号に合った静止画像のポインタの取得
orgImage = (unsigned char*)mov->movimg[index];

// Windowハンドルの取得
hWnd = FindWindow(NULL, "WinAPP");
// Windowのデバイスコンテキストの取得
hdc = GetDC(hWnd);

// Windowと同じDCでメモリDCの作成
hdcbmpBuffer = CreateCompatibleDC(hdc); // 元画像用
hdcthumBuffer = CreateCompatibleDC(hdc); // サムネイル用

// サムネールのDIBSectionのHBITMAPバッファを作成
hthumBuffer = CreateBackbuffer(thumWidth, thumHeight);
ReleaseDC(hWnd, hdc);

// オブジェクトにバッファのビットマップを選択
hbmpBuffer = (HBITMAP)orgImage;
SelectObject(hdcbmpBuffer, hbmpBuffer);

// オブジェクトにサムネイルのDIBSectionのHBITMAPを選択
SelectObject(hdcthumBuffer, hthumBuffer);

// StretchBltの設定
SetStretchBltMode(hdcthumBuffer , COLORONCOLOR);
StretchBlt(hdcthumBuffer, 0, 0, thumWidth, thumHeight,
hdcbmpBuffer, 0 , 0, mov->width, mov->height, SRCCOPY);

// 構造体の配列にメモリを確保してコピー
mov->thumimg[index] = new unsigned char[thumWidth*thumHeight];
mov->thumimg[index] = (unsigned char*)hthumBuffer;

DeleteObject(hthumBuffer);
DeleteObject(hbmpBuffer);

-----ここまで-----

DCの扱い方が悪いのか、StretchBltの設定の仕方が違うのか、
メモリへ書き込み方が違うのか・・。
そもそもこういった使い方はできないのか分からないでいます。
またもっと簡単に縮小できるよってのもありましたらよろしくお願いします。
273まちがって名前消しちゃいました。:2007/05/28(月) 00:47:14 ID:???
hbmpBuffer = (HBITMAP)orgImage;
これが明らかにおかしい
ビットマップハンドルは専用の関数で作らないといけない
274ななし:2007/05/28(月) 08:41:47 ID:QLCcU5IY
ありがとうございます。
ビットマップの扱いについて調べ直してきます・・。
275奈々氏:2007/05/31(木) 16:15:24 ID:T9SgpM9z
学校の宿題で、預金額、利率を入力して、10年間分の各利率に対する
預金額を表示するってのをやれって言われたんですが、全くわからないんで
誰かまじで教えてください。お願いします!預金額の最高額は900000円で利率の入力は%
利率の刻みは、0.05%、各金額の間は7桁表示。
預金額=預金額+利息
利息=預金額*利率*80%でお願いします。
以下の解答例のようにしたいんです。m(vv)m
例)
預金額(円)=10000
利率(%)=0.30

利率  1年 2年 3年 4年 5年 6年 7年 8年 9年 10年
------+------+------+------+------+------+------+------+------+------+------+
0.30% | 10024 10048 10072 10096 10120 10144 10168 10192 10216 10240
0.35% | 10028 10056 10084 10112 10140 10168 10196 10224 10252 10280




0.75% | 10060 10120 10180 10241 10302 10363 10425 10487 10549 10612
276まちがって名前消しちゃいました。:2007/06/14(木) 17:50:16 ID:???
これからC言語を勉強しようとおもってるんですが、こんなエディタないでしょうか?
フリーソフトで、グラフィックが綺麗で、「実行」のところにコマンドプロンプトがあるようなエディタです。
教えてください。
277まちがって名前消しちゃいました。:2007/06/14(木) 21:10:14 ID:b6f1Mb1B
C言語でRS232Cでシリアル通信をさせるためのプログラム(命令文!?)
ってどういうものがあるのでしょうか?
rs send buf() とか知っていますが・・・・・
初心者ですみません。
278まちがって名前消しちゃいました。:2007/06/15(金) 19:48:48 ID:???
>>277
C言語には、そういう類は一切ない。
全て、ライブラリとして外部から提供される。
279277です:2007/06/15(金) 22:51:27 ID:tKuzs51Y
>>278
そうなんですね、どうもありがとうございました。
280まちがって名前消しちゃいました。:2007/06/24(日) 20:18:21 ID:???
>>276
言っていることがよくわからないが、Visual C++ 2005 Express Edtionはどう?
281まちがって名前消しちゃいました。:2007/07/03(火) 21:11:49 ID:???
ニートで暇だからゲームでも挑戦しようかって始めたんだが
いきなり躓いたorz
中略でスマンが一番上のwhile〜の行でエラーが出る。一日中
悩んだだが解答見つからず・・。エラー見つけるの苦手だよorz
助けてくれ・・。
メッセージはint' 型は 'char *' 型に変換できないって出てる。

char buf[99];
char* p;
int i,j,map_data[99][99];

この行→ while((fgets(buf,sizeof(buf),fp))!=EOF){
j=0;
p=strtok(buf,",");
map_data[i][j]=atoi(p);
j++;
while(p!=NULL){
p=strtok(NULL,",");
if(p!=NULL){
map_data[i][j]=atoi(p);
j++;
}
}
i++;
}
282281:2007/07/03(火) 21:20:41 ID:???
>>269の所で聞いてきます。スレ汚しすみません。
283まちがって名前消しちゃいました。:2007/07/04(水) 23:56:46 ID:8qNM6RsB
#include <stdio.h>
#include <math.h>
#define PI 3 // およそ3
main()
{
/* a,bの値 */
int a = 10, b = 20, i;
double x, y, t = 0.0;
char c;

/* x,yのどちらを表示するか */
printf("x or y ? -> ");
scanf("%c", &c);

/* 計算して表示 */
printf("\n -1 0 1\n");
printf("t |----------|---------|\n");

while (t < 10.0) {
x = cos(2 * PI * a * t);
y = sin(2 * PI * b * t);

printf("%2.1lf ", t);
if (c == 'x')
for (i = 0; i < (int)(10.0 * x + 10); i++)
putc(' ', stdout);
else if (c == 'y')
for (i = 0; i < (int)(10.0 * y + 10); i++)
putc(' ', stdout);
printf("*\n");
t += 0.1;
}

return 0;
}

のwikiに載っていたプログラムで
x = cos(2 * PI * a * t);
y = sin(2 * PI * b * t);
の2の値を自由に変えられる(自分で入力できる)ように
したいんですけど、どうやったらいいですか?
284まちがって名前消しちゃいました。:2007/07/06(金) 08:32:18 ID:???
#include <stdio.h>

main()
{
int a;
int b=0;

for(a=0; a<=100; a++)
printf("セ氏温度:%d カ氏温度:%d\n",a ,fahrenheit(a,b));
}

int fahrenheit(int x, int y)
{
y = (9/5)*x+32;
return y;
}

セ氏温度からカ氏温度を求めるプログラムなのですが
float型を使ってカ氏温度を小数点第1まで出力したいのですが
エラーばかり起きて私にはどうにもできません
誰か助けてください
285まちがって名前消しちゃいました。:2007/07/09(月) 14:46:07 ID:???
俺も初心者だが適当にこんな感じなのかな。
もう、遅いかもシレンが。
void main()
{
float fahrenheit(float x, float y);
float a,b;

for(a=0,b=0;a<100;a++)
printf("摂氏温度%.1f 華氏温度%.1f\n",a,fahrenheit(a,b));
}
float fahrenheit(float x,float y)
{
return y=(x*9/5)+32;
}
286まちがって名前消しちゃいました。:2007/07/10(火) 18:41:33 ID:???
2次方程式の解を表示させたいのですがなぜか解がおかしな値になってしまいます
どうすれば解決しますか

#include<stdio.h>
int main(void)
{
int a,b,c,d;
double x,x1;
printf("ax^2+bx+c=0のa,b,cを入力してください:");
scanf("%d %d %d",&a,&b,&c);
d=b*b-4*a*c;
x=(-b+sqrt(b*b-4*a*c))/2*a;
x1=(-b-sqrt(b*b-4*a*c))/2*a;
if(d==0)printf("x=%.3lf",x);
else if(d>0)printf("x=%lf,%lf",x,x1);


else if(d<0)printf("実数解が存在しません");

return(0);
}

なんかquad()を使用するらしいのですが??って感じです
287まちがって名前消しちゃいました。:2007/07/10(火) 19:46:48 ID:???
行列の計算をできるライブラリがあるとか聞いたんだけどどうやって
使うの?
288まちがって名前消しちゃいました。:2007/07/13(金) 16:34:00 ID:albFLb2i
char型のcharってcharacterの略で%nのnはnewlineの略ですよね?
こういう略してある語の元の単語が載ってるサイトってないですかね?
探してもこの2つしかわからなくて
289まちがって名前消しちゃいました。:2007/07/14(土) 10:03:41 ID:jR0+x9vb
>>288
英語の本よめばいいんじゃない?
290まちがって名前消しちゃいました。:2007/09/01(土) 21:35:00 ID:LYltvTGy
age
291まちがって名前消しちゃいました。:2007/09/21(金) 14:59:55 ID:???
ちょっとスレ違いかもしれませんが、サーティファイ主催の
検定1級では、プログラム改造よりも変更仕様書作成のウェイトが高いと
聞いたのですが、やはり実際のコードの変更点をしっかりと
変更仕様書に洗い出せていないと合格は難しいのでしょうか?
変更仕様書がうまく作れなくて困っています。
292まちがって名前消しちゃいました。:2007/09/23(日) 17:24:32 ID:KPrGnc4q
とてつもなく初心者な質問お許しください
VC++6でコンソールをつくり実行したら、Debugフォルダにexeができます
このexeを自作のicoに画像を変更したいのですが、どうすればいいんでしょうか?
ご教授お願いいたしますm(_ _)m
293まちがって名前消しちゃいました。:2007/09/24(月) 04:23:47 ID:xy6UkbDw
#include<stdio.h>
void main(void);
void main(void)
{
int n1;
short nt;
nt=1;
for(n1=0;n1<6;n1++);
nt*=10;
printf("10の6乗は%dです",nt);
}

これってどこが間違ってます?
294まちがって名前消しちゃいました。:2007/09/24(月) 04:36:17 ID:???
for の後ろの方
295まちがって名前消しちゃいました。:2007/09/24(月) 08:26:58 ID:Fx+HSQ24
パソコンを買って、いざ家で勉強しようと思っても、うまくコンパイラ等がインストール
できません。
仕方なくROM付の教材を買ってきてそこからダウンロードしようと思ったのに
それもうまく出来ません・・・。
助けてください!!!!お願いします!!!!
296まちがって名前消しちゃいました。:2007/09/24(月) 20:05:06 ID:???
0から10までの階乗を計算して表示するプログラムが分かりません。
誰か教えてください。
297まちがって名前消しちゃいました。:2007/09/24(月) 21:23:37 ID:???
>>295
Borlandならインストーラを実行してから設定する必要があるが…
設定じゃなくてその前のインストールで失敗するの?それとも設定?

>>295
再帰ならこんな感じ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4962.c
298まちがって名前消しちゃいました。:2007/09/24(月) 23:48:27 ID:???
引数がvoid型の関数はどういう風に使えばいいんですか。
引数はポインタ型になってます。
299まちがって名前消しちゃいました。:2007/09/25(火) 15:21:10 ID:???
>>293
printfはforの外に出さないと6回表示しちゃわないか?
300まちがって名前消しちゃいました。:2007/09/25(火) 16:02:56 ID:???
>>298
引数は void なのかポインタ型なのかどっちだよ。
301まちがって名前消しちゃいました。:2007/09/25(火) 16:29:47 ID:???
関数名(void* 変数名,その他引数……)
こんな感じ。中身は詳細不明
302まちがって名前消しちゃいました。:2007/09/25(火) 16:30:34 ID:???
関数名(void* 変数名,その他引数……)
こんな感じ。中身は詳細不明
303まちがって名前消しちゃいました。:2007/09/25(火) 16:31:53 ID:???
orz
304まちがって名前消しちゃいました。:2007/09/26(水) 19:49:57 ID:???
>301
void *は汎用ポインタ型だからどんなポインタでも代入できる。
引数の場合はどんなポインタもキャストなしで渡せる。
305まちがって名前消しちゃいました。:2007/09/27(木) 07:03:18 ID:CuKDDG/1
ポインタについてなんですが、int d[10] = {1,2,3,4,5,6,7,8,9,}; int *pで宣言するときはp=dで入れることができるんですが
double d[5] = {12.3,11.3,14.4,44.5,55.,}; と宣言したときにp=dではなぜかエラーが出るのですがどうしてでしょうか?
306まちがって名前消しちゃいました。:2007/09/27(木) 13:40:06 ID:Xn+Bjq5z
>>305
型があってないからじゃねぇかな。int *p のままだと入らないと思う。
キャストしてもいいけど意味内から、double *pて宣言すればいいのでないかな。
307まちがって名前消しちゃいました。:2007/09/27(木) 14:59:27 ID:???
>>305
「p=d」って書き方は大嫌いだなぁ。
まぁ、私以外の人は全員そう書くんだろうけど。
私は絶対に「p = *(d[0])」と書く。
308まちがって名前消しちゃいました。:2007/09/27(木) 17:10:45 ID:???
かなり初級のテキストのwhile文の項にある問題なんですが、

次のプログラムは、与えられた数(n)が割り切れる整数かを出力するものである。
解答例
#include <stdio.h>

main()
{
int i, n;

n=51;
i=0;
while( i < n+1){
if(n % i == 0){
printf(" %d は%dで割り切れる.\n", n, i);
}
i++;
}
}
【出力例】
51は 1で割り切れる.
51は 3で割り切れる.
51は17で割り切れる.
51は51で割り切れる.

この条件式( i < n+1)のところ、条件式 ( i <= n )では何がいけないのでしょうか?

309まちがって名前消しちゃいました。:2007/09/29(土) 01:34:41 ID:3Q4jTB2i
>>308
そのプログラムを実行すると落ちないか?
310まちがって名前消しちゃいました。:2007/09/30(日) 01:13:23 ID:???
>>308
条件式は(i < n+1)でも(i <= n)でもどちらでも構わない。
ただ、(i <= n)の方が限界値(n)がそのまま現れるから
俺はこちらを使うかな。

>>309がいってる落ちるってのは
iを0で初期化してるから、1回目のif文で
n % i ==> 51 % 0 で0除算になってしまうということ。
iは1から始めなければいけない。
311PC:2007/10/01(月) 16:44:35 ID:VuDdb56+
性能はどうなのか?↓
http://yasuipc.jp/
312まちがって名前消しちゃいました。:2007/10/04(木) 06:52:11 ID:???
313まちがって名前消しちゃいました。:2007/10/11(木) 13:46:24 ID:R79agX/f
int a の1次元行列を領域1000個で宣言しすべての中身を10にするプログラムをつくれ。

↑教えてください。全くわからないです・・・
314まちがって名前消しちゃいました。:2007/10/11(木) 14:13:35 ID:k8cg8XBF
>>313

void main(void){
  int a[1000];
  int i;
  for(i=0;i<1000;i++){
    a[i]=10;
  }
}
長いこと書いてないからあてずっぽ。
そもそも一次元行列ってのがわからないから配列にしてみた。
こんなかんじ。
315まちがって名前消しちゃいました。:2007/10/11(木) 14:25:39 ID:k8cg8XBF
>>313
void main(void){
  int a[1000][1];
  int i;
  for(i=0;i<1000;i++){
    a[i][0]=10;
  }
}
な気もしてきた。行列ってのがひっかかる。
動作としては>>314と同じ。はず。
316まちがって名前消しちゃいました。:2007/10/12(金) 19:47:55 ID:???
一度表示した文字を全部消すことはできますか?
317まちがって名前消しちゃいました。:2007/10/21(日) 07:27:56 ID:aG0wwKTe
3年で300スレか・・・
318まちがって名前消しちゃいました。:2007/10/21(日) 08:11:14 ID:???
レスね
319まちがって名前消しちゃいました。:2007/10/22(月) 20:23:08 ID:NkZ+y9hC
#define Pi 3.141592654と定義して,
cos(Pi/2)が0に限りなく近くはなるんですが0にならなくて困っています.
解決方法はありますか?
320まちがって名前消しちゃいました。:2007/12/10(月) 09:49:59 ID:aypPi1Yg
>>319
実行結果はどうなった?
321まちがって名前消しちゃいました。:2007/12/14(金) 16:51:19 ID:v7AU+QF/
vistaで某ランドのコンパイラは使えますか?
322まちがって名前消しちゃいました。:2007/12/20(木) 06:35:46 ID:vq7Rajlt
#include<stdio.h>


int main (void)

{
char str[3]="SKY";
int i=0;


while(i<=3){

printf("str[%d] = %d %x %c\n",i,str[i],str[i],str[i]);

i++;
}

printf("文字列 = %s\n",str[3]);
return 0;
}

コンパイル後これを実行すると初めのprintfは正常に動作するのですが
ループ後のprintfでコマンドプロンプト上でエラーが出ます。
頭のいい人おしえてください。
323まちがって名前消しちゃいました。:2007/12/20(木) 10:00:31 ID:???
>>322
char str[3]="SKY";

3

4以上にする
324323:2007/12/20(木) 10:06:13 ID:???
あっ、ごめん
>>323も間違いだけど、本命はこっちだorz

printf("文字列 = %s\n",str[3]);

printf("文字列 = %s\n",str);


ついでに言うと、
while(i<=3){
は間違ってると思う
while(i<3){
だと思うんだが
325まちがって名前消しちゃいました。:2007/12/21(金) 03:36:34 ID:???
while( str[i] ){
でもいいな
326まちがって名前消しちゃいました。:2007/12/21(金) 03:40:56 ID:???
ちなみに
> char str[3]="SKY";

メモリーをcharのサイズで3バイト確保したところに
'S' 'K' 'Y' 0x00 の4バイト書き込むから暴走の元になるよ
普通は
> char str[]="SKY";
で文字列サイズで確保でいいと思う


でも、最近のコンパイラはエラー吐いてくれるのかな?
327まちがって名前消しちゃいました。:2007/12/24(月) 00:36:54 ID:???
ASAPとALAP、リストスケジューリングの勉強をしてるんですが、
入力として与えるデータフローグラフの規模が大きくなっていくとき、
スケジューリングの実行時間がどのように増加するか教えてください。
328まちがって名前消しちゃいました。:2007/12/24(月) 17:07:50 ID:ltU1v7ro
プログラムの結果をhtml形式で出力したいんですがどうすればいいです?
329まちがって名前消しちゃいました。:2008/01/01(火) 17:56:01 ID:???
以下の★1と★2のやり方で結果が同じになるのはどうしてなんでしょうか?
有識者の方ご教授をお願いします。

#include<stdio.h>

void * func(void *p){

printf("□■□func開始□■□\n");
printf("pのアドレス = %p\n",p);
printf("p = %d\n",(int)p);
(int)p += 100;
printf("p = %d\n",(int)p);
printf("□■□func開始□■□\n");

return NULL;

}
int main(void){

int number = 30;

printf("numberのアドレス = %p\n",&number);
func((void *)number);★1

return 0;

}

-------------------------------------------------

#include<stdio.h>

void * func(int *p){

printf("□■□func開始□■□\n");
printf("pのアドレス = %p\n",p);
printf("p = %d\n",*p);
*p += 100;
printf("p = %d\n",*p);
printf("□■□func開始□■□\n");

return NULL;

}
int main(void){

int number = 30;

printf("numberのアドレス = %p\n",&number);
func(&number);★2

return 0;

}
330まちがって名前消しちゃいました。:2008/01/08(火) 23:22:37 ID:VRNJ0iPI
>>329
★1ってコンパイル通るのか???
331まちがって名前消しちゃいました。:2008/01/10(木) 17:49:57 ID:???
GTKのスレって無いの?
332まちがって名前消しちゃいました。:2008/01/17(木) 22:23:53 ID:???
質問です。
以下のようなプログラムで、1が押されたときはiを、2が押されたときはjを
増やしていくようなプログラムにしたいのですが、
何も押されてないときには入力待ちにならずに次の処理をするようには出来ませんか?

while(1){
 char key;
 key = getche();
 
 switch(key){
  case '1':
   i++;
   break;
  case '2':
   j++;
  break;
 }


/* 他の処理*/

}

よろしくお願いします。
333まちがって名前消しちゃいました。:2008/02/12(火) 15:29:51 ID:NbzB99rW
SIN、COSを使って正多角形の図を作りたいんですけど、どうやればいいんですか?
334まちがって名前消しちゃいました。:2008/02/16(土) 18:54:05 ID:???
>>319
コンピュータの計算とはそういうもの。
無限桁の計算は不可能で、必ずどこかで打ち切って有限桁の計算を行わなければならない。
だから、そこで誤差が生じる。
なので、各自が有効数字が何桁かということを意識してやらねばならない。

お前がプログラムを動かしているのが自分のPC上なら、
まず間違いなく浮動小数点数周りはIEEE 754に従っているはず。
そこでは、doubleの精度は十進法で15-17桁程度。
ということは、3.1415926535897932くらいまで桁を増やすのは効果がある。
逆に、それ以上は無意味。

文字列として、出力するときには上から6桁しか表示しないなどとすればいい。
printf系なら、%gや%fをそのまま使えば、そうなる。
335まちがって名前消しちゃいました。:2008/02/18(月) 22:32:27 ID:???
これより新しいバージョンありますか
freecommandlinetools2.exe のバージョン 2.04.001。bcc32.exe の製品バージョンが 5.0、ファイルバージョンが 5.5.1.2
336まちがって名前消しちゃいました。:2008/03/13(木) 01:22:31 ID:b9QRrp1k
#include <stdio.h>

int main( ) {
while(1)
{
   printf("死にたい\n");

    if(いじめっ子をやっつけられたら)
    { break; }
    else if(ループ中に死んだら)
    { return 1; }
}
return 0;
}

ループが抜けられません。異常終了は簡便です。助けてください。
337まちがって名前消しちゃいました。:2008/03/13(木) 18:41:59 ID:???
Builder C++を使っている者ですが
実行ファイルによってWindowsが
セーフモードで起動されたか否かを調べる方法はありますか
338まちがって名前消しちゃいました。:2008/03/13(木) 18:54:11 ID:???
>>336>>335に反応して書いたんだろうけど
反応した>>336>>335と同類だぞ
339まちがって名前消しちゃいました。:2008/03/29(土) 21:15:32 ID:FIndnqFd
>char str[3]="SKY";
char *str="SKY";
の方がカッコイイ。
340尿たんぱく:2008/03/30(日) 17:44:23 ID:???
>>339
ここは初心者板なんだから
char* str="SKY";と書くべきだと思われ
341まちがって名前消しちゃいました。:2008/03/31(月) 23:14:52 ID:???
const char *str = "SKY";
342まちがって名前消しちゃいました。:2008/04/06(日) 15:50:00 ID:O8+WM7v5
>>329
★1はこういうことがしたいんではないの?

#include <stdio.h>

void* func(void *p)
{
int *number = (int*)p;

printf(" □■□func開始□■□ \n");

printf("numberのアドレス = %p\n", number);
printf("number = %d\n", *number);

*number += 100;
printf("number = %d\n", *number);

printf(" □■□func終了□■□ \n");

return NULL;
}

int main(void)
{
int number = 30;

printf("numberのアドレス = %p\n", &number);

func((void*)&number);

return 0;
}
343まちがって名前消しちゃいました。:2008/04/17(木) 07:46:18 ID:B9a8c4t+
よろしくお願いします!まず自分の質問が++なのかさえ分からないものですが宜しくお願いします。
あるアプリで競艇のデータを作っています。掛け金を掛け方に応じ変えています。
■2連複=2000■3連単=3000
また投資額は(掛け方*レース数)です。
アプリ上で掛け方を入れたら自動的に投資額がでるようなのですが、式が分かりません。
自分で色々試し
■IF(方式=2連複,((レース数*2000,((レース数*3000)みたいなのを作りましたが、これだとダメでした。
宜しくお願いします。
344まちがって名前消しちゃいました。:2008/04/18(金) 02:43:28 ID:D6vxprhu
char str[3]="SKY";とchar *str="SKY"; の違いがよくわからん
345まちがって名前消しちゃいました。:2008/04/18(金) 16:59:22 ID:???
>>344
1番目はデータ、2番目はポインタ。
346まちがって名前消しちゃいました。:2008/04/18(金) 17:59:51 ID:I3yEKX2w
入力された値が3だったら、
***
-**
--*
といった具合(後ろで桁合わせ、-は空白)に出力されるプログラムを組みたいと思います。

#include <stdio.h>
int main(void)
{
int num;
int i,j,k;
printf("正の整数:");
scanf("%d",&num);
if(num>0)
{
for(i=1; i<=num; i++)
{
for(j=num; 0<j; j--)
{
printf("*");
}
printf("\n");
for(k=1; k<=i; k++)
{
printf(" ");
}
}
}
else
{
printf("無効な数値が入力されました。\n");
}
return 0;
}

の様に組んだのですが、実行すると
***
-***
--***
となってしまいます。
*を出力する部分が正常に動いていないのだと思うのですが、
どう改善させれば良いのか分かりません。

宜しくお願い致します。

   
347まちがって名前消しちゃいました。:2008/04/19(土) 18:54:28 ID:jlhkIUUO
>>346
これでどうでしょう。

#include <stdio.h>

int main(void)
{
int num;
int amax; /* アスタリスクの一行あたりの最大出力個数 */
int acnt; /* アスタリスクの出力個数カウンタ */
int smax; /* スペースの一行あたりの最大出力個数 */
int scnt; /* スペースの出力個数カウンタ */

printf("正の整数:");
scanf("%d", &num);

if (num > 0)
{
for (amax = num, smax = 0; amax > 0, smax < num; amax--, smax++)
{
for (scnt = 0; scnt < smax; scnt++)
{
printf(" ");
}
for (acnt = 0; acnt < amax; acnt++)
{
printf("*");
}
printf("\n");
}
}
else
{
printf("無効な数値が入力されました。\n");
}

return 0;
}
348まちがって名前消しちゃいました。:2008/04/19(土) 23:31:37 ID:2+nFYJMs
C++Compiler / Turbo Debugger ってどうやって使えるようになるんですか?
349まちがって名前消しちゃいました。:2008/04/20(日) 20:07:47 ID:???
>>347
ありがとうございました。
恥ずかしながら、forの一くくりに条件を二つも入れられることを
知りませんでした。
350まちがって名前消しちゃいました。:2008/04/23(水) 13:44:41 ID:oir+0IES
すみません、質問なのですが

char型の1次元数列に格納されている数列を
INT型の変数に代入するにはどうしたらいいのでしょうか;;

具体的には、数列として1,2,3が入っているとすると
それをINT型の123に変換できないでしょうか?

int out,i,omomi=100;
char suretu[3]=123;

for(i=0;i<3;i++){
out=out+(suretu[i]-'0')*omomi;
omomi--;
}
とすれば変換出来ると思ったのですが、char型の数とINT型の数は
掛け合わせることができないみたいで…
それに加え、入力の数列が2桁、1桁の場合にどうやって判定すればいいのかも
わかりません…。

よろしくお願いします;;
351↑不覚にもワロタ:2008/04/23(水) 17:26:47 ID:???
>>348
残念だが、ここはC専用初心者質問スレである。
C++はスレチ
352まちがって名前消しちゃいました。:2008/04/23(水) 20:17:42 ID:mk8tQfgw
>>350
こういうのは?

int out;
char suretu[] = "123";

out = atoi(suretu);
353まちがって名前消しちゃいました。:2008/04/23(水) 21:18:45 ID:oir+0IES
>>352
そんな関数あったのですね;;
もっと調べてみるべきでした。

ありがとうございました!
354まちがって名前消しちゃいました。:2008/04/27(日) 07:29:54 ID:ZHazopOp
アロー演算子ってものを使うと、処理速度が速くなるということが書いてあったのですが、
実際業務のような大きいプログラムを組んだ際、どの程度速くなるものなんで
しょうか?
355まちがって名前消しちゃいました。:2008/04/27(日) 09:04:02 ID:+1ojxpH8
atoi .. asii to into
356まちがって名前消しちゃいました。:2008/04/28(月) 00:04:12 ID:???
>>355
atoi .. ascii to integer
atof _ ascii to float
357まるち:2008/04/29(火) 15:21:38 ID:v8mvk1NY
掛け金のついたトランプのポーカーゲーム作ってください(C言語)
3588年前はプログラマー ◆ugY4Gm8tIM :2008/04/29(火) 20:15:40 ID:???
>>350
無理やり自分でやるなら、
int keta;

keta=strlen(suretu);
for(;keta>0;keta--){
omomi=10~(keta-1);
計算;
}
じゃないか?
omomi--だと100回ループしてまうのでは。
359まちがって名前消しちゃいました。:2008/05/03(土) 20:01:59 ID:???
すいません、質問です。
C言語学習のために、terapadやコンパイラの入ったディスクを
使ってインストールしてみました。指示に従って上手く終えたはずなんですが、
実際にbcc32コマンドを使ってコンパイルしてみても「認識されていないので
実行できない」という趣旨の文が出てくるだけです。cfgファイルの
移動も環境変数の編集も指示通りのはずなんですが・・・・・
自分と同じミスをした方、いらっしゃったら教えて頂けませんか?
360まちがって名前消しちゃいました。:2008/05/11(日) 01:03:41 ID:???
まず、terapadで作ったソースファイルをC:\borland\bcc55\Binのところに
保存する。C:\borland\bcc55\Binは作業フォルダ。君の作業フォルダは知らん。
次に、コマンドプロンプト上で >cd C:\borland\bcc55\Bin
で作業フォルダに移動
>bcc32 ファイル名.c
で終わり。
361まちがって名前消しちゃいました。:2008/05/11(日) 13:37:23 ID:W1a0Fnik
適当に数字を入力して
その数字をまたある数で割って割り切れたらその値を出力して
割り切れなかったら余りだけをまた別の小さい値で割りきれるか
って繰り返して最終的には割り切れるプログラムを作りたいんですが・・・
例えば1020を500で割ると2余り20で2が出力され
余り20を10で割って2が出力されるみたいな
困ってるんでお願いしますm(_ _)m
362まちがって名前消しちゃいました。:2008/05/11(日) 15:51:18 ID:???
>>361
頑張って書いてみたけどどうかな?
#include <stdio.h>

int main(void)
{
int wara,waru,ans,amari,waru2;
printf("割られる数と割る数を,で区切って入力してください");
/*例 100,3*/

scanf("%d,%d",&waru,&wara);
ans = waru / wara;
amari = waru % wara;

printf("答えは%d,余りは%d :",ans,amari);
scanf("%d",&waru2);
printf("%d / %d = %d",amari,waru2,amari / waru2);
return 0;
}
363まちがって名前消しちゃいました。:2008/05/11(日) 20:30:57 ID:???
改良版

#include <stdio.h>

int main(void)
{
int wara,waru,ans,amari,i;
printf("割りたい数を入力してください\n");
scanf("%d",&wara);/*割られる数*/

for (i = 1;i <= 10;i++) {
printf("どの数字で割るか入力してください\n");
scanf("%d",&waru);/*waraを割る数*/

ans = wara / waru;
amari = wara % waru;
wara = amari;

printf("答えは%d\n余りは%d\n",ans,amari);
}
return 0;
}
364C言語歴2週間:2008/05/15(木) 23:31:35 ID:???
課題が出来ない、誰か教えて°・(ノД`)・°・


2桁の16進数を入力して%xを使わずに対応する文字を表示するってのなんだが

例:入力 53
文字コード「53」の文字は「S」


どうやっても大文字のSが出ない(つд`)
365まちがって名前消しちゃいました。:2008/05/17(土) 04:29:24 ID:???
C++はスレ違いですか?
366まちがって名前消しちゃいました。:2008/05/17(土) 15:02:21 ID:???
質問です。

例えば
int data[2][2]
という2次元配列をとった場合
メモリ上ではどのように格納されているのでしょうか?

data[0][0] data[1][0] data[0][1] data[1][1]

それとも
data[0][0] data[0][1] data[1][0] data[1][1]
なのでしょうか?
367まちがって名前消しちゃいました。:2008/05/19(月) 02:23:47 ID:???
Cを覚えたいんだけど、何から揃えればいいの?
368まちがって名前消しちゃいました。:2008/05/19(月) 07:09:58 ID:???
パソコン
ビルダー
参考書
369まちがって名前消しちゃいました。:2008/05/19(月) 09:21:26 ID:z9059u1R
C言語ってどれくらいのレベルを基準に

初級
中級
上級

と判断できるの?
370まちがって名前消しちゃいました。:2008/05/19(月) 20:13:26 ID:???
初級:メモリの構造を理解できてポインタが
使える。
中級:***pとか意味も無く使ってみる
上級:むしろポインタを使わずにビューティーな
ソースが書ける。

こんな感じだと初心者の俺が言ってみる。
371まちがって名前消しちゃいました。:2008/05/19(月) 20:49:15 ID:9LN3xx8J
C言語を勉強してみようと思って
「猫でもわかる〜」という本を読みはじめてみたんですが、

処理環境ってどうすればいいのかさっぱりわかりません。。。

どこかで何かをインストールするんですか?
ソフト買うんですか?


誰か教えてくださいorz
372まちがって名前消しちゃいました。:2008/05/19(月) 21:36:14 ID:???
とりあえずMinGwでググッてみろ
話はそれからだ。
373まちがって名前消しちゃいました。:2008/05/19(月) 22:23:29 ID:9LN3xx8J
>372

ぐぐってみた!
「MinGwはフリーで入手できるGNUのCコンパイラである」らしいとわかった!

これをダウンロードすればいいの?
374まちがって名前消しちゃいました。:2008/05/19(月) 23:35:29 ID:???
そうだっ!!
ダウンロードしてインストールして
パスを通して終了だ。

パスの通し方はスタート→ファイル名を指定して実行
→cmd→PATH C:\MinGw\binとかそんな感じだ。

そしてソースファイルを作成したら
Dos窓からgcc 何とか.txt エンター
375まちがって名前消しちゃいました。:2008/05/20(火) 00:15:44 ID:k9POdkJ+
うーん。。。
ダウンロード画面(ここ↓)
ttp://sourceforge.net/project/showfiles.php?group_id=2435
まで行ったけど、いっぱいあってどれをダウンロードすればいいのか分からない(汗)

マジ初心者で申し訳ないけど教えてください。。。
376まちがって名前消しちゃいました。:2008/05/20(火) 00:28:21 ID:???
いくらなんでも初心者すぎるだろ・・・・

ttp://sourceforge.net/project/showfiles.php?group_id=2435
の一番上のMinGw 5.1.4をダウンロードして実行

後はこのページでも見ながらインストールしてみれ
ttp://yanchde.gozaru.jp/mingw/wingw_start.html
377まちがって名前消しちゃいました。:2008/05/20(火) 01:49:49 ID:???
プログラムの勉強のためにLinux入れちゃったよ
でも、とりあえずHello Worldは書けた。
a.outなんてファイルが出来るのな
早くウィンドウとか出したいなぁ
378まちがって名前消しちゃいました。:2008/05/20(火) 13:37:09 ID:fZ6G5z1J
fprintfの使い方としてわからないんですが、文字列としてファイルから配列に読み込んだ場合
fprintfとして使うとファイルの読み込みの上書きじゃなく全部消えてしまうマスカ?
379まちがって名前消しちゃいました。:2008/05/20(火) 14:44:31 ID:???
ここよりプログラム板に行った方がいいんじゃないか?
380まちがって名前消しちゃいました。:2008/05/20(火) 23:31:58 ID:k9POdkJ+
>376

ダウンロードは途中まで行けるんだけど、
「Your connection appears to have dropped out.
Reconnect dial up or check your IE proxy settings.」

って表示されて途中で止まってしまう…orz


設定を調べろといわれてもド素人にわからないが、
色々と頑張ってみたところ互換性がうんぬんかんぬん。。。?

MinGwがまだXP対応で使ってるPCがvistaだからとか??


ってなって困ってるところです。

丁寧に対応してくれてるのに つまずいてばっかりでごめん。
でもできればもう少し我慢して教えてくれないだろうか(><;)
381まちがって名前消しちゃいました。:2008/05/21(水) 14:03:37 ID:???
>>380
Borlandのコンパイラをオススメしてみる。
http://www.codegear.com/jp/downloads/free/cppbuilder
↑のページの
C++ Compiler 5.5/Turbu Debugger
てのクリックして、必要事項記入してダウンロードできる。
個人使用に関しては只。
落としたら、コンパイラの実行ファイルフォルダを環境変数にPATH設定する。
多分コンパネのシステムからできる。
今あるPATHの後ろに;c:\borland\bcc55\binを加えて再起動。
それとINCLUDEとLINKのPATHをCFGファイルに設定する。
-IC:\Borland\Bcc55\Include
-LC:\Borland\Bcc55\Lib
て内容で、上のbinのフォルダにBCC32.CFGてファイルで作成する。ノートパッドでOK。
あとは適当にCのソース入れるフォルダ作って、そこにソース入れる。
コマンドプロンプトからソースのフォルダに行って、
>BCC55 ファイル名.c エンターで実行ファイルが作られる。
382まちがって名前消しちゃいました。:2008/05/22(木) 00:04:39 ID:K/s7JfXb
>>381

ふぅむ。。。

ちょっと今急いでレポートを書かなきゃいけないので
明日の夜にやってみる!

ちなみにこれってC++のコンパイラみたいだけど、
C++ってC言語とどう違うの??
今は『猫でも分かるC言語プログラミング』って本を読んでるんだけど
このコンパイラを使うならC++の本の方がいいのかなぁ?汗
383まちがって名前消しちゃいました。:2008/05/22(木) 02:10:45 ID:8ywkUfSW
すいません、ちょっと教えて下さい。
画面の右下のツールバーが消えてしまって、ペンまで消えてしまいました。
これは誤作動してるんですか?
それともロックのようなもの?をしてしまったのでしょうか?
設定はしてみましたが、なぜかできませんでした。
再起動の時やショットダウンの時は一瞬ツールバーが表示されます。
384まちがって名前消しちゃいました。:2008/05/22(木) 02:16:53 ID:EicJJs1t
どなたかお助けください
以前zipファイルを開くときにプログラムを使って開くというのにしてしまいまして
それ以来Adobeだのメモ帳だのから開くことしかできず結局中身は開けずじまいなのです
プログラムから開くさえクリックしなければ以前のように見れた気がするのですが
どうやったら直るでしょうか?お願いします!
385まちがって名前消しちゃいました。:2008/05/22(木) 05:34:35 ID:???
しーとしーぷらぷらって何が違うんですか?
スクリプトしか知らない自分に解り易く説明してください。
386まちがって名前消しちゃいました。:2008/05/22(木) 10:25:35 ID:???
>>382
C++のコンパイラだけど、Cもいけるから大丈夫。

>>385
Cはどっちかっていうと機械向けの言語であまり人に親切ではない。
C++はCの仕様拡張でオブジェクト指向プログラミングとかクラスの実装とかで、
人に優しい。わかりやすいかどうかは別だ。説明してておいらもわかってないさ。
C++のプログラム経験あるけど、結局Cの範囲でしか書かなかったからな。
387まちがって名前消しちゃいました。:2008/05/22(木) 10:30:11 ID:???
>>384
ここC言語スレなんだけど、それさえもわからんほど焦ってる?
とりあえず、エクスプローラーのツールのフォルダオプションのファイルタイプ
で登録されてる内容を編集するか、削除して一からやりなおすかしたらいいんじゃないかと思う。
388385:2008/05/22(木) 14:53:21 ID:???
>>386
詳しいご説明ありがとうございます。勉強になりました。
389まちがって名前消しちゃいました。:2008/05/22(木) 23:08:32 ID:???
echo "main(){}" > test.c; gcc test.c
390まちがって名前消しちゃいました。:2008/05/24(土) 22:48:54 ID:???
>>387
CってPCの略語だと思ってたらどうやら違う?
しかし直りませんわ・・・3月に買ったばかりなのに何もできやせんこのPC

391まちがって名前消しちゃいました。:2008/06/03(火) 21:36:44 ID:EHr8Vkzf
分かる人がいれば、教えていただきたいのですが・・・

VisualStudio2008でC++のMFCの基本的なスタイルで作成したんですが
ビルドするとツールバー(切り取り・保存・貼り付け・バージョン情報)が
勝手に作成されてしまいます。
これを消すには、どこをいじればいいでしょうか?
392まちがって名前消しちゃいました。:2008/06/06(金) 00:02:04 ID:???
えっとC初めてまだあまり経っていないので質問です。
勉強の仕方なんですけど参考書とかっていうのは揃えた方がいいのでしょうか?
393まちがって名前消しちゃいました。:2008/06/08(日) 01:09:04 ID:???
C言語学習してて参考書が必要ないと感じるなら
買わなくていいだろ。
394まちがって名前消しちゃいました。:2008/06/09(月) 17:31:54 ID:???
>>393
そりゃーごもっともだが、回答にはなってないな。
395まちがって名前消しちゃいました。:2008/06/09(月) 19:41:42 ID:kgYEaJxO
http://www.geocities.jp/ky_webid/algorithm/017.html
こういうプログラムを実行したときに
void型はnode型に変更できませんってなるのはなぜでしょうか
396まちがって名前消しちゃいました。:2008/06/09(月) 23:03:02 ID:???
bccだと普通にできたけど・・・・
コンパイラの違いじゃないか?
と初心者の俺が言ってみる
397まちがって名前消しちゃいました。:2008/06/10(火) 07:58:05 ID:???
ネットがあるのに参考書も必要かな?
398まちがって名前消しちゃいました。:2008/06/10(火) 12:48:10 ID:???
>>397
有ると便利な事も有る。
まぁ、やり方しだいだと思う。

と初心者が言ってみる
399まちがって名前消しちゃいました。:2008/06/11(水) 11:46:54 ID:???
>>397
知識の質の違いの分かるエスパーには不要だよ
400まちがって名前消しちゃいました。:2008/06/13(金) 11:49:30 ID:???
逆引き一覧だけは本で持ってる罠
401まちがって名前消しちゃいました。:2008/06/13(金) 16:51:24 ID:ANX/3Ydm
コマンドラインでプログラムを実行し、コマンドラインでキーボード入力をし、
Ctrl + dが押されるまで改行しても入力し続けることができて、Ctrl + dが入力されたら入力された文を
すべてテキストファイルに書き込むプログラムはどうやって作ったらいいですか?
402まちがって名前消しちゃいました。:2008/06/19(木) 12:25:59 ID:???
>>395
C++のコンパイラでコンパイルしてるから。
大方、VisualStudioのExpressでも使っているんだろう。
403まちがって名前消しちゃいました。:2008/06/20(金) 22:42:09 ID:V2kImuux
Πの近似値を求めるプログラムを教えてください
404まちがって名前消しちゃいました。:2008/06/22(日) 16:22:43 ID:???
TL2号数使えばいいですよ
405まちがって名前消しちゃいました。:2008/06/23(月) 04:56:10 ID:Naxunqvb
>>403 これでヒントを得てください。

#include<stdio.h>

void main(void)
{

int w,a,b,c,d,e,f,g,h;
float i,j,k,l,m,n,o,p,q,r,s,t,u;
for(w=1;w<=10000;++w){
a=w;
b = a*a;
c=b-a;
d=2*a;
e=c/d;
f=a-e;
g=f*f;
h=g-a;
i=2*f;
j=h/i;
k=f-j;
l=k*k;
m=l-a;
n=2*k;
o=m/n;
p=k-o;
q=p*p;
r=q-a;
s=2*p;
t=r/s;
u=p-t;
printf("√%dの近似値は\%fです。\n",a, u);}


}
406まちがって名前消しちゃいました。:2008/06/23(月) 04:57:45 ID:Naxunqvb
二重for誰か考え方教えてください。
理屈はわかるけど、納得いかない…
407まちがって名前消しちゃいました。:2008/06/23(月) 06:09:06 ID:???
わかるかわからんかはっきり汁
わからん例題を示せ
408まちがって名前消しちゃいました。:2008/06/23(月) 06:25:13 ID:Naxunqvb
#include<stdio.h>
main()
{
int a,b;
for(a=1; a<=10; a++)
{
for(b=14; b>a; b--)
{
printf("*");
}
printf("\n");
}
return 0;
}

for(b=14; b>a; b--) ← ここのb>aの理屈がどうしても理解出来ません。
誰かご存じでしたらお願いします。
409まちがって名前消しちゃいました。:2008/06/23(月) 06:48:27 ID:???
bが減っていくんだから、例えばa=10のときは、
  b=14>10、b=13>10、b=12>10、b=11>10
の4回(14-10回)。a=1のときは、
  b=14>1、b=13>1、…、b=3>1、b=2>1
の13回(14-1回)。

同じ回数繰り返すにしても、書き方が色々ある。
for(b=14; b>a; b--) ...
for(b=14-a; b>0; b--) ...
for(b=0; b<14-a; b++) ...
410まちがって名前消しちゃいました。:2008/06/23(月) 06:51:30 ID:???
for(b=0; b<14-a; b++) ...
と書けば、ループの中で変わらない「14-a」を何度も計算することになるから、
ちょっと変形でもしてみようか、という話になる。
411まちがって名前消しちゃいました。:2008/06/23(月) 07:06:49 ID:Naxunqvb
あ!?スゴイ… 
よくわかりました。
新たな質問なんですが、以下の文だとどうして減らなくなるのでしょうか?
理屈は同じに思うのに、何で違うのかがわかりません。
すみません。これで最後ですので、おねがいします><

#include<stdio.h>
main()
{
int a,b;
for(a=1; a<=10; a++)
{
for(b=14; b>1; b--)     ←
{
printf("*");
}
printf("\n");
}
return 0;
}


for(b=14; b>1; b--)    ここの、b>aをb>1にすると、どうして減らなくなるのかわからないのです。
412まちがって名前消しちゃいました。:2008/06/23(月) 07:10:12 ID:???
それはよく考え直せw
413まちがって名前消しちゃいました。:2008/06/23(月) 07:15:51 ID:Naxunqvb
はい>< ほんとありがとうございました。
だいぶ助かりました。
414天照:2008/06/23(月) 07:32:55 ID:ONdp8kFY
しね
415まちがって名前消しちゃいました。:2008/06/23(月) 07:43:21 ID:Naxunqvb
氏ね言わないでください:д;
馬鹿ですみません。
416まちがって名前消しちゃいました。:2008/06/29(日) 18:40:55 ID:???
質問です。

配列にポインターでアクセスする時

例えば
int data[10];
int *p_data;
とある場合配列dataにポイントする場合
p_data = data;
とする場合と
p_data = &data[0];
とする場合がありますよね。

ですが、二次元配列にアクセスする場合
int data[10][10];
int *p_data;
とある場合
p_data = data;
ではなく
p_data = &data[0][0];
としなければならないのはどうしてなのでしょうか?
417まちがって名前消しちゃいました。:2008/07/02(水) 19:03:01 ID:SN1wjbBk
家でC言語勉強しようと思ってるんだけどどんなソフト?用意すればいいの?
できればそのソフトがあるサイトのアドレス張ってもらえると助かる
418まちがって名前消しちゃいました。:2008/07/02(水) 19:11:23 ID:???
419まちがって名前消しちゃいました。:2008/07/02(水) 20:50:16 ID:SN1wjbBk
>>318みて落としてみたけど実行ファイルフォルダってのがどこにあるか分からない・・・
420まちがって名前消しちゃいました。:2008/07/02(水) 20:50:46 ID:SN1wjbBk
すまん>>381だった
421まちがって名前消しちゃいました。:2008/07/02(水) 22:11:40 ID:982AzdS7
学校の宿題で自己 参照 構造体 を使ってプログラミングしろって言われたんだけど
ろくすっぽ授業聞いてなかったから不安なんだけどこれでいい??

#include<stdio.h>
#include<string.h>

int main(void)
{
struct roll{
char name[20];
int birth;
int zip;
char address[100];
char tel[20];
}data;

strcpy(data.name, "Taro");
data.birth = 19901111;
data.zip = 1234567;
strcpy(data.address,"shiagaken kusatsushi.");
strcpy(data.tel,"08012345678");

printf("name birth zip address tel\n");

printf("%-10.10s% 11.8d% 10.7d %-30.30s %-12.12s\n",data.name,data.birth,data.zip,data.address,data.tel);

return 0;
}
422まちがって名前消しちゃいました。:2008/07/02(水) 22:49:32 ID:???
全然違うよw
423まちがって名前消しちゃいました。:2008/07/02(水) 22:50:05 ID:DQW+UtP0
自己 参照 構造体って何?w
424sage:2008/07/05(土) 19:04:22 ID:4cKGSpQY
#include <stdio.h>
int main(void)
{
char a;
for(;;){
printf("文字を入力してください。\n");
a=getchar();
if(a=='A'||a=='B'||a=='C'){
printf("正解です。\n");
}
else{
printf("不正解です。\n");
}
}
return 0;
}
この文の間違っているところはどこですか?
繰り返し文がないとうまくいくんですが、
繰り返すと勝手に1回条件文を通り「不正解です」と
出力されてしまいます。
425まちがって名前消しちゃいました。:2008/07/07(月) 03:28:46 ID:???
>>424
好きなほうを選んでくれ

1.エンターを押す。だが「不正解です」は表示したくない
2.一々エンター押すのはめんどくさい
426まちがって名前消しちゃいました。:2008/07/08(火) 19:43:08 ID:w1hXj126
1でお願いします。
427まちがって名前消しちゃいました。:2008/07/08(火) 22:10:10 ID:ByVU2tyS
↓こんなプログラムを作りたいのですがどうやってつくったらいいのでしょうか?

挿入元文字列 : パソコン
挿入文字列 : デスクトップ  ←scanfで任意に入力
       ̄ ̄ ̄ ̄ ̄ ̄ ̄
挿入位置 : 2 ←scanfで任意に入力

挿入結果 : パソデスクトップコン

配列を駆使して作りたいです、教えてください
428まちがって名前消しちゃいました。:2008/07/09(水) 01:24:27 ID:???
多分凄い初心者な質問だけど、コンパイラのバージョンってどうやって調べられるのか教えてください
GUI開発環境で、CPad for Borland C++Compiler ってのを使ってます。
それでコマンドプロンプトを起動しgcc -v と入力したら gcc version 4.3.0 20061021 というのが表示されるんですが、
これがコンパイラのバージョンを表してるんですか?
429まちがって名前消しちゃいました。:2008/07/09(水) 08:26:16 ID:???
ターミナルから、
cc -version
みたいな感じだったかな?
430まちがって名前消しちゃいました。:2008/07/09(水) 09:13:27 ID:???
>>429
gcc --versionと入力したら、

gcc (GCC) 4.3.0 20061021 (experimental)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

と表示されたんですが、このうちのどこがバージョンを表してるんですか?
gcc (GCC) 4.3.0 20061021の部分ですか?
431まちがって名前消しちゃいました。:2008/07/09(水) 17:16:15 ID:???
4.3.0がバージョンで
20061021がリリース日じゃないか?
432まちがって名前消しちゃいました。:2008/07/09(水) 23:39:31 ID:zVECoHPI
for文で
i = i + 1 は i++ と表現できますが、
i = i + 2 は どのように表現すればいいんでしょうか?
433まちがって名前消しちゃいました。:2008/07/10(木) 05:23:25 ID:???
>432 i+=2 じゃだめ?
434まちがって名前消しちゃいました。:2008/07/10(木) 05:34:50 ID:???
大きな配列(200MBくらい)を扱うプログラムを書いています。
普段はmakeを使って作業していて、makeを通じてプログラムを実行すると
ちゃんと動くのですが、シェルから起動しようとするとセグメンテーションフォルトが出ます。

デバッガ(gdb)で起動しても正常に動作しました。

どうやら、シェルの子プロセスになっているとセグメンテーションフォルトになるようなのですが、
シェルごとに割り当てられているメモリの量に制限があるということなどはあるのでしょうか。
また、この場合どういう対策をすればいいのでしょうか。

環境
Ubuntu Linux (8.04)
gcc 4.2.3
zsh 4.3.4
435まちがって名前消しちゃいました。:2008/07/11(金) 20:20:49 ID:???
メモリをどうやって確保してるのでしょうか。
mallocでずずずい〜〜〜っと確保しているのであれば、もしかすると
そのうちの低い確率でNULLを返されてて、NULLポインタを使って
メモリアクセスをしてしまった、なんて事があるかもしれん。
436まちがって名前消しちゃいました。:2008/07/13(日) 01:54:01 ID:???
#include <stdio.h>
int main(void)
{
int a,b,c,d,x,y;
int mc[2][2]={0};
int ma[2][2]={0};
int mb[2][2]={0};

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

ma[2][2]={0}+{{a,b},{c,d}};
mb[2][2]={0}+{{d,-b},{-c,a}};


if(a*d-b*c==0)
printf("逆行列はありません。");
for(x=0;x<2;x++)
for(y=0;y<2;y++)
mc[x][y]=1/(a*d-b*c)*mb[x][y];

for(x=0;x<2;x++){
for(y=0;y<2;y++)
printf("%3d",mc[x][y]);
putchar('\n');
}

return(0);
}

abcdに数字を代入してその逆行列を求めるプログラムを作りたいのですが、どこを変えればよいでしょうか?
437まちがって名前消しちゃいました。:2008/07/13(日) 01:58:57 ID:???
>>436
>int mc[2][2]={0};
>int ma[2][2]={0};
>int mb[2][2]={0};
演算途中は浮動小数点になるから
double mc[2][2]={0};
double ma[2][2]={0};
double mb[2][2]={0};
としないと、演算途中で全部小数点飛ばされるとかそんな事かな。
438434:2008/07/14(月) 05:36:48 ID:???
>>435
malloc からの NULL ポインタは条件分岐で回避してるので問題ないはずです。(そこでのエラーも何回か経験しました)
現在の問題はどうやら静的に確保されたメモリの部分がシステムのスタックを使いきってしまうために起こる問題のようです。たぶんCだけの問題ではないようなので、ちょっとUnix板にでも行ってきます…。ありがとうございました。
439まちがって名前消しちゃいました。:2008/07/16(水) 13:32:50 ID:???
>>416
下のほうの場合では、
p_dataはint型へのポインタだからint型の配列をポイントすることができる

しかしdataはint型の配列ではない
dataはint型10個の配列の配列になっているので、
int型10個の配列へのポインタを宣言すればポイントできる
int (*p_data)[10]=data;

ようするに型が合わない
合わない場合でも無理やり代入することはできる
p_data=(int*)data;
440sage:2008/07/19(土) 13:57:27 ID:eTv0ugg/
コンパイラのインストールと環境設定について質問なんですが

*スタート→コンパネ→システム→詳細設定→環境変数→システム環境変数の中にPathの項目を設定する

このpath項目を設定することの必要性について教えてもらいたいのです。

システム(OS)が環境変数で指定されているディレクトリに簡単にアクセスできるようにするもの。
つまりコマンドプロンプトあたりでわざわざソースファイルをコンパイラがあるフォルダにおかなくても
そのソースファイルをコンパイルできるようにするためにある。でしょうか?

もひとつこのpathというのはコンパイラの中で中間言語を順次出力する段階、という意のパスとは別物でしょうか?

スレチかもしれないですがお願いします><
441まちがって名前消しちゃいました。:2008/07/19(土) 14:00:27 ID:???
なんで名前の方に書き込んでるんだ俺・・・
442まちがって名前消しちゃいました。:2008/07/19(土) 23:28:04 ID:???
>>440
gccなどを呼び出すとき、「gcc」「gcc.exe」で呼び出せるようにするためです
環境変数PATHを指定しなかったら"C:\Program Files\......\gcc.exe"のように
逐一パスをつけて呼び出さないと検索してくれないので、
コマンド的に名前のみで呼び出したい実行ファイルにはパスを通します
そうすればmakefileの中でも実行させたいプログラムのパスを省略できます
443まちがって名前消しちゃいました。:2008/07/20(日) 01:01:44 ID:???
>>442
ありがとうございます
444まちがって名前消しちゃいました。:2008/08/01(金) 13:12:44 ID:kbDSdiq1
int a=5,b=2
double c,d,h=2.0

c = a/b; @
printf("c = %f\n",c);

d = a/h; A
printf("d = %f\n",d);

というプログラムで
c=2.0 d=2.5
となるのですが、@とAではどこが違うのですか?
初歩的な質問ですみません。
445!namekuji:2008/08/01(金) 13:47:08 ID:???
「C言語 型キャスト」でGoogle検索してみるのも。

整数演算(int)と浮動小数点演算(double)の違いだろう。
int型同士の演算はint型が戻り値になる。
int型とdouble型は型キャストされてintがdouble型になり
double型同士の演算結果が戻り値になる。

●C言語編 第21章 型変換
ttp://www.geocities.jp/ky_webid/c/021.html
> 1つの式の中で複数のデータ型が存在する場合、大きい方の型に変換されます。
446まちがって名前消しちゃいました。:2008/08/01(金) 16:51:44 ID:kbDSdiq1
回答ありがとうございます。
ということは@はint型だから切り捨てられて2.0
Aはdouble型だからそのまま2.5ってことですか

型キャストという言葉自体しらなかった・・・

447!namekuji:2008/08/01(金) 19:49:29 ID:???
>>446
そんな感じでいいんじゃないかと思います。
448まちがって名前消しちゃいました。:2008/08/21(木) 13:55:42 ID:tKDDU3nn
小数点以下がある時は第n位まで、無い時は整数のみっていう出力の仕方を書式フィールドだけで指定する方法ってない?
449まちがって名前消しちゃいました。:2008/08/21(木) 17:13:24 ID:???
>>448
入力検査、文字列処理の基本だろう
C言語の定石 を勉強せにゃあかん
450まちがって名前消しちゃいました。:2008/08/25(月) 11:58:16 ID:???
C言語を先日から始めました。 
商を出す[/]と余りを出す[%]や、[int]型や[double]型を知りましたが、
「小数点以下までを求める割り算」がいまひとつ思いつきません。 
いろいろ[/]や[%]を混ぜ合わせた式にするのでしょうか。 

例えば、34が48の何パーセントかを出すとき、小数点以下6桁まで求めて
「70.833333%」と出すにはどのようにすればよろしいのでしょうか。 
451まちがって名前消しちゃいました。:2008/08/26(火) 21:37:40 ID:POhlpLV3
#include<stdio.h>

int kotae(int,int);

int main()
{

int a,b,c;

printf("かけるられる値=");
scanf("%d",&a);
printf("かける値=");
scanf("%d",&b);

c=kotae(a,b);

printf("%d X %d = %d\n",a,b,c);

return 0;

}

int kotae(int a,int b)

{
int c;
c=a*b;

return c;

}

これをカスタマイズせよ
452まちがって名前消しちゃいました。:2008/08/27(水) 13:48:14 ID:9MCNuaLY
>>449
strlenとか使うんですか?
453まちがって名前消しちゃいました。:2008/08/28(木) 02:10:15 ID:???
>>450
double型同士の計算では%が使えず、/だけ。
その/の結果は小数点以下も計算した商。

小数点以下6桁というような出力をするにはprintfなどで書式%.6fを使う。
454450:2008/08/28(木) 06:55:06 ID:???
>>451 >>453
御回答ありがとうございました。 
[/]は商以下を切り捨てるので「小数点以下を最初から計算しない」のかと思い込んでました。 
もう一度該当箇所の解説を本で読んでみて、なんとなく[double]型と[int]型の違いや
使い方がわかってきた感じがします。 
何度か間違いながらも、「計算して表示するときに整数を[double]型にして計算して表示する」…という
方法をとりましたら、一応うまくいきました。(何もしないと小数点以下6桁の表示のようです) 

最初に整数を入力するときは[int]型で、計算して割り合いを出すときだけ[double]型にしました。
最後の表示は次のように書きました。 

printf("%dは%dの%f%です。\n",n1,n2,((double)n1/(double)n2)*100);

/*n1とn2は入力する二つの整数(int型)*/

二つの整数のそれぞれに(double)をつけて変換してから計算する方法しか思いつきませんでした。 
もっと、簡潔に書く方法とかありましたら教えてください。よろしくお願い致します。 
455まちがって名前消しちゃいました。:2008/08/31(日) 23:55:58 ID:???
>>454
強いて言えば、(double)n1 / (double)n2は(double)n1/ n2で十分。
(演算対象の2つにint型とdouble型が混在している場合、intのほうがdoubleへ自動的に変換される)
だけど、前者の書き方をする人も一定数いるみたいだし、
どっちの書き方にするかはお前の好みで決めればいい。
456450:2008/09/02(火) 14:06:08 ID:???
>>455
ありがとうございました。
457まちがって名前消しちゃいました。:2008/09/02(火) 22:23:47 ID:???
プログラミング初心者です。
要素数NUMBERの配列に数字を格納し、その中から最小の値を表示するプログラムを書こうとしているのですが
エラー原因がわかりません・・・。
アドバイスもらえないでしょうか。
開発環境:VC++2008
#include<stdio.h>
#define NUMBER 5;

int min_of(const int vc[], int no)
{
int i,min;

for(i=0;i<no;i++)
{
if(min>vc[i])
min=vc[i];
}

return min;

}
int main(void)
{
int A[NUMBER];
int i;

for(i=0;i<NUMBER;i++)
{
printf("A[%d]:",i);
scanf("%d",&A[i]);
}

printf("最低値は%d",min_of(A,NUMBER));
scanf("%d",&A[i]);
}

458まちがって名前消しちゃいました。:2008/09/02(火) 22:49:59 ID:???
日本語がおかしかった・・・。
要素数NUMBERの配列に数字を格納し、その中から最小の値を表示するプログラムを書こうとして457のようなコードを書いたのですが
下記のエラーが出ます。一応、確認したのですがおかしいところが見あたらないのですが、アドバイスもらえないでしょうか。

1>c:\documents and settings\r\my documents\visual studio 2008\projects\c\c\c.cpp(19) : error C2143: 構文エラー : ']' が ';' の前にありません。
1>c:\documents and settings\r\my documents\visual studio 2008\projects\c\c\c.cpp(19) : error C2143: 構文エラー : ';' が ']' の前にありません。
1>c:\documents and settings\r\my documents\visual studio 2008\projects\c\c\c.cpp(22) : error C2146: 構文エラー : ')' が、識別子 'i' の前に必要です。
1>c:\documents and settings\r\my documents\visual studio 2008\projects\c\c\c.cpp(22) : error C2059: 構文エラー : ';'
1>c:\documents and settings\r\my documents\visual studio 2008\projects\c\c\c.cpp(22) : error C2059: 構文エラー : ')'
1>c:\documents and settings\r\my documents\visual studio 2008\projects\c\c\c.cpp(23) : error C2143: 構文エラー : ';' が '{' の前にありません。
1>c:\documents and settings\r\my documents\visual studio 2008\projects\c\c\c.cpp(28) : error C2143: 構文エラー : ')' が ';' の前にありません。
1>c:\documents and settings\r\my documents\visual studio 2008\projects\c\c\c.cpp(28) : error C2143: 構文エラー : ')' が ';' の前にありません。
1>c:\documents and settings\r\my documents\visual studio 2008\projects\c\c\c.cpp(28) : error C2059: 構文エラー : ')'
1>c:\documents and settings\r\my documents\visual studio 2008\projects\c\c\c.cpp(28) : error C2059: 構文エラー : ')'
459まちがって名前消しちゃいました。:2008/09/03(水) 01:35:42 ID:???
>>457-458
最初に、最終行の[scanf]はいらないような気がしましたけど、
必要なのでしょうか。 

私も初心者ですが、試しにやってみましたところ… 

その構文エラーの原因は、「5」の横に[;]が書いてあるからです。
まず、これをはずしてください。 
そのあともエラー出たのですが、[min]が初期化されてないようです。 
私は[min]に適当に大き目の数を代入してみました。 
それでいけると思います。 

もっと詳しい人なら、もっといい解決方法があるかもしれませんがご参考まで。 
 
460まちがって名前消しちゃいました。:2008/09/03(水) 02:50:26 ID:???
>>459
回答ありがとうございます。#defineに;はいらないんでしたね・・・。
461まちがって名前消しちゃいました。:2008/09/03(水) 14:10:24 ID:???
配列に関する昇順のソートでお聞きしたいのですが、

void sort(int data[], int n)
{
  int k = n - 1;
  while ( k >= 0 ){
    int i, j;
    for ( i = 1, j = -1; i <= k; i++)
      if (data[ i - 1 ] >data[ i ]){
        j = i - 1;
        swap(&data[ i ], &data[ j ]);
      }
    k = j;
  }
}
/*swap()は別途定義された関数。data[]が受け取る配列。[ n ]は配列の要素数です。*/

ここで[ j ]が[ -1 ]で初期化されているのがなぜなのか迷いましたが、
おそらく[while]を抜け出すために[k]を負の値にしなければならないからだと思いました。
ということは、[for]文の[ j = -1 ]によって[ j ]は毎回初期化されてるということでしょうか?
[ i ]はインクリメントされて毎回1ずつ増えていて[ i = 1 ]で初期化されていないように見えるのですが、
なぜ[ j ]は[ -1 ]に毎回初期化されるのか教えてください。 

それとも、私の認識が全然違ってて、違う理由で[ k ]がマイナスになって[while]文を抜けてる
のでしょうか。([ i ]も[ j ]も毎回初期化されて[ 1 ]と[ -1 ]になってるとか・・・) 

 
462まちがって名前消しちゃいました。:2008/09/03(水) 17:37:37 ID:???
iとjにセットしている数値は、あくまでも初期値。毎回初期化はされません。
if文で数値比較後、jにi-1を入れてるのに注目。swapがあればjは-1じゃなくなる。
forで一巡してswapがなければjは-1となり、whileから抜ける。
463461:2008/09/03(水) 19:09:44 ID:???
>>462
ありがとうございます。頭が混乱してたので、検証してみたところ、
[for]文を数回繰り返し→[while]文の先頭へ→[for]文へ… 
を数回繰り返すとき、[while]文の先頭に戻ってから[for]文に入るとき
また初期化されてることを見落としてました。
最後は、[j]が[0]になって[k]に代入され、[while]文の先頭に戻り、
[for]文に入るとき[i]に[1]、[j]に[-1]が代入されて、[i <= k]が成立しないので
[ k = j ]に飛ぶのがわかりました。 

そのあと、[k]に[j]の[-1]が代入されて[while]文の先頭に戻り、( k >= 0 )が
成立せず、晴れて[while]文を抜け出してるようです。 
やっと納得できました。 
464まちがって名前消しちゃいました。:2008/09/03(水) 22:52:45 ID:???
#include <stdio.h>
#define K @
int main(void)
{
int i;
long s;
s = A;
for (i = 1; i <= B; i++)
s = s * i;
printf("%d の階乗 = %ld\n", K, C);
return 0;
}

10の階乗を計算するプログラムですが、
@〜Cの中が分からなかったので教えてください。
465まちがって名前消しちゃいました。:2008/09/04(木) 02:52:26 ID:oBFjqOjP
@ うんこ
A ちんこ
B まんこ
C SEX
466まちがって名前消しちゃいました。:2008/09/04(木) 21:33:23 ID:???
#include <stdio.h>
#define K 10
int main(void)
{
int i;
long s;
s = 1;
for (i = 1; i <= 10; i++)
s = s * i;
printf("%d の階乗 = %ld\n", K, s);
return 0;
}

これでいけるかと思います。
467464:2008/09/04(木) 23:02:27 ID:???
>>466
返答ありがとうございました。
468まちがって名前消しちゃいました。:2008/09/06(土) 08:12:41 ID:???
全くの初心者なんですが、
おすすめの本はないでしょうか?
469まちがって名前消しちゃいました。:2008/09/06(土) 11:22:32 ID:PN6yhvCs
読んでも身に付かないだろう。
http://msdn.microsoft.com/ja-jp/vcsharp/aa700831.aspx
470まちがって名前消しちゃいました。:2008/09/06(土) 11:29:28 ID:PN6yhvCs
http://homepage3.nifty.com/ishidate/vcpp.htm
http://www.kumei.ne.jp/c_lang/

プログラミングを行うには、
「デザインパターン」も知っておく必要がある。
デザインパターンとは先人の知恵だ。
こうすれば、後で困らないように作れます。というレシピ。

http://634.ayumu-baby.com/gof_designpattern/index.html

471まちがって名前消しちゃいました。:2008/09/06(土) 12:53:21 ID:nyoT4hzw
464は宿題を赤の他人にやらせたな
将来的には人をコキ使うのが上手な
プロジェクトリーダ、そして社長に
なる器だが、それに引き換え、466の
将来は人にアゴ使われるアホのまんま
で終わりだ。アホじゃ逝けないよ。
472まちがって名前消しちゃいました。:2008/09/06(土) 13:32:04 ID:8YLx2SSB
助けてください。

#include<stdio.h>

int main()
{
int ii,i;

for(int i=0; i!=51; i++)
{
printf("%2d\t",i);

if (i = 50)
ii = i;
}

i = ii;
if (i = 50)
{
printf("Success\n");
}
return 0;

}

で、forの中のprintfが正しく実行されないようなのですが、
これってほっとくとバグになる可能性ありますか?

あと、この書き方ってやっぱり見直して書き換えたほうがいいんでしょうか・・・
473まちがって名前消しちゃいました。:2008/09/06(土) 18:08:59 ID:PN6yhvCs
スコープちがうやん。
http://www.geocities.jp/ky_webid/c/022.html
474まちがって名前消しちゃいました。:2008/09/06(土) 18:11:24 ID:PN6yhvCs
宿題は自分で解くように。
このような文法問題は宿題だ。
475まちがって名前消しちゃいました。:2008/09/06(土) 18:13:38 ID:PN6yhvCs
ビルドエラーメッセージをそのまま貼り付けろ。

どっかの中学生レベルの宿題は自分で調べるように。
476まちがって名前消しちゃいました。:2008/09/06(土) 18:18:14 ID:PN6yhvCs
>>458
#include<stdio.h>
#define NUMBER 5;

defuneは「コード置き換え」と思ってて良い。そこにブレークポイントを置いて実行できるところではない。
return も関数ではないから return (1) ではなくて return 1 で良い。

477まちがって名前消しちゃいました。:2008/09/06(土) 18:32:00 ID:PN6yhvCs
■調べてみようと感じる質問
メモリリーク、ヌルポ、スタックオーバーフロー、
意味不明コンパイルエラー、

■教科書嫁と思える質問
どう見ても宿題。
478472:2008/09/06(土) 18:32:20 ID:8YLx2SSB
自己解決しました。
Basicの癖が残っていたようですね。
お騒がせして申し訳ありませんでした。

まさか比較してなかったとは。おお怖い怖い。
479まちがって名前消しちゃいました。:2008/09/12(金) 12:24:12 ID:???
周りのプログラマーから聞いたのですが、「配列とポインタの違いを理解するといいんだよ」と
言ってました。「動きが違う」とかなんとか。 
簡単に言うとどういう意味なのでしょうか。わかる方いましたら教えてください。 





480まちがって名前消しちゃいました。:2008/09/12(金) 17:46:48 ID:???
周りに理解してるプログラマーがいるのに、なぜわざわざ
ここで聞く?
481479:2008/09/12(金) 19:57:55 ID:???
あまりに熟練者(何十年のベテラン)たちなので、「ポインタって実際の業務だとココが難しいんだよね」
みたいな感じで、あまり詳しく教えてくれない雰囲気なので…
「どう言ったらいいんだろうなぁ…」みたいな感じです。
それで、こっちはチンプンカンプンになりました。


482まちがって名前消しちゃいました。:2008/09/12(金) 23:03:59 ID:???
データ型が同じだったら配列もポインタも同じだろう?
そいつにキッチリ説明を求めたほうがいい
483479:2008/09/12(金) 23:34:07 ID:???
私がこの3週間勉強してわかったことと言えば、
・配列の名前を引数として関数に渡すと、先頭の要素のポインタとして渡される。
・配列の中身が変わるのを防ぐために const を付ける。
・変数の値を関数の中で変えて、main()に戻してそれを反映させたいときにポインタを使う。

このように理解してます。間違ってたらすみません。
配列とポインタはもっと奥が深いのだと思ってます。
>>482
たぶん、その人自身も何か勘違いしてるのかもしれませんね。

484まちがって名前消しちゃいました。:2008/09/13(土) 06:19:31 ID:???
ごめん違ったみたい
ポインタは値を代入可能
配列はアドレス変更不可能
485まちがって名前消しちゃいました。:2008/09/14(日) 14:35:50 ID:???
>>483
その3つはどれも文句なく正しい。自信持っていいよ。

>>479
そこをよく理解しないままCを使って間違ったことやる人間が多いというだけのこと。
486まちがって名前消しちゃいました。:2008/09/22(月) 19:28:16 ID:6ZIXhFqu
C始めようと思ってるんだけど最初からPCに入ってるコマンドプロンプトじゃコンパイルできない?
487まちがって名前消しちゃいました。:2008/09/22(月) 19:54:55 ID:3xDTFwgS
>>486
コマンドプロンプトじゃコンパイルできないので
↓これでも試してみたら?

Visual Windows for BC++
http://rd.vector.co.jp/soft/win95/prog/se326602.html
488まちがって名前消しちゃいました。:2008/09/23(火) 00:05:53 ID:6ZIXhFqu
>>487
インストールできなくて対処方法も試したけど効かなかったからvisual C++にしてみた
++でもCできますよね?
489まちがって名前消しちゃいました。:2008/09/23(火) 00:23:00 ID:???
>>488
標準入出力だけのライブラリを使うことでC言語の開発環境のようにも動作さられる
ので問題ありません。
490まちがって名前消しちゃいました。:2008/09/23(火) 10:54:29 ID:ePDT8MYP
fatalエラーってどんな意味?
コンパイルさせて出力させようとしたんだけど出てきたんだが・・・

調べたけど難しい言葉で書かれてて意味不すぎる
491まちがって名前消しちゃいました。:2008/09/23(火) 12:05:53 ID:???
>>490
fatalとは、fate(フェイトというアニメがあったはずだが)の形容詞形。
fate(運命)
fatal(運命的というよりは致命的との意味)
つまり、どうにもならないエラーですってこと。
がんばってねー
492まちがって名前消しちゃいました。:2008/09/23(火) 12:39:07 ID:ePDT8MYP
>>491
ありがと
どうにもならないエラー・・・
visual cpp2005のコマンドプロンプトでcl使うと出るんですよね
493まちがって名前消しちゃいました。:2008/09/26(金) 02:59:06 ID:PAN7XzHE
超初心者です 皆さんがC言語を学ぶのに使った参考書など、これは読んどけというものがあったら教えて下さい
494まちがって名前消しちゃいました。:2008/09/26(金) 12:18:00 ID:YF5imrxx
>>493
IT書籍 「インド式プログラミングバイブル C言語入門 (上)」
http://www.e-chishiki.com/jpn/products/books/programming/let_us_c
こんなすばらしい本があったとはインド人もビックリの入門書

お薦め書籍
http://www9.plala.or.jp/sgwr-t/etc/books.html
495まちがって名前消しちゃいました。:2008/09/26(金) 15:43:30 ID:???
>>494ありがとうございます
496まちがって名前消しちゃいました。:2008/09/27(土) 11:51:52 ID:2VL8Y4GT
整数型配列 a[5]を宣言する。
配列aに適当な整数を代入する。
配列から最大値を求め画面表示する。


#include<stdio.h>

main()
{
int a[5];
int maxdata;
int i;

a[0]=12;
a[1]=3;
a[2]=40;
a[3]=10;
a[4]=30;

maxdata=a[0];

for(i=1;i<5;i++)
{
if(?)
{
maxdata=a[i];
}
}
printf("最大値:%d",maxdata);
}

?の部分がわからないのですが、誰か教えてもらえませんか?
497まちがって名前消しちゃいました。:2008/09/27(土) 12:07:28 ID:2VL8Y4GT
プログラム板で聞いてくることにしました。
無駄レスすいません。
498まちがって名前消しちゃいました。:2008/10/14(火) 22:53:58 ID:TuavOJJv
成績をつけるプログラムを教えてほしいです。

80点以上100点以内 A
65点以上80点未満  B
50点以上65点未満  C
0点以上50点未満   D

それ以外の整数に対しては「ありえない」と出す

499まちがって名前消しちゃいました。:2008/10/15(水) 00:25:03 ID:pk0GxuXL
printf()でポインタのアドレスを表示するときに、例えば、
printf("%p",(void*)ptr);
のように(void*)が必要な意味を教えてください。
今期の教授がスパコンのプログラミングとかやってる人のようで、うるさく言われるのですが、なぜ必要なのか理解できません。
よろしくお願いします。
500まちがって名前消しちゃいました。:2008/10/15(水) 10:43:55 ID:WEs5N7rQ
>>499
教授の脳内コンパイラーは、(void*)でないと「致命的な
エラー」になる理由は不明だ。

(void)が必要な意味はということは、
間接演算子*と四則演算子*が同じであると、一目で意図が
読み易く検索容易にする意図があるのかも。
自分の教え子が書いたコードを発見しやすくする為かも。

その教授の馬鹿の一つ覚えのようなプログラミング作法の
理由は、その教授に尋ねるしかないだろう。
解らないのは、教え方が悪いことが原因なんですね、その
ような欠陥授業を国の税金で援助していることも問題だ。
501まちがって名前消しちゃいました。:2008/10/15(水) 10:50:24 ID:WEs5N7rQ
502499:2008/10/15(水) 16:08:20 ID:XYgPsrOC
>>500>>501
ありがとうございます。
503まちがって名前消しちゃいました。:2008/10/16(木) 12:31:03 ID:???
C言語どころか他のプログラミング知識も0に近い初心者なんですが、参考書は>>494に書かれているものでも大丈夫でしょうか?
プログラミング自体が初めてなら別の参考書の方が良いのでしょうか?
504まちがって名前消しちゃいました。:2008/10/17(金) 04:23:30 ID:???
俺は柴田望洋氏の本がわかりやすかったょ。
505まちがって名前消しちゃいました。:2008/10/19(日) 14:19:35 ID:+GN+X/q5
>>500
でたらめ言うな。

>>499
アーキテクチャによっては、ポインタ型の種類によって大きさが違うということがあり得るため。
(ワードマシンでchar*系とvoid*だけほかより大きいとか)
%pはvoid*を引数に取る指定だから、確実にvoid*を渡すためにそのキャストは必要。
506まちがって名前消しちゃいました。:2008/10/19(日) 14:46:18 ID:???
>>505
> アーキテクチャによっては、ポインタ型の種類によって大きさが違うということがあり得るため。
>(ワードマシンでchar*系とvoid*だけほかより大きいとか)

1ワードは32ビットのこともあれば、一般的に8bitを単位にすることもあるのでワードマシンの真意が不明だ。
「char*系とvoid*だけほかより大きい」って、そこだけアドレスビット数が大きいアーキテクチャかw
32ビットOSか64ビットOSか、またはターゲットOSが32ビットか64ビットかなどという問題はコンパイラーが
吸収してしまう問題で、高級言語の文法に関係しないのではないかと。
507まちがって名前消しちゃいました。:2008/10/19(日) 19:44:26 ID:???
>>504
ありがとうございます。
ちょっと調べてみますね。
508まちがって名前消しちゃいました。:2008/10/19(日) 23:53:49 ID:???
>>506
ごめん、自分でもそういうのに実際出くわしたことが無いんだけど。
http://www.kouno.jp/home/c_faq/c5.html#17
ここの5.17にそういう例が挙げられている。
509まちがって名前消しちゃいました。:2008/10/23(木) 14:58:06 ID:???
質問です。
下のプログラムで階乗の逆数は求められますか?
main(){
int sum,i,n;
i=1;
sum=1;
while(i<=n){
sum=sum*1/i;
i=i+1;
}
}
仮に求められるとして、階乗の逆数の和はどう求められるのでしょうか?
お願いします。
510まちがって名前消しちゃいました。:2008/11/23(日) 15:36:53 ID:JbyrPlJj
C言語を勉強中のものです。起動すると、自動で閲覧の履歴をすべてコピーして任意のフォルダに貼り付けるソフトが作りたいんですけど、
どのような設計でいけますかね?

511まちがって名前消しちゃいました。:2008/11/26(水) 00:42:39 ID:iVNoSBsg
ナベアツ問題難しい
512まちがって名前消しちゃいました。:2008/11/28(金) 16:32:26 ID:???
いや、何の閲覧?
513まちがって名前消しちゃいました。:2008/11/29(土) 03:17:17 ID:mn3+I5GB
質問です。エラー処理についてですが、perror()とかerrnoってどういう場合に使うのですか?
システムコールの異常でなくて、普通の処理で自分でエラーとして終了させたい場合にも使って良いのですか?
例えばこんなのもありですか?
int main(int argc, char *argv[]){
int a=atoi(argv[1]);
if (a!=100) {
perror("test");
exit(-1);
}
}
あと終了時にexit(-1)とかreturn -1とかreturn 2とかあったりして使い分けがよくわかりません。
errnoについても使い方を教えて貰えると助かります。
514まちがって名前消しちゃいました。:2008/11/29(土) 03:30:02 ID:???
>>513
>あと終了時にexit(-1)とかreturn -1とかreturn 2とかあったりして使い分けがよくわかりません。

これ(返り値)は自分で決めること
通常、マイナス値は異常を示す
例題のプログラムの場合、返り値が-1だった場合、引数が100ではなかったってことが分かる
515513:2008/11/29(土) 05:22:30 ID:mn3+I5GB
通常はマイナス値で異常を示すということですね。
異常で終了させたい場合はexit(-1)もしくはreturn -1とかが普通ということですよね。
関数の戻り値はメイン側に値を返しますがこれらの場合はOSに返すと思います。
これらの値はどうやれば参照出来るのでしょうか?
516513:2008/11/29(土) 05:47:34 ID:mn3+I5GB
ぐぐったら色々出て来た。
exitとreturnの違いわかりました。
returnは関数の呼び出し元に値返却、
exitはプロセス呼び出し元(=OS)に値返却ですね。

returnにしてもexitにしても、正常終了なら0を返却。異常終了ならそれ以外を指定するようにする。
慣用的には、return -1もしくはexit(-1)だがexitについてはexit(1)と書く人も。(どっちでもOK)
また、stdlib.hで定義されているEXIT_FAILUREマクロを使ってexit(EXIT_FAILURE);としてもOK。
なんか整理出来て来た。ここまでは認識あってますか?

で、OS返却時の値はどうやれば参照出来ますか?
517まちがって名前消しちゃいました。:2008/11/29(土) 05:54:59 ID:0YV8UmJG
>>516
unix系OSでは(例えば)bash上でecho $?コマンドを実行すると直前に実行したプログラムの戻り整数値が表示される・・・
っていってもさっぱり分からんよな。
windows上でfirefox.exeというプログラムの戻り値を知りたいのなら、
#include <stdlib.h>してprintf("%d\n",system("firefox.exe"));などとするとfirefox.exeが終了したときの戻り値が表示される、と思う。
system関数の挙動は上記の説明で明らかだよね?新しい疑問が生まれたならまたどうぞ。
518513:2008/11/29(土) 06:20:09 ID:mn3+I5GB
>>517
質問です。下記のプログラムを実行してみました。
int main(int argc, char *argv[]){
int a=atoi(argv[1]);
if (a!=100) {
perror("test");
exit(-1);
}
}
(1)100を引数として渡した場合
echo $?で値を参照すると0になってました。return 0;をしていないのに0になるのはなんででしょうか?
main関数の戻り値はintなのにreturnを指定しなくても警告も出ないのはなんででしょうか?
(2)100以外の整数を引数として渡した場合
echo $?で値を参照すると−1になるかと思いきや(exit(-1)で抜けているため)255が表示されました。
なんででしょうか?
また、実行結果は test: Undefined error: 0と標準エラー出力されましたがこのUndefined error: 0というのは
どういう意味なんでしょうか?(これはperrorに関する質問かも知れませんが)
519まちがって名前消しちゃいました。:2008/11/29(土) 06:55:01 ID:S/xv0n8V
このif文はどういう意味なんでしょうか?
if (strlen(str1) == 10 && str1[9] != '\n') {
while (getchar() != '\n');
}
520まちがって名前消しちゃいました。:2008/11/29(土) 07:35:52 ID:???
>>518
以下は自分でも良く理解してない事なので眉に唾を付けて読むこと
(1)return 0;をしていないのに0になるのは"そうなるようにコンパイルされるから"としかいい様がない。
例としてgccを使ってglibcとリンクさせると
1:プログラムを実行するとまずglibc内のある関数が呼び出される
2:その関数がmainを呼び出す
3:mainが終わったらもとの関数に戻ってmainの不始末の尻拭いをする
という動作をするらしいが、処理系依存の話
警告について:例えばgccなら-Wallオプションを付けたら警告してくれると思うが、その他のコンパイラでも出そうと思えば警告は出してくれるのでは
(2)そもそもexit関数の動作は引数がEXIT_SUCCESSでもEXIT_FAILUREでもない時(ここでは-1)は処理系依存、らしい
glibcのexitは(引数 & 255)が返されるとのこと。そしてこれは結果と合致している(-1の2の補数表現は全ビットが1)
perrorについて:perrorは大域変数errnoを参照して標準エラー出力への振る舞いを変えるらしい、
errno変数は開始時は0で、標準ライブラリでエラーを起こしたり(存在しないファイルを読もうとしたり)しない限り0、
perrorはerrnoが0である限り現在の状態は正常である(0は定義されたエラーではない)と標準エラーへ出力するとのこと
521まちがって名前消しちゃいました。:2008/12/02(火) 23:09:17 ID:???
C言語の最新規格C99では、main関数のみ特別に
returnを省略するとreturn 0;が関数末尾にあったかのように扱うことになっている。

gccはオプションで指定しないとC99の機能は使えないが、
これに関してはそうしたところで古い規格に適合しなくなるわけではないから、
C99の指定の有無に関わらずreturn 0;が補われる挙動になっていると推測される。
522まちがって名前消しちゃいました。:2008/12/08(月) 10:46:44 ID:???
教えてください

unsigned int POINT1=0;
unsigned int POINT2=0;
unsigned int POINT3=0;
unsigned int POINT4=0;
unsigned a,b,c,d,e,f;

と宣言部で宣言して、

if(e==1 && d==0){
a++;
POINT1 = a;
e=d;
if(a==0x0a){
a=0;
b++;
POINT2 = b;
}
if(b==0x06){
b=0;
c++;
POINT3 = c;
}
if(c==0x0a)
c=0;
f++;
POINT4 = f;
}
if(f==0x06)
f=0;
}
と、割り込みの関数内で記述したところ

warning: type defaults to 'int' in declaration of 'POINT1'
error: conflicting types for 'POINT1'
error: previous definition of 'POINT1' was here  ←宣言部の行のエラー

というエラーが出たのですが、
何の矛盾なんでしょうか?

523まちがって名前消しちゃいました。:2008/12/16(火) 12:33:16 ID:HfPfSgWX
bufにaの内容を入れるにはどうしたらいいですか。
int main(){
char buf[256];
char *a="あいうえお\n";
&buf=a;//<-エラー
}
524まちがって名前消しちゃいました。:2008/12/16(火) 13:34:58 ID:???
>>523
strcpyだったかな?文字列コピーの関数使いなされ。
525まちがって名前消しちゃいました。:2008/12/17(水) 04:12:04 ID:kjiorkiG
おーおっけ有り難う
526まちがって名前消しちゃいました。:2008/12/17(水) 11:51:08 ID:41tiy3bR
goto-lineってどうやるんでしたっけ?
ググってみたんですがM-xというのがどう入力するのか分かりません
527まちがって名前消しちゃいました。:2008/12/19(金) 04:34:29 ID:???
528まちがって名前消しちゃいました。:2008/12/25(木) 22:57:07 ID:???
ひとつ気になって仕方がないことがあるのですが
printf("value=%d",x,y:1,2); の様な感じで  (記述は間違ってると思う
%dなどへ渡す値を状況によってif文のように変化させる
マクロ!?のような機能のことは何というのでしょうか?
529まちがって名前消しちゃいました。:2008/12/27(土) 15:39:05 ID:???
もしかして条件演算子
530まちがって名前消しちゃいました。:2009/01/01(木) 12:52:40 ID:???
test
531まちがって名前消しちゃいました。:2009/01/01(木) 16:34:05 ID:M6/cJT+v
Visual C++2005 Express Edition

を使って猫でも分かるプログラミングに挑戦しようとしたのですが、最初でつまづきましたw
最初の設定はどのようにすればいいのでしょうか?
532まちがって名前消しちゃいました。:2009/01/01(木) 19:21:31 ID:???
むりぽ
533まちがって名前消しちゃいました。:2009/01/09(金) 11:23:02 ID:JJ3kN4nG
すみません、Cのことで聞きたいのですが
ret = rfile(〜・・・・)
この、rfileの使い方がいまいちよくわかりません。
調べてもでてこなくて・・・
教えていただけませんか?
534まちがって名前消しちゃいました。:2009/01/10(土) 00:47:18 ID:SWiBZwEj
C言語プログラミング認定試験の1級か2級もってたら、経験なくても就職できますか?
535まちがって名前消しちゃいました。:2009/01/10(土) 01:06:30 ID:RT8PkXLn
>>534
資格の有無や経験の有無が重要で即戦力が必要な場合は難しいけど、
ほかに取り柄があれば資格や経験が無くても大丈夫だよ。
「芸は身を助く」という。教えてクン以外に、なにか芸はないのか。
536まちがって名前消しちゃいました。:2009/01/10(土) 01:13:12 ID:SWiBZwEj
派遣切りで仕事探してるけど見つからない。パソコン関係の仕事は
したことないけど、不況なのにいっぱいある。興味がある分野だし
やってみたいけど、資格も経験もないのに申し込んでも断られるだけ。
だから資格だけでもとろうかと思案中です。情報処理と合わせて取ったら
可能性はありますよね?
537まちがって名前消しちゃいました。:2009/01/10(土) 01:38:31 ID:???
           サァ シィノ マターリノ タメニ

           色ンナ スレニ 貼ルンダヨ♪


                \ /
                      シカタナイカラ シィノ オシリサンノ
           〜γ⌒ヽ∧∧   ニホイヲ カガセテ アゲルワ♪
            .( * ) ,i゚ー゚*)  アリガタク オモイナサイ♪
             U U"ヽ)ヽ)

 今ならもれなく、しぃのおしりの臭いがかげる掲示板

 しぃのマターリ掲示板
 http://jbbs.livedoor.jp/computer/22654/
538 ◆2pTyKAkygc :2009/01/10(土) 10:43:58 ID:???
539まちがって名前消しちゃいました。:2009/01/12(月) 01:29:25 ID:???
>>534
そんな無名の資格、役立たねえ。

>>536
基本情報だったら猿でも取れるぞ。
ソフ開で、タクシーに原付免許持っていくのと同じくらい。適当だけど。
540まちがって名前消しちゃいました。:2009/01/13(火) 18:55:26 ID:T5c7rh8V
あの、今本当に困ってます。
¥n
float
printf
scanf
この文字の意味を教えてください
541まちがって名前消しちゃいました。:2009/01/13(火) 18:59:53 ID:???
>>540
gugure
542朝晩:2009/01/13(火) 19:51:43 ID:x530KDV3
age
543まちがって名前消しちゃいました。:2009/01/13(火) 20:05:10 ID:???
>>540
【¥n】 new lineの略で、新しい行は改行を意味する制御文字
【float】 飛蚊症で浮遊している虫のような小数点表示
【printf】 fはフォーマット(書式)の略で、書式に従ったプリント(出力)命令
【scanf】 fはフォーマット(書式)の略で、キーボードからのキー入力を走査して書式にしたがって処理する命令

このprintfとscanfの二つは、標準入出力関数としてstdio.hで定義された動作を行う関数命令
float 変数を有効桁数6桁の実数型の数値として解釈する変数の前に前置したり、変数の解釈
のしかたを宣言するときに変数の前に前置するC言語で予約された型名

printf
http://www.nmn.jp/~hidai/c/
標準入出力関数
http://www9.plala.or.jp/sgwr-t/c/sec05.html
544まちがって名前消しちゃいました。:2009/01/24(土) 15:16:15 ID:MqcIO2Xw
HD性能を測定するbonnie++ベンチマークの説明文で

・putc()による書き込みはstdio命令とOSによるファイルスペースの確保を測定
・write(2)による書き込みはOSによるファイルスペースの確保を測定

ってあるんだけど、

putc()のstdioのオーバヘッドって、putcが書き込みの際にunsigned char型
に型変換することのオーバヘッドって意味かな?
545まちがって名前消しちゃいました。:2009/01/26(月) 03:20:42 ID:Mcx6t/Oc
fwriteで書き込んだ複数ファイルを結合したいのですが、どうすればいいのでしょうか?
http://www.dotup.org/uploda/www.dotup.org0450.c.html
例えば↑のソースでいうところのa, b, cの3ファイルを順番に結合してdというファイルを作成したいです。
546まちがって名前消しちゃいました。:2009/01/26(月) 03:24:01 ID:8ZP3m8cl
dを新規に作って順に書き出す
547まちがって名前消しちゃいました。:2009/01/26(月) 03:52:41 ID:nu6Ocew9
Winnyの情報流出を管理・指導する国のIPA職員 岡田賢治 主任が違法ファイルDLしまくり感染して流出したドキュメント類。
嫁以外の女とのエッチ写真や、幼女児童ポルノ、違法アプリ所持、違法アプリバラ蒔き証拠など大量に流出。

★郵政省(今の総務省)、日立製作所、博報堂、味の素・・・と凄い流出規模!
http://ruru2.net/jlab-ruru/s/ruru1232764892388.jpg
★本人は著作権無視で違法ファイルダウンしまくりのくせに、著作権を勉強して知的所有権管理資格持ってるw
http://ruru2.net/jlab-ruru/s/ruru1232767964337.jpg
★全契約先でこの契約書結んでいるが、秘密保持、情報返還・処分義務の立派な契約違反。
http://ruru2.net/jlab-ruru/s/ruru1232767993881.jpg
★西武百貨店社員6155名分の個人情報を違法に自宅に持ち帰り流出。
http://ruru2.net/jlab-ruru/s/ruru1232768015222.jpg
★楽天ショップから個人情報データを違法に自宅に持ち去り大量に個人情報流出!
http://ruru2.net/jlab-ruru/s/ruru1232768041252.gif
★大量のソニーやマイクロソフト等の大手企業勤務者の流出個人情報! 自民党とか衆議院とかもある。
http://ruru2.net/jlab-ruru/s/ruru1232768065918.gif
★IPAは自身の流出は画像しか無いと断言しているが大嘘で、IPA役員資料とかも流出している。(IPA資料を無断で自宅に持ち帰り)
http://ruru2.net/jlab-ruru/s/ruru1232768123179.jpg
★三井リハウス(株)の入居者の口座番号や入金金額等のデータベースもIPA岡田賢治主任が流出
http://ruru2.net/jlab-ruru/s/ruru1232768311436.gif

国の情報処理推進機構 IPA専門職員として違法アプリばら蒔きの大問題犯罪証拠も流出。
違法アプリやシリアルキーを周囲にわざとバラ蒔いている。(現在も違法ATOKを使用しており、長年違法アプリを日常的に使用していた可能性大)

★Micro Soft VisualC++の違法シリアルキーを知人に教えたメール
http://ruru2.net/jlab-ruru/s/ruru1232768092277.jpg
★メールソフトRimArts社 Beckyの違法シリアルキー等、内容から見ても長年かなり広範囲にバラ蒔いていたようだ
http://ruru2.net/jlab-ruru/s/ruru1232768242947.jpg
548545:2009/01/26(月) 04:12:39 ID:???
別んとこで聞いてきます
549まちがって名前消しちゃいました。:2009/01/26(月) 11:59:27 ID:???
以下のように乱数を発生させて2次元配列data0に格納するプログラムを作成したのですが、
関数を呼び出す毎に同じ値が出力されます。

一回目
6
38
11

二回目
6
38
11
三回目
6
38
11

といった感じです。
乱数シードの初期化がうまくできていないのが原因だと思うのですが、
なかなかうまく行きません。どう修正したら良いでしょうか?
for(j=0;j<LMEDS;j++)
randum(data0[j]);

void randum(int *number){

int i,j;
int flag;

//size = sizeof(number) / sizeof(int);
flag = 0;

srand(GetTickCount());
//srand((unsigned int)time(NULL));
number[0] = rand();

for(i=0;i<LMEDS_SELECT;){
number[i] = rand() % I_NUMBER;
for(j=0;j<i;j++)
if(number[j]==number[i])
flag = 1;
if(flag==1){
flag = 0;
continue;
}
else
i++;
}
};
550まちがって名前消しちゃいました。:2009/01/26(月) 12:19:13 ID:dXTIOPoH
質問です

#include <stdio.h>

int main(void)
{
int magic; /* マジックナンバー */
int guess; /* ユーザーが当てる */
int i;

magic = 1325;
guess = 0;

for (i = 0; i < 10 && guess != magic; i++) {
printf("考えた数字を入力してください: ");
scanf("%d", &guess);

if (guess == magic) {
printf("正解!");
printf(" %d はマジックナンバーです。\n", magic);
}
else {
printf("残念、違います。");
if (guess > magic)
printf("さらに小さい数字です。\n");
else
printf("さらに大きい数字です。\n");
}
}
return 0;
}
こんなプログラムのguess = 0;の意味がわかりません。
551まちがって名前消しちゃいました。:2009/01/26(月) 12:34:35 ID:Hja/DPq+
flightのメモリを確保して1文字ずつtargetをコピーしながら
insert 1文字をtargetにコピーし、insertが終端に達したら
flightからtargetに文字を帰すんですが、targetの終端を
うまく入れられません? どこが悪いのでしょうか?
/* targetバッファ文字列の先頭にinsertを挿入,(終端には\0を強制挿入) */
/* 戻り値:新しい文字列の長さを返す,エラー:<0 */
static int shiftCopy(char *target, int bufsiz, char *insert)
{
  char *flight, *regress; int count=0;
  flight = (char *)malloc(sizeof(char)*bufsiz--);
  memset(flight,'\0',sizeof(flight));
  regress = flight;
  while(*insert && count<bufsiz){ /*挿入先を退避させつつ先頭挿入文字を格納*/
    if(*target){
      *flight++ = *target;}
    *target++ = *insert++; count++;
  }
  while(*target && count<bufsiz){ /*挿入先を退避させつつ退避文字帰還*/
    *flight++ = *target; *target++ = *regress++; count++;
  }
  while(*regress && count<bufsiz){ /*退避文字の帰還*/
    *target++ = *regress++; count++;
  }
  *target='\0';
  free(flight);
  return count;
}
552まちがって名前消しちゃいました。:2009/01/26(月) 16:28:32 ID:???
自己解決しました。

/* targetバッファ文字列の先頭にinsertを挿入,(終端には\0を強制) */
/* 戻り値:新文字列の長さ, ERR:<0 */
/* <※危険※>: targetが空のとき,0初期化してないと無意味になる */
static int shiftCopy(char *target, int bufsiz, char *insert)
{
  char *flight, *regress;
  int count=0;
  flight = (char *)malloc(sizeof(char)*bufsiz);
>> memset(flight,'\0',bufsiz); /*初期化サイズの誤り,ポインタの長さを初期化していた*/
  regress = flight;
  bufsiz--;    /*targetパッファからはみ出ないため*/
  while(*insert && count<bufsiz){ /*挿入先を退避させつつ先頭挿入文字を格納*/
>>   if(!*target){ /*※ '\0'文字の後は不定であることを考慮してなかった*/
>>     *(target+1)='\0';
    }else{
      *flight++ = *target;
    }
    *target++ = *insert++; count++;
  }
  while(*target && count<bufsiz){ /*挿入先を退避させつつ退避文字帰還*/
    *flight++ = *target; *target++ = *regress++; count++;
  }
  while(*regress && count<bufsiz){ /*退避文字の帰還*/
    *target++ = *regress++; count++;
  }
  *target='\0'; free(flight); return count;
}
553まちがって名前消しちゃいました。:2009/01/27(火) 16:36:18 ID:P3dZ0k3U
教えてください。

borlandC をコマンドラインで使っています。
実行ファイルへプロパティのバージョン情報タブを付けたいのですが、
どのようにしたら良いですか?
554まちがって名前消しちゃいました。:2009/01/28(水) 05:46:44 ID:???
[email protected]
ハッキングして個人情報取得できませんか?
555まちがって名前消しちゃいました。:2009/01/28(水) 08:48:25 ID:???
>>550
疑問に思うならその行を削ってみるといい。動きが変わらなければ無くても構わない。
556まちがって名前消しちゃいました。:2009/01/28(水) 10:53:03 ID:???
>>550
guess = 0;
曖昧さがないようにゼロで初期化しているだけだ。
宣言しただけでは実体は作成されないので、初期値による初期化を行っている。
iはforループの開始時にゼロで初期化されている。
何にもユーザーが値を入れないでEnterキーを押したときに初期化でゼロをもし
いれていないときにゼロではなくゴミが入っている実装も考えられるから確実
にゼロで初期化する必要があるのだろう。
557まちがって名前消しちゃいました。:2009/01/28(水) 14:48:36 ID:ouVXRaO8
>>555
動きはかわりませんでした。
>>556
理解できました!!!guess = 0;
プログラム実行開始時に変数を初期化しているんですね
magic = 1325;
が固定された値なのになんて悩んでいました。
ようやく進めます

>>555>>556さんレスありがとうございました。
558まちがって名前消しちゃいました。:2009/01/28(水) 20:28:23 ID:???
>>544
writeでは1度の呼出で、何バイトでも一気に書き込みできるが、
putcでは、1度に1バイトずつしか渡せないという違いがある。
559 ◆xI9zI.tAfo :2009/02/09(月) 00:23:29 ID:???
てすと
560まちがって名前消しちゃいました。:2009/02/11(水) 08:33:51 ID:yekbKKaR
プログラムはまったくの初心者ですがご伝授の程、宜しくお願いします。
現在、Pro*cの開発にて、2日前に作成されたファイルを削除するという
仕様をどうやってプログラミングしていいか悩んでいます。
ネットや本で調べたのですが、行き詰っています。
タイムスタンプを取得してそのファイルを削除が出来るのでようか?

宜しくお願いします。
561赤西仁:2009/02/13(金) 22:55:55 ID:mzpk1Vfg
1年間悩んでます。お力をお貸しください。

アークザラッドUというタイトルのゲームの、ゲーム画像(歩行画像など)を抽出したいのですが、
かれこれ1年ほど経ちますが、なかなかうまくいきません。
*もちろん抽出した画像は個人範囲内で利用するつもりです。

◆試してダメだったこと

 ネット上からダウンロードできる、ありとあらゆる抽出系ツールを試した。
 (ちなみに他のゲームはほとんど抽出可能)

◆教わったこと

 ・アークザラッドUは独自の画像形式を使っているから抽出できない。
 ・PS上で表示されてるということは絶対に摘出はできるはず。

◆抽出は不可能ではないということを知ったとき

 2ちゃんねるで質問したところ、
 ある方が実際にキャラクターの歩行画像を抽出して
 私が立てたスレにアップしてくださいました。

スクリーンショットじゃ嫌なんです。どうか皆さん、お力をお貸しください。
562まちがって名前消しちゃいました。:2009/02/13(金) 23:05:43 ID:???
791 :赤西仁:2009/02/13(金) 22:36:56 ID:Ch37WsOG
1年間悩んでます。お力をお貸しください。

アークザラッドUというタイトルのゲームの、ゲーム画像(歩行画像など)を抽出したいのですが、
かれこれ1年ほど経ちますが、なかなかうまくいきません。
*もちろん抽出した画像は個人範囲内で利用するつもりです。

◆試してダメだったこと

 ネット上からダウンロードできる、ありとあらゆる抽出系ツールを試した。
 (ちなみに他のゲームはほとんど抽出可能)

◆教わったこと

 ・アークザラッドUは独自の画像形式を使っているから抽出できない。
 ・PS上で表示されてるということは絶対に摘出はできるはず。

◆抽出は不可能ではないということを知ったとき

 2ちゃんねるで質問したところ、
 ある方が実際にキャラクターの歩行画像を抽出して
 私が立てたスレにアップしてくださいました。

スクリーンショットじゃ嫌なんです。どうか皆さん、お力をお貸しください。
563まちがって名前消しちゃいました。:2009/02/13(金) 23:43:55 ID:???
>>560
タイムスタンプを取得してそのファイルを削除するといいよ。
564まちがって名前消しちゃいました。:2009/02/16(月) 17:27:20 ID:+CCojU9+
NULLを検出した時にbreakしたいのですが、認識していないようで・・・
分かる方、対処法をお教え願います

csvbuff = strtok(buff,",\n");
printf("%s\n",csvbuff);
if (csvbuff == '\0'){
break;
}
else{
change_tb(flpcnt,csvbuff);
}

//カンマ区切り
for(flpcnt=1 ; flpcnt<=16 ; flpcnt++){
csvbuff = strtok(NULL,",\n");
if (csvbuff == '\0'){
flpcnt = 17;
break;
}
else{
printf("%s\n",csvbuff);
change_tb(flpcnt,csvbuff);
}
}
565まちがって名前消しちゃいました。:2009/02/16(月) 23:48:09 ID:???
ナル文字 と NULLポ
p == '\0' は '\0' が頑張ってキャストされて p が持つ NULL に一致する事が "あるかもしれない" 程度
p == NULL は p が NULL の時一致

if(char *p = buff; *p != '\0', p < buff + buf_len; ++p) するでしょ?
566まちがって名前消しちゃいました。:2009/02/16(月) 23:49:35 ID:???
いや一致することは 100% あり得んな
567まちがって名前消しちゃいました。:2009/02/17(火) 20:29:58 ID:WRhCvk+d
#include <stdio.h>


main()
{
puts ("My first program!!") ;
}

でコンパイルしても'○○'は内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されませんって出るのはなんで?
568まちがって名前消しちゃいました。:2009/02/17(火) 20:37:45 ID:???
putsじゃなくてprintfにしてみたら?
569まちがって名前消しちゃいました。:2009/02/17(火) 21:04:07 ID:WRhCvk+d
>>568
できたありがとう
570chapter:2009/02/19(木) 19:46:59 ID:gAgh/Mrm
今日からC言語の勉強を始めました。よろしくお願いします。

早速ですが質問です。MINGWを使ってるんですが

example1.cというソースファイルを作成した後に、「ls」でそのソースファイル
を呼び出して、「gcc example1.c」と入力してコンパイルしようとしたんですが
「sh: gcc: command not found」と表示されてしまいます。

ちなみに、example1.cの中身は

main()
{
}

です。本来なら何も表示されないはずなんですが・・・;;
どなたか原因を教えて下さい。
571まちがって名前消しちゃいました。:2009/02/21(土) 16:27:09 ID:???
>>570
MINGWをよく知らんのですが

>「sh: gcc: command not found」
gccが見つからんから知らねとゆーてる。
ちゃんとインストールされているか、パスが通っているか確認してみては?
572まちがって名前消しちゃいました。:2009/03/01(日) 00:45:40 ID:???
#include<stdio.h>
#include<math.h>
FILE *file;
int main(void){
int i,j;
double x,y,z;
for(i=0;i<=1000;++i){
x=0.3*i;
for(j=0;j<=1000;++j){
y=0.3*j;
z=sqrt(1+x^2+y^2);
fprintf(file,"%f %f %f\n",x,y,z);
}
}
fclose(file);
return 0;
}

z=sqrt(1+x^2+y^2);の部分で浮動小数点の不正な使用
というエラーが出るのですが、どうすればいいですか?
573まちがって名前消しちゃいました。:2009/03/01(日) 04:09:16 ID:g6EP3qUi
>>572
C言語での、べき(^)演算子は〜乗として使うわけではない。
http://www5c.biglobe.ne.jp/~ecb/c/05_04.html

今回の場合は、
z=sqrt(1+x*x+y*y);
とするのが正解。
または、
z=sqrt(1+pow(x,2)+pow(y,2));
とするのが正解。
574まちがって名前消しちゃいました。:2009/03/01(日) 09:16:19 ID:YXipVU2C
C♯とCプラプラはそんなにちがわないですよね。
575まちがって名前消しちゃいました。:2009/03/01(日) 15:28:53 ID:???
>>574
まるで別物。
576まちがって名前消しちゃいました。:2009/03/01(日) 18:30:38 ID:???
>>573
あざーす
まったく、そのとおりでした
577まちがって名前消しちゃいました。:2009/03/14(土) 12:44:17 ID:???
学校の課題を手伝ってください。
キューを利用して、プリンタのプリントキューを再現したプログラム(以下に要点を記載)を作成しなさい。
"1”を入力するとキューにデータが追加され"2"を入力するとキューからデータが取り出される
キューが満杯になったり、空になったりした際はその旨をメッセージで表示する。
また、以下の関数を作成し、使用しなさい。
vaio enqueue(int val)キューにデータを追加する
vaio dequeue() キューからデータを取り出す
vaio queue_print()キュー全内容を表示する
以上ですお願いします。

578まちがって名前消しちゃいました。:2009/03/14(土) 17:42:27 ID:???
vaioではなくvoidでしたすいません。
579まちがって名前消しちゃいました。:2009/03/14(土) 21:10:02 ID:???
580まちがって名前消しちゃいました。:2009/03/17(火) 02:43:08 ID:???
PCサロン板にプログラム言語Cのスレがあったなんてw
581まちがって名前消しちゃいました。:2009/03/18(水) 18:40:05 ID:???
>>580
この板ができた経緯が難民収容で、何でもありだったんだよ。
582580:2009/03/18(水) 18:48:11 ID:???
>>581難民かw
583まちがって名前消しちゃいました。:2009/04/08(水) 12:42:58 ID:???
test
584まちがって名前消しちゃいました。:2009/04/12(日) 02:42:32 ID:???
std::vector<double> scoreのメディアンを取りたいとき、median(score)としても駄目でした。
こんな関数ありますか?
585まちがって名前消しちゃいました。:2009/04/12(日) 02:47:38 ID:???
あるソースにこんなことが書いてあったのですが意味がわかりません
どういう意味でしょうか

std::istream& read(std::istream&);
586まちがって名前消しちゃいました。:2009/04/12(日) 11:23:50 ID:???
>>585
std::istreamを継承する全てのオブジェクトを受け取れるようにしてあるもの。

例えば
std::string global_str;
として、もしも
void read()
{std::cin >> global_str;}
だったとするとglobal_valに標準入力から文字列を格納するわけだが
これだとstd::cinからしか受け取れない。

そこで
std::istream& read(std::istream& is)
{is >> global_str;
return is;}
とすることでstd::istreamを継承する全てのオブジェクトから読み込めるようにしてある。


普通はistreamじゃなくてostreamで見かけるけどね。
587まちがって名前消しちゃいました。:2009/04/15(水) 00:18:36 ID:???
>>584
<algorithm>のnth_elementを工夫して使えばいいと思う。

要素数が奇数のとき
std::nth_element(score.begin(), score.begin() + score.size() / 2, score.end());
double m = score[score.size() / 2];
偶数のとき
std::vector<double>::iterator center_right = score.begin() + score.size() / 2;
std::nth_element(score.begin(), center_right, score.end());
std::nth_element(score.begin(), center_right - 1, center_right);
double m = center_right[0] + center_right[-1];
588まちがって名前消しちゃいました。:2009/04/15(水) 00:19:45 ID:???
>>585
もし、それがCだと思っているなら、違うと否定しておく。
C++だよ一応念のため。
589586:2009/04/15(水) 06:04:09 ID:???
>>588
ああ、
質問者の質問の意図は
そう言う意味だったのか。

素で答えちまった。。。
590まちがって名前消しちゃいました。:2009/04/18(土) 00:15:16 ID:???
標準関数について気になっていろいろ調べていたところ、
printfのような標準関数がstdio.hなどで宣言されているのはわかったのですが、自作した関数のように
int ***(---)
{
.....
}
と定義(?)されているのが見つかりません。
標準関数は宣言のみでできているということなのでしょうか?
違うなら、どこで定義されているのか教えてください。お願いします
591まちがって名前消しちゃいました。:2009/04/18(土) 00:22:26 ID:???
>>590
ソースがある場合もあるし
コンパイルされたライブラリ(バイナリ)でどっかにある場合もある。

環境を書け。
592まちがって名前消しちゃいました。:2009/04/18(土) 00:35:00 ID:???
OSがVistaで、コンパイラはMicrosoft Virtual C++ 2008 です
593まちがって名前消しちゃいました。:2009/04/18(土) 16:30:02 ID:fK1MoCdV
#include <stdio.h>
#include <math.h>
int main(void)
{
int i;
double exp(double x);
int x=-1.25*exp(-0.4*i)+1.25;
for (i=0; i<=20; i++)
{
printf("%dです:",x);
}
return(0);
}

x=-1.25*exp(-0.4*i)+1.25 のiに0〜20まで代入した値を出したいのですが
1ですと20回出るだけです。
何が違うのか教えてください。お願いします。
594まちがって名前消しちゃいました。:2009/04/18(土) 16:37:47 ID:???
>>593
int x=-1.25*exp(-0.4*i)+1.25;
この一文でxは整数だから、小数点以下切り捨てで代入される。
なのでxの型を変更すべし。doubleとかに。
595まちがって名前消しちゃいました。:2009/04/18(土) 16:57:01 ID:???
>>594
doubleでやってみたらできました!
本当にありがとうございました。
596まちがって名前消しちゃいました。:2009/04/18(土) 17:11:49 ID:???
>>595
あと強いて言うなら

return(0);

return 0;
でいいんだよ。

また、for (i=0; i<=20; i++)
は  for (i=0; i<=20; ++i)
の方が効率がよい。
(ただし「理論上わずか程度」ってぐらいだが。コンパイラの最適化もあるし。)
597まちがって名前消しちゃいました。:2009/04/18(土) 17:42:27 ID:???
ふむふむ、勉強になります
あと、この結果表示を縦並びにするのはどうすればいいですか?
598まちがって名前消しちゃいました。:2009/04/18(土) 18:14:28 ID:???
>>597
縦並び?
どういうこと?
改行したいと言うことかい?

改行なら
"%dです:"

"%dです\n"
にすればよろしいかと思いますが。
599まちがって名前消しちゃいました。:2009/04/22(水) 11:19:13 ID:0/4eA6Ud
ちょっと知恵もしくは答えを教えてほしいプログラミングの問題があるんだ。

u,nは整数で
1000>u>1,1000>n>=3 x>0,y>0,z>0 d>=0 の条件下で

d=u^n-max{x^n+y^n+z^n}

このときdが最小となる(x,y,z)の組を求めよ
ちょっとサンプルデータな
u n d x y z
2 3 5 1 1 1
6 3 0 3 4 5
7 4 224 4 5 6
98 3 8 2 48 94
76 4 733 17 47 73
54 5 103717 13 47 47
123 3 0 6 51 120
456 3 0 6 51 120

もしかしたらデータずれてるかも
600まちがって名前消しちゃいました。:2009/04/22(水) 11:20:52 ID:0/4eA6Ud
で、d=・・・ってところのプログラミングがさっぱりなんです。

いろいろ考えたけど、どうしても規則性がみつけられなくて・・。
たのんます
601まちがって名前消しちゃいました。:2009/04/23(木) 22:53:40 ID:???
VC++使ってるんですが、
int a = 12, b =100;
int i = (printf("%d",a), a);
みたいにすると、ディスプレイに12と表示されて、さらにiにはbと同じ値の100が入っていました

これってCの規格通りなのでしょうか、それとも処理系の特性によるものなのでしょうか?
602まちがって名前消しちゃいました。:2009/04/23(木) 22:56:31 ID:???
間違えました
>>600の3行目は int i = (printf("%d",a), b); です
603まちがって名前消しちゃいました。:2009/04/24(金) 03:51:15 ID:???
>>601
規格通り。

関数呼出の引数を並べるとき以外で、「式」の中に現れるカンマは、順次演算子というれっきとした演算子の1つ。
左から順に演算を行い、右側の値を結果とするというもの。

printf(), aを取り囲む括弧は(1 + 2) * 3などと同じように式を括るための括弧。
604まちがって名前消しちゃいました。:2009/04/24(金) 11:27:02 ID:???
【国際】 「中国でデジタル家電など売りたいなら、ソースコードを強制開示」 中国、制度強行へ…国際問題化の懸念★3
http://tsushima.2ch.net/test/read.cgi/newsplus/1240536789/

【知的財産】中国:ITソースコード強制開示強行へ・制度を5月に発足…国際問題化の懸念 [09/04/24]
http://anchorage.2ch.net/test/read.cgi/bizplus/1240524654/
605まちがって名前消しちゃいました。:2009/04/26(日) 08:50:58 ID:???
#include <stdio.h>

void main()
{
printf("Hello, World!");

return 0;

}

すいません。Visual C++2008 を使ってこのコードで、
「デバッグなしで開始」とすると・・・

1>------ ビルド開始: プロジェクト: test, 構成: Debug Win32 ------
1>コンパイルしています...
1>cl : コマンド ライン error D8045 : C ファイル '.\test1.c' を /clr オプションと共にコンパイルできません
1>test - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

と出てしまいます。どうしたらエラー0になりますでしょうか?
606まちがって名前消しちゃいました。:2009/04/27(月) 23:08:19 ID:???
>>605
プロジェクト作るときにWin32コンソールプロジェクトを選べ。
あとint main()な。
607まちがって名前消しちゃいました。:2009/05/01(金) 11:56:47 ID:BeV73NTB
PCはXPでcpad for LSI C-86使ってるんですが
exitがよくわからないです
プログラム
#include <stdio.h>
int main(void)
{
exit(1);
}

コンパイルメッセージ
関数exitは宣言されていないのでint型とみなす。
608まちがって名前消しちゃいました。:2009/05/01(金) 19:32:07 ID:???
>>607
#include<stdlib.h>
609まちがって名前消しちゃいました。:2009/05/06(水) 22:26:14 ID:zXBJqRNY
お前らごときがC言語なんか使うな
オナニー言語でも使ってろw
610まちがって名前消しちゃいました。:2009/05/13(水) 17:12:32 ID:???
borland c++ compiler 5.5において以下のプログラムをコンパイルした所エラーは出ないのですが、
windowsプロンプト上の実行結果に何も表示されません。
どなたか解決方法についてご教示願います。

#include<stdio.h>
FILE *fp;
char a;
int s;
int main(void)
{
fp = fopen( "test.txt", "r" );
while ((s=getc(fp)) != EOF) {
if(s==0) printf("B");
}
fclose(fp);
return 0;
}
611まちがって名前消しちゃいました。:2009/05/13(水) 17:14:06 ID:???
追記
test.txtの内容は、2進数文字列です。
612まちがって名前消しちゃいました。:2009/05/13(水) 17:16:55 ID:???
>>610
s=='0'とかs=='1'にしたいんじゃないの?

文字と数値の区別ついてる?
613まちがって名前消しちゃいました。:2009/05/13(水) 17:22:12 ID:???
>>612
動きました。有難うございます。
文字を扱うのは初めてだったので、躓いていました。
614まちがって名前消しちゃいました。:2009/05/14(木) 17:53:48 ID:???
なんでエラーになるのでしょうか?

#include <iostream>
class Test {
private:
Test *p;
public:
Test* GetP() {
return p;
}
};

int main() {
Test *t = new Test();
t->GetP() = NULL;
return 0;
}
615まちがって名前消しちゃいました。:2009/05/14(木) 18:22:17 ID:???
Test*& GetP() {
616まちがって名前消しちゃいました。:2009/05/14(木) 18:24:28 ID:???
ありがとう でも理解できひん なんでポインタの後に参照が!?
教えて
617まちがって名前消しちゃいました。:2009/05/14(木) 18:36:07 ID:???
>>614-617
C++スレ行けよw
618まちがって名前消しちゃいました。:2009/05/14(木) 18:48:20 ID:???
>>614-617
てことはおまえもいくってことか
619まちがって名前消しちゃいました。:2009/05/14(木) 19:13:09 ID:???
Test** GetP(){
return &p;
}

*(t->getp())=NULL;
620まちがって名前消しちゃいました。:2009/05/18(月) 03:46:26 ID:???
メモリリークについては誰も突っ込まないのか?
621まちがって名前消しちゃいました。:2009/05/19(火) 09:50:03 ID:LMpDXf3y
何でエラーになってしまうのでしょうか?


int na; /*身長(整数値)*/
double ba; /*標準体重(実数)*/

printf("身長を入力してください:");
scanf("%d", &na);

(double)ba=(na-100)*0.9; /*キャスト*/

print("標準体重は%5.1fです。\n" ba);

return(0);
622まちがって名前消しちゃいました。:2009/05/19(火) 10:28:29 ID:???
>>621
baをキャストしてどうする。
途中計算をキャストしろ。
623まちがって名前消しちゃいました。:2009/05/20(水) 19:23:56 ID:???
C言語の挿入ソートの比較回数について質問です.
↓は一応挿入ソートで正しくソーティングできています.
void inssort(int data[], int n) {
  int i, j;
  for (i = 1; i < n; i++){
 j = i;
    while(j >= 1 && data[j-1] > data[j]) {
    swap(&data[j], &data[j-1]);
    j--;  
    }
  }
}

 大域変数compareがあるとして、どこにcompare++;を入れれば正確くに比較回数を測ることができますか?
while関数の前におくと比較回数が固定になってしまいますし,
while関数の中において,整列済みのデータをソートしようとすると比較回数0になってしまいます・・・orz
624まちがって名前消しちゃいました。:2009/05/20(水) 23:06:32 ID:???
do{
scanf("%d",&va[i]);
scanf("%d",&vb[i]);
scanf("%d",&vc[i]);
scanf("%d",&vx[va[i]][vb[i]][vc[i]]);

printf("続けますか?(続ける1 終了する0)"); scanf("%d",&f);
j++;
i++;
}while(f==1)

for(i=0;i<j;i++){
printf("%d",vx[va[i]][vb[i]][vc[i]]);
}

こんな感じで、

vx[ この中に更にva[i]をいれる]

ってできますか?

625まちがって名前消しちゃいました。:2009/05/21(木) 03:51:14 ID:QK+Npslk
「cの入門の入門」て本のP58 「自作プログラムを保存するディレクトリを作る」て項目がありまして、やってみたのですが

C:\Documents and Settings\sela>
C:\>mkdir Source
サブディレクトリまたはファイル Source は既に存在します

C:\>dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は ****-**** です

質問1 テキストには「サブディレクトリまたはファイル Source は既に存在します」との表示は無いのですが
この表示がでるのは問題あるのでしょうか?

質問2 そして、C:¥>dirの後はずらずら表示された中に

2005/01/DD HH:MM <DIR> Sourceという1行がないとダメみたいなんすけど
上記の通り
「ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は ****-**** です」

どのようにすればいいのでしょうか? 
宜しくお願い致しますm(__)m
626まちがって名前消しちゃいました。:2009/05/21(木) 04:38:49 ID:ftKzh7mB
>>625
それC言語と関係無いから、エラー出ても関係無いよ。
重要なことは、プログラムを打ち込んで実行できること。
MS-DOSは出来る必要がない。
627まちがって名前消しちゃいました。:2009/05/21(木) 04:43:36 ID:ftKzh7mB
>>625
BCC developerでもいれておけばいい。 ウェブで調べたら導入できる。
628まちがって名前消しちゃいました。:2009/05/21(木) 06:22:37 ID:???
>>625
全然C言語の問題ではない。
だが簡単でいいから初歩のコマンドラインでの操作を
出来るようにしておいた方が、この後 色々やりやすいかと。
629625:2009/05/21(木) 13:09:48 ID:???
ありがとうございます。m(__)m
書籍名間違ってました。「cの入門の入門」誤 → 正「C入門の入門(翔泳社)」

BCC developerていうのを初めて聞きました。帰宅後に調べてみます。
ありがとうございました。m(__)m
630まちがって名前消しちゃいました。:2009/05/21(木) 16:18:23 ID:???
>>623
比較回数って、ソートするべき値(data[j] と data[j-1] )の比較を何回やったかを知りたいんだよね。
だったら、whileの前に置いた比較回数固定が正しいんじゃないの。

そのソースでは、データ数が同じなら比較回数は変動しないよ。
頭からケツまで丁寧に全比較だもん。
631まちがって名前消しちゃいました。:2009/05/22(金) 23:10:41 ID:???
すみません。
構造体の先頭アドレスから、その構造体の最初のメンバのアドレスを取得する方法はないでしょうか?
632まちがって名前消しちゃいました。:2009/05/23(土) 10:51:04 ID:???
>>631
構造体のポインタとその最初のメンバのポインタの値は同じ。
633まちがって名前消しちゃいました。:2009/05/24(日) 17:22:56 ID:???
>>632
ありがとう。
でも型が違うから、そのまま流用しようとすると当然エラーになる。…。
634まちがって名前消しちゃいました。:2009/05/25(月) 11:03:06 ID:???
>>633
どういう風に流用するつもりなの?
乱暴な答えはキャストだけど。
635まちがって名前消しちゃいました。:2009/05/26(火) 23:43:17 ID:???
>>634
重ね重ねありがとうございます。
単純にchar型でキャストすれば良かったのか…!

そもそもは、構造体の各々のメンバ(すべて同一サイズのchar型)に対して、
妙な値が入っていないか確認したかったのです。
ただ、メンバの数がかなり多くて、ひとつひとつメンバ名を書くのが手間でした。
なので、for文か何かでまわす方法が無いか探してました。
最初のメンバのポインタが指定できれば、あとは1メンバごとに
メンバのバイト数分インクリメントしていけば指定できるので。
636まちがって名前消しちゃいました。:2009/05/27(水) 03:19:01 ID:???
「%5.2f とあったら表示する桁数は全部で(少数点も含めて)5桁
少数点以下は2桁です。1.26は1.26と表示されます。
全部で5桁なのでまだ1桁あまっています。」
とテキストに表示されてるのですが、
1.26は3桁なので2桁あまってると思うのですが、
「何故1桁あまる」のが正解なのか分かりません。
教えて下さい。
637まちがって名前消しちゃいました。:2009/05/27(水) 05:13:24 ID:???
↑の質問した者です。
「1.26」の小数点も桁に含むから4桁と解釈するのでしょうか?
638まちがって名前消しちゃいました。:2009/05/27(水) 11:02:42 ID:???
>>635
charでキャストはない。*charならありえるが。

>最初のメンバのポインタが指定できれば、あとは1メンバごとに
>メンバのバイト数分インクリメントしていけば指定できるので。
パディングがある可能性があるからそれはダメだ。
現状の
struct s{ char hoge[10]; char fuga[10]; ...

struct s{ char A[N][10];};
と変更すればいいと思うが。

今のデータ構造は二次元配列とみなせるんでしょ?
639まちがって名前消しちゃいました。:2009/05/27(水) 22:51:40 ID:???
>>638
パディング…!

今のテーブルを2次元配列で宣言しなおし、
s.A[0]や、s.A[1]とメンバを指定すればいいということですか?
それならうまくいきそうです。
ですが…。この構造体、メンバ名を使っていろんなところで呼ばれているのです。
構造体を宣言しなおすとなると、結局ソース全部を手作業修正→ミス発生の可能性が高くなります。
大人しくメンバ名を書き並べて言ったほうが安全な気がしてきました。
アドバイスありがとう orz
640まちがって名前消しちゃいました。:2009/06/11(木) 07:09:04 ID:???
test
641まちがって名前消しちゃいました。:2009/06/13(土) 11:41:50 ID:???
映画ターミネーター見た?
始まりのところに、C言語ソースプログラム 映ってるよね。
642まちがって名前消しちゃいました。:2009/06/15(月) 21:52:24 ID:???
float a,b;
a=6.8;
b=2.3;
printf("%f", a * b * 2.0);

結果
31.280001

最後の1が気持ち悪いんですが
なんでこうなってしまうんでしょうか?
実数の複雑な計算をする時は
どう回避するんでしょう??
643まちがって名前消しちゃいました。:2009/06/15(月) 22:29:10 ID:???
>>642
精度の問題。
>実数の複雑な計算をする時は
>どう回避するんでしょう??
完全な回避は無理。
擬似的に精度をむっちゃくちゃ上げてごまかすしかない。
とりあえず君の場合
float a,b;

double a,b;
と書き換えてみて。
644642:2009/06/15(月) 23:48:27 ID:???
>>643
ありがとうごさいます。
こういうものなんですね。
自分のコンパイラが壊れてるのかと不安でした。。
645まちがって名前消しちゃいました。:2009/06/16(火) 05:20:01 ID:???
>>644
大丈夫、初心者のうちはコンパイラのせいなんてことはまずないから。
言語の仕様の問題。
どーかんがえてもコンパイラのせいだろ!と思っても突き詰めてみると
自分の知識不足だったりする。

・・・もっとも、さらに高度になってくると本当にコンパイラのせいだったり
するのだがね。
646まちがって名前消しちゃいました。:2009/07/17(金) 03:05:53 ID:???
アクションゲームプログラミングって本を参考に
プログラミングしようと思ってるんですけど
ひとつ疑問が、
Directx SDKのバージョンが違うんですけど
最新版でも問題はありませんか?
647まちがって名前消しちゃいました。:2009/07/17(金) 15:54:30 ID:???
>>646
アクションゲームプログラミングって本をしらないからなぁ。
みんな

古いバージョンの仕様に依存するコードなら大いに問題あり、
古いバージョンの仕様に依存しないコードなら全く問題ない

っていう通り一遍の解答以外はできないだろうな。
648まちがって名前消しちゃいました。:2009/07/27(月) 00:09:26 ID:FPCfIowr
a→b→a→a→c→d→b→c→c→d
のようなリストがあるときに、a,b,c,dの出現回数を調べたいときは
どうやるといいですか?
649まちがって名前消しちゃいました。:2009/07/27(月) 11:01:16 ID:???
>>648
グローバル変数に
unsigned int a_count = 0;
unsigned int b_count = 0;
unsigned int c_count = 0;
unsigned int d_count = 0;
としておいて、見つける度にその数を増やす。
なれてきたらグローバル変数じゃなくし、
unsigned int count[4]={0,0,0,0};
とした方が楽かもしれないけど。
650まちがって名前消しちゃいました。:2009/07/27(月) 11:02:31 ID:???
>>648
こいつはマルチなんで相手にしないように。
651まちがって名前消しちゃいました。:2009/08/05(水) 03:03:17 ID:???
ビルドしようとしたら
cl.exeを起動しようとしてエラーが発生しましたと出て、失敗しました。
何度やっても一部を除いてビルドできません、
原因分かりますか?
652まちがって名前消しちゃいました。:2009/08/09(日) 22:43:46 ID:???
#include <stdio.h>

int main()
{
char str[] = "AXMDOBERSDULLPQ";
char *ptr = str;

while (*ptr) {
*ptr = *ptr - ('A' - 'a');
ptr++;
}

printf("%s\n", str);

return 0;
}

参考書見て勉強しているんですが解説が無いのでわかりません。
whileを抜けるのは
ptr++を続けていくうちに*ptrでは無くなった→ループ終了。
という解釈でいいですか?
お願いします。

653まちがって名前消しちゃいました。:2009/08/10(月) 09:12:37 ID:???
文字列の終わりには\0がついてるから
654まちがって名前消しちゃいました。:2009/08/10(月) 20:54:00 ID:???
なるほど。
ありがとうございます。
655まちがって名前消しちゃいました。:2009/08/10(月) 20:57:41 ID:???
本当に分かってる?
大丈夫?

君の言う
> *ptrでは無くなった
の意味は分かってるかい?
656このプログラム作ってください!( >_ < ):2009/08/11(火) 03:17:34 ID:3VO0IOXx
1. 以下のプログラムは、勝ち数と負け数を入力して勝率
(= 勝ち数 / ( 勝ち数 + 負け数) )を計算するプログラムである。
勝ち数、負け数に負の値が入力された場合は入力をやり直させ、
勝ち数+負け数が0 の場合は勝率計算が不能であることを表示する。
ただし、このプログラムはバグを含んでおり正しく動作しない。
デバックを行って正常動作するようにせよ。
修正したソースプログラムと実行結果を示すこと。
657このプログラム作ってください!( >_ < ):2009/08/11(火) 03:19:38 ID:3VO0IOXx
#include <stdio.h>

  int main(void){
   int nwin, nlose;

   do
    printf("勝ち数を入力してください:");
    scanf("%d",nwin);
     if (nwin<0)
      puts("負の値を入力しないでください!");
  while(nwin<0);

   do
     printf("負け数を入力してください:");
     scanf("%d",nlose);
     if (nwin<0)
       puts("負の値を入力しないでください!");
   while(nlose<0)

  total = nwin + nlose;
   if (total = 0)
     puts("勝率を計算できません。");
   else
     printf("勝率は%dです。\n",nwin/total );
   return(0);
   }
658このプログラム作ってください!( >_ < ):2009/08/11(火) 03:20:18 ID:3VO0IOXx
2.半径(cm)と中心角(度)(いずれも整数値)を入力して扇形の面積を計算する
  プログラムを作成せよ。円周率の小数点以下桁数は任意に決めてもよい。
  ただし、入力値に以下の処理を加えること。
  ・半径に負の値が入力された場合、入力をやり直させる。
  ・中心角の入力値は以下のように処理する。
   i.  0〜359の場合はそのまま使う。
   ii. 負の値の場合、0か正の数になるまで繰り返し360を
     加えた値を中心角とする。
     (例: -30 -> 330, -450 -> 270 )
   iii.360以上の場合、360で割った剰余を中心角とする。

3.正の整数を繰り返し入力し、0 か負の数が入力されたらそこで入力を打ち切り、
  そこまでの合計と平均を計算するプログラムを作成せよ。
  最後に入力した負の数は計算に入れないようにせよ。
  また、平均は小数点以下まで算出せよ。  

すいません、明日までにお願いできますか?

659まちがって名前消しちゃいました。:2009/08/11(火) 08:57:25 ID:???
>>657
エラーが出るからデバッグする
660まちがって名前消しちゃいました。:2009/08/11(火) 10:33:34 ID:???
>>657
はマルチなんで相手にしないように。
661まちがって名前消しちゃいました。:2009/08/11(火) 21:36:06 ID:???
もっとヒネった問題だしてよ
662652:2009/08/12(水) 16:14:40 ID:???
>>655
おそらく理解できていると思います。
文字列の最後尾にあるのは\0→whileが0(偽)になったのでループ終了。
ということではないでしょうか?
663655:2009/08/12(水) 17:59:48 ID:???
>>662
ああ分かってるっぽいね。
それでOKです。

664まちがって名前消しちゃいました。:2009/08/26(水) 19:15:05 ID:???
Cで作ったものはどのOSでも正常に動くんですか?
665まちがって名前消しちゃいました。:2009/08/26(水) 23:05:54 ID:???
ポインタのポインタに入っている関数にはどうやってアクセスするのでしょうか?

AAA a
AAA* b
AAA** c

b=&a
c=b
c(ここがわかりません)d()
666まちがって名前消しちゃいました。:2009/08/26(水) 23:31:07 ID:???
>>665
> c=b
ここがおかしいでしょ。
667まちがって名前消しちゃいました。:2009/08/27(木) 05:59:52 ID:???
>>664
むしろ動かない。
Cで書いたプログラムはそのコンパイルされたPC上でのみ動く。
・・・だが実際にはちょっとくらい違うPCでも動いたりする。

例)同じWindows XPのSPの差など

動かない例は
例)Windows XP と Linuxなど
668まちがって名前消しちゃいました。:2009/09/04(金) 22:27:09 ID:???
電卓とカレンダー作りができる程度の初心者です。
基礎学習になるようなプログラムを組みたいのですが、何かおすすめの題材はありますか?

また、ゲーム作りに興味があるのですが、少し調べてみたところ基礎的な学習とは方向性が違うように感じ、
基礎が身に付くまでは汎用的な学習がしたいと考えているのでチャレンジするかどうか迷っています。
ゲーム作りはC言語の基礎学習になるのでしょうか?この点についてもアドバイスをもらえたら嬉しく思います。

よろしくお願いします。

669まちがって名前消しちゃいました。:2009/09/04(金) 23:32:14 ID:???
>>668
このスレは結構過疎ってるから
ttp://pc12.2ch.net/test/read.cgi/tech/1247937958/
で質問するのがよいかと。

その質問はここでは取り下げてから
じゃないとマルチポスト扱いにされちゃうから注意。
670まちがって名前消しちゃいました。:2009/09/05(土) 00:22:58 ID:???
>>669
親切に誘導していただき、どうもありがとうございます。
助かりました!

では、>>668の質問取り下げさせていただきます。
671まちがって名前消しちゃいました。:2009/10/19(月) 21:11:00 ID:???
テンプレあるかワカランが
c言語ってなにの初心者
なにからすべき?
672まちがって名前消しちゃいました。:2009/10/19(月) 22:13:43 ID:???
>>671
このスレは結構過疎ってるから
ttp://pc12.2ch.net/test/read.cgi/tech/1247937958/
で質問するのがよいかと。

その質問はここでは取り下げてから
じゃないとマルチポスト扱いにされちゃうから注意。
673まちがって名前消しちゃいました。:2009/10/19(月) 22:14:33 ID:???
いや

C言語なら俺に聞け(入門篇) Part 54
http://pc12.2ch.net/test/read.cgi/tech/1254829314/

だったか。
674まちがって名前消しちゃいました。:2009/10/19(月) 23:07:19 ID:???
トンクス
とりあえずROMっとく
675まちがって名前消しちゃいました。:2009/10/20(火) 21:11:20 ID:???
C言語でなにするの?
あらかじめ文つくって全自動で友人とチャットをかってにやってくれたりできるの?
676:2009/10/27(火) 02:55:52 ID:???
{
do c = *p++ & 0xff;
while (isspace(c));
return c;
}
ってどういう意味ですか?
教えてください!!
677まちがって名前消しちゃいました。:2009/10/27(火) 21:54:34 ID:???
p が指し示すアドレスから、最初に出現する空白文字でない文字の値を返す
678まちがって名前消しちゃいました。:2009/11/06(金) 01:31:37 ID:???
すいません
動的に確保したポインタの配列(2次元配列として使いたい)にデータを代入しようとするとwarningがでます。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char **arr;
int i,j;

arr = malloc(3 * sizeof(char *));
for(i=0; i<3; i++) arr[i] = malloc(3 * sizeof(char));

strcpy(arr[0],"aa");
printf("%s\n",arr[0]);
return 0;
}

a.c: In function ‘main’:
a.c:12: 警告: incompatible implicit declaration of built-in function ‘strcpy’


この理由と回避策を教えていただきたいです
679まちがって名前消しちゃいました。:2009/11/07(土) 03:49:00 ID:???
>>678
#include "string.h" が抜けてるぞ
680まちがって名前消しちゃいました。:2009/11/07(土) 03:49:46 ID:???
#include <string.h> だった
681まちがって名前消しちゃいました。:2010/02/28(日) 14:02:33 ID:TxQW20L4
C言語はじめたいと思ってて本屋で教則本を買うつもりなんだが
オススメはある?
それともネットに書いてあることで充分?
682まちがって名前消しちゃいました。:2010/02/28(日) 18:04:53 ID:QdaXrY5s
>>678
12行目: 警告: incompatible implicit declaration
#include <string.h>
683まちがって名前消しちゃいました。:2010/04/21(水) 00:10:26 ID:???
684入門者:2010/04/30(金) 17:51:39 ID:???
変数に代入するっていう文が判らない・・
たとえば、10という数値を変数に代入
この場合は「int」でいいのかな?
685側近中の側近 ◆0351148456 :2010/04/30(金) 19:11:52 ID:nG26dHWY
>>684
(っ´▽`)っ

int i;
i=10;
686側近中の側近 ◆0351148456 :2010/04/30(金) 19:13:31 ID:nG26dHWY
>>678
(っ´▽`)っ mallocしたらfreeするのを忘れずにね☆
687まちがって名前消しちゃいました。:2010/04/30(金) 21:49:14 ID:???
ありがとう!

ちなみに画面表示する が抜けてた

#include<stdio.h>
main()
{
int a = 1;
printf("10\n",a);

unsigned short b = 65000;
    printf("65000\n",b);
    
    return (0);
 
}

こうでいいのかな?
688まちがって名前消しちゃいました。:2010/05/01(土) 01:11:12 ID:???
> printf("65000\n",b);

( ゚д゚ )
689まちがって名前消しちゃいました。:2010/05/01(土) 10:56:33 ID:???
違うのか・・・・

どう書くの??
690まちがって名前消しちゃいました。:2010/05/02(日) 14:50:15 ID:???
> printf("\65,000on",b);

こう書くんだよ!!
691まちがって名前消しちゃいました。:2010/05/02(日) 14:53:11 ID:???
> printf("\65,000 oz",b);

このほうが読みやすいな!!
692まちがって名前消しちゃいました。:2010/05/04(火) 08:26:42 ID:???
>>687
#include<stdio.h>
int main()
{
  int a = 1;
  unsigned short b = 65000;

  printf("%d\n",a);
  printf("%d\n",b);

  return 0;
}
693プログラミングがわからない(泣):2010/05/05(水) 13:18:13 ID:luKjT0L8
誰か教えてくれ(;;)
1: 生徒データの入力
2: 平均身長の表示
3: 平均体重の表示
4: データ表の表示
5: データの全消去

0: プログラムの終了

入力された番号: 1

これは 1 人目の生徒です(5人まで)
名前を入力してください(10文字以内)
入力された名前: q

身長を入力してください
入力された身長: 134

体重を入力してください
入力された体重: 33


1: 生徒データの入力
2: 平均身長の表示
3: 平均体重の表示
4: データ表の表示
5: データの全消去

0: プログラムの終了

入力された番号:


というようなものを実行するためのプログラミングはどうしたらいいんだ〜
694まちがって名前消しちゃいました。:2010/05/06(木) 15:17:42 ID:???
とりあえず、フローを書いてみたらいいと思うよ
695まちがって名前消しちゃいました。:2010/05/13(木) 09:25:44 ID:???
>>693
一応それっぽいの書いてみたけど、までここ見てるかなあ・・・。
http://codepad.org/gQWMODF9
696sage:2010/05/31(月) 15:57:15 ID:q7RZC3SQ
初心者過ぎる質問で申し訳ないのですが
putchar関数を使うとき

putchar('C')と記述するのと
putchar(C)と記述するのでは

どんな違いがあるのでしょうか?
どなたか教えてください。よろしくお願いします。
697まちがって名前消しちゃいました。:2010/05/31(月) 16:00:12 ID:???
putchar('C') は、文字 'C' を出力する
putchar(C) は、変数 C の内容を出力する
698sage:2010/05/31(月) 16:12:01 ID:TEzFcJXQ
>>697さん

なるほど、そういうことだったんですね。
どうもありがとうございました。
699まちがって名前消しちゃいました。:2010/05/31(月) 18:33:48 ID:56Yj9p3w
putchar('C') は、'C'という定数の値を計算して、その値に等しい文字を標準出力に送る
putchar(C) は、変数 C に格納されている内容を参照して、その値に等しい文字を標準出力に送る

'C'は定数、文字リテラル
Cは変数

プログラムの中に書く、具体的なデータ(定数)の表現をリテラルといいます。
http://web.hc.keio.ac.jp/~fujimura/lang/page-6-4.html
700まちがって名前消しちゃいました。:2010/05/31(月) 18:37:14 ID:???
> putchar('C') は、'C'という定数の値を計算して

計算なんてしないだろ
701まちがって名前消しちゃいました。:2010/05/31(月) 19:03:26 ID:56Yj9p3w
ユニコードで書かれているか何で書かれているかにもよるが、
ソースファイルをコンパイラーが計算して固定された定数に
したものを実行時に、さらにキャストするときに計算される。
引数は計算する為に渡される。
なんにもしないなら、計算をしないという計算を行ってから
出力先に渡される。2番目のCにしても、配列の何番目とかで
渡されればアドレス計算と値のキャストが行われる。
'C'という記述自体が、文字Cを固定値に変換する計算を前提
にしている。計算というと語弊があるなら、値を処理してと
いうことだ。そこ引っ掛かるところなんだ。計算したんだよ。
702まちがって名前消しちゃいました。:2010/05/31(月) 19:59:22 ID:???
> 計算をしないという計算

何の事かさっぱり分かんね
703701:2010/05/31(月) 20:52:41 ID:???
一般的に(void)putchar(ch);ではなく、int putchar(int c);と実装されるので、
文字定数は整数に演算されて型キャストされるて関数演算されるということだよ。
文字キャラクタが右から左に心太式に出力されるのではなく、演算処理される。
テキストソースのユニコードやアスキーコードから整数に計算されている。
putchar(ch)のような特殊な実装なら、値を計算しない(何もしない)という判断を
行って、putc関数演算後に標準出力に送ることも可能だということだ。
704まちがって名前消しちゃいました。:2010/05/31(月) 20:57:24 ID:???
1. キャストも関数演算も計算ではない
2. そもそも 'C' は int 型
705まちがって名前消しちゃいました。:2010/05/31(月) 22:06:05 ID:???
>>704
引数は特定のプラットホーム依存の文字セットの文字から整数に
値を変換されている。文字を出力しているのではなく、整数値を
出力しているんだろ。論理演算も数値演算もすべて処理は計算だ。
'C'という文字定数を解釈(計算)して整数値にしている。その為の
型宣言がある。
文字の値を標準出力の配列にputcで追加して、インデックスが指す
位置をプラス1してインクリメントしている。

706まちがって名前消しちゃいました。:2010/05/31(月) 23:47:16 ID:???
>>705
1.
putchar() は何ら変換処理を行っていない
コーディングされた文字の文字コード値 (整数値) をそのまま標準出力に送っているだけ
疑うならソースコードをバイナリエディタで覗いて確認してみること
並びにコンパイラのアセンブリリスティングを確認してみること

2.
'C' は文字定数ではなく int 型の整数値

3.
標準出力の配列? インデックス? とやらはプログラミング上意識すべきではない
707まちがって名前消しちゃいました。:2010/06/01(火) 01:51:52 ID:???
通常int型は32ビット(-2147483648〜2147483647)なので埋め込みパッドが入り
キャストされた数値なので、ファイルの文字とは異なるサイズの数値である。
入力ファィルと出力ファイルを見ているとキャストが起きているので変化して
いないようにみえる。

int
putchar(int c)
{
FILE *so = stdout;

return (putc(c, so));
}
708sage:2010/06/03(木) 13:28:32 ID:o+4HItrq
>>699さん

亀レスですが、詳しくありがとうございます。
709まちがって名前消しちゃいました。:2010/06/04(金) 18:10:57 ID:???
積分を行う関数をシンプソンの公式を用いて以下のように作りました。
double Integ( double (*f)(double),double a,double b){
int n = 10000;
double z ;
double h = (b-a)/(2.0*n);
int X = 1;
double S1 = 0.0;
double S2 = 0.0;
for(z=a+h ; z<=b-h ; z+=h){
if(X%2 == 1){
S1 += (*f)(z);
}
else{
S2 += (*f)(z);
}
X += 1;
}
I =(h/3.0)*( (*f)(a) + (*f)(b) + 4.0*Si1 + 2.0*Si2);
return I;

しかし、これはf(x)=1/xのような被積分関数の変数が一つの場合でしか動きません。
これを多変数の場合にも応用するにはどうすればいいでしょうか?
例えばf=2*x+x*y+zをxで積分するような場合です(y,zはxによらない)
710709:2010/06/06(日) 12:59:49 ID:???
ごめんなさい、スレ間違えました
711sage:2010/06/07(月) 14:20:23 ID:BwG3F2cC
smp.txtというテキストファイルをデスクトップに作成し
それを読み込むプログラムを作ったのですが、
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
FILE*fin;
char buf[256];
char file[80];

printf("入力ファイル名=");
gets(file);

fin=fopen(file,"r");
if(fin==NULL){
printf("%sをオープンできません\n",file);
exit(1);
}

while(fgets(buf,256,fin)!=NULL){
printf("%s",buf);
}

fclose(fin);

return 0;
}
これを実行し、入力ファイル名をsmp.txtにしてもテキストファイルが開けません
何が原因なんでしょうか?
どなたか教えてください。よろしくお願いします。

プログラムはvisual studio 2005で作りました。
712まちがって名前消しちゃいました。:2010/06/08(火) 17:30:05 ID:???
カレントディレクトリ
713まちがって名前消しちゃいました。:2010/06/08(火) 18:24:07 ID:???
>>712さん

カレントディレクトリ に色々言葉を足して検索したら解決できました。
ありがとうございました。
714JK:2010/06/09(水) 12:38:39 ID:zuNTe9MO
C言語を最近習い始めた17歳のJKです
1000以下の素数を求めるの乗除を減らすプログラムを教えてください
/*
1000以下の素数を求める(第5版)
*/

#include <stdio.h>

int main(void)
{
int i, no, cnt = 0;
int prime[500]; /* 素数を格納する配列 */
int ptr = 0; /* 既に得られた素数の個数 */
unsigned long counter = 0;

prime[ptr++] = 2; //prime[0]=2; /* 2は素数である */
prime[ptr++] = 3; //prime[1]=3; ptr==2 /* 3も素数である */

for (no = 5; no <= 1000; no += 2) {
int flag = 0;
for (i = 1; counter++, prime[i] * prime[i] <= no; i++) {
counter++;
if (no % prime[i] == 0) { /* 割り切れると素数ではない */
flag = 1;
break; /* それ以上の繰返しは不要 */
}
}
if (flag == 0) /* 最後まで割り切れなかった */
prime[ptr++] = no; /* 配列に登録 */
}

for (i = 0; i < ptr; i++) {
printf("%4d", prime[i]);
cnt++;
if(cnt % 15 == 0)
putchar('\n');
}

printf("\n\n乗除を行った回数:%lu\n", counter);

return (0);
}
715まちがって名前消しちゃいました。:2010/06/11(金) 17:28:30 ID:???
インクルードファイルが開けないのですが・・・
使用しているのはBCpadというものです
716まちがって名前消しちゃいました。:2010/06/12(土) 13:36:04 ID:???
>>715
自己解決しました
717まちがって名前消しちゃいました。:2010/06/20(日) 16:00:06 ID:???
ビット演算子についての質問なのですが

 int a = 0x00005555;
 int b = 0x000000FF;
 int c;

としたとき

c = a & b; の実行結果が00000055
になり

c = a | b; の実行結果が000055FF
になるのですが、

どうしてc = a & b;の実行結果が
000000FFではなく00000055になるのでしょうか?
どなたか教えてください。よろしくお願いします。
718まちがって名前消しちゃいました。:2010/06/21(月) 02:18:28 ID:???
>>717
数値を2進法表記で考えてください。
それで判らなかったらもう一度質問してください。
719まちがって名前消しちゃいました。:2010/06/21(月) 15:38:56 ID:???
質問お願いします.
nm6919340
をみて,ポインタを勉強していたのですが,main関数ではない関数で,変数を操作する方法の例として,ポインタが挙げられていました.
これは,グローバル関数でも同様のことができると思いますが,ポインタとグローバル変数の明確な違いを教えていただけると幸いです.
(どうもピンと来ませんでした…)
720まちがって名前消しちゃいました。:2010/06/21(月) 16:12:54 ID:???
>>719
「スコープ」 というものについて調べておく事。

一般に、グローバル変数は可読性の為になるべく使わない方がよい、と云われ
ている。
それは、グローバル変数はプログラム上のどの位置からも変更・参照できる為、
プログラムの規模が 1000 行、10000 行、100000 行と増大するにつれ、どこで
そのグローバル変数が使われているか把握しきれなくなりプログラムの整合性
が保ちきれなくなってくるから。

一方、変数を関数へポインタの引数として渡した場合、使用されるのはその関数
の内部のみと限定される為、プログラムの流れが追いやすくなる。
ちなみに、関数自体が 1000 行、10000 行と長くなってしまっている時は、関数内
での処理をもっと細かい単位の関数群に分割するとよい。

グローバル変数はなるべく使わない方向でコーディングする癖をつけておくと、他
の人がプログラムを読む場合や何年か経って自分で書いたプログラムの内容を
忘れた状態で読む場合に有意。
100 行程度の小さなプログラムでも、馬鹿にせずにきちんとコーディングする事が
大切。

なお、値を変更したい変数が 1 つしかない場合は、ポインタの引数を渡すよりも
呼び出し側で関数の戻り値を代入させた方が、やりとりする情報量が減って読み
やすいプログラムになる。
721まちがって名前消しちゃいました。:2010/06/21(月) 16:39:40 ID:???
>>720
ありがとうございます!
やっぱり可読性の問題か.
722まちがって名前消しちゃいました。:2010/06/21(月) 16:52:26 ID:???
>>718
2進法で考えたらわかりました。ありがとうございました。
723まちがって名前消しちゃいました。:2010/07/03(土) 22:37:01 ID:???
どなたか教えてください。ずっと考えてたけど、答えがわかりませんorz。

<標準関数>文字列と削除文字列を入力し、文字列中から削除文字列を削除しなさい。
※配列の使用は2つだけ。
例) 文字列入力→ABCDEFAABCDABC
   削除文字列→ABC
   結果文字列→DEFAD

どなたか教えてください、お願いします。
724まちがって名前消しちゃいました。:2010/07/03(土) 22:38:42 ID:???
>>723
書き間違えたorz

結果文字列→DEFG
725まちがって名前消しちゃいました。:2010/07/03(土) 22:40:29 ID:???
>>724
訂正の部分は忘れてください。
726まちがって名前消しちゃいました。:2010/07/03(土) 22:51:01 ID:???
int main(void)
{
char *str;


str="abcdefghijklmnopqrstuvwxyz";




while( *str !='\0')
{
printf("%c",*str);
str++;

}



return 0;
}

このプログラムを出力すると
abcdefghijklmnopqrstuvwxyz
と表示されるのですが
このときcを@などに部分的に置き換えることは可能ですか?

727まちがって名前消しちゃいました。:2010/07/04(日) 00:03:25 ID:???
>>726
while( *str !='\0')
{
if (*str=='c'){printf("@");str++;continue;}
printf("%c",*str);
str++;
}
728まちがって名前消しちゃいました。:2010/07/05(月) 12:21:47 ID:???
今ポインタで引数を渡すことを勉強しています。

dt2[]の内容をdt1[]にコピーするという事をポインタ引数で戻す関数を使う
という下記のプログラムのを実行すると、
#include <stdio.h>

void array_copy(int *ary1,int *ary2,int len);

int main(void)
{
int dt1[5],dt2[5]={50,20,80,30,90};

array_copy(dt1,dt2,5);
printf("dt1[0]=%d dt2[0]=%d\n",dt1[0],dt2[0]);
printf("dt1[4]=%d dt2[4]=%d\n",dt1[4],dt2[4]);

return 0;
}

void array_copy(int *ary1,int *ary2,int len)
{
int i;

for(i=0; i<len; i++){
*ary1 = *ary2;
++*ary1;
++*ary2;
}
}
実行結果が
dt1[0]=55 dt2[0]=55
dt1[4]=-858993460 dt2[4]=90
となりうまく値を渡すことが出来ません。

なぜdt2[0]の値が関数に渡した時点で50から55になっているのでしょうか?
また、dt2[4]の値がうまくコピーできないのは何故なのでしょうか?
どなたかどうぞご助言お願いいたします。
729まちがって名前消しちゃいました。:2010/07/05(月) 15:59:17 ID:???
>>728
++*ary1;
++*ary2;
これがどんな動作をしているか確認して下さい。
730まちがって名前消しちゃいました。:2010/07/05(月) 20:47:43 ID:???
>>728
ヒント : >>727
731まちがって名前消しちゃいました。:2010/07/06(火) 12:34:25 ID:???
>>729

ポインタの指示するアドレスにある値に加算をしてしまっていたようですね。
ご助言ありがとうございました。
732まちがって名前消しちゃいました。:2010/07/12(月) 16:52:36 ID:???
fgets()関数とsscan()関数を使って

fgets(inpBuf,sizeof(inpBuf),stdin);
sscanf(inpBuf,"%d",&inpNum);
printf("入力した数値:%d\n",inpNum);

としたとき、数字ではなく文字列を入力すると
マイナスの値が返ってくるのですか、何故なのでしょうか?

例えば
kjhと入力すると-858993460と返ってきます。

だれか教えてください。お願いします。
733まちがって名前消しちゃいました。:2010/07/12(月) 22:40:18 ID:???
>>732
その場合sscanf()は何もしていない。
単にinpNumに元々入っていた値がprintf()で出力されているだけ。
inpNumを初期化しておくこと、並びにsscanf()の戻り値をチェックすること。
734まちがって名前消しちゃいました。:2010/07/13(火) 13:47:55 ID:???
>>733

親切に対策まで教えてくれてありがとうございます。
735まちがって名前消しちゃいました。:2010/07/21(水) 01:41:24 ID:???
2次方程式ax2+bx+c = 0の係数a, b, cを入力し、解の判別(虚根、重根、実根)を行い、判別結果と解を出力
するプログラムを作成せよ。実際に、3種の解が得られる3組の係数を入力し、結果を示せ。

お願いします
736まちがって名前消しちゃいました。:2010/07/21(水) 02:00:09 ID:???
>>735
それのどこが質問なの?
丸投げはプログラム板の宿題スレでやってくれ
737期待の☆:2011/01/14(金) 22:24:55 ID:yI00afVD
rand関数について質問させてください。
アルファベット大文字 26字、アルファベット小文字 26字、数字 9字 の合計62文字からランダムに一文字取り出す式を教えて下さい。
今日 rand関数を習ったばかりで よくわかりません。{(>_<)}
基本的な使い方は大丈夫です。
738まちがって名前消しちゃいました。:2011/01/14(金) 23:07:24 ID:???
0から61(1から62)の範囲で変化する乱数を作る。
合計62文字の配列に文字を入れて、その配列のインデックスを乱数で決めて出力する。

> 特定の範囲で乱数を求めたいときにはa = rand() % 10とする方法も広く知られているが、
> 線形合同法は下位にあるビットほど質が悪い。
> そのため上記のコード例のような上位にあるビットを利用するコードが推奨されている。
http://ja.wikipedia.org/wiki/Rand

数字 9字 0はないのか・・・
739まちがって名前消しちゃいました。:2011/01/15(土) 17:29:11 ID:0EeTGqOI
ランレグス圧縮についてここまでできたのですが、
#include<stdio.h>
int main(void){
char x1=0, x2=0;
int x, count=0;
while((x=getchar())!=EOF){
x2=x1;
x1=x;
if(x1==x2){
count++;
}else{
if(count>1) printf("%d", count);
printf("%c", x1);
count=1;
}
}
if(count>1) printf("%d", count);
return 0;
}
これだと手入力でaaabbbだとa3b3と表示されます。
これをtxtファイルからaaabbbを読み込んでtxtファイルに出力してa3b3と表示できますか?
740まちがって名前消しちゃいました。:2011/01/15(土) 18:44:05 ID:???
できます
741まちがって名前消しちゃいました。:2011/01/15(土) 19:03:47 ID:???
#include <stdio.h>
#define NUM 255

int main(void) {
char str[NUM];
char encode[NUM];
int i,j,pos;
int count;

FILE *fp1;
FILE *fp2;
fp1 = fopen("a.txt", "r");
fp2 = fopen("b.txt", "w");

if(fp1 == NULL || fp2 == NULL) {
printf("ファイルをオープンできませんでした。\n");
return 1;
} else {
printf("ファイルをオープンしました。\n");
}

fscanf(fp1, "%s", str);

for (i = 0, pos = 0; str[i] != '\0';) {
for (j = i+1, count=1; str[j] != '\0' && str[i] == str[j]; j++) {
count++;
}
encode[pos++] = str[i];
encode[pos++] = count + 0x30;

i = j;
}
encode[pos] = '\0';

/* 圧縮文字列の表示 */
printf("圧縮した文字列:%s\n", encode);
fprintf(fp2, "%s", encode);

fclose(fp1);
fclose(fp2);

printf("ファイルをクローズしました。\n");

return 0;
}
742まちがって名前消しちゃいました。:2011/01/16(日) 22:14:36 ID:???
理解が浅いので教えてください。
char str[]="abcde";
で'd'を表示するには
printf("%c",str[3]);
ポインタでは
printf("%c",*(str+3));
ですよね。

char str[2][6]="abcde","vwxyz";
の'w'をポインタで表示したい場合はどうしたらよいでしょうか。
743まちがって名前消しちゃいました。:2011/01/17(月) 02:23:32 ID:???
>>742
まず、
  printf("%c",str[3]);

  printf("%c",*(str+3));
はまったく同じで、str[3] は *(str + 3) と書くのと一緒(これをシンタックスシュガーという)。
どちらもポインタ演算で、区別はない。
ひいては str[3] は 3[str] とも書けるし、*(3 + str) と書くのと一緒。

次に、
  char str[2][6]="abcde","vwxyz";
はコンパイルエラー。正しくはこう。
  char str[2][6]={"abcde","vwxyz"};

で、質問の答えは
  str[1][1]
744742:2011/01/17(月) 09:53:02 ID:???
>>743
1次元配列の説明ものすごく勉強になりました。本当に感謝です。
いろいろ驚きです。
745まちがって名前消しちゃいました。:2011/01/23(日) 18:54:12 ID:CjsfQYcS
すいません。コンパイルしようと思ったらvcvers32が外部と内部で実行できません。って
出てきたんですけど・・・・どうすればいいんですか?
746まちがって名前消しちゃいました。:2011/01/26(水) 04:22:00 ID:???
>>745
それC言語の話じゃないから、プログラム技術板の該当スレで質問したらいいと思うよ。
747まちがって名前消しちゃいました。:2011/01/30(日) 07:45:57 ID:???
ビット演算が速いのか試したかったのですが結果は同じでした。
Celeron(初期CPU超古いですが) windowsXPsp3  minGWを使っております。
ビット演算の比較に適さないプログラムかもしれませんが、
ビット演算はほぼ速度に影響しないのが実情でしょうか?

#include <stdio.h>
#define AAAAA 1000
int main(void){
int i,j,num,n;

scanf("%s",&n);
for(i=0;i<AAAAA;i++){
for(j=0;j<AAAAA;j++){
num=16/2
printf("[%d][%d]\n",i,j);
}
}
scanf("%s",&n);
for(i=0;i<AAAAA;i++){
for(j=0;j<AAAAA;j++){
num=16>>1
printf("[%d][%d]\n",i,j);
}
}
return 0;
}
748747:2011/01/30(日) 07:47:08 ID:???
>>747
「 ; 」が抜けてます。すません。
749まちがって名前消しちゃいました。:2011/01/30(日) 22:55:19 ID:???
文字列のポインタについて質問です。
char* a[5];
と宣言すると文字列五つ分のポインタができるとおもいますが、
この時点では文字列の長さがわからないのにどうやって宣言した文字列のメモリを確保しているんでしょうか?
750まちがって名前消しちゃいました。:2011/01/31(月) 13:48:57 ID:???
>>747
それ、最適化されています。
まず、2 のべき乗で割られる割り算の場合は、ビットシフトに置き換えられます。
次に、コンパイル時に答えのわかる演算は、コンパイラが計算してしまいます。

最適化を防ぐには、volatile 修飾子をつけて宣言した変数を仲介させる必要があります。

volatile int ans, num = 16, num2 = 2;
...
ans = num / num2;
...
ans = num >> 1;

最適化されていないと、除算は CPU が実行できる演算の中で特に重い演算なので、まったく
違いが無いということは無いです。
ただし、除算やビットシフトに比べて printf() がとてつもなく重い処理をしているので、有意な差
を感じにくいかも知れません。
要するに、このような実験をする場合はループ内で printf() を使ってはいけません。
751まちがって名前消しちゃいました。:2011/01/31(月) 13:49:12 ID:???
>>749
いやいやいや、確保していませんよ。
この宣言では a[0]、a[1]、a[2]、a[3]、a[4] の 5 つのポインタが作成されますが、
そのポインタ値がどこを指しているかは不定です。
勝手に文字列が確保されることは無いので、この 5 つのポインタを初期化や代入の前に使おう
とするとアクセスエラーになってプログラムが強制終了されるか、プログラムが想定外の動作を
したりするので気をつけてください。

なお、仮に、

char* a[5] = { "ab", "cde", "hijklmn", "opqrs", "tuvwxyz" };

と初期化された場合、文字列 "ab", "cde", "hijklmn", "opqrs", "tuvwxyz" はプログラムの特別
なアドレスに自動的に配置されます。
この自動確保されるメモリ領域は、大抵のコンパイラで標準では書き換え禁止メモリに配置され
るので、

a[1][0] = 'C';

などと文字列を書き換えようとするとアクセスエラーが発生してプログラムがクラッシュしますので
気をつけてください。

一方、char* a[5]; の時点でポインタは書き換え可能なスタックメモリに確保されているので、

a[3] = "OPQRS";

のように文字列 (正確には文字列へのポインタ) を代入する事は許されます。
752まちがって名前消しちゃいました。:2011/01/31(月) 15:02:48 ID:???
>>750
詳しい説明をありがとうございます。
このプログラムのようにPrintffがあるとビット演算が埋もれて
しまう感じになるんですね。
コンパイラってすごいんですね。そういえば確かに最適化で
答えがわかるものは答えが出た状態でコンパイルされるって
聞いたことある気がします。

演算部分もちょっといじって、printfを外に出して、演算が終わっ
たときに表示するようにして試してみます。

すごく勉強になりました。ありがとうございます。
753747:2011/01/31(月) 18:49:08 ID:???
>>750
計算する数値を入力させ、printfを外したところ明確な速度差が出ました。
ビット演算てすごいですね。
また、printfの重さを痛感しました。

計算によってはビット演算を使うようにこれからは考えて利用したいと思います。
本当に丁寧にありがとうございました。
754まちがって名前消しちゃいました。:2011/02/02(水) 17:36:04 ID:???
>>751
勘違いしてたみたいですね・・。
スッキリしました。
ありがとうございました
755まちがって名前消しちゃいました。:2011/02/10(木) 00:02:34 ID:???
線形リスト構造の使い方について質問です。
http://codepad.org/jwQMESxZ
1. mallocの使い方はあっていますか。
2. 解放はちゃんとできていますか。
どうぞよろしくお願いいたします。
756 ◆QZaw55cn4c :2011/02/10(木) 04:46:12 ID:???
>>755
free()忘れはないですし、いいと思います。
念入りに書くのだったら、malloc() の返り値が NULL かどうかチェックして、
NULL, すなわち malloc() が失敗したときには、たとえばエラーメッセージを表示して中断する、とかするのもいいかもしれません。
757まちがって名前消しちゃいました。:2011/02/10(木) 09:49:04 ID:???
>>755です。
mallocのエラー処理はあった方がいいんですね。
線形リスト構造はややこしくてこんがらがっていましたが
ちょっと自信つきました。添削アドバイスありがとうございました^^

758まちがって名前消しちゃいました。:2011/02/10(木) 13:03:53 ID:???
>>756
氏ね
759まちがって名前消しちゃいました。:2011/02/10(木) 17:51:59 ID:???
井include<stdio.h>
int main(void)
{
int i,t;
scanf("%d\n",t)
printf("%d\n",i+t);
return 0;
}

エラーがでます・・・何故でしょうか?
760まちがって名前消しちゃいました。:2011/02/10(木) 23:50:41 ID:???
>>759
エラーが出る理由はエラーメッセージに書いてあるよ
761まちがって名前消しちゃいました。:2011/02/15(火) 19:13:55 ID:???
a[100][100][100]みたいな配列を宣言すると、
メモリ不足かセグメンテーションフォルトになります。
メモリの制限を増やす方法ってありますか?
コンパイラはgccでOSはwindows7です。
よろしくお願いします。
762まちがって名前消しちゃいました。:2011/02/15(火) 21:37:54 ID:???
>>761
static 付けて宣言するか、malloc() 等で動的確保してください。
763まちがって名前消しちゃいました。:2011/02/16(水) 12:07:36 ID:???
配列を使うところで、


#define N 17000
#define M 14
...
...
int a[N][M];


このN,Mをまだ大きくしたいのですが、これ以上大きくすると
コンパイルはできるのですが実行できずクラッシュしてしまいます
どうすれば大きな値に設定できるようになるのでしょうか
いけめんなおにぃさま教えてくださいお願いします
764まちがって名前消しちゃいました。:2011/02/16(水) 15:01:00 ID:???
765まちがって名前消しちゃいました。:2011/02/16(水) 17:06:01 ID:???
>>764 ありがとうございます
static 使ったら少し余裕ができたのですが

a[2^30][30]
2^30*30=32212254720のメモリが必要でまだ足りないようです
これはスーパーコンピュータでもないと出来ないのでしょうか
766まちがって名前消しちゃいました。:2011/02/16(水) 19:20:20 ID:???
>>765
64bit 対応コンパイラでコンパイルして 64bit OS で動かせば、仮想メモリの許す限り
動作するんじゃないかな (スワップすれば動作速度は遅いと思うけど)。

32bit コンパイラ & 32bit OS では、4GB か 2GB 程度しかメモリ使えないから、そのまま
では無理だね。
30GB ものデータに一度にアクセスして処理をする事はほとんど無いと思うから、使わない
データをテンポラリファイルに吐き出して必要になったらメモリに読み込むという機構を
実装すれば、32bit でも行けるとは思う。
面倒だけど。
767まちがって名前消しちゃいました。:2011/02/16(水) 20:13:31 ID:???
>>766
32bitですしなんだか理解が出来そうにないので現状で満足することにします
ありがとうございました
768まちがって名前消しちゃいました。:2011/02/17(木) 13:31:53 ID:???
#include <stdio.h>
#define N 1000
int main()
{
int i,j,k,m,r;
int ttt;
   int numC[6][3] = {{0,0,1},{0,1,0},{1,0,0},{0,1,1},{1,0,1},{1,1,0}};
int Hantei[30][20][6] = {0};
int Dousou_Hantei[20][20][6] = {0};
int topolgy[27][6] ={{0,0,0,0,0,1}, {0,0,0,0,1,0}, {0,0,0,1,0,0}, {0,0,0,1,0,1}, {0,0,0,1,1,0},
{0,0,0,1,1,1}, {0,0,1,0,0,0},{0,0,1,1,0,0}, {0,1,0,0,0,0},
{0,1,0,0,0,1}, {0,1,0,1,0,1}, {0,1,0,1,1,1}, {0,1,1,0,0,0},
{0,1,1,0,0,1}, {0,1,1,1,0,1}, {1,0,0,0,0,0}, {1,0,0,0,0,1},
{1,0,0,0,1,0}, {1,0,0,1,1,0}, {1,0,0,1,1,1},{1,0,1,0,0,0}, {1,0,1,0,1,0},
{1,0,1,1,1,0}, {1,1,1,0,0,0}, {1,1,1,0,0,1}, {1,1,1,0,1,0}};
int num_2[N];
//1の部分の成分だけを抜き出す
for(j = 0; j < 27; j++){
ttt = 0;
for(m = 0; m < 6; m++){
if(topolgy[j][m] == 1){
for(r = 0; r < 3; r++){
Hantei[j][ttt][r] = numC[m][r];
Dousou_Hantei[j][ttt][r] = numC[m][r];
}//r
ttt++;
}//if
}//m
num_2[j] = ttt;
}//j
//Hanteiを表示テスト
for(i = 0; i < 27; i++){
for(j = 0;j < num_2[i]; j++){
for(k = 0;k < 3; k++){
printf("Hantei[%d][%d][%d]=%d %d ",i,j,k,Hantei[i][j][k],Dousou_Hantei[i][j][k]);
}//k
putchar('\n');
}//j
putchar('\n');
}//i
return(0);
}

HanteiとDousou_Hanteiを同じ値にしたいのですがなぜか、Hanteiの方に真逆の数値が出てきてしまいます
どこが間違っているのでしょうかご指摘お願いします
769まちがって名前消しちゃいました。:2011/02/17(木) 14:08:31 ID:???
自己解決しました
770まちがって名前消しちゃいました。:2011/02/22(火) 12:17:23.59 ID:???
C言語はflashみたいにサイトに埋め込んで
ブラウザ上で遊ぶみたいなゲームを作れるんでしょうか。
771まちがって名前消しちゃいました。:2011/02/22(火) 12:26:17.03 ID:???
>>770
ActiveX書けば作れる(ただし深いWindowsの知識が要る)
ちなみにFlashもActiveX
772まちがって名前消しちゃいました。:2011/02/22(火) 12:35:26.52 ID:???
>>771
プログラミングとか全く知らん状態でブラウザゲームとか色々作りたくて
Flexsdk+AS勉強しようかC勉強しようか悩んでたんですが
Cのほうが導入簡単、情報豊富、基本っぽいので
難しいだろうがCでいけるところまで頑張ってみようと思います。
早い御解答どうもありがとうです。
773まちがって名前消しちゃいました。:2011/02/22(火) 21:09:42.15 ID:???
windows7での既存のパスにc\Borland\Bcc55\binのパスを追加する方法を教えてくださいませm(._.)m
774まちがって名前消しちゃいました。:2011/02/23(水) 01:19:40.24 ID:???
>>773
それCじゃなくてWindowsの質問だから
Windows板かプログラム技術板の適当なスレに行くが吉
775Perl忍者lvl2(ニュートラル) ◆M5ZWRnXOj6 :2011/02/23(水) 20:29:01.50 ID:GojfTE43
うんそうだね よかったね
776まちがって名前消しちゃいました。:2011/02/23(水) 21:29:22.63 ID:???
>>773
それCだけどWindowsのCならコロンが抜けた質問だから、
ごみ箱以下の質問のようだ。それはここらヘンで質問を
行なうのがふさわしいが、しかし、回答できるスキルの
ある回答者が枯渇している。
777まちがって名前消しちゃいました。:2011/02/23(水) 21:43:19.72 ID:???
>>773

システム環境変数のPATH変数に新規の値(c:\Borland\Bcc55\Bin)を追加する

Windows 環境変数 Path の設定方法
http://openlab.ring.gr.jp/fumio/windows_environment_variable_ja.html
778まちがって名前消しちゃいました。:2011/02/24(木) 21:15:41.83 ID:mWUynOo0
1,2,3,4,5,6,7,8,9,10・・・・と自然数を際限なく順々に表すコードって何かありますでしょうか?
forを使う方法でしょうか?
779 ◆QZaw55cn4c :2011/02/24(木) 21:44:01.62 ID:???
780まちがって名前消しちゃいました。:2011/02/24(木) 21:50:55.99 ID:???
>>778
そうだ。それが基本だ。

while (true) {この中で初期値1の変数nをn=n+1するインクリメントn++と変数nを標準出力する}
http://www.mapee.jp/cpp/breakcontinue.html
forループで繰り返しするか、while文で繰り返しを行なう。(goto ラベルにジャンプ)
781まちがって名前消しちゃいました。:2011/02/25(金) 02:02:49.99 ID:XqVwcjVY
>>779,780 なるほど・・・勉強になります。ありがとうございました
782まちがって名前消しちゃいました。:2011/03/02(水) 20:59:18.25 ID:???
C言語とか関係ない?のかもしれませんがVisual C++を使ってプログラミングをしているときに
カーソルを打った文字上にあわせると点滅?ではなく■のようになってしまい、抜かしてしまった文字を
入れるのがとても不便です。どうすればいいのでしょうか?

説明下手ですが、何卒宜しくお願いします。
783まちがって名前消しちゃいました。:2011/03/03(木) 07:03:52.74 ID:???
>>782
よく分からないけどInsertキーの事?
プログラム技術板にVC++スレがあるからそっちで訊いた方がいいかも
784まちがって名前消しちゃいました。:2011/03/03(木) 07:20:48.91 ID:???
>>782
>>783の言うように、うっかりInsキーを押して、エディターが
挿入モードから上書きモードに変更されたのだと思う
785782:2011/03/04(金) 12:25:51.72 ID:???
>>783
>>784
どうやらInsertキーを押してしまっていたようです
教えていただきありがとうございます
786まちがって名前消しちゃいました。:2011/03/09(水) 14:58:55.67 ID:aAH8G0bv
C言語を使ってのGUIプログラムの作り方が学べる入門書がありましたら、お教えしてもらえないでしょうか?
手元にある書籍は独習C言語、C言語による最新アルゴリズム事典です。
787 ◆QZaw55cn4c :2011/03/09(水) 18:29:57.08 ID:???
788まちがって名前消しちゃいました。:2011/03/10(木) 07:17:03.98 ID:TOIeVChB
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************


http://sky.geocities.jp/ttl_ttl_ttl_pic/

NASMでC言語を作る NASMで高度な設計書類とNASMの簡単な利用方法のサイトです
C言語のHEADの作り方 DLLファイルの作り方が書いてあります
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
789まちがって名前消しちゃいました。:2011/03/29(火) 19:33:53.04 ID:???
int n = x
とかいうのはnというメモリにxを格納するということでいいんですか?
790 ◆QZaw55cn4c :2011/03/30(水) 01:23:00.15 ID:???
>>789
逆です。
x というメモリ領域に記憶されているデータを n にコピーする、という意味です。
791 ◆QZaw55cn4c :2011/04/05(火) 19:55:23.95 ID:???
西日本も福島原発の放射能に曝される。

4/7 予測 http://up3.viploader.net/ippan/src/vlippan198234.jpg
発表はドイツ気象庁 http://www.dwd.de/
792まちがって名前消しちゃいました。:2011/05/18(水) 18:02:09.70 ID:???
VBスレにも質問しましたが、こちらでも質問させていただきます。
現在VC++から変数の値をVBに渡してVBで処理するプログラムを作成しています。
VC++でのdll作成、読み込み
VBでのdll作成、読み込みはできるようになりました。
しかし以下のサイト
http://www.nextftp.com/swlabo/m5_cpp/hp_dll/dll_00.htm
を参考にVC++でdllファイルを作成しても
VBではどうしても参照してくれません。参照しようとすると
ファイルアクセスが可能で、有効なアセンブリまたはCOMコンポートであることを確認して下さい。
と出ます。
VC++は数値計算をかじった程度の知識しかないので、これ以上はお手上げです。
何がどういけないのか教えてください。
793まちがって名前消しちゃいました。:2011/05/18(水) 20:08:28.69 ID:???
792です。
すみません、もうひとつの質問スレに質問します。
お騒がせしました。
794まちがって名前消しちゃいました。:2011/05/29(日) 18:53:17.24 ID:TxdzeraO
コマンドプロンプトからコンパイルするときに、アクセスが拒否されました、
とでてしまいます。フラッシュメモリのデータでやっててダメだったので、
Cのところに移して再度やってもダメでした。
管理者としてコマンドプロンプトを実行もやってみましたが、同じです。
どうやったら読み込んでくれますか?
795まちがって名前消しちゃいました。:2011/05/29(日) 21:37:14.30 ID:???
>>794
情報不足もいいところ

コンパイラの名前とバージョン
OSの名前とバージョン
ファイルシステムとフォルダ(ディレクトリ)のアクセス権
環境変数
実際に打ったコマンドライン

以上の詳細よろしく
796 忍法帖【Lv=1,xxxP】 :2011/05/30(月) 12:23:41.17 ID:???
797まちがって名前消しちゃいました。:2011/05/31(火) 15:24:02.59 ID:???
10進数から2進数に変換させるプログラム教えてください 
できれば計算過程も表示させたいのですができるのでしょうか?
798まちがって名前消しちゃいました。:2011/05/31(火) 23:24:06.37 ID:???
C言語を習い始めて思うが、自分の頭の中でイメージした仕様にC言語の文で表す事が出来ないんだけど、これって訓練で補えるの?それともセンス?
習い始めて3ヵ月です。
799まちがって名前消しちゃいました。:2011/06/01(水) 22:38:50.93 ID:eNJj9spN
visual c++ 2010 express 使ってるんですけど
プログラムを実行するとコマンドプロントがすぐに消えてしまいます
どういった対策をすればいいでしょうか?
800まちがって名前消しちゃいました。:2011/06/02(木) 01:11:45.59 ID:???
データを入力して4次行列式を計算させるプログラムを作りたいんですがどなたか書いてもらえませんか?
のってるサイトとかないですかね?
801まちがって名前消しちゃいました。:2011/06/02(木) 17:43:52.09 ID:???
>>799
/K オプションを付けて起動。
802まちがって名前消しちゃいました。:2011/06/04(土) 18:49:46.63 ID:???
C言語初心者です。授業についていけないので独学を始めました。

以下は現在作成途中のソースなのですが
AとBを足した数値が7.920000と表示されてしまいます。
実際は7.92のはずなんですが…原因がわかりません。
考えられる原因として何があるでしょうか?
本当に初心者なのでうまく伝えられず申し訳ないのですが
教えて頂けると幸いです。

#include <stdio.h>

int main()
{
float a=2.34,b=5.58,c=6.765;

printf("a = 2.34\nb = 5.58\nc = 6.765\n");
printf("(a + b)=%f",a+b);
printf("何かキーを押してください");
printf("お疲れ様でした");
return 0;
}
803まちがって名前消しちゃいました。:2011/06/04(土) 19:07:10.22 ID:???
7.920000=7.92
別に間違ってはいないよ。

804まちがって名前消しちゃいました。:2011/06/04(土) 19:11:32.52 ID:???
表示する桁数を変えたいってなら、
printf のマニュアル参照だな。

ただの "%f" だけでは小数点以下を何桁表示するかが指定できていない。
"%5.2f" みたいに、桁数を指定する書き方を調べるといいよ。
805まちがって名前消しちゃいました。:2011/06/07(火) 10:38:37.57 ID:dnBMdgI6
>>801
どういうことですか?
806まちがって名前消しちゃいました。:2011/06/07(火) 11:13:02.26 ID:???
>>801>>799 のあげ足を取ってるだけ。
>>799 は多分コマンドプロンプトを起動してない。
コンソールアプリを直にダブルクリック等で起動した場合は
conhost.exe とそのアプリだけが起動される。
807まちがって名前消しちゃいました。:2011/06/08(水) 00:29:26.93 ID:HthoJMzX
次のオーダー記法に関する問題が分かりません。。
自然数上の関数Sが、以下のように再帰的に定義されている。
このSについての次の問いに答えよ。
 S(0)=1, S(n)=6T( [n/2] ) + 8n
( [ n/2 ] はn/2の切捨て)
(1) S(n) = O(n^k)とはなるが、S(n) = O(n^(k-1))にはならない
自然数k>=2を示せ。
(2) 上の問いの答えkに対して、S(n)=O(n^k)となることを証明せよ。
(3) 上の問いに対する証明論法ではS(n)=O(n)の証明はできない。
どこで議論が破たんするかを示せ。

ご教授お願いします。
808まちがって名前消しちゃいました。:2011/06/08(水) 09:12:11.21 ID:???
独学していたのですが、次の漸化式の正確な値を計算するプログラムがわかりません。

C_N=C_(N/2)+1 (N>=2の時)
C_1=0

因みにこの問題はアルゴリズムの解析という章の章末問題で、
漸化式の他にはO記法等が記述されている章でした。
よろしくお願いいたします。

809まちがって名前消しちゃいました。:2011/06/09(木) 21:46:40.88 ID:16nLDsjd
総選挙に夢中になっていたらレポートが終わりませんでした><
きたりえ推しの皆様教えてください!

以下の処理を実現するための式を考えてみよう。(C言語)
(1)xの下位ビットをyへ、yはshort型とし、下位4ビット以下は1をセットする。
(2)xの下位ビットをchar型変数xの上位4ビットへ、yの下位ビットをzの下位ビットへ代入する。
810まちがって名前消しちゃいました。:2011/06/13(月) 18:49:16.19 ID:???
>>809
「下位ビット」という言葉の意味を明確にしてもらおうか
811まちがって名前消しちゃいました。:2011/06/14(火) 02:03:02.81 ID:???
ファイル操作で、inputファイルから
203 210 221 200 201 153 255 100 123
のようにスペースで区切られているものを
fscanfで読み込んで、それを加工した後に、outputファイルに再びスペースで区切った形で書き出したいのですが
そのように書き出すためにはどういった操作をすればいいのでしょうか?

fputsを使うと、スペースで区切られずに書き込まれてしまいますよね・・・?
812まちがって名前消しちゃいました。:2011/06/15(水) 05:23:40.09 ID:???
>>811
細かい書式指定をするなら、fprintf() 使えばいいんじゃないのかな
813まちがって名前消しちゃいました。:2011/06/16(木) 19:18:23.62 ID:???
#include <stdio.h>
int main(void)
{
int a;
int b;
int c;
int d;
printf("1つ目の整数を入力せよ\n");
scanf("%d",&a);
printf("2つ目の整数を入力せよ\n");
scanf("%d",&b);
printf("3つ目の整数を入力せよ\n");
scanf("%d",&c);
printf("4つ目の整数を入力せよ\n");
scanf("%d",&d);
printf("【 %d , %d , %d , %d 】\n",a,b,c,d);

if(a<=b&&a<=c&&a<=d)
{
printf("最小値は、%d\n",a);
}
else if(b<=a&&b<=c&&b<=d)
{
printf("最小値は、%d\n",b);
}
else(c<=a&&c<=b&&c<=d)
{
printf("最小値は、%d\n",c);
}

if(d<=a&&d<=b&&d<=c)
{
printf("最小値は、%d\n",d);
}


if(a>=b&&a>=c&&a>=d)
{
printf("最大値は、%d\n",a);
}
else if(b>=a&&b>=c&&b>=d)
{
printf("最大値は、%d\n",b);
}
else (c>=a&&c>=b&&c>=d);
{
printf("最大値は、%d\n",c);
}
if (d>=a&&d>=b&&d>=c)
{
printf("最大値は、%d\n",d);
}

printf("何かキーを押して下さい\n");
getch();
printf("END\n");

return 0;
}
814まちがって名前消しちゃいました。:2011/06/16(木) 19:20:12.84 ID:???
上記のソースを実行するとelse(c<=a&&c<=b&&c<=d)の部分を
「else(c<=a&&c<=b&&c<=d);」にしろと出ます。
教科書にはそんな記述がないのですが、「;」をつけるのが正しいのでしょうか?
また、上記のソースの間違っているところがわかりません。
教えて頂けると嬉しいです。
815まちがって名前消しちゃいました。:2011/06/16(木) 21:44:54.77 ID:???
else に条件は付けられないだろ。
816まちがって名前消しちゃいました。:2011/06/18(土) 00:35:37.79 ID:3FGF4+sV
X ++;
X %= 4;
ならば、
++X%=4;
と出来ると思うのですが、
X += 5;
X %= 4;
を一行に纏めることは出来ますでしょうか?
817まちがって名前消しちゃいました。:2011/06/18(土) 03:39:45.61 ID:???
X = (X+5)%4;
818まちがって名前消しちゃいました。:2011/06/18(土) 04:05:08.62 ID:???
> ++X%=4;

できるか? これ
819まちがって名前消しちゃいました。:2011/06/22(水) 20:53:03.50 ID:xzD10Cxu
下のcodeで"-dog"は検索可能だが2つ目(-cat)が検索出来ません。
何が良くないのでしょうか?
enum mode {dog=0,cat,};
struct table {int key; char *opt;};
static struct table opt1[] = {
{.key=dog,.opt="-dog",},{.key=cat,.opt="-cat",},
};
********
#include <search.h>
int cmp(const void *m1, const void *m2){
struct table *mi1=(struct table *)m1;
struct table *mi2=(struct table *)m2;
return strcmp(mi1->opt, mi2->opt);
}
int main(int argc,char *argv[]){
struct table key; key.opt=argv[1];
lfind(&key,opt1,(size_t*)opt1,sizeof(struct table),(int(*)(const void*, const void*))cmp);
return 0;}
820まちがって名前消しちゃいました。:2011/06/23(木) 18:43:51.89 ID:???
>>819
lfind() の第 3 引数が間違っている。
第 3 引数には、「要素数を格納している変数へのポインタ」 を指定しなければならない。
(size_t*)opt1 なんて誤魔化してはいけない。
要素数の求め方は、sizeof(opt1) / sizeof(struct table)。
この結果を適当な変数 (例えば int num; ) に代入し、第 3 引数にポインタ演算子 (&) をつけて指定する。

正しいコードはここに。
http://codepad.org/pha78RbG

あと、すぐに答えを得られないからといって、マルチポストをするのをやめる事。
回答する方もどこにレス付けていいかわからないし、無駄に大勢の目に触れてその時間を
奪う事になる。
失礼だろ?

以下ちょっかい。

> struct table {int key; char *opt;};
key の型が enum mode ではなく int なのが気になる。

> {.key=dog,.opt="-dog",},{.key=cat,.opt="-cat",},
最近のコンパイラはこれが通るのか・・・

> (int(*)(const void*, const void*))cmp
このキャストは要らない。
821まちがって名前消しちゃいました。:2011/07/03(日) 11:37:58.94 ID:grG1DO3n
最大値探索を行うプログラムです。?部分が分かりません。学校の演習で、再帰を使って実装します。
どなたか教えてください。
#include<stdio.h>
int d[999];
int main(){
int i,n;
int max(int i,int n);

scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&d[i]);
}

for(i=1;i<=n;i++){
printf("%5d",d[i]);
if(i%10 == 0){break;}
}
printf("\n最大値 : %d \n",max(1,n));
}

int max(int i,int j){
int z,z1,z2,k;
if( i==j ){
z = ?;
}else{
k = (i+j)/2;
z1 = ?;
z2 = ?;
if(z1>z2){
z = z1;
}else{
z = z2;
}
}
return z;
}
822まちがって名前消しちゃいました。:2011/07/03(日) 23:59:30.02 ID:???
>>821
十分テストしてないけど多分こう

z = d[i];
z1 = max(i, k);
z2 = max(k + 1, j);
823まちがって名前消しちゃいました。:2011/08/02(火) 09:50:05.94 ID:???
>>821
何この半池沼
824まちがって名前消しちゃいました。:2011/08/05(金) 00:50:34.44 ID:???
>>823
何この池沼
825まちがって名前消しちゃいました。:2011/08/08(月) 22:06:07.55 ID:hGJCCoga
C言語初心者です。
int main(int argc, char *argv[]){というのはargcが引数の数を表していて、argvがその引数の内容であると知りました。
引数に数字を一つ渡して、それを60で割った余りをだすコードを作ろうとして、
int sam = argv[1]%60;
としたのですが、「式には整数型、もしくは列挙型を使用する必要があります」と警告されました。
これはどうすればこの警告をなくすことができるのでしょうか?
826まちがって名前消しちゃいました。:2011/08/09(火) 09:07:06.06 ID:???
>>825
整数型に変換すればいい

そもそもargvに数字が入ってるとは限らないんだが
827まちがって名前消しちゃいました。:2011/08/22(月) 23:43:15.68 ID:???
プログラミングするにはパソコンでなにかインストールしなきゃならないの?やっぱり金かかる?
828まちがって名前消しちゃいました。:2011/08/23(火) 02:07:37.95 ID:???
>>827
今は無料で大抵そろう。インストールは必要。
829まちがって名前消しちゃいました。:2011/09/06(火) 17:28:06.42 ID:JTMuNuTW
http://codepad.org/VDC8hvKu

このコードで構造体Bの中の構造体Aの値だけを変えたいんですがどこを直せばいいですか?
830まちがって名前消しちゃいました。:2011/09/06(火) 18:08:18.91 ID:???
マルチ乙
配列渡してねーじゃん
831まちがって名前消しちゃいました。:2011/09/14(水) 22:19:44.64 ID:L/2Ssg7p
           /  (___  ___) ヽ
           ./     ノ 人 ヽ    ヽ
    __    ./    //  ヽ ヽ    .ヽ   / ̄\
  ./ ○ ヽ、 /    (__)  (_)    ヽ/  ○  \
/      \,,,--―――''''''''''''''''''''――-/        ヽ
..⌒‐-,,,,_  /:/ヽー―――-、,,__,,,,-―――:||  _,,;-‐''"⌒~~~
     .ヽ/::||::::::::::   (●)    (●)   ||/ヽ
      く ::||:::::::::::::::::   \___/    ||:::::::::ヽ
       ヽヽ:::::::::::::::::::.  \/     ノ_/
【ゴールデンレス】
このレスを見た人はコピペでもいいので
10分以内に3つのスレへ貼り付けてください。
そうすれば14日後好きな人から告白されるわ宝くじは当たるわ
出世しまくるわ体の悪い所全部治るわでえらい事です
832まちがって名前消しちゃいました。:2011/09/23(金) 13:01:49.78 ID:???
よくゲームとかで字幕が流れてる時にボタン押すと字幕が全部表示されたりしますよね?ギャルゲーとかであるようなやつです。
あれってどういうプログラム組んでるのですか?
833まちがって名前消しちゃいました。:2011/09/23(金) 21:50:31.22 ID:???
>>832
スレ違い
Cに関する質問じゃない
834まちがって名前消しちゃいました。:2011/10/02(日) 16:41:41.73 ID:+8kbX0rX

みみずん検索 違法の可能性
http://mimizun.com/index1.html

2ちゃんねるの固定ハンドルみみずんは、2ちゃんねるの過去ログを自らのサーバーに勝手に保存し、
それを無料でネット上に公開している。
この中には2ちゃんねるで既に削除されたはずの危険なスレッドや書き込みが多数残っており、
誰かが気づいてメールで対応しなければ削除されることはない。
更にみみずんはこのような過去ログをCD-Rに取り込み、有料で売っていたという。
835まちがって名前消しちゃいました。:2011/10/02(日) 18:50:36.36 ID:???
>>833
遅れてすいません。
これをCでどうやって組んでるのかを知りたいのです
836まちがって名前消しちゃいました。:2011/10/03(月) 01:42:43.47 ID:???
>>835
その「ゲームとかで字幕が流れてる時」の組み方によって変わるから
一概に言えない
仕掛けたタイマーのイベント発生の間隔を変えるとか、ボタン (?) の
入力のポーリングをして時間計って出力タイミングを変化させるとか、
やりかたはいろいろある
そういうことをするには C 標準の機能ではできず、OS やライブラリ
等の機能を頼ることになる

実際的なやり方は、こんなスレでこんな質問をするお前に理解できる
とは思えないし、そんなに困難な処理ではないので自分で思い付かな
いようなら自作しようと思うのはやめた方がいい
837まちがって名前消しちゃいました。:2011/10/28(金) 22:01:46.50 ID:???
最大値の求め方について教えてください。
配列の最大値を求めたくて
下のプログラムを作ったのですが,うまく動作しません。

for( maa=1 , qxr = qxxr[0] ; maa < 10; maa++) {
if( qxr < qxxr[maa] ) {
qxr = qxxr[maa];
qxxxr = maa;
}
}

printf("最大のq*rは%dのとき%f\n",qxxxr,qxr);

最大のq*rは0のとき0
と表示されるのですが間違っているところがわかれば教えてください。
配列は下のような感じです.

qxxr[0]=40.800000
qxxr[1]=41.600000
qxxr[2]=0.000000
qxxr[3]=0.000000
qxxr[4]=40.000000
qxxr[5]=0.000000
qxxr[6]=0.000000
qxxr[7]=40.000000
qxxr[8]=0.000000
qxxr[9]=0.000000
838まちがって名前消しちゃいました。:2011/10/29(土) 16:30:56.22 ID:???
さPC初心者が職業訓練所で半年勉強しただけでC言語ってとれる?
839まちがって名前消しちゃいました。:2011/10/31(月) 13:33:41.73 ID:???
aのb乗はcを求めたいのだがforの中が違うらしい
for (i=1; i<=b; i++) {
c = c * a;
}

ぼっちだから聞く友達いないのでよろしく頼みます
840まちがって名前消しちゃいました。:2011/10/31(月) 14:21:42.22 ID:???
cの初期値は?
841まちがって名前消しちゃいました。:2011/10/31(月) 15:44:16.22 ID:???
forの前にやりました
実行したら16行目にエラーがあるらしいのでそこだけ書きました
842まちがって名前消しちゃいました。:2011/10/31(月) 17:10:13.75 ID:???
そこだけ見てもおかしくないから、どっか別のとこのエラーが伝播している
843まちがって名前消しちゃいました。:2011/10/31(月) 21:31:15.60 ID:???
はじめまして.
関数に与える引数を動的に変更したいのですがどうすればいいでしょうか.
vprintfの第2引数va_listを動的に作成するようなイメージです.
具体的にはリスト構造で文字列や数値が入ったキューから,データ型に基づいて%dや%cを構築しつつ,
関数のコールスタックにデータを積み上げてvprintfを呼ぶようなことをしたいのです.

単純な表示のみであればprintfやstd::coutをキューの長さ分呼べばいいと思うのですが,
可変長引数で呼ぶ場合にどのようにすればいいかわからず困っています.
844843:2011/10/31(月) 22:04:40.82 ID:???
C++のメンバ関数へのポインタとインスタンスが分かっている前提として,
メンバ関数のコールスタックをインラインアセンブラで直接積んでメンバ関数を呼ぶような方法でもいいです.
アーキテクチャはx86_64gccかllvmです.
845まちがって名前消しちゃいました。:2011/10/31(月) 22:36:07.13 ID:???
>>842
なるほど、もう一度見直してみます
846まちがって名前消しちゃいました。:2011/11/01(火) 18:09:37.42 ID:/Wwxvwkw
5が出るまで数値を入力した時に
入力された数列を最大値と最小値を入れ替えて左から順に並べた状態にするプログラムの作り方を教えてください

配列で最大値と最小値だけを入れ替えることができないです
847まちがって名前消しちゃいました。:2011/11/03(木) 22:35:38.23 ID:???
C勉強し始めたばかりなんですが気になってるプログラムがあります。
ttp://akabas.net/lib/CTask.aspx?id=105のページのナンバーズっていうゲームなんですが23行目から30がよく分からないんです><
どなたか解説してもらえませんか?
848まちがって名前消しちゃいました。:2011/11/04(金) 00:19:42.35 ID:???
numbers[0]〜[3]にばらばらな0〜9までの整数を代入しているところ?
849まちがって名前消しちゃいました。:2011/11/04(金) 00:37:19.08 ID:???
4つの整数を被らなくなるまで何度も乱数で作ってる
賢くも分かりやすくもない方法なのでむしろ自分で分かりやすいように直してみてはいかが
850まちがって名前消しちゃいました。:2011/11/04(金) 00:38:29.75 ID:???
>>848さんそこからの行です。いまいちよくわからない。
851まちがって名前消しちゃいました。:2011/11/04(金) 16:26:31.33 ID:???
>>846リストを使ってみてはどうかの?ソースが長くてすまんの皆の衆

struct pair{
unsigned int value;
struct pair*next;
};
struct pair*new(int arg){
struct pair*result=(struct pair*)malloc(sizeof(struct pair));
result->value=arg;
result->next=0;
return result;
}
void delete(struct pair*arg)
{if(arg->next!=NULL)delete(arg->next);free(arg);}
struct pair*find_max(struct pair*arg){struct pair*result;if(arg->next!=NULL){result=find_max(arg->next);if(result->value<arg->value){result=arg;}}else{result=arg;}return result;}
struct pair*find_min(struct pair*arg){struct pair*result;if(arg->next!=NULL){result=find_min(arg->next);if(arg->value<result->value){result=arg;}}else{result=arg;}return result;}
void print(struct pair*arg){fprintf(stdout,"%d ",arg->value);if(arg->next!=NULL)print(arg->next);}
int main(int argc,char**argv){
struct pair*head=NULL,*cuurent=NULL,*max=0,*min=0;
while(1) /*Loop of input*/
{
char buffer[256];
unsigned int input;
sprintf(buffer,"Input a number:");
fputs(buffer,stdout);
fgets(buffer,256,stdin); /*Receive user input*/
input=atoi(buffer);
if(head==NULL){
head=new(input); /*Allocated memory added at last */
current=head;
}
else{
current->next=new(input); /*Allocated memory added on top */
current=current->next;
}
if(input==5)break; /*Ended loop at input 5 */
}
max=find_max(head); /*Recursive find max index out */
min=find_min(head); /*Recursive find min index out */
min->value^=max->value; /* Swap the values between... */
max->value^=min->value; /* MAX */
min->value^=max->value; /* & MIN */
print(head); /*Recursive output to console */
delete(head); /*Recursive free the allocated memory */
return 0;
}
852まちがって名前消しちゃいました。:2011/11/15(火) 22:33:42.65 ID:???
チェスを改造してオリジナルルールを追加してネット対戦をしたいのですが
通信対戦が可能な基本的なチェスができるソースコードどっかにありませんか?
853まちがって名前消しちゃいました。:2012/01/15(日) 21:59:16.66 ID:RjKVfO1x
kansu1(){
int i;
for (i=1; i<=2;i++){
printf("kansu1のi=%d\n",i);
}
return;
}
main(){
int i;
for (i=1; i<=5;i++){
printf("mainのi=%d \n",i);
kansu1();
}
}
このプログラムの変数iをグローバル変数にするためには,
int i;

kansu1(){
for (i=1; i<=2;i++){
printf("kansu1のi=%d\n",i);
}
return;
}

main(){
for (i=1; i<=5;i++){
printf("mainのi=%d \n",i);
kansu1();
}
}
であってますよね?
グローバル変数にしたときの続行結果が
mainのi=4
kansu1のi=1
kansu1のi=2
がループするような結果になります。
グローバル変数にすると,なぜこうなるのでしょうか?
854まちがって名前消しちゃいました。:2012/01/16(月) 03:47:11.32 ID:???
kansu1が終了した時点でiに何が入っているか考えれば分かるよ
855まちがって名前消しちゃいました。:2012/10/15(月) 10:55:18.77 ID:???
終端文字 \0 の意味がよくわかりません・・・・。
苦しんで覚えるC言語というサイトで勉強しているのですが、

#include <stdio.h>

int main(void)
{
char str[6] = {'M','A','R','I','O','\0'};
printf("%s\n",str);
return 0;
}

実行結果:MARIO

もしも文字列にEOSがなかった場合は、配列の先まで文字列として扱われるので、
偶然にどこかで0(EOS)が見つかるまでは、
延々と文字列が表示され続けることになり、とても困ります。

↑これの意味がよくわからないです。
856まちがって名前消しちゃいました。:2012/10/31(水) 18:51:06.55 ID:???
どなたかこの問題を解いて下さい…
お願いします

三つのint型整数の最小値を返す関数min()を作成しなさい。ただし、二つのint型整数の小さい方の値
を返す関数minof()も作成し、min()はminof()を必ず2回呼ぶものとする
857まちがって名前消しちゃいました。:2012/10/31(水) 18:52:50.59 ID:???
すみませんがあげさせて頂きます。
858まちがって名前消しちゃいました。:2012/11/05(月) 17:01:17.09 ID:???
>>856
それそのまま問題の通りに書くだけじゃん
解くような問題か?
859まちがって名前消しちゃいました。:2012/11/10(土) 09:19:44.25 ID:R3wlFXNm
仕事でCが必要で勉強しようと思うんですが
お勧めの本を教えてください
860まちがって名前消しちゃいました。:2012/11/11(日) 00:53:31.86 ID:nk6sceGT
課題がどうしても分からず困っています。分かる方おしえてください。

data.datを入力し構造体型の配列に格納する(データ件数は50件以下,EOFになるまで入力)
次に<CTRL>Dが押されるまで学生番号をキー入力し,その氏名と得点を表示する。
学生番号の探索には二分探索法を使う。学生番号が存在しない場合は、存在しないことを
示すメッセージを表示する。
[実行例]
学生番号を入力してください ←入力要求のメッセージ(scanfの前に毎回入れる)
1012
1012番Sonoda Mari 得点=42点   ←学生番号,氏名,得点を表示
学生番号を入力してください
1001
1001番Ando Ichiro 得点=73点
学生番号を入力してください
1016
1016番Nakai Kanji 得点=49点
学生番号を入力してください
1000
1000番なし
学生番号を入力してください(<CTRL>D=終了)
<CTRL>D
861まちがって名前消しちゃいました。:2012/11/11(日) 00:55:35.88 ID:nk6sceGT
いちよ私が書いてみたものを載せます。
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
struct GDATA
{
int bango;
char sei[11],mei[11];
int tokuten;
};
struct GDATA seiseki[50], tmp;
int i,lo,hi,flg, kensuu, bango;
FILE*fp;
if((fp=fopen("data-a.dat","r"))==NULL)
{
printf("data-a.dat OPEN ERROR!\n");
exit(1);
}
for(kensuu=0;fscanf(fp,"%d%s%s%d",&tmp.bango, tmp.sei, tmp.mei, &tmp.tokuten)!= EOF;kensuu++)
{
seiseki[kensuu] = tmp;
}
printf("学生番号を入力してください\n");
while(scanf("%d", &bango)!= EOF)
lo=0;
hi=50
flg=0;
while(flg==0&&lo<=hi)
{
i=(lo+hi)/2;
if(bango!=seiseki[i].bango)
{
if(bango<seiseki[i])hi=i-1;
elselo=i+1;
}
else flg=1;
}
if(flg==1)printf("%d番%s %s 得点=%d点\n",seiseki[i].bango,seiseki[i].sei,seiseki[i].mei,seiseki[i],mei);
else printf("%d番なし\n",seiseki[i].bango);
return 0;
}
862まちがって名前消しちゃいました。:2012/11/17(土) 01:24:44.26 ID:???
ナンバープレースのプログラムを作ろうとしているのですが意図していない数値が入ってしまいうまくいきません
作成途中のものですが原因を指摘してもらえないでしょうか
#include <stdio.h>
int main (void)
{
struct hyou
{
int a,b,c;
int x;
};

struct hyou data[3][3];

int i,j,cnt,l,r;
int s;

for(i = 0;i < 3;i++){
for(j = 0;j < 3;j++)
{
printf("[%d][%d]に値がある場合は1を無い場合は0を入力",i,j);
scanf("%d",&amp;data[i][j].x);

if(data[i][j].x)
{
printf("[%d][%d]の値を入力",i,j);
scanf("%d",&amp;s);
switch(s)
{
case '1':
data[i][j].a = 1;
data[i][j].b = 0;
data[i][j].c = 0;
break;
case '2':
data[i][j].a = 0;
data[i][j].b = 1;
data[i][j].c = 0;
break;
case '3':
data[i][j].a = 0;
data[i][j].b = 0;
data[i][j].c = 1;
}
}else{
data[i][j].a =1;
data[i][j].b =1;
data[i][j].c =1;
}
}
}
return 0;
}
863あぼーん:あぼーん
あぼーん
864まちがって名前消しちゃいました。:2013/04/06(土) 23:33:56.32 ID:???
ナンバーズの当たり番号を表示するプログラムを作りたいです
どの様なアルゴリズを使えば良いのか教えてください
865まちがって名前消しちゃいました。:2013/06/05(水) 23:49:06.98 ID:???
C言語を始めます。
プログラムなんて何もかじったこともないのですがおすすめの参考書ありますでしょうか?
866まちがって名前消しちゃいました。:2013/10/03(木) 17:29:03.11 ID:???
まずはアセンブリから始めよう
867まちがって名前消しちゃいました。:2013/10/09(水) 12:51:10.66 ID:rZ7xdW8U
ヘッダファイルって必要なものしかインクルードしちゃいけないの?
めんどくさいから標準的なやつは全部インクルードしちゃえばいいやんって
思うんだけど。
もちろん、どのヘッダを読むかで呼び出される関数が違うとかマクロになる
とかするやつは考えるとしてさ。
868まちがって名前消しちゃいました。:2013/10/09(水) 16:19:52.43 ID:7FPOrtuM
  ★★★放射線ホルミシス効果は、天才を産むか★★★
  http://jbbs.livedoor.jp/bbs/read.cgi/study/3729/1069922074/88
  http://jbbs.livedoor.jp/bbs/read.cgi/study/3729/1069922074/113-114

  この掲示板に優秀な書き込みをして、総額100万円の賞金をゲットしよう!(*^^)v
      http://jbbs.livedoor.jp/study/3729/
869まちがって名前消しちゃいました。:2013/10/26(土) 00:06:15.61 ID:???
>>867
インクルードの記述をみて、そのコードが何をしているのかを判断する材料にもなるので、
そういう意味では少ないほうがいいのかもしれません。
870まちがって名前消しちゃいました。
>>867
コンピューターの記憶装置がまだフロッピーディスクとかの頃、
使いもしないファイルをインクルードするとコンパイルするのに
結構無駄な時間がかかったんよ。今はその名残りかと思われ。