C/C++の宿題片付けます 159代目at TECH
C/C++の宿題片付けます 159代目 - 暇つぶし2ch400:デフォルトの名無しさん
12/08/06 18:06:09.22
>>396
お前偽物だろ

401:デフォルトの名無しさん
12/08/06 18:10:27.24
struct node {
int value;
struct node * next;
};
int main(void)
{
int i=0;
struct node top;
struct node *newNode,*tmp;
/* top.next=NULL; うまくバグになる良いのだが */
top.value=0;
for (i=0;i<10;i++) {
newNode=(struct node *) malloc(sizeof(struct node));
newNode->next=top.next;
newNode->value=i*3;
top.next=newNode;
}
tmp=⊤
while(tmp!=NULL) {
printf("%d\n",tmp->value);
tmp=tmp->next;
}
return 0;
}
セグメンテーションフォルトを直したいんだけれど教えていただけないだろうか

402:デフォルトの名無しさん
12/08/06 18:14:35.86
ごめんなさい、レンプレ読んでませんでした>>401に加えて
[1] 授業単元:プログラミング
[2] 問題文 「セグメンテーションフォルト」を見つける
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: 2011年8月10日16:00まで。

403:デフォルトの名無しさん
12/08/06 18:21:05.34
>>402
URLリンク(ideone.com)
13行目でNULLをセットしてないと22行目のループでセグメンテーションフォルトになる

404:デフォルトの名無しさん
12/08/06 18:29:05.97
>>403
ありがとうございます
whileループで思いっきりNULL判定使ってましたね・・・
先生も気付きやすいようコメントで書いてくれてるというのに..
いやはや助かりました

405:デフォルトの名無しさん
12/08/06 18:34:34.45
つーかコメントも問題文の一部かよ
答え書いてあるようなものじゃないか

406:デフォルトの名無しさん
12/08/06 20:19:04.86
プログラミング以前に
なにか読み書きの中枢に異常があるんだろ
それか注意力欠陥とか
文章を読みこむ能力が足りないとか、
根本的に脳の配線がおかしいとか、
キーボード打つまえにもっと能力向上の余地がある
逆に、無いと困る
これでMAXとかいったら
学校じゃあなくてもっと別の保健所的な場所に赴いた方がいい


407:デフォルトの名無しさん
12/08/07 10:23:36.32
>>406
社会に出たらそんな連中ばかりだぞ

408:デフォルトの名無しさん
12/08/07 18:56:24.87
どんな社会に居るんだよ・・・

409:デフォルトの名無しさん
12/08/07 20:06:10.27
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(codepad.org)
プログラムを実行した時に10個のサイトが表示されるが、その中でも右上の黒枠が濃いラベルを持つサイトが一つある。
このラベル部分に他のラベルが重っているかどうかを判定するプログラムの作成。
[3] 環境
 [3.1] OS:Vista
 [3.2] VC
 [3.3] 言語:C++
[4] 期限: 2012/08/07
[5] その他の制限:

よろしくお願いします。

410:デフォルトの名無しさん
12/08/07 20:08:36.08
ずいぶんと力作じゃあねぇか
とくに
glBegin(GL_LINE_LOOP);
glVertex2f(LPx[i], LPy[i]);
glVertex2f(LPx[i]+Lx[site[i]], LPy[i]);
glVertex2f(LPx[i]+Lx[site[i]], LPy[i]+Ly);
glVertex2f(LPx[i], LPy[i]+Ly);
glEnd();
のトコロなんて
あまりにも嬉しくて涙が出そうになった

URLリンク(www.pro.or.jp)
ここに投稿するといい
ソースの殿堂に並ぶ、という栄誉を得られる


411:デフォルトの名無しさん
12/08/08 16:33:56.46
>>410
この程度で殿堂入りできるわけねーだろ

412:デフォルトの名無しさん
12/08/10 06:31:47.09
今の時期は宿題少ないなぁ。
8月最終週になったらドバッと来るんだろうけど。

413: ◆QZaw55cn4c
12/08/10 07:46:50.89
どうせやらないかんのならはやめにこのスレに晒してくれ。

414:デフォルトの名無しさん
12/08/10 15:44:50.19
無職のオッサンは暇だなあ

415:デフォルトの名無しさん
12/08/11 13:34:58.15
[1] 授業単元:プログラミング演習
[2] 問題文:1行ごとに1単語(英単語)が書かれたファイルがある。
 このとき、このファイルの内容をソートして出力するプログラムを作成せよ。
 ファイルの行数は不定(事前にわからない)とし、また上限を定めないこと。
 ソートは昇順あるいは降順いずれにも対応できること。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:8月31日まで
[5] その他の制限:
・ファイルの読み込みは1回のみとする。
・Cライブラリ関数のqsortは利用してはならない。
・単語を格納するデータ構造として配列は使用してはならない。

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

416:デフォルトの名無しさん
12/08/11 13:38:47.12
windowsなら
まずは
sort data.txt > data_sorted.txt
とでも試してみろ


417:デフォルトの名無しさん
12/08/11 14:32:15.70
>>415
ファイルの行数が不定という事は、メモリに全部テキストを読み込めない
可能性も考慮しなければいけないって事?

もしその場合はランファイルを用いたマージソートが必要になるけど

メモリに収まると分かっているのなら簡単

418:デフォルトの名無しさん
12/08/11 15:14:53.12
ランファイルって何?

419:デフォルトの名無しさん
12/08/11 15:39:22.22
外部ソート ラン でぐぐってみ

要するにマージソートの途中過程をファイルにして持っておくしか手がないわけだ
その細かく分割されたそれ自体はソート済になっているファイルをランと呼ぶ

それをマージする時にソートを崩さないようにマージして行き、済んだらマージ前の
ランは消去

こういうアルゴリズム

420:デフォルトの名無しさん
12/08/11 15:55:06.58
URLリンク(www.ice.gunma-ct.ac.jp)

これだとアルゴリズムがそっくり載ってるからこのままプログラムすればいいな

421:デフォルトの名無しさん
12/08/11 17:35:02.18
それだと今度はディスクに十分な空きがあることが条件になるだけだし
> ファイルの読み込みは1回のみ
という制限に引っかかるんじゃね?という気がする。
だから単純に全部オンメモリでもいいと思うけど
期限はまだ先だし題意を確認してからのほうがいいだろ

422:デフォルトの名無しさん
12/08/11 17:43:02.79
>>421
まあそうなんだけどわざと意地悪してみた

>ファイルの行数は不定(事前にわからない)とし、また上限を定めないこと。

この場合はリストでも使うかポインタ配列にしてポインタ配列をrealloc()するかだな
ただしC++のstd::vectorと同じくrealloc()する度にポインタ配列のサイズを倍々にしていかないと
O(1)でメモリが確保できなくなる

>・ファイルの読み込みは1回のみとする。

だから先読みして行数をカウントするのは駄目だし

>・Cライブラリ関数のqsortは利用してはならない。

自前のクイックソートでいいんでしょ

423:デフォルトの名無しさん
12/08/11 17:43:43.42
リストにするとソートが大変なんで結局 char *が入ったポインタ配列になるだろうな

424: ◆QZaw55cn4c
12/08/11 17:51:52.72
>>415
スレリンク(tech板:17番)
URLリンク(ideone.com)
オンメモリね。過去問で、今回の題意にあうかあまり検討してないのはごめんなさい。

425:デフォルトの名無しさん
12/08/11 18:07:12.79
>>424
こりゃまたひどいプログラムですねww

426: ◆QZaw55cn4c
12/08/11 18:16:40.76
>>415
スレリンク(tech板:338番)
ごめんなさい。
>ソートは昇順あるいは降順いずれにも対応できること。
が抜けていた。あと、同一単語が連続するとリークしてました。

>>425
どういうところが「ひどい」とお感じになったのか、よろしければぜひ。

427:デフォルトの名無しさん
12/08/11 18:32:21.62
>>426
>ソートは昇順あるいは降順いずれにも対応できること。
が抜けていた。あと、同一単語が連続するとリークしてました。

それから

xmalloc()ってなんですかあ?マクロで無効にされてますけど
走らせてみたら木構造を表すのにデータの1/2ほどのメモリを使ってますよ

428:デフォルトの名無しさん
12/08/11 18:42:23.89
URLリンク(codepad.org)

約1GBのランダムなテキストファイルを作るプログラム
これを食わせてソートしてみよう

429: ◆QZaw55cn4c
12/08/11 18:53:37.75
>>427
>xmalloc()ってなんですかあ?マクロで無効にされてますけど

#define xmalloc(x, y) malloc(x)
#define xfree(x, y) free(x)
#define xrealloc(x, y, z) realloc(x, y)
#define xmallocdump()
がすべてです。そう読み替えてくださいな。

>走らせてみたら木構造を表すのにデータの1/2ほどのメモリを使ってますよ

単語が短いとね、というか単語は短いものだしね。仮に木構造をマネージする構造体 >>426 の struct node が、sizeof(struct node) == 12 なら、
>木構造を表すのにデータの1/2ほどのメモリ
というのは単語の平均長が24くらいになりますね。ちょっとありえないか。
どこぞのキャッチフレーズ「重複排除」とか不定長構造体をつかってみましょうか。

430:デフォルトの名無しさん
12/08/11 18:59:20.47
>>429
いや>>428のプログラムを走らせて言ってるんだけど
一行が1001文字ありますよ?
約1.4GBのメモリ食ってます

431: ◆QZaw55cn4c
12/08/11 19:52:02.75
>>430
検証ありがとうございます。こちらでも >>428 で確かめました。しかし、
>約1.4GBのメモリ食ってます
はこちらでは確認できませんでした。

17c17
< #define BUFFSIZE 3 /* >= 2 */
---
> #define BUFFSIZE 1024 /* >= 2 */
URLリンク(codepad.org)

で状況が変わる性質のものでしょうか?

432: ◆QZaw55cn4c
12/08/11 19:54:09.41
環境: PhenomIIx6(1100T?)/16G/Windows7-64bit/gcc4.3.2(cygwin)32bitアプリとしてコンパイル

433:デフォルトの名無しさん
12/08/11 19:57:54.63
0.4なら誤差かも知れない


434:デフォルトの名無しさん
12/08/11 20:49:02.48
>>432
見栄張らなくていいのに(。´・д・)
PenⅢ850MHzなんでしょ

それともCPU-Zのスクショマダァ?(・∀・ )っ/凵⌒☆チンチン

435:デフォルトの名無しさん
12/08/11 20:52:29.45
簡単に見抜く方法があるぞ

SSE3のバイナリ吐かせて走らせてもらえばいい

436: ◆QZaw55cn4c
12/08/11 20:58:18.37
>>434
愛用していた Let's note ではあったのですが、残念なことに壊れてしまいました。
でも凋落著しいアムド屁ノムごときで見栄を張っているとかいわれても困惑するばかりなのですけれども。

>>435
ソースを codepad に貼り付けていただければ、その実行結果をお返ししますよ。

437: ◆QZaw55cn4c
12/08/12 01:20:39.61
>>429
>「重複排除」とか不定長構造体
URLリンク(codepad.org)
>>428 で生成したデータでは重複排除は意味がありませんでした。

438:デフォルトの名無しさん
12/08/12 02:44:21.95
>愛用していた Let's note ではあったのですが、残念なことに壊れてしまいました。

じゃ今使っている現用機のCPU-Zのスクショ貼れるよな?

439: ◆QZaw55cn4c
12/08/12 07:54:35.92
>>415
>>422 の方針でかきました。>>426 よりずいぶんとはやくなりました。
スレリンク(tech板:351番)

440: ◆QZaw55cn4c
12/08/12 09:16:05.41
>>433
メモリ使用量の算出で、

malloc() での要求量を積算し、free() での解放は考えないタイプ(どうせ端したをfree()してもOSに返るわけでもなし)
malloc() 自体が要求量よりも大目にあらかじめ確保しておくタイプ(PHK malloc() とか)
realloc() = malloc() + memcpy() + free() なタイプ

みたいなものであれば、40% ほど大目にでてきても仕方がないかもしれません。

>>431 で示しているとおり、アイデアリスティックな表現
#define BUFFSIZE 3 /* >= 2 */
のために realloc() が頻発してしまっているのが悪そうです。

そんな処理系があるかどうかはよくわかりません。

441:デフォルトの名無しさん
12/08/12 12:03:06.88
shell関数でsort呼べばいいんじゃね?

442:デフォルトの名無しさん
12/08/12 12:27:33.01
そんな夢の無いこと言うなよw

ま iinuxやらBSDのsortのソースは見ろ と勧めるが
URLリンク(ftp.gnu.org)
URLリンク(heirloom.sourceforge.net)


443:デフォルトの名無しさん
12/08/12 13:30:52.21
キッチン・トイレメーカー

444:デフォルトの名無しさん
12/08/12 15:33:49.41
やってみた
いろいろ手抜き

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

int main(int argc, char *argv[])
{
char c[PATH_MAX+1];
switch(argc){
case 2:
sprintf(c,"sort %s",argv[1]);
break;
case 3:
sprintf(c,"sort %s %s",argv[1],argv[2]);
break;
default:
exit(1);
break;
}
system(c);
}


445:デフォルトの名無しさん
12/08/12 15:35:27.11
これもうそのままsort使えば早いんじゃないかな


446: ◆QZaw55cn4c
12/08/12 18:41:53.87
>>415
スレリンク(tech板:358番)

>>423
無理してみましたが、線形リストのソートはどうあがいても遅くなってしまいました。昔うんこ呼ばわりされたのも仕方がない。

447:デフォルトの名無しさん
12/08/12 20:43:38.79
オンメモリが前提でよければ、stat呼んで、ファイルサイズ取得し、
必要メモリサイズを確保して一気読みしたら?

448: ◆QZaw55cn4c
12/08/12 21:07:46.89
>>447
stat(2)/fstat(3) が標準Cライブラリなら。となれば fseek()/ftell() か。
一揆読みのあと、一行の単位で区切らなければいけないのが、はてさて。

449:デフォルトの名無しさん
12/08/12 21:09:08.56
>>447
パイプ使って標準入力から流れてきたらどうすんの?

450: 忍法帖【Lv=40,xxxPT】
12/08/12 21:20:11.33
>>449
>>415
>[2] 問題文:1行ごとに1単語(英単語)が書かれたファイルがある。
とありました。

451:デフォルトの名無しさん
12/08/12 21:20:50.69
分かった
これは標準のsortが
どれだけ洗練されているかを理解させるための実習なんだ


452:デフォルトの名無しさん
12/08/13 01:50:40.45
>>447-448
一気読みしたファイルの \n を \0 に置き換えながら char* 配列に文字列先頭アドレスを格納する
char* 配列のサイズは一気読みしたファイルサイズの5~10分の1くらいを確保して足りなくなったら拡張する

>>449 を考慮しないなら一番早いかも知れないね

453:デフォルトの名無しさん
12/08/13 20:08:28.47
こんな課題にムキになんなよなぁ
速いのが欲しいならflash sortでもしろよO(n)だぞ

454:デフォルトの名無しさん
12/08/13 21:16:02.49
>>453
口だけ達者でコードは書けないのですね

455:デフォルトの名無しさん
12/08/13 21:21:53.23
>>454
そりゃflash sortとか書けねーよ, 金貰えるなら調べて頑張るかもしらねーけど.

456:デフォルトの名無しさん
12/08/13 21:36:30.54
>>455
コードひとつかけないのなら死ね

457:デフォルトの名無しさん
12/08/13 21:39:50.30
>>456
お前が金くれんなら書くけど.

458:デフォルトの名無しさん
12/08/13 22:07:23.89
Flash Sort調べてみたけどバケットソートと同じで使える条件が著しく限られてるんじゃないの?

459:デフォルトの名無しさん
12/08/13 22:21:20.39
ほほう
それで?


460:デフォルトの名無しさん
12/08/13 22:31:04.83
バケットソートみたいな整数制約とかは無いな
一様分布なめちゃくちゃ大量の実数とかで速いけど、定数項でかいので実用的にはアレなソート

461:デフォルトの名無しさん
12/08/13 22:40:42.60
>>458
もちろん、要素間に大小関係がある、というだけの前提のもとでの
ソートの時間計算量はO(n log n)を下回らないだろう

462:デフォルトの名無しさん
12/08/14 16:15:16.63
>>457
お金を貰ってコードを書くのではなく、
コードを書いてお金を貰うんだ

463:デフォルトの名無しさん
12/08/16 23:31:24.32
休み中の課題なのですが、わからないので教えて頂きたいです。

[1] 授業単元: C言語
[2] 問題文(含コード&リンク): URLリンク(ideone.com)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: (2012年)8月17日 23時59分59秒まで


464:デフォルトの名無しさん
12/08/17 00:40:51.74
>>463
URLリンク(ideone.com)

465:デフォルトの名無しさん
12/08/17 14:42:35.68
[1] 授業単元:C言語徹底入門
[2] 問題文(含コード&リンク):URLリンク(codepad.org)
次のプログラムは書式指定可能な10進16進変換表示を行う関数プログラムである。
関数の機能についてコメントで解説を入れ、同時にプログラムの流れを説明せよ。
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C言語
[4] 期限: 2012年8月19日

466:デフォルトの名無しさん
12/08/17 17:12:09.17

[1] 授業単元:C言語
[2] 問題文:プレイフェア暗号の作成
      参考:URLリンク(www.tamagaki.com)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ:gcc
 [3.3] 言語: C言語
[4] 期限: 8月19日

よろしくお願いします!

467:デフォルトの名無しさん
12/08/17 22:52:41.04
>>466
どういうプログラムを求めてるんだよ, 問題文とかねえのか

468:デフォルトの名無しさん
12/08/17 23:36:21.23
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): URLリンク(ideone.com)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2012年8月18日18:00まで

関数定義の空欄の部分に
void stradd(char A[], char B[]){
 int i,j;
j=0;
printf("入力してください");
scanf("%s",A);
i=0;
while(A[i]!='\0'){
for(i=strlen-1; i>=0; i--){
j++;
}
B[i]='\0';
}
printf("answer = %s\n" ,B);
}
と書いたのですが、間違っていると言われ、どこが間違っているのかわからないので
教えて頂きたいです。    お願いします。

469:デフォルトの名無しさん
12/08/17 23:56:04.07
>>468
URLリンク(ideone.com)

470:デフォルトの名無しさん
12/08/18 05:32:24.81
>>466
暗号文字が I/J になった時の説明が抜けているように思う。
必ずIでいいのかな。

471:デフォルトの名無しさん
12/08/18 12:07:06.14
>>466
URLリンク(ideone.com)

472:デフォルトの名無しさん
12/08/19 06:24:59.43
平文にXが来たらどうするのか、とか。

473: ◆5bhYRM1Rdk
12/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週間以内 
[5] 自分で考えて書いたつもりですがど素人なので読みにくいと思いますが、
お願いします。


474:デフォルトの名無しさん
12/08/19 10:10:34.93
Line36
scanf("%d\n",d);

アドレス演算子が抜けてますよ

475: ◆5bhYRM1Rdk
12/08/19 21:07:24.03
>>474
レスありがとうございます。演算子を付け加えたのですがファイルが開けません。
となるのですが、ファイルの指定の仕方はfp = fopen(a, "r");のようにして読み込む
事はできないのでしょうか?

476:デフォルトの名無しさん
12/08/19 21:55:09.30
>>475
入力が適切でないだけだろ
"%s\n"なんだからちゃんと
[入力ファイル名][改行][EOF]
と入力してるか?

477:デフォルトの名無しさん
12/08/19 23:07:30.12
どなたか>>465お願いいたします。

478:デフォルトの名無しさん
12/08/19 23:32:56.09
考えてみましたが、理解が出来ないので教えて頂きたいです。
お願いします。

[1] 授業単元:C言語
[2] 問題文(含コード&リンク): URLリンク(ideone.com)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4]期限 2012年8月20日 12:00まで 


479:デフォルトの名無しさん
12/08/20 00:38:51.17
readDataなんて忘れろ
消せ
削除しろ
mainに全て納めろ


480: ◆QZaw55cn4c
12/08/20 01:00:13.43
>>478
スレリンク(tech板:401番)
>>479
馬鹿市ね

481:デフォルトの名無しさん
12/08/20 11:31:22.78
466です。返信が遅くなってしまいすみません。
平文にxがきてもそのまま変換します。
I/Jについてはどちらかで統一できるようにしたいです。
プログラムについてはCで作れれば自由という感じです。


482:デフォルトの名無しさん
12/08/20 15:04:08.70
背景グレーに黒文字のページを作る奴の頭の中を覗いてみたい

483:デフォルトの名無しさん
12/08/20 19:48:58.90
>>482
2chなめてんのか

484:デフォルトの名無しさん
12/08/20 20:27:51.47
>>483
ダークグレーに訂正
>>466 のリンク先見てみ、読む気が失せるから

485:デフォルトの名無しさん
12/08/20 23:08:54.24
>>466 >>481
URLリンク(ideone.com)
冗長になってもーた。
あとはまかせた。

486:デフォルトの名無しさん
12/08/21 02:15:47.04
[1] プログラミング言語
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Visual Studio2010 )
 [3.3] 言語: C++

int main(void){
 double d2, s2;
 int i;
 s2 = 0.0;
 d2 = 1.0/10000000.0;
 for(i = 0; i < 10000000; i++){
  s2 = s2 + d2;
 }
 printf("%f\n",s2);
 printf("%17.14f\n",s2);
 return 0;
}

上記のプログラムを実行すると,コマンドプロンプトには

1.000000
0.999999999750170

と出力される.
どちらも同じs2を出力しているのにもかかわらず,
表示させる桁数を変えるだけで出力内容が変わる理由,
および,2行目の方で計算結果が
1.000000000000000
とならない理由を述べよ.

487:デフォルトの名無しさん
12/08/21 02:23:35.48
計算機ちゃんの気まぐれだろjk
自分のPCくらいちゃんと手懐けておけよ


488:デフォルトの名無しさん
12/08/21 07:18:36.76
レスしないならウザいでください
わからないだけです

489:デフォルトの名無しさん
12/08/21 08:34:57.42
>>486
期日書いてないから宿題と思わないし、C++じゃなくてCだと思うけども。
1) 2進数は習いましたか?
2) 浮動小数点数の表現方法は習いましたか?

それとも、あれかな。そのあたりを調べろっていう課題なのかね。

490:486
12/08/21 09:17:16.48
>>489
すみません 2012-08-24までです

491:486
12/08/21 09:23:09.22
>>489
1)習いました
2)習いました
どうしてこうなるかを調べる課題です
打ち切り誤差 桁落ち 情報欠落 丸め誤差のいずれかだと思うのですが

492:デフォルトの名無しさん
12/08/21 11:47:27.75
>>491
なるほど。丸め誤差ですね。
URLリンク(e-words.jp)
0.5 0.25 0.125 ... を組み合わせて足してできる小数でないと、
丸め誤差が生じます。
誤差をがある数を足しあわせたら、答えも誤差を含みます。
これが、答えの一方になります。
わかりづらいようでしたら、十進数の0.1を二進数に変換してみてください。
これが後段の答えです。
前段の答えは、
printf()が十進数でいうところの四捨五入を行う位置が違うからです。

私は国語が苦手なので、答えはそちらでまとめてくださいね。

493:486
12/08/21 11:51:58.96
>>492
詳しくありがとうございました!なんとかなりそうです

494:デフォルトの名無しさん
12/08/21 14:55:59.45
[1] 授業単元:データベース概論(レポート内容がcプログラムを作成しなさいというものでしたので)
[2] 問題文(含コード&リンク):
1.
CSVファイルからAccessデータベースを作るプログラム
2.
7桁の郵便番号を与えると,その郵便番号に対応する住所を表示するプログラム.
3.
住所の一部を文字列として与えると,その文字列を含む住所と郵便番号を表示するプログラム.
URLリンク(www.mi.s.osakafu-u.ac.jp)
の6月26日のものを参考にということです。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: すみませんわからないです
 [3.3] 言語: C
[4] 期限: 8月31日まで

データベースの講義ですのでここで質問してよいのかわかりませんがプログラムを作る課題でしたので、
分かる方ぜひおねがいします。


495:デフォルトの名無しさん
12/08/21 15:00:33.39
こりゃアレだな
ken_all.csv を使えっていうお告げだ


496:デフォルトの名無しさん
12/08/21 19:32:35.34
CからDB扱ったことないから、練習してみるか。週末ためしてみよう。

497:デフォルトの名無しさん
12/08/21 19:34:34.07
いや
ちがうだろコレ

CでDBを作れっちゅー課題だ


498:デフォルトの名無しさん
12/08/21 19:46:50.11
そもそもCSVの仕様はどうするの?
RFC4180準拠なの?
リンク先にある「CSVを楽に読みだすプログラム」みたいな馬鹿チョン仕様でいいの?

499:デフォルトの名無しさん
12/08/21 19:51:37.62
>>498
お前がRFC4180準拠で書ける訳ないんだから選択の余地無しだろ

500:デフォルトの名無しさん
12/08/21 19:53:46.02
値にメタ文字を含むと爆発するおそれがありますって書いておけばいい

501:デフォルトの名無しさん
12/08/21 19:54:18.96
郵便局のサイトにあるCSVを読むんだろ
それg読めればいいだけだ


502:デフォルトの名無しさん
12/08/21 19:56:53.79
>>499
え、お前かけないの

503: 忍法帖【Lv=40,xxxPT】
12/08/21 19:56:56.74
>>494にあるURLに、材料は全部用意されてるよ。


504:デフォルトの名無しさん
12/08/21 20:02:01.89
エスケープ後もエスケープ以外のメタ文字が残るような
クソフォーマットの話はこのスレではどうでもいいと思います

505: 忍法帖【Lv=40,xxxPT】
12/08/21 20:09:05.54
Access上のテーブルは、予め作っておくのかな?
それとも、テーブルもプログラムで作成しろということなのかな?

506:デフォルトの名無しさん
12/08/21 20:24:07.47
                                /⌒ヽ⌒ヽ
                                       Y
                                    八  ヽ
                             (   __//. ヽ,, ,)
                              丶1    八.  !/
                               ζ,    八.  j
                                i    丿 、 j
                          ,. -‐=≦=|     八   |=≧=‐- 、
                        /´      !    i 、       `ヽ
  .,v─ーv_                 .{:::.:  ,:.    i し " i   '    .:、  :.:::}
..,i(厂  _,,,从vy               |::.:.: l::.   ノ (   i    i    .::l . :.:.::|
..l  ,zll^゙″  ゙ミ             ∧:.:... i::,    '~ヽ   !       .::i ...:.:∧
..《 il|′     フーv,_          !: :ヽ:. ::. . ..:. ,. |     i   .l .、.:.. . .:: .:ノ: :!              _( "''''''::::.
 \《 ヽ     .゙li ._¨''ーv,,_      {       ノ|   |   | |  ヽ    :::::::::::::::::::::::::::::;;;;;,, ---‐'' "^~
        ゙^ー、,,,¨ -   ''¨.─        / |     ;;-.;i       \
                       ,/       ,;-/;;; /' ''   ;;;X;,      ヽ
                           i'  /_,,;-‐''  |;;  ;i;;.. ~  ;;| ''‐-;,,_\_  'i
                           i   `i     X~ ;i;;; ;;     (___'_っ

507: ◆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