C言語を今日から始める僕に1から教えるスレ

このエントリーをはてなブックマークに追加
442デフォルトの名無しさん:2007/02/10(土) 23:59:58
大丈夫、あんたみたいな日本語でもちゃんと通じるように、いろんな書き方でも(辻褄が合っているなら)ちゃんと動く。
443 ◆SH1gdMMuNU :2007/02/12(月) 21:38:41
>>442
なるほど

さて、ゲ製作は全然進んで無い・・・・
とりあえず当たり判定を四角から多角形にしようと試みて
八角形にしようと座標を取って
線で結んでそれを自機の上に乗っけてみたかったのに
式が間違ってたらしく、自機が左上の0,0にいるときは確かに正しく乗ってるんだけど動かすと八角形の点結んだ線が拡大縮小した・・・

  struct board {int idoo, x, y, w, h;};//自機スピードxy,width,height
  struct board jiki = {5, 100, 100, 200, 200};

    MoveToEx(hdc_mem, jiki.x+(jiki.w-jiki.x)/2, jiki.y, NULL);
    LineTo(hdc_mem, jiki.x+(jiki.w-jiki.x)/2, jiki.y+(jiki.h-jiki.y));

    MoveToEx(hdc_mem, jiki.x, jiki.y+(jiki.h-jiki.y)/2, NULL);
    LineTo(hdc_mem, jiki.x+(jiki.w-jiki.x), jiki.y+(jiki.h-jiki.y)/2);

    MoveToEx(hdc_mem, jiki.x+((jiki.w-jiki.x)/8), jiki.y+((jiki.h-jiki.y)/8), NULL);
    LineTo(hdc_mem, jiki.x+((jiki.w-jiki.x)/8)+(jiki.w-jiki.x)-((jiki.w-jiki.x)/4), jiki.y+((jiki.h-jiki.y)/8)+(jiki.h-jiki.y)-((jiki.h-jiki.y)/4));

    MoveToEx(hdc_mem, jiki.x+((jiki.w-jiki.x)/8)+(jiki.w-jiki.x)-((jiki.w-jiki.x)/4), jiki.y+((jiki.h-jiki.y)/8), NULL);
    LineTo(hdc_mem, jiki.x+((jiki.w-jiki.x)/8), jiki.y+((jiki.h-jiki.y)/8)+(jiki.h-jiki.y)-((jiki.h-jiki.y)/4));

初めてこんな読みにくいもの書いたよ
444デフォルトの名無しさん:2007/02/13(火) 00:45:25
ああ・・・・ほんと酷い。2時間くらいかかった・・・・
自分の頭を疑うよ・・・
でもこれで何とか当たり判定が四角じゃ無くなる・・・
これを式にするのもまた時間かかるから明日だ・・・・・・

MoveToEx(hdc_mem, jiki.x+jiki.w/2, jiki.y, NULL);
LineTo(hdc_mem, jiki.x+jiki.w/2, jiki.y+jiki.h); //頂点から真下

MoveToEx(hdc_mem, jiki.x, jiki.y+jiki.h/2, NULL);
LineTo(hdc_mem, jiki.x+jiki.w, jiki.y+jiki.h/2); //横真っ直ぐ

MoveToEx(hdc_mem, jiki.x+jiki.w/8, jiki.y+jiki.h/8, NULL);
LineTo(hdc_mem, jiki.x+7*jiki.w/8, jiki.y+7*jiki.h/8);//斜め1

MoveToEx(hdc_mem, jiki.x+7*jiki.w/8, jiki.y+jiki.h/8, NULL);
LineTo(hdc_mem, jiki.x+jiki.w/8, jiki.y+7*jiki.h/8);//斜め2
445デフォルトの名無しさん:2007/02/13(火) 04:16:11
先に調べてからやるべきだったwwww
当たり判定を丸にするには丸の中心からの距離を調べればいいのか・・・
八角形にする意味ってあんまり無かった
まぁいいや・・・いつかこの経験は役に経つだろう・・・疲れた。作業時間長いわりに全然進まないんだぜ
もうほんとに寝るぽ
446助けて・・・:2007/02/15(木) 16:51:48
■プログラム課題:最小値を算出するプログラムを作る

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

誰かお助けください!!
447デフォルトの名無しさん:2007/02/15(木) 16:56:52
>>446
スレタイ見ろ
ここは「C言語を今日から始める」やつにしか教えないスレだ
ついでに言えばマルチするやつに明日の太陽を見る資格はない
448デフォルトの名無しさん:2007/02/15(木) 17:01:03
#include <stdio.h>

int min3(int a, int b, int c)
{
if(a <= b) if(a <= c) return a; else return c;
else if(b <= c) return b; else return c;
}

int main(void)
{
int a, b, c;
printf("3つの整数を入力してください。\n");
printf("整数1\n");
scanf("%d", &a);
printf("整数2\n");
scanf("%d", &b);
printf("整数3\n");
scanf("%d", &c);
printf("最も小さい整数は%d\n", min3(a, b, c));
}

面倒だから scanf のエラーチェックをしていない。
そもそも scanf を使うなとかいう突っ込みはしないでね。
449デフォルトの名無しさん:2007/02/15(木) 17:02:26
> 各自の課題であり,それぞれが自力でソースプログラムを作ること

これ消してマルチかよ・・・
宿題スレならこのメッセージがあったってノープロブレム
450デフォルトの名無しさん:2007/02/17(土) 06:03:50
何かを押したらコマンドプロンプトが画面いっぱいになった
何を押しちゃったんだかわかりませんか?
451デフォルトの名無しさん:2007/02/17(土) 10:33:49
Alt+Enter
452デフォルトの名無しさん:2007/02/20(火) 20:56:50
本に載っていた自己参照的構造体のサンプルプログラムなんですが、
解説を繋ぎ合わせてみたんですが、コンパイルエラーになります。
どこがおかしいのか教えて下さい。できたら理由も。
コードが書いてあって解説、コードが書いてあって解説と
通してのコードが書かれてないので繋ぎ合わせたんです。
宜しくお願いします。

#include <stdio.h>
struct Node {
    char name[20];
    struct Node *next;
};

int main(void)
{
    struct Node list[] = {
      {"abe", NULL},
      {"asou", NULL},
      {"tanigaki", NULL}};

    list[0].next = &list[1];
    list[1].next = &list[2];

    struct Node *p;
    p = list;
    while (p != NULL) {
      printf("名前は%s\n", p->name);
      p = p->next;
    }

    return 0;
}
453デフォルトの名無しさん:2007/02/20(火) 21:13:42
struct Node *p;の位置が悪い。
宣言は代入とかの前になければいけないから。
454452:2007/02/20(火) 21:23:56
>>453
レスありがとうございます。
無事コンパイル通りましたm(_ _)m
宣言は使う前にすればいいのかと思っていました。
違うんですね。
455デフォルトの名無しさん:2007/02/22(木) 10:37:12
>>454
古いCコンパイラにはそういう制限がある。
ちゃんと新しいCコンパイラを使うか、C++としてコンパイルすればそんな下らない制限に引っ掛からないで済む。
456452:2007/02/22(木) 20:45:55
>>455
コンパイラはVisual C++2005でvsvars32.batをホルダにコピーして
使ってるんですがエラーになりました…。
457デフォルトの名無しさん:2007/02/22(木) 21:08:30
拡張子をcppとかにしないとC++としてコンパイルされないよ。
458452:2007/02/22(木) 21:37:32
>>457
なるほど…(゚д゚)
459デフォルトの名無しさん:2007/03/29(木) 10:36:57
ヘッダーファイルの身の順番についておしえてくれ。
今のところ、
 インクルード
 マクロの定義
 構造体、enumなどの宣言
 プロトタイプ宣言
 extern 変数宣言
の順番にしているのだけれど、こんな感じでいいかな?
何かアドバイスがあればよろしく。
460デフォルトの名無しさん:2007/03/29(木) 10:37:41
>459
身 → 中身
でした。訂正。
461デフォルトの名無しさん:2007/03/29(木) 11:01:29
>>459
最後のextern変数宣言はない方がいいな。
特に書いてないが、インクルードガードは忘れずに。
462デフォルトの名無しさん:2007/03/29(木) 11:23:48
まあどうしても必要なときには、プロトタイプより先におくべきだと思う。
プロトタイプに比べればずっと数が少ないだろうし。
463459:2007/03/29(木) 12:11:50
みなさん。アドバイスありがとさんです。
では皆さんどこでextern宣言されているんですか?
464デフォルトの名無しさん:2007/03/29(木) 12:17:35
グローバル変数を全ソースで共通に使うなんて無いから
ヘッダには入れないなあ
465デフォルトの名無しさん:2007/03/29(木) 12:31:25
どうしてもグローバル変数を使いたければ、それ専用のインクルードファイルを作るなぁ。
466デフォルトの名無しさん:2007/03/29(木) 19:58:18
C言語書くソフトってどこにあるか教えてください
467デフォルトの名無しさん:2007/03/29(木) 20:31:31
>>466
俺も初心者だが
bcpadとかで検索してみ
468デフォルトの名無しさん:2007/03/30(金) 18:49:41
>>467 
インストールしたんですが使い方がさっぱりわかりません
どうしたらいいんですか?
469デフォルトの名無しさん:2007/03/30(金) 20:17:19
そのまま検索すれば分かりやすいサイトがすぐみつかるよ
470デフォルトの名無しさん:2007/04/07(土) 07:38:41
さて、俺も今日からC言語を勉強してみようと思う。
プログラムの勉強自体初めてなんでwkwkだ。
471デフォルトの名無しさん:2007/04/08(日) 02:19:12
じゃ、まず問1)フリーズするプログラムを作れ!
472デフォルトの名無しさん:2007/04/08(日) 02:29:45
オリジナルのプログラムをお持ちの方いらっしゃいませんか?
この度クレジット決済でスムーズにダウンロード売買が
できるサイトを立ち上げました。
つhttp//web-cart.jp/
※会員登録&商品のうp全て無料です!
クオリティの高い商品のうpをお待ちしてますw
473デフォルトの名無しさん :2007/04/08(日) 02:49:00
俺も2〜3日勉強中の身です。本で*が
キレイに並んでるのを見て
*****
****
***
**
*
↑こんなの作りたいなと思ったんですが
全然できません。
教えて頂けませんか?
474デフォルトの名無しさん:2007/04/08(日) 02:59:50
int main(void)
{
    printf("*****\n****\n***\n**\n*");
    return 0;
}
475デフォルトの名無しさん:2007/04/08(日) 03:16:34
>472ちげ〜よw
フツーに半角で

*****[Enterキー]****[Enterキー]***[Enterキー]**[Enterキー]*

で、おk
476デフォルトの名無しさん:2007/04/08(日) 03:31:10
>>475
ツマンネ
477デフォルトの名無しさん:2007/04/08(日) 03:31:56
ごめんなす(:D)| ̄|_
478デフォルトの名無しさん :2007/04/08(日) 06:26:34
>>473
こんな感じで良いか?
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,j;
for(i = 5; i >= 0; i--){
for(j = 0; j <= i; j++){
putchar('*');
}
putchar('\n');
}
return 0;
}
479デフォルトの名無しさん:2007/04/08(日) 08:12:21
>>473
こんな感じで良いか?
putC(int n){ if(n){ putchar('*'); putC(n-1); } else putchar('\n'); }
putL(int n){ if(n){ putC(n); putL(n-1); } }
main(){ putL(5); }
480デフォルトの名無しさん:2007/04/08(日) 08:30:57
#include <stdio.h>

#define LEN (5)

int main()
{
char star[LEN];
for (int ic = 0; ic < sizeof(star); ++ic) star[ic] = '*';
for (int ic = sizeof(star); ic > 0; --ic) printf("%.*s", ic, star);
return 0;
}
481デフォルトの名無しさん:2007/04/08(日) 08:35:57
#include <stdio.h>
int main()
{
char *p = "*****";
while(*p) puts(p++);
}
482デフォルトの名無しさん:2007/04/08(日) 09:32:55
数字を使ってないってのが素適ですね
483デフォルトの名無しさん:2007/04/08(日) 10:47:53
では>475を採用しまつ
484473:2007/04/08(日) 18:49:59
皆さんありがとうございます。
また、多分わからんことだらけなので
色々勉強に来ます!
485デフォルトの名無しさん:2007/04/16(月) 22:51:51
unionって、何に使うんですか?
使い道がわかりません。
486デフォルトの名無しさん:2007/04/16(月) 23:02:15
>>485
unionを使うと例えば
float a = 1.3;
const char * p = (const char *) & a;
for (int ic = 0; ic < sizeof(a); ++ic) printf("%02x ", p[ic]);
とおなじことが
union {
float a;
char p[];
} u;
u.a = 1.3;
for (int ic = 0; ic < sizeof(u.p); ++ic) printf("%02x ", u.p[ic]);
と書けます。
487名無し@沢村:2007/04/16(月) 23:52:39
おみゃーらー♪
C言語はつまらんぞー!
おみゃーたー、『肥えた語』つー言語があるの知ってる?
おりは知ってるよ。
おりがつくった言語よ。これからh『肥えた語』の時代よ。
URLはここよ↓
http://www.geocities.jp/hontamagod/
感想を頼むなー♪
488デフォルトの名無しさん:2007/04/17(火) 00:55:19
プログラムってどんなソフトに書き込めばいいんだ?
489デフォルトの名無しさん:2007/04/17(火) 00:59:17
書くだけでいいのであれば、なんでもいいので好きなテキストエディタに書け。
490名無し@沢村:2007/04/17(火) 01:16:24
>>488
Super『肥桶』に書き込めがいいよ。
URLはここよ↓
http://www.geocities.jp/hontamagod/
感想を頼むなー♪
491デフォルトの名無しさん
2ちゃんに書き込・・・ ごめん