C/C++の宿題片付けま ..
[2ch|▼Menu]
429:デフォルトの名無しさん
09/07/02 12:00:11
>>423
まぁまぁコンパクトにしてみた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

430:デフォルトの名無しさん
09/07/02 12:01:34
>>428
ポインタ使わないとファイルが読み込めないぞ

431:デフォルトの名無しさん
09/07/02 12:02:53
>>429
大小関係チェックしてねぇw

432: ◆/91kCCQXBo
09/07/02 12:28:14
>>296 ユーザーインターフェースのメニューは、自分で追加できると思うのでやってない。
ファイルに登録された成績コードを読み、動的に確保した生徒構造体の領域にデータを編集
URLリンク(jbbs.livedoor.jp)

433:デフォルトの名無しさん
09/07/02 13:21:05
>>424
URLリンク(kansai2channeler.hp.infoseek.co.jp)
ただし拡張性は皆無。

434:デフォルトの名無しさん
09/07/02 13:38:30
[1] 授業単元:C言語
[2] 問題文:単純なオセロゲーム
[3] 環境:
 [3.1] OS: Unix
 [3.2] gccでコンパイル
 [3.3] (C/C++/どちらでも可 のいずれか)
[4] 期限: 来週・・7月9日 
[5] その他の制限:特になしです
勝敗と成績がわかるものがよいです。
よろしくお願いします。

435:デフォルトの名無しさん
09/07/02 13:46:40
>>424
433に先こされてしまったが。負の数は知らない
ポインタなし URLリンク(kansai2channeler.hp.infoseek.co.jp)

436:デフォルトの名無しさん
09/07/02 14:06:01
こういうコード書くからCプログラマが落とさなくても良い信用を落とすのではないかと杞憂
もう少しエスパーしてやったらいいんじゃないかと...

437:デフォルトの名無しさん
09/07/02 14:41:33
杞憂ならいいじゃん

438:デフォルトの名無しさん
09/07/02 14:43:47
>>436
そもそもこんなところに○投げにくるやつらの評価なんてどうでも・・・

439:デフォルトの名無しさん
09/07/02 14:58:03
>>424
#include <stdio.h>
int seiseki[]={70 56 66 45 88 66 85 68 55 73 55 65 53 67 55 85 72 76 58 65,
92 70 45 73 55 56 57 52 62 82 72 62 33 85 95 46 95 48 72 34,
83 42 88 92 56 68 65 91 82 66};//コンマ省略
...


440:デフォルトの名無しさん
09/07/02 14:58:31
>>333,342
範囲外なら再入力させるところは間違ってるかも
URLリンク(kansai2channeler.hp.infoseek.co.jp)

441:デフォルトの名無しさん
09/07/02 15:19:05
ポインタ使用不可なのに配列を使っていいんだろうか

442:デフォルトの名無しさん
09/07/02 15:22:30
「配列使用時には(まだ習ってもない)ポインタを使用してはいけない」ぢゃないのか?

443:デフォルトの名無しさん
09/07/02 15:24:51
〔1〕授業単元:C言語
〔2〕問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
〔3〕環境
 [3.1] OS: Windows
 [3.3] 言語: C言語
〔4〕期限:7月3日 12時
〔5〕ポインタ、配列、リスト構造まで習いました
   よろしくお願いします


444:デフォルトの名無しさん
09/07/02 15:25:31
>>441
配列のその辺の扱いは多少大目に見るべきじゃないだろうか。
ポインタに成り下がれるとかいうんだっけ?
時々その辺のネタで荒れるスレ知ってるが

445:デフォルトの名無しさん
09/07/02 15:34:17
あからさまに
 int *a とか
*(a + 1) とか
malloc/callocしてアドレスを渡して回るとか
こういうのやらなければいいんじゃね。

446:デフォルトの名無しさん
09/07/02 15:35:45
ポインタ使用不可ってのは「*」使用不可ってことなのか?
a[i]だろうが*(a + i)だろうがポインタを使ってることに変わりないんだが

447:デフォルトの名無しさん
09/07/02 15:37:14
やっぱ荒れだすなww


448:デフォルトの名無しさん
09/07/02 15:43:45
>>446
確かにそうだけど、>>424の問いが言いたいのは
定義後に保持するアドレスを自由に変更できるポインタ変数の便利さを知れってことでしょ。
そう考えれば配列は使っていいことになる。

出題者が本当にそういう意図で出したのかどうかは知らん。

449:425
09/07/02 15:54:16
>>434
URLリンク(kansai2channeler.hp.infoseek.co.jp)
かなり適当だけど「単純なオセロ」ぐらいにはなってるかと。

450:デフォルトの名無しさん
09/07/02 16:14:04
>>443
/* 課題1 */
#include <stdio.h>
#include <math.h>
int main() {
struct Vertex { double x, y; } verA, verB, verC, verD;
printf("verA (x, y): "); scanf("%lf %lf", &verA.x, &verA.y);
printf("verB (x, y): "); scanf("%lf %lf", &verB.x, &verB.y);
printf("verC (x, y): "); scanf("%lf %lf", &verC.x, &verC.y);
printf("verD (x, y): "); scanf("%lf %lf", &verD.x, &verD.y);
if (verA.y != verB.y || verC.y != verD.y) {
printf("error\n");
} else {
printf("area: %g\n", (fabs(verA.x-verB.x)+fabs(verC.x-verD.x))*fabs(verA.y-verC.y)/2);
}
return 0;
}

451:デフォルトの名無しさん
09/07/02 16:14:06
[1] 授業単元:プログラミング
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ:gcc
 [3.3] 言語:C
[4] 期限: 7/6
 よろしくお願いします。

452:デフォルトの名無しさん
09/07/02 16:17:23
>>443 無理やり1レスでスマソ
/* 課題2 */
#include <stdio.h>
#include <stdlib.h>
struct Node { int value; struct Node *next; };
struct Node *init_list() {
struct Node *root = (struct Node *)malloc(sizeof(struct Node));
root->value = 0; root->next = NULL; return root;
}
void add_node(struct Node *root, int value) {
struct Node *p = root->next, *q = root;
while (p) { q = p; p = p->next; }
p = (struct Node *)malloc(sizeof(struct Node));
p->value = value; p->next = NULL; q->next = p;
}
void make_list(struct Node *root) {
int value;
printf("Insert:\n");
while (scanf("%d", &value) != EOF) { add_node(root, value); }
}
void show_list(struct Node *root) {
struct Node *p = root->next;
printf("Show:\n");
while (p) { printf("%d\n", p->value); p = p->next; }
}
void free_list(struct Node *root) {
if (root) { free_list(root->next); free(root); }
}
int main() {
struct Node *root = init_list();
make_list(root); show_list(root); free_list(root); return 0;
}

453:デフォルトの名無しさん
09/07/02 16:44:35
>>449
ありがとうございます。
動作確認しました、問題なかったです。
たすかりました^v^

454:デフォルトの名無しさん
09/07/02 17:41:54
[1] 授業単元: 情報プログラミングC
[2] 問題文(含コード&リンク): 7リットルと5リットルのバケツを使って、どちらか一方のバケツに4リットルの水を入れる方法を探す。
[3] 環境
 [3.1] OS: 窓VISTA
 [3.2] コンパイラ名とバージョン: visual studio 2008
 [3.3] 言語: C
[4] 期限: 7/2
[5] その他の制限: 実行できる操作
(a)水道から新たに水を入れてバケツを満杯にする(b)バケツの水を全部捨てる
(c)一方のバケツの水を他方のバケツが満杯になるまで注ぐ(d)一方のバケツの全部の水を他方のバケツに注ぐ
初期状態は両方0リットル。幅優先探索と待ち行列を使用。ただし、ポインタと構造体は使わない。

455:デフォルトの名無しさん
09/07/02 17:52:28
>>450>>452
非常に助かります
ありがとうございました

456:デフォルトの名無しさん
09/07/02 19:10:32
>>454
URLリンク(kansai2channeler.hp.infoseek.co.jp)
待ち行列を使用ってのがよくわからんかった。
current_rankは削除しそこねなんで消して(それで再アップするのもなんなんで)。

457: ◆/91kCCQXBo
09/07/02 19:54:17
>>454 3を5に、4を7に置き換えればOK。
データの受け渡しにポインタ使ってるけど。乱数使ってるから待ち行列に近いのかも。
add cup 7.
transfer from cup7 to cup5.
cup7=2, cup5=5
empty cup 5.
transfer from cup7 to cup5.
cup7=0, cup5=2
add cup 7.
transfer from cup7 to cup5.
cup7=4, cup5=5

>4リットルの容器と、3リットルの容器があり、これらを使って4リットルの容器に2リットルをはかる。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

458:デフォルトの名無しさん
09/07/02 20:11:16
> 乱数使ってるから待ち行列に近いのかも。
意味が分からん

459:454
09/07/02 20:14:36
>>456>>457
どうもありがとうございました
助かります

460:デフォルトの名無しさん
09/07/02 20:32:20
>>457
乱数使う意味がわからんけど、猿ソートっぽいことやってんの?

461:デフォルトの名無しさん
09/07/02 20:43:13
ヒトだ。ソートは使っていない。
猿解説すると、次の4パターンの動作しかないので、3回の中でその順番をランダムに代えている。
・7リットルのカップを満タンにする(次は、7リットルのカップの中身を5リットルのカップに移す)
・5リットルのカップを満タンにする(略)
・7リットルのカップを空にする(略)
・5リットルのカップを空にする(略)

462:デフォルトの名無しさん
09/07/02 21:03:57
>>446
ポインタを使うなっていうのは、
ポインタ変数を使うなってことでしょ。

aを配列で宣言していれば、
aは(ポインタに変換され得る)配列型の変数であって、
ポインタ型の変数じゃない。

463:デフォルトの名無しさん
09/07/02 21:21:24
[1] 授業単元:Cプログラミング初級演習
[2] 問題文(含コード&リンク):
10個のdouble型の数値を読み込み、最小値の1個を除いた9個の数値の和を出力せよ。
例:1 2 3 4 5 6 7 8 9 10
  54.000000
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc 
 [3.3] 言語:C
[4] 期限: 7/6まで

よろしくお願いいたします。


464:デフォルトの名無しさん
09/07/02 21:29:15
>>463

#include <stdio.h>
#include <float.h>

int main(void){
double n;
double low = DBL_MAX;
double ans = 0;
int i;

for(i=0; i<10; ++i){
scanf("%lf", &n);
ans += n;
if(n < low) low = n;
}
ans -= low;
printf("%f\n", ans);
return 0;
}


465:デフォルトの名無しさん
09/07/02 21:32:12
>>435
>>435
ありがとうございました

466:デフォルトの名無しさん
09/07/02 21:45:37
>>464ありがとうございました

467:デフォルトの名無しさん
09/07/02 21:56:51
>>461
あ、猿とはちょっと違ったのか。
てっきりランダムでごりごりやって気が済んだところでの最適解を使うとかそんなんかと。

468:デフォルトの名無しさん
09/07/02 22:09:43
[1] 授業単元:プログラミング上級
[2] 問題文(含コード&リンク):
C言語を使ってどんな方法でもいいので
コナミコマンド、↑↑↓↓←→←→BAの順番に
ボタンを押されたか判断するプログラムを作成すること。
ヒント1:指定のキーが押される度に、フラグを立てて
最後に「A」が押されたら、処理を判断する
ヒント2:違う順序、または途中で違うキーが押されたらフラグをリセットする
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2009年7月6日10:00まで
[5] その他の制限:DXライブラリを使うこと

469:デフォルトの名無しさん
09/07/02 22:21:30
初級上〜中級下ってとこじゃん

470:デフォルトの名無しさん
09/07/02 22:27:26
ヒントがもはや解答に見える。

471:デフォルトの名無しさん
09/07/02 22:29:00
慣れてないと結構面倒だな
ボタンの取得とか

472:デフォルトの名無しさん
09/07/02 23:29:21
[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:7/10
[5] その他の制限:特にありませんがなるべく簡単なものでお願いします

473:デフォルトの名無しさん
09/07/02 23:36:22
>>472
結果が変わってないんだが?

474:デフォルトの名無しさん
09/07/02 23:42:20
>>473
すみません結果は

1 5 11 13 19
2 6 12 14 21
2 7 15 17 23
4 8 16 20 24
9 10 18 22 25

です

475:デフォルトの名無しさん
09/07/02 23:59:50
>>472 >>474

URLリンク(kansai2channeler.hp.infoseek.co.jp)

476:デフォルトの名無しさん
09/07/03 00:21:16
>>468ってけっこう簡単に見えて難しくないか?
てかコナミの入社試験でこんなのが昔あったな

477:471
09/07/03 00:24:00
慣れてないと難しいよ
脳内にロジックはあるけど昨日の夜にパワー使ったのでいまいち乗らん
せめて中身は無くていいのDXライブラリの読み込んでウインドウを表示するのだけでもあれば・・

478:デフォルトの名無しさん
09/07/03 00:25:58
方向キーの入力を取得するとか言う時点で
WindowsAPIかもっと上位のライブラリ使わないといけないしな

先生も
88224646ba
くらいで勘弁して上げたらいいのに

479:471
09/07/03 00:27:30
>>478
DXライブラリはゲーム用なのでその辺は簡単

480:デフォルトの名無しさん
09/07/03 00:35:25
>>468
環境合ってる?

481:デフォルトの名無しさん
09/07/03 00:42:12
>>468をやるには最低限これはwin依存なんだとおもうけどgccで処理できたっけ?

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
}

482:デフォルトの名無しさん
09/07/03 00:42:15
DXライブラリの仕様

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

必須環境及びソフト

 Windows98以降のOS
 VisualC++ 6.0以降 又は BorlandC++ Compiler 5.5

483:デフォルトの名無しさん
09/07/03 00:44:22
まあVS2008のVC++2008でやってるからそれもってくればいいよ
あとこのライブラリは龍神録が使ってるからそこを見れば基本的なことはわかるよ

484:デフォルトの名無しさん
09/07/03 00:49:58
>>481
gccでもできるよ
コンパイル・リンクするときにどんなオプションつければいいかは忘れたけど

485:468
09/07/03 00:56:27
すみません。コンパイラはVisualStudio2008でした。
よろしくお願いします。

486:デフォルトの名無しさん
09/07/03 01:10:05
>>468
#include "DxLib.h"

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    int cmd[] = { KEY_INPUT_UP, KEY_INPUT_UP, KEY_INPUT_DOWN, KEY_INPUT_DOWN,
        KEY_INPUT_LEFT, KEY_INPUT_RIGHT, KEY_INPUT_LEFT, KEY_INPUT_RIGHT,
        KEY_INPUT_B, KEY_INPUT_A };
    int key, cnt, num;

    ChangeWindowMode(TRUE);
    DxLib_Init();

    DrawString(5, 5, "Waiting for your namco command...", GetColor(0xFF, 0xFF, 0xFF));

    cnt = 0;
    num = sizeof(cmd) / sizeof(int);
    while(key = WaitKey()){
        if(cmd[cnt] == key) cnt++;
        else cnt = 0;
        if(cnt >= num) break;
    }
    DrawString(5, 30, "Your namco command was accepted! Press any key to exit.", GetColor(0xFF, 0xFF, 0xFF));
    WaitKey();

    DxLib_End();

    return 0;
}

487:デフォルトの名無しさん
09/07/03 01:11:34
あ、頭にナムコがあってnamcoなんて入れてしまった。
namco command → konami commandで。

恥ずかしい。

488:デフォルトの名無しさん
09/07/03 01:21:12
宿題じゃないけど聞きたいのですが
テキストファイルの中身を出力したいと思っています。
そこで次のようなプログラムを作ったのですが
FILE *fp;
fp=fopen("hoge.txt","r");
for(i=0; i<10; i++){
printf("%c\n",fp);
*fp++;
}
fclose(fp);
文字化け?みたいな状態になってしまいました。
そのまま出力したい場合にはどのようにすればいいでしょうか?

489:デフォルトの名無しさん
09/07/03 01:23:22
fpじゃ読めないよ
読み込み関数あるからfopen関連で調べてみ

490:デフォルトの名無しさん
09/07/03 01:24:39
>>488
そのポインタが何を指していて、どのようにして内容を読み出し変換されるかをすっ飛ばしてるなぁ。

491:デフォルトの名無しさん
09/07/03 01:49:10
>>488
こんなかんじか

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

int main(void){
FILE *fp;
fp = fopen("hoge.txt", "r");
if(fp == NULL) exit(-1);
for(;;){
int c = getc(fp);
if(c == EOF) break;
putc(c, stdout);
}
return 0;
}


492:デフォルトの名無しさん
09/07/03 01:50:02
>>491
あ、fcloseしてなかった

493:デフォルトの名無しさん
09/07/03 02:02:07
[1] 授業単元:Cプログラミング入門編
[2] 問題文(含コード&リンク):URLリンク(www-it.sci.waseda.ac.jp)
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ: gcc
 [3.3] 言語: C
[4] 期限: 09年07月16日
[5] その他の制限: ど素人です。本当にごめんなさい。よろしくお願いします。


494:デフォルトの名無しさん
09/07/03 02:04:17
↑補足です。
main関数を使えとの指示がありました。

495:デフォルトの名無しさん
09/07/03 02:13:07
だれ・・・・か・・・・

[1] 授業単元:C++プログラミング
[2] 問題文 URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 09年7月2日
[5] その他の制限:

496:デフォルトの名無しさん
09/07/03 02:22:42
>>495
昨日かおととい同じものがあったよw

497:デフォルトの名無しさん
09/07/03 02:25:03
抽出してみたら>>342だな

498:デフォルトの名無しさん
09/07/03 02:27:16
完成してなかったのかw

499:デフォルトの名無しさん
09/07/03 02:38:30
完成してないです・・・何度も同じ書き込みするのはよくないとわかっていつつも・・・この宿題を出さないと

500:デフォルトの名無しさん
09/07/03 02:43:44
>>495
って>>440は確認したか?

501:デフォルトの名無しさん
09/07/03 02:50:09
>>440さんの見逃してました・・・・。
本当に申し訳ございません!!!!
>>500さんと>>440さんありがとうございます!

502:デフォルトの名無しさん
09/07/03 03:22:20
>>471
DXの関数はある程度知ったが、アルゴリズムを考える力が圧倒的に足りない感じなのか
ヒント通りにやろうとするからめんどくさいのであって、各ゲーのコマンド判定ロジックと同じようにすれば楽かと思うよ

503:デフォルトの名無しさん
09/07/03 03:22:27
>>489
すぐに返事をいただけまして助かりました。ありがとうございます。
>>491
ご丁寧にプログラムまでいただきありがとうございます。
fopen関係を調べまして何とか自力で解決に至る事ができました。
私はfscanfを用いましたので、1文字ずつのプログラムは助かります。
本当にありがとうございました。

504:451
09/07/03 07:43:26
問題のサンプルプログラムが間違ってました。申し訳ないですが再度投稿します。
[1] 授業単元:プログラミング
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限:7/6
よろしくお願いします。

505:未解決課題
09/07/03 12:23:34
>>493(waseda/kadai2) 2問。N×N行列とN次の列ベクトルをかける関数を作り、v_0を とし、行列Pを としたときにあらかじめ決めたnに対してベクトルv_1,v_2,...,v_nのすべての要素を に従って計算し表示せよ。 7月16日
>>451>>504 最短路問題を解くアルゴリズムとしてベルマンフォード法がある。 7月6日
>>292 SimMipsにデータキャッシュのヒット率を測定する仕組みを追加し、ヒット率を測定せよ。 7月4日 15:00
>>286(CODE) ルンゲクッタ法 テンプレ無し(不明)
>>273 シンプレックス法のプログラム 7月1日
>>234 >>251(9608)(2) 正規乱数の発生 (ボックスミュラー法)。平均値を求める関数 標準偏差を求める関数 ヒストグラムを作成 7月5日12:00
>>213 アルゴリズムの異なる2つのプログラムを作成し、処理時間の違いを比較せよ。例:マージソートとバブルソート 7月7日
>>192 >>195(10_3)マージソート。 6月30日20:00
>>184 2問。T,スタックによる処理順序を確認するU,キューによる処理順序を確認する 6月29日
>>157 f(x)=xe^x-3を、ニュートン法と二分法で解く 6月29日15時
>>134 2問(往復)。整数と4つの演算子(+, -, *, /)から成る計算木から計算式の文字列を作成する関数 6月30日
>>126 クイックソートで昇順に並べ替える。二分木の中間走査によって昇順に並び変える。 6月28日

506:デフォルトの名無しさん
09/07/03 12:51:52
>>325
コンパイルできなくて、エラーがでました。
ld: 0711-317 ERROR: Undefined symbol: .cos
ld: 0711-317 ERROR: Undefined symbol: .pow
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.

どうしたらいいかわからないんで教えてください

507:デフォルトの名無しさん
09/07/03 13:13:41
>>506
math.hが上手く読み込めてないからだとは思うけど。
#include <math.h> 、消してない?

ダメそうなら、コンパイル環境を教えてもらえれば。

508:デフォルトの名無しさん
09/07/03 13:18:19
>>506
コンパイルの引数に、
-lm
を追加

509:デフォルトの名無しさん
09/07/03 13:27:00
>>506
#include <stdio.h>
#include <math.h>
>>508 それはコンパイルエラーではないはず。

510:デフォルトの名無しさん
09/07/03 13:39:39
>>509
エラーメッセージを出しているのは、ld つまりリンカ。
外部参照のシンボル cos が未定義、見つからないよと言っている。
だから、そのありかを教えてやれば良い。

511:デフォルトの名無しさん
09/07/03 14:55:39
[1] 授業単元:情報基礎B
[2] 問題文(含コード&リンク):試験の点数10人分をキーボードから入力し、以下の内容を出力するプログラムを作成せよ。
平均点、標準偏差、得点の高い順の点数リスト(出来れば、バブルソート以外のアルゴリズムでお願いします。)
[3] 環境
 [3.1] OS: Turbo Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7月7日まで
[5] その他の制限:特にありません。よろしくお願いします。

512:デフォルトの名無しさん
09/07/03 15:35:32
>>493
最後の方の問題がよくわからなかったので、途中までだけれど
URLリンク(codepad.org)

『ベクトルv_1,v_2,...,v_nのすべての要素を計算し表示せよ。』まで実装済み
80行あたりまでが汎用の行列演算処理で、それ以降が今回の問題を解いている

513:512
09/07/03 15:39:58
「MltMatrix」って略し方に絶望した そこは「MulMatrix」だろぉぉぉorz
あと、SetMatrixRow関数の呼び出しでコンパイルエラーがでるようならコメントアウトを外してみて
SetMatrixRow(mat, 0, (NUM[]){3}/*&_v0[0]*/); → SetMatrixRow(mat, 0, &_v0[0]);

514:デフォルトの名無しさん
09/07/03 15:45:50
ピタゴラス数が生成されるみたいだね

515:デフォルトの名無しさん
09/07/03 16:07:54
>>511
URLリンク(kansai2channeler.hp.infoseek.co.jp)

516:デフォルトの名無しさん
09/07/03 16:22:29
>>514
この方法(ピタゴラス数を行列で計算する)は面白いな。初めてみた。
ぐぐったら「ピタゴラス行列」とか呼ばれてて、算数の愛好家には有名みたいだ。

517:デフォルトの名無しさん
09/07/03 16:32:04
>>512さん
本当にありがとうございます。とても助かります。
ちょっとコンパイルしてみます。

518:511
09/07/03 16:32:13
>>515

/tmp/cc9mdrSa.o(.text+0x1f2): In function `main':
: undefined reference to `pow'
/tmp/cc9mdrSa.o(.text+0x217): In function `main':
: undefined reference to `sqrt'
collect2: ld はステータス 1 で終了しました


コンパイルしてみたのですが、こんな表示が出ました。
これはどういうことでしょうか?

519:デフォルトの名無しさん
09/07/03 16:35:28
>>518
>>508

520:デフォルトの名無しさん
09/07/03 16:36:58
>518
その二つの関数が無かったよと

コンパイルの最後にmathが提供してる関数をくっつける作業があるんだけど
そのリンクの段階でもなかったよといわれてる

コンパイルで -lm つけないと

521:デフォルトの名無しさん
09/07/03 16:37:29
初歩的なことですが・・・
std::string aa;
aa.size(128);
char bb[128];
aaにbbを指定バイト分コピーするにはどうしたらいいですか?
ちなみにbbには0x00を含むバイナリデータも含んでいます。

522:デフォルトの名無しさん
09/07/03 16:37:53
どこにつけていいかわからないなら
makefileの中晒して

523:デフォルトの名無しさん
09/07/03 16:43:22
>>521
aa.assign(bb, bb + sizeof bb)

524:デフォルトの名無しさん
09/07/03 16:49:36
>>523
できました。ありがとうございます。

525:522
09/07/03 16:50:07
makefileって何ですか??

526:デフォルトの名無しさん
09/07/03 16:55:43
出題がgccである事をいい事にまたC99でソースを書いてるカスがいるな

527:デフォルトの名無しさん
09/07/03 16:59:09
>>525
拡張子無しのmakefileというのがあるんだけど
コンパイルってmakeとかmake rebuildとかコマンドでやてるんでしょ?

528:511
09/07/03 17:02:35
>>527

cc ファイル名.c ってやるとコンパイルできるタイプなんですが・・・・


529:デフォルトの名無しさん
09/07/03 17:10:43
ソースは何で編集してるんだろうww
linuxのコマンドとかそんなのまで説明しないといけないのか?

530:511
09/07/03 17:13:45
kwrite編集して、コンソールでこんぱいるしておます。


531:511
09/07/03 17:15:49
kwriteで編集して、コンソールでこんぱいるしておます。


532:511
09/07/03 17:31:32
>>529

いま言われた通りやってみたらできました!!!

ご迷惑お掛けしました。ありがとうございました!

533:デフォルトの名無しさん
09/07/03 17:56:21
まじ神っす!!

534:デフォルトの名無しさん
09/07/03 19:01:05
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
例えば下図に示すように,通行可能なマス目に'0'が,障害物があって通行不能なマス目に'+'が記されている盤がある.
盤の左上をスタート地点,右下をゴール地点として,経路を表示するプログラムを作りなさい.
盤の例
0 0 + 0 +
+ 0 0 0 +
0 + + 0 0
0 0 + 0 0
+ 0 0 0 0

例えばこのようなアルゴリズムが考えられる.

1) 現在位置を表示の後、進行方向に対して,右に進めるなら右に,そうでなければ直進,それもだめなら左に,さらにそれもダメなら後退する.
2) 1を繰り返してゴールに達したらその旨を表示する.ただし,マス目の数分だけ移動してもゴールに達しない場合はその時点で終了する.

入力形式は、

%> ./a.out 00+0+ +000+ 0++00 00+00 +0000

とする.

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7/13

お願いします。

535:デフォルトの名無しさん
09/07/03 20:06:23
>>534 右手沿い
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(int argc, char *argv[]){
int width[100]={0}, height, try_count=0, i, j, x=-1, y=0, d, pd=0;
int vx[4]={ 1, 0,-1, 0}, vy[4]={ 0,-1, 0, 1};

if(argc<2) return 1;
height=argc-1;
for(i=0;i<height;i++){
try_count+=(width[i]=strlen(argv[i+1]));
for(j=0;argv[i+1][j];j++) printf("%c ", argv[i+1][j]);
printf("\n");
}
for(i=0;i<try_count;i++){
for(j=0;j<4;j++){
d=(pd+j+3)%4;
if(x+vx[d]<0 || x+vx[d]>=width[y] || y+vy[d]<0 || y+vy[d]>=height) continue;
if(argv[y+vy[d]+1][x+vx[d]]!='0') continue;
x+=vx[d];
y+=vy[d];
pd=d;
break;
}
if(x==width[y]-1 && y==height-1) break;
}
if(i<try_count) printf("\nゴールに達した\n");

return 0;
}

536:デフォルトの名無しさん
09/07/03 20:35:10
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク): 乱数を使って配列に値を代入するようにせよ。サイズを変化させて時間を計測してみせよ。
サイズが十倍になると計算結果は何倍になるか?
[3] 環境
 [3.1] OS: Windows/vista
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C++
[4] 期限: ([2009年07月9日まで]
[5] その他の制限: 乱数はrand()関数、clock()関数を利用する。

537:デフォルトの名無しさん
09/07/03 20:38:01
>>536の参照データっぽいもの
#include<stdio.h>
void soft_swap(int *x,int *y)
{
int temp;
if(*y<*x){temp=*y;
*y=*x;
*x=temp;}}
void sort_array(int a[],int size){
int i,j;
for(j=0;j<size-1;j++){
for(i=0;i<size-1;i++){
soft_swap(&a[i],&a[i+1]);}}}
int main()
{
int a[100],i,size;
printf("数列のサイズを入力してください\n");
scanf("%d",&size);
printf("数列を入力してください\n");
for(i=0;i<size;i++){
scanf("%d",&a[i]);}
printf("\n");
for(i=0;i<size-1;i++){
sort_array(a,size);}
for(i=0;i<size;i++){
printf("%d",a[i]);}
printf("\n");
return(0);

538:デフォルトの名無しさん
09/07/03 21:14:23
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7月8日 17:00
[5] その他の制限:

539:デフォルトの名無しさん
09/07/03 21:56:21
>>538 課題5
始めにファイル名入れる?

540:デフォルトの名無しさん
09/07/03 22:08:20
1] 授業単元: 数値計算プログラミング
[2] 問題文(含コード&リンク): (1)√57を求めよ (2)三乗根の7を求めよ
               (3)f(x)=3x^3+2x^2+5x-15=0の解を求める
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C++
[4] 期限: ([2009年07月10日まで]
[5] その他の制限:ニュートン法を用いる 初期値 x0=1

541:デフォルトの名無しさん
09/07/03 22:24:47
>>536
URLリンク(kansai2channeler.hp.infoseek.co.jp)

こんなくだらない内容だと解釈したけど本当に合ってるのだろうか・・・。

542: ◆/91kCCQXBo
09/07/03 22:43:48
>>538 課題4 % gcc -o score score.c
URLリンク(jbbs.livedoor.jp)
>>538 課題5 % gcc -o score2 score2.c
URLリンク(jbbs.livedoor.jp)

543:デフォルトの名無しさん
09/07/03 23:07:12
>>540
// ニュートン法で「f(x) = 0」を解く
#include <iostream>
// f(x) および f'(x)
double f1(double x) { return x*x - 57; }
double f1d(double x) { return 2*x; }
double f2(double x) { return x*x*x - 7; }
double f2d(double x) { return 3*x*x;}
double f3(double x) { return 3*x*x*x + 2*x*x + 5*x - 15; }
double f3d(double x) { return 9*x*x + 4*x + 5; }
int main() {
int n; double x; // 繰り返し回数、初期値
n = 10; x = 1.0;
while (n--) { x -= f1(x) / f1d(x); }
std::cout << "(1) " << x << std::endl;
n = 10; x = 1.0;
while (n--) { x -= f2(x) / f2d(x); }
std::cout << "(2) " << x << std::endl;
n = 10; x = 1.0;
while (n--) { x -= f3(x) / f3d(x); }
std::cout << "(3) " << x << std::endl;
return 0;
}

544:デフォルトの名無しさん
09/07/03 23:50:03
いきなりですいません!!
コンパイラしてくれるサイトってありませんでしたっけ??
以前使ったんですけど忘れてしまって...CやらC++やら選択できてコンパイルしたいデータ貼っつけてって感じのダウンロードいらずのサイトなんですけど。。;;
ネットで調べているんですが出てこなくて。
場違いなのはわかっていますが
ここの人なら知ってると思いまして。。
本当すいません

545:デフォルトの名無しさん
09/07/03 23:52:49
>>544
codepad でググるとか

546:デフォルトの名無しさん
09/07/04 00:07:07
そう!それです!codepadでした!!
早くも返答ありがとうございます!
なんかスッキリしましたw
これでレポートだせそうです。
ありがとうございます!

547:デフォルトの名無しさん
09/07/04 00:38:41
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
下に示すように,非負の整数値を読み込んで,その数を逆順に表示するプログラムを作成せよ。
なお,負の値を読み込んだ場合は,再入力を促すメッセージを表示すること。

非負の整数を入力してください: 1963
1963 を逆から読むと3691 です.
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 09年07月04日
[5] その他の制限:なし。

548:547
09/07/04 00:41:31
[4] 期限: 09年07月06日
でした^^;

549:デフォルトの名無しさん
09/07/04 01:01:56
[1] 授業単元: プログラミング
[2] 問題文
二つの整数をキーボードから入力して、ユークリッドの互除法を用いて最大公約数を求めよ。
ただし、関数の再帰呼び出しを用いること。
[3.1] OS Windows
[3.2]VisualC++
[3.3] 言語 C++
[4] 期限:7月6日


わかる方どうかよろしくお願いします。

550:デフォルトの名無しさん
09/07/04 01:13:10
>>547
#include <stdio.h>
int main(void) {
int input;
do {
printf("非負の整数を入力してください: ");
scanf("%d",&input);
} while(input < 0);
printf("%dを逆から読むと",input);
do {
printf("%d",input % 10);
input /= 10;
} while(0 < input);
printf("です");
return 0;
}


551:デフォルトの名無しさん
09/07/04 01:13:59
>>549
#include <iostream>

int gcd(int a, int b)
{
int r = a % b;
if(r==0) return b;
return gcd(b, r);
}

int main()
{
int a, b;

std::cin >> a >> b;

std::cout << gcd(a,b);
}

552:デフォルトの名無しさん
09/07/04 01:19:19
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
(1)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
(2)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 3日後まで
[5] その他の制限: 構造体
よろしくお願いします。



553:デフォルトの名無しさん
09/07/04 01:22:20
>>547
URLリンク(kansai2channeler.hp.infoseek.co.jp)
無駄に1023桁までの非負の整数値で遊べるようにしてみた。

554:デフォルトの名無しさん
09/07/04 01:26:10
表示するだけなのに、いちいち逆順の文字列を作るのは無駄。

555:デフォルトの名無しさん
09/07/04 01:33:16
それ以前に
>*(reverse + length - i - 1) += *(str + i);
これはねーよw

556:デフォルトの名無しさん
09/07/04 01:33:28
>>554
つい、後でこれを他にも使いまわすように拡張するかもしれんとか考えちゃう人でごめんね。

557:デフォルトの名無しさん
09/07/04 01:35:48
>>555
じゃぁどう書けばいいと思う?

558:デフォルトの名無しさん
09/07/04 01:36:55
こんな題意も満たしてない糞コード、他に使いまわすとか正気かよw

559:デフォルトの名無しさん
09/07/04 01:42:07
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):url.txtに書き込まれている"http://〜をhttp://〜に書き換えresult.txtに出力せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2009年07月05日19:00まで
[5] その他の制限: とくになし

よろしくお願いします.

560:デフォルトの名無しさん
09/07/04 01:43:33
>>559
追記です

できればコメントも書いて頂けるとうれしいです.


561:デフォルトの名無しさん
09/07/04 01:46:53
>>557
普通に計算だけでなんとかならねえ?


562:デフォルトの名無しさん
09/07/04 01:54:39
+=じゃなくて=
mallocで確保した領域は0クリアされてるとは限らない。
そこに文字を足すと元の文字とは別になる可能性が高い。

っていうかお前>>346だろ?
似たようなことやっときながら、全然成長してないのな。

563:デフォルトの名無しさん
09/07/04 01:55:21
>>553
mallocの確認と解放してない。
書き捨てPGならいいけど、課題ならやっととかないと講師がうるさい。

fgetsでは常に改行が入るとは限らないからmain文のfor文で暴走の可能性あり。

っていうかstrlenとかstrchr使えばおk


564:デフォルトの名無しさん
09/07/04 01:58:06
>>561
ちょっと頭冷やしてきて改めて見たら、言われた通り糞コードだった。

565:デフォルトの名無しさん
09/07/04 02:07:37
>>552(1)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

566:デフォルトの名無しさん
09/07/04 02:15:34
>>562
そこは普通に書き間違えてる。
本人は=書いたつもり。

>>563
strlen使ってないのはわざとやってる。
fgetsは素で間違えた。

こんなクソコードにツッコミ入れてくれてありがとう。

567:デフォルトの名無しさん
09/07/04 02:40:45
なんとなーく、だけど、
while(input) {
printf("%d", input%10);
input /= 10;
}
を期待した課題だと思う

568:デフォルトの名無しさん
09/07/04 02:41:57
ごめん>>550見てなかった

569:デフォルトの名無しさん
09/07/04 02:54:30
>>552
Complex c_div(Complex s, Complex t)の部分や、sscanfというものが解りません。
もう少し簡単にして頂けないでしょうか?


570:デフォルトの名無しさん
09/07/04 03:17:52
>>569
題意の通りじゃないの?

571:デフォルトの名無しさん
09/07/04 03:18:53
>>565ではないが
sscanfは文字列に対してscanfする関数
c_divは仕様通りだから。。

572:デフォルトの名無しさん
09/07/04 03:25:18
ならsscanf()は使わずに危険なscanf()でも使って書き直そうか

573:デフォルトの名無しさん
09/07/04 03:26:20
つーか誰か(2)やってくれ
だるい
酒飲んでるし

574:デフォルトの名無しさん
09/07/04 03:30:54
>>569
(1)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

(2)は誰か任せた
寝る

575:デフォルトの名無しさん
09/07/04 03:32:50
>>552 (2)ってポインタ使っていいのか?
構造体の実体渡すの?

576:デフォルトの名無しさん
09/07/04 03:36:02
>>574
ありがとうございました。

577:デフォルトの名無しさん
09/07/04 03:40:22
 typedef struct{
  int bunshi, bunbo;
 }bunsu;

bunsu* bunsu_seki(bunsu* A,bunsu* B)
{
  if(A == NULL) return NULL;
  if(B == NULL) return NULL;
  bunsu C;
  C.bunshi = A->bunshi * B->bunshi;
  C.bunbo = A->bunbo * B->bunbo;
  return &c;
}


578:デフォルトの名無しさん
09/07/04 03:42:02
あーーーーーーーーーーーーすまん>>577は無しで

 typedef struct{
  int bunshi, bunbo;
 }bunsu;

bunsu* bunsu_seki(bunsu* A,bunsu* B)
{
  if(A == NULL) return NULL;
  if(B == NULL) return NULL;
  bunsu* C = (bunsu*)malloc(sizeof(bunsu));
  if(C == NULL) return NULL;
  C->bunshi = A->bunshi * B->bunshi;
  C->bunbo = A->bunbo * B->bunbo;
  return C;
}

579:デフォルトの名無しさん
09/07/04 03:42:34
>>569 (2)
bunsu bunsu_seki(bunsu a, bunsu b)
{
a.bunsi *= b.bunsi;
a.bunbo *= b.bunbo;
return a;
}

>>577
だめじゃね?

580:デフォルトの名無しさん
09/07/04 03:45:31
>>578
どんどん話がややこしい方にすすんでるし題意は満たしてないし

581:デフォルトの名無しさん
09/07/04 03:50:55
いかん
ついつい・・>>552の(2)は>>579でいいね
>>577>>578はなしで

582:デフォルトの名無しさん
09/07/04 03:52:17
ポインタで渡す方が処理が速い伝説に惑わされたらいかんよ

583:デフォルトの名無しさん
09/07/04 03:55:52
実際どっちがいいんだろうね
もっとでかい構造体をリストにして扱うことがほとんどなのでついつい

584:デフォルトの名無しさん
09/07/04 03:56:21
>>574
何か消し忘れた#defineが残ってるな
あれは不要だから消しとけ

585:デフォルトの名無しさん
09/07/04 03:57:50
リストにするなら隣のポインタ持たないとダメだからしょうがないけど。
試しにベンチでもやってみたら?
>>578のはちゃんと呼び出し側でfreeしないとメモリどんどん使うから気をつけてね

586:デフォルトの名無しさん
09/07/04 04:25:38
[1] 授業単元:C+
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
OS: vista
コンパイラ名とバージョン: gcc
言語:C
[4] 期限: 一週間
[5] その他の制限:
4題あります。
テストの類題なのでなるべく簡単に題意を満たす解答をお願いします。



587:デフォルトの名無しさん
09/07/04 04:28:35
>>559
URLリンク(kansai2channeler.hp.infoseek.co.jp)

588:デフォルトの名無しさん
09/07/04 05:08:00
>>586
1.
int sum1toN(int n)
{
    int i, s;

    for(i = 1, s = 0; i <= n; i++){
        s += i;
    }
    return s;
}

2.
#include <stdio.h>
#define PAI 3.14159
void circle(double r, double *enshu, double *menseki);
int main(void){
    double r, enshu, menseki;
    printf("半径を入力 >>");
    scanf("%lf", &r);
    circle(r, &enshu, &menseki);
    printf("円周 = %f 面積 = %f\n"
                , enshu, menseki);
    return 0;
}

void circle(double r, double *enshu, double *menseki)
{
    *enshu = 2.0 * PAI * r;
    *menseki = PAI * r * r;
    return;
}

589:デフォルトの名無しさん
09/07/04 05:08:42
>>586 続き
3.
#include <stdio.h>
int main(void)
{
    int a[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }, i;
    for(i = 0; i < 8; i++){
        if(7 - 2 - i >= 0) a[7 - i] = a[7 - 2 - i];
        else a[7 - i] = 0;
    }
    for(i = 0; i < 8; i++)
        printf("a[%d] = %d\n", i, a[i]);
    return 0;
}

4.
#include <stdio.h>

int main(void){
    char ch[81], max;
    int i;
    gets(ch);
    for(i = 0, max = '\0'; ch[i] != '\0'; i++){
        if(ch[i] > max) max = ch[i];
    }
    printf("文字コード最大は%c <%d>\n", max, max);
    return 0;
}


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4968日前に更新/375 KB
担当:undef