C/C++の宿題片付けます 159代目at TECH
C/C++の宿題片付けます 159代目 - 暇つぶし2ch507: ◆5bhYRM1Rdk
12/08/21 21:41:04.88
3 : ◆5bhYRM1Rdk :2012/08/19(日) 09:45:57.21
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):URLリンク(ideone.com)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4]期限 1週間以内 

508:デフォルトの名無しさん
12/08/21 21:41:13.68
CSVファイルからAccessデータベースを作るプログラムってのは
1.create database
URLリンク(support.microsoft.com)
2.create table
3.insert into
基本的にこんな流れか

509:デフォルトの名無しさん
12/08/21 22:10:22.54
>>507
>strcpyするのに型が違うとコンパイルエラーが出たのですが、型は一緒だと私は思っているため、なぜ違うのかわかりません。
char と char*

>辞書的に後ろ前をif文でどのように表現すればいいのか
strcmp

>文字列結合にstrcatを使うと思うのですが、結合の合間にスペースをいれる方法
前半の文字列とスペースを結合後、その文字列と後半の文字列を結合

>>476を無視してるけど今回のコードを見る限り理解してないよね

510:デフォルトの名無しさん
12/08/21 22:25:36.92
>>507
URLリンク(ideone.com)

511: ◆5bhYRM1Rdk
12/08/21 22:57:05.82
>>509
>>476すいません、ファイル名を入力して改行してCTRL+dを押しても
ファイルが開けないってでるんですが、どういう意味でいっているのかわかりません。
>>510
分かりやすいプログラムありがとうございます。ただ関数内で使用しているfprintf,sprintf
は一体何をしているんでしょうか?fprintfはファイル書き込みの時に使用するのではないんですか?
sprintfは意味がわかりません・・・。それ以外は自分の理解不足、勘違いがよくわかりました。

512: ◆5bhYRM1Rdk
12/08/22 00:55:45.30
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):URLリンク(ideone.com)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4]期限 1週間以内 


513:デフォルトの名無しさん
12/08/22 01:49:26.51
>>512
URLリンク(ideone.com)

514: ◆5bhYRM1Rdk
12/08/22 01:57:49.30
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):URLリンク(ideone.com)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4]期限 1週間以内 


515: ◆5bhYRM1Rdk
12/08/22 02:07:46.45
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):URLリンク(ideone.com)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4]期限 1週間以内 

516:デフォルトの名無しさん
12/08/22 03:21:00.95
>>515
URLリンク(ideone.com)


517:デフォルトの名無しさん
12/08/22 06:13:25.45
>>494
URLリンク(ideone.com)
とりあえずCSVファイルをODBCで読み込むサンプル

518:デフォルトの名無しさん
12/08/22 09:08:34.85
>>517
URLリンク(ideone.com)
とりあえずここまで

519:デフォルトの名無しさん
12/08/22 13:35:57.49
>>494
URLリンク(ideone.com)
1.CSVファイルからAccessデータベースを作るプログラム

520:デフォルトの名無しさん
12/08/22 13:58:49.70
>>517,518,519
とてもはやい解答ありがとうございます。
大変助かります。

521:デフォルトの名無しさん
12/08/22 14:15:22.90
[1] 授業単元:独学
[2] 問題文(含コード&リンク): URLリンク(ideone.com)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC++ 2010
 [3.3] 言語: どちらでも可
[4] 期限: 無期限
[5] その他の制限: 特になし

522:デフォルトの名無しさん
12/08/22 14:23:09.41
>>494
URLリンク(ideone.com)
2.7桁の郵便番号を与えると,その郵便番号に対応する住所を表示するプログラム.

URLリンク(ideone.com)
3.住所の一部を文字列として与えると,その文字列を含む住所と郵便番号を表示するプログラム.

>>520
こちらも復習がてらやってます

523:デフォルトの名無しさん
12/08/22 15:16:25.85
>>521
それ普通にこっちで聞いていいと思うよw
スレリンク(tech板)

まず、typedef structを使うのはC言語の方で、C++ではtypedefは不要
URLリンク(ideone.com)

C言語としてはそのソースはコンパイル出来ない
URLリンク(ideone.com)
struct無しで変数宣言するなら「typedef struct _hoge2 {} _hoge2;」のように
後ろにtypedef名を書く必要がある
「struct _hoge2」の形式で変数宣言する必要がなければ「typedef struct {} _hoge2;」でいい
URLリンク(ideone.com)

Cでどれを使うかというと人次第だけど typedef struct {} yyy; の形式が多いんじゃないかな
structだけでなくunionもね
実装側の詳細を多少隠蔽出来るから
URLリンク(ideone.com)

524:デフォルトの名無しさん
12/08/22 15:26:30.72
>>521
あとtypedefの話だったから書いてなかったけど
「_」で始まる名前と「__」(_が2個)を含む名前は使わないようにね
詳細はC C++ 予約名とかでググって

525:デフォルトの名無しさん
12/08/22 16:36:33.56
>>524
ありがとうございます。
非常に参考になりました。

隠蔽についてはまだ理解仕切れてませんが、
これから学んでいきます。

526: ◆t3V4YN9hBY
12/08/23 00:21:07.26
【質問テンプレ】
[1] 授業単元: プログラミング演習
[2] 問題文
巡回セールスマン問題の厳密解を総当たり法で求めるプログラムを、再帰呼び出しを用いて作成せよ
(例)  1  2  3  4  5  6
  1 0 470 550 420 300 200
  2 470 0 800 900 770 560
  3 550 800 0 330 650 750
  4 420 900 330 0 450 400
  5 300 770 650 450 0 180
  6 200 560 750 400 180 0
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++ 2010
 [3.3] 言語:C++
[4] 期限: 8月30日
[5] その他の制限:なし プログラムが動けばいいと教授に言われました。
どうぞよろしくお願いいたします。

527:デフォルトの名無しさん
12/08/23 09:28:09.92
それ
ナニ行列だったっけ


528: ◆t3V4YN9hBY
12/08/23 09:58:11.31
なに行列かはわかりませんが、
1→2→3→4→5→6 2230
といった結果を出すプログラムをつくるらしいのですが、
馬鹿だから俺には全くわからない。 

529:デフォルトの名無しさん
12/08/23 10:04:41.06
123456で全順列作って、合計距離を計算し、
最小値を出せば良いんじゃないの?


530: ◆t3V4YN9hBY
12/08/23 10:45:44.49
最小値は出さなくていいんです。全通りの合計距離がでれば

531:デフォルトの名無しさん
12/08/23 11:31:32.59
フツー
グラフ理論つったら
隣接行列使わね?

だからそれナニ行列なのよ


532:デフォルトの名無しさん
12/08/23 11:54:32.80
どう見ても隣接行列だろw

533:デフォルトの名無しさん
12/08/23 12:00:20.80
>>530
えっ? 最小値を出さなくていいの? 意味が分からんよ
巡回セールスマンって普通は「全通りの中で最小距離のもの」を求める問題なんだけど

534: ◆5bhYRM1Rdk
12/08/23 12:16:07.06
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):[1] 授業単元:C言語
[2] 問題文(含コード&リンク):URLリンク(ideone.com)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4]期限 1週間以内 


535: ◆t3V4YN9hBY
12/08/23 12:20:58.04
すいません。馬鹿なので勘違いしてました。529さんのいっているとおりで
123456で全順列作って、合計距離を計算し、
最小値を出せば良いんじゃないの?
ってことでよろしいです。よろしくお願いします。

536:デフォルトの名無しさん
12/08/23 12:23:44.52
>>534
URLリンク(ideone.com)

537:デフォルトの名無しさん
12/08/23 12:42:40.34
巡回セールスマン問題はNP困難なのだからまともに解こうと思うと非常に時間が掛かる
工夫が必要

URLリンク(ja.wikipedia.org)

538:デフォルトの名無しさん
12/08/23 12:51:50.38
>>526
URLリンク(ideone.com)

528とは少し表示の仕方が逆順だが

539: ◆t3V4YN9hBY
12/08/23 16:11:10.90
>>538
ありがとうございます。
6→5→4→3→2→1 の合計距離が違うと思うのですが・・・

540:デフォルトの名無しさん
12/08/23 16:28:25.01
1→2→3→4→5→6→1 じゃね?
巡回セールスマン問題は出発地に戻ってくるところまでだし

541: ◆t3V4YN9hBY
12/08/23 16:32:03.72
>>540
そうっすね^^じゃあ完成すね。ありがとうございました。
解読していきやす。

542:538
12/08/23 20:20:00.36
すまんねw
528 で始点への枝が書いてなかったから省略するもんかと思ってたw

543: ◆5bhYRM1Rdk
12/08/23 23:25:10.39
>>516
>>536
分かりやすいプログラムありがとうございました。


544: ◆5bhYRM1Rdk
12/08/24 00:39:58.49
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):[1] 授業単元:C言語
[2] 問題文(含コード&リンク):URLリンク(ideone.com)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4]期限 1週間以内 


545: ◆5bhYRM1Rdk
12/08/24 00:47:14.72
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):URLリンク(ideone.com)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4]期限 1週間以内 


546: ◆5bhYRM1Rdk
12/08/24 00:58:28.44
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):URLリンク(ideone.com)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4]期限 1週間以内 



547:デフォルトの名無しさん
12/08/24 01:00:33.37
問題文くらい書き写せよ。

548: ◆t3V4YN9hBY
12/08/24 01:23:58.54
>>542
すいません。バイト終わって家で動かしたのですが、INFINITYとprevが識別できません。
どうすればよろしいでしょうか? 
お手数かけて申し訳ないっす;;

549:デフォルトの名無しさん
12/08/24 02:05:14.92
INFINITYじゃなくて<limits>をインクルードしてstd::numeric_limits<double>::infinity()
ってやればいいじゃんせっかくあるんだから

550:デフォルトの名無しさん
12/08/24 06:37:39.16
const double INF = 99999999; とかのでかい数突っ込んでおいてもよろしい

551: ◆5bhYRM1Rdk
12/08/24 08:56:06.35
544の問題を書いてみたんですが、なんで出力されないのでしょうか?コンパイルが通るので
分かりません
書いたコード→URLリンク(ideone.com)

552:デフォルトの名無しさん
12/08/24 09:00:21.33
>>551
URLリンク(ideone.com)

553: ◆5bhYRM1Rdk
12/08/24 09:08:31.31
>>すばやい回答ありがとうございます。あなたいつも回答してくれてるような・・

554: ◆5bhYRM1Rdk
12/08/24 09:56:06.01
545誰かお願いします。非スカラー型へのポイント変換ってなんですか・
書いたコード→URLリンク(ideone.com)

555:デフォルトの名無しさん
12/08/24 10:03:40.64
struct queue{
 struct data *top,*rear;
};
じゃなくて
struct queue{
 struct queue *top,*rear;
};
じゃねーの?

556:555
12/08/24 10:15:59.29
ノードは自分で定義しろってことか
URLリンク(ideone.com)

557:555
12/08/24 10:43:05.07
>>546
ヒープ使うようにした
URLリンク(ideone.com)

558:デフォルトの名無しさん
12/08/24 10:43:32.15
[1]授業単元:マイコン実習
[2]問題文 H8マイコンを使ってマイクロスイッチを押した回数をカウントして2桁LEDディスプレイに表示させるプログラムを作りたいです。
カウントリセットもできたりしたです。行く行くは音源を付けて流れるようにしたりマイクロスイッチの数を増やしたいです。
[3]環境
 [3.1]OS:Windows
 [3.2]コンパイラ名とバージョン:gcc
 [3.3]言語:C言語
[4]期限:8月31日
[5]その他の制限:

559:デフォルトの名無しさん
12/08/24 10:49:49.98
>>558
いいなぁ。楽しそう。1週間あれば余裕を持って作れるね。
おれも学生に戻りたい。

560: ◆5bhYRM1Rdk
12/08/25 01:37:01.41
>>556>>557ありがとうございます。
>>557なんですがヒープをまだ学習していないので>>556に延長する形で
cの初心者でもわかるように書いて欲しいのですが、誰かお願いします。

561:デフォルトの名無しさん
12/08/25 01:41:25.04
>>560
ヒープとは動的に確保されるメモリ領域のことだよ
malloc()とかで確保される領域ね

562:デフォルトの名無しさん
12/08/25 01:43:33.09
スタックだって動的じゃんw
何を言ってるんだ

563:デフォルトの名無しさん
12/08/25 01:53:16.56
>>562
>>561の1行目が言いたいこと
2行目はその一例

564:デフォルトの名無しさん
12/08/25 02:34:20.18
つまりスタックも動的なのでヒープであるってことでいいですか?

565:デフォルトの名無しさん
12/08/25 02:43:21.11
>>564
いくないです
>>561の動的と>>562の動的とは意味が異なる

566: ◆5bhYRM1Rdk
12/08/25 02:45:27.43
>>560は自己解決しましたすいません。
別の問題お願いします→URLリンク(ideone.com)

567:デフォルトの名無しさん
12/08/25 02:48:50.62
>>566
curとtopの変数の使い方逆じゃね?

568: ◆5bhYRM1Rdk
12/08/25 02:53:14.26
>>567コードを書いてほしいです

569:デフォルトの名無しさん
12/08/25 02:58:05.64
>>568
質問を書け

570: ◆5bhYRM1Rdk
12/08/25 03:04:19.02
>>567にかいてあるんですが、何か不足してますか?

571:デフォルトの名無しさん
12/08/25 03:08:42.25
>>570
ここに書け

572:デフォルトの名無しさん
12/08/25 03:43:59.72
>>566
URLリンク(ideone.com)

573: ◆QZaw55cn4c
12/08/25 05:18:11.37
>>566
スレリンク(tech板:402番)

574:デフォルトの名無しさん
12/08/25 10:31:21.30
>>◆5bhYRM1Rdk
何個も宿題書いてるみたいだけど
小出しにしないで全部書いたほうが良いよ
一連の問題だって分かると解答も変わるし

575:デフォルトの名無しさん
12/08/25 10:58:35.13
それから自分のソースを添削してもらいたい場合を除き問題はコピペする。
なぜかというと、アップしたサイトから問題が消えてしまうと、最近の地方都市の
ようにシャッターが下りたままだらけのスレとなってしまう。

576:デフォルトの名無しさん
12/08/25 15:24:15.40
>>573
ここにリンク張れ
変なスレに誘導すんなカス

577:デフォルトの名無しさん
12/08/25 16:41:38.84
できれば、小出しにしないでほしいな。
数多くてもいいいから。

578: ◆5bhYRM1Rdk
12/08/26 11:25:52.58
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
URLリンク(ideone.com)
URLリンク(ideone.com)
URLリンク(ideone.com)
URLリンク(ideone.com)

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4]期限 1週間以内 



579:デフォルトの名無しさん
12/08/26 12:04:52.02
>>578
>>575

580:デフォルトの名無しさん
12/08/26 12:21:54.54
複数レスに渡るようなコードはうpろだに貼った方がいいけど
その場合でも問題の概要くらいは書いた方がいいな。手をつけてもらえなくなる

あとideone重い

581:デフォルトの名無しさん
12/08/26 17:54:05.36
>>578
酷い問題だなぁ
スタックとキューの実装比較がテーマなのにインターフェイスが異なるとかw
そも queue.rear って必要か?
print_queue_list() の実装も気持ち悪いし

582: ◆QZaw55cn4c
12/08/26 19:49:58.83
>>575
ideone や codepad は 5 年前の内容でも引っ張り出せる。5年前の自分のコードをみるとさすがに赤面ものだ

583:デフォルトの名無しさん
12/08/27 03:49:40.48
>>582
メールでやり取りするとまた削除対象になりますよ

584:デフォルトの名無しさん
12/08/27 20:27:33.77
>>578
Stack
URLリンク(ideone.com)

Queue
URLリンク(ideone.com)

585: ◆GnxmqzQNd3uR
12/08/28 03:49:37.29
main.cpp
URLリンク(paste.factorcode.org)
gff.h
URLリンク(paste.factorcode.org)

Struct[0]->Typeがメモリー上のデータではなくアドレスを指している理由が分かりません。
期待する動作としてはStruct[0]->TypeがStruct[1]->Type以降と同じようにデータを指すことです。
よろしくお願いします。

URLリンク(paste.factorcode.org)
実際の出力
0x005e43e8 Struct[0]->Type 0x005e43e8(6177768)
期待する出力
0x005e43e8 Struct[0]->Type 0xffffffff(4294967295)

586:デフォルトの名無しさん
12/08/28 04:11:30.99
洋ゲーのデータ読み込む宿題とは珍しい

587:デフォルトの名無しさん
12/08/28 04:53:11.55
>>585
test->Struct = (Struct *)(MEMORY_gff + 0x38);

で代入しちゃってるからなぁ
ローカル変数用意してそこに代入した方がいいかもね

Struct *testStruct = (Struct *)(MEMORY_gff + 0x38);
printf("0x%08lx\tStruct[%d]->Type\t0x%08lx(%lu)\r\n", &testStruct[i].Type, i, testStruct[i].Type, testStruct[i].Type);

あとマクロとか使ったほうがいいかもね
URLリンク(ideone.com)

588: ◆GnxmqzQNd3uR
12/08/28 05:12:56.58
>>587
ありがとうございます。

以下のような構造体を作ることは可能なのでしょうか?
可変長の部分は結局ポインタで繋げることになるのでしょうか?

構造体1
|=DWORD aa;
|-int bb;
|-構造体2[bb]
||-int count;
|\-DWORD aaa;
\-構造体3[bb]
|-char foobar[0][50];
|-char foobar[1][50];
\-char foobar[2][50];

589:デフォルトの名無しさん
12/08/28 05:27:50.84
>>588
>可変長の部分は結局ポインタで繋げることになるのでしょうか?
そうなるね

typedef struct {
  int attr;
  int num;
  int items[ ];
} info_t;

info_t *info = malloc(sizeof(info_t) + sizeof(int) * num);
info->num = num;

構造体の最後のメンバである時に限って0長配列メンバは可能だけど
これは全メンバのアドレスが決まっているから可能

590:デフォルトの名無しさん
12/08/28 06:12:13.24
>>589
0長配列が使える様になったのは何時ごろからか知ってる?
昔、Xlib とかの構造体では items[1] とかやってて面倒だった記憶が有るんだけど

591:デフォルトの名無しさん
12/08/28 06:41:31.08
>>590
規格としてはC99からっぽい
URLリンク(seclan.dll.jp)

MS-C ver.6から使えたが、ANSI準拠ではないので大っぴらには使ってなかったようだ

typedef struct tagBITMAPINFO {
  BITMAPINFOHEADER bmiHeader;
  RGBQUAD bmiColors[1];
} BITMAPINFO;


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch