トップページ⇒tech
1001コメント425KB

C/C++の宿題を片付けます 96代目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG?2BP(12)
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 95代目
http://pc11.2ch.net/test/read.cgi/tech/1187944110/
0751デフォルトの名無しさん2007/10/05(金) 21:56:45
>>750
大丈夫だと思います。
0752デフォルトの名無しさん2007/10/05(金) 22:37:58
>>749
malloc()使えるなら

double * _(int r1, int r2, int r3){ return (0<r1 && 0<r2 && 0<r3) ? (double*)malloc(sizeof(double)*r1*r2*r3) : NULL; }

でいいと思われる.
0753デフォルトの名無しさん2007/10/05(金) 22:41:51
すみません。
詳しくお願いします。
0754デフォルトの名無しさん2007/10/05(金) 22:50:14
詳しくも何も答えだよ
0755デフォルトの名無しさん2007/10/05(金) 22:53:06
>3次元配列表記でアクセスできるdouble型値の格納領域
0756デフォルトの名無しさん2007/10/05(金) 22:58:17
>>754さんありがとうございました。
助かりました。
0757デフォルトの名無しさん2007/10/05(金) 23:17:51
長文失礼します。
[1] 授業単元: C言語
[2] 問題文:キューに関する問題。8つのマスに0〜9の数字を入力。-入力で最古のデータ削除。
先頭の数字hpが後から入れた数字tpに追い越されないこと。8つのマスがフル、または空になったら警告。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Cpad for Borland C++ Compiler ver.2.31
 [3.3] 言語: C
[4] 期限: ([2007年10月09日]
[5] その他の制限:特に無し

すみませんがもしよろしければ、よろしくお願いします。
0758デフォルトの名無しさん2007/10/06(土) 00:04:50
>>757
>先頭の数字hpが後から入れた数字tpに追い越されないこと。
この条件の意味が今ひとつ分からんのだけど。
「追い越されない」って何ぞ?
普通にキューなら良いの?
0759デフォルトの名無しさん2007/10/06(土) 00:44:26
>>749
double ***d3_alloc(int x, int y, int z){
double ***ret=NULL, **index=NULL, *data=NULL;
int i;

data=malloc(sizeof(*data)*x*y*z);
index=malloc(sizeof(*index)*y*z);
ret=malloc(sizeof(*ret)*z);
if(data==NULL || index==NULL || ret==NULL){
free(data);
free(index);
free(ret);
return NULL;
}
for(i=0;i<y*z;i++) index[i]=&data[i*x];
for(i=0;i<z;i++) ret[i]=&index[i*y];
return ret;
}

void d3_free(double ***d3){
free(d3[0][0]);
free(d3[0]);
free(d3);
}
0760デフォルトの名無しさん2007/10/06(土) 01:22:50
>>757
レス無かったんで単なるキュー

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5018.txt
0761デフォルトの名無しさん2007/10/06(土) 07:47:36
[1] 授業単元: プログラミング
[2] 問題文:2つの3次元ベクトル(a[3],b[3])を作り、その内積を計算/表示する
(ベクトル成分(a[0]etc.)はscanfで読み込むこと)
(内積(a[0]*b[0]+a[1]*b[1]+a[2]*b[2])はfor文で計算)
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: ([2007年10月7日まで]
[5] その他の制限: for,if,caseなどは習いました。
0762デフォルトの名無しさん2007/10/06(土) 07:57:33
#include <stdio.h>

int main(void)
{
double a[3], b[3], ip = 0;
int i;

printf("ベクトルaを入力:");
for(i=0; i<3; i++) {
scanf("%lf", a + i);
}
printf("ベクトルbを入力:");
for(i=0; i<3; i++) {
scanf("%lf", b + i);
}

for(i=0; i<3; i++) ip += a[i] * b[i];

printf("ベクトルaとベクトルbの内積は%f\n", ip);

return 0;
}
0763デフォルトの名無しさん2007/10/06(土) 08:48:21
>>762
ipってなんですか?
0764デフォルトの名無しさん2007/10/06(土) 08:50:52
>>763
自分で内積求めろって言っといてそれはないだろ
0765デフォルトの名無しさん2007/10/06(土) 09:36:42
>>764
本当に知らないんです。習ってませんし、教科書にも載ってませんでした。
でも課題で出たんです。
ipを別の文字に置き換えてはできないんですか?
家でプログラミングできないので確かめられません。
すみません。
エディタの体験版とってもできないんです
0766デフォルトの名無しさん2007/10/06(土) 09:53:54
変数名が教科書に載ってるわけねーだろ。
0767デフォルトの名無しさん2007/10/06(土) 10:04:02
習ったところや教科書に載ってる所すらわかってないんだな
0768デフォルトの名無しさん2007/10/06(土) 10:07:21
>>765
結論だけ言えば、他の文字でも良い。
ipは「変数」または「オート変数」と呼ぶ。
まずは、「変数、C言語」あたりをキーワードにして、
検索かけてみると良いんじゃないかな?
0769デフォルトの名無しさん2007/10/06(土) 10:14:23
(内積(a[0]*b[0]+a[1]*b[1]+a[2]*b[2])はfor文で計算) って書いてあるんですが、
ipって必要なんですか?
if,if-else,switch,while,do-while,forしか習ってません。あとint,double,char。
0770デフォルトの名無しさん2007/10/06(土) 10:24:48
ちゃんとレス読んでるの?
単純に、習ったことの理解が出来てないだけだから復習しなさい

ipはinner productの略かな、変数名だから別にcでもdでも何でも良い
0771デフォルトの名無しさん2007/10/06(土) 10:42:28
>>768 >>770
やっと理解できました。ありがとうございました。

迷惑かけてすみませんでした
0772デフォルトの名無しさん2007/10/06(土) 10:45:02
誰か>>733の問題のプログラム教えてください
0773デフォルトの名無しさん2007/10/06(土) 11:06:47
>>772
自分についたレスくらい嫁
0774デフォルトの名無しさん2007/10/06(土) 11:12:26
>>772
734 名前:デフォルトの名無しさん[sage] 投稿日:2007/10/05(金) 17:48:44
1,2項の行列で15分くらい悩んでる。
1,2項ってなんだ?
0775デフォルトの名無しさん2007/10/06(土) 23:23:56
整数値を一つ入力し、入力した内容を2進瑞狽ナ表示するプャ鴻Oラムを作れ=B

瑞ウの数は再帰使bヲば簡単に解けb驍セ。
bナも負数が全く演ッそうにない=B
1の補数なら反転するだけだから分かるけど、
普通は2の補数だもんなぁ。

まぁ恐らく先生もそこまで(負数の事)考慮してないんだろうけどさ…。
0776デフォルトの名無しさん2007/10/06(土) 23:34:04
入力した整数値をそのままビットシフトとかで2進数っぽく出力するのはダメなの?
0777デフォルトの名無しさん2007/10/06(土) 23:56:04
ビットシフトって2進数を二倍する時とかに使う論理シフトの事?
いまいちCの仕組み分かってないんだ。
0778デフォルトの名無しさん2007/10/06(土) 23:59:00
そもそも>>775は質問なのか?
0779デフォルトの名無しさん2007/10/07(日) 00:04:14
質問です。書き方悪かったですね…。
一応途中まで書いたものうpしました。
どうしても2の補数が表示出来そうにありません。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5020.txt
0780デフォルトの名無しさん2007/10/07(日) 00:06:34
#include <stdio.h>
int main(void)
{
int i, n;

n = 2 + 8 + 32 + 128 + 512 + 2048;
printf("\n%d = ", n);
for(i=sizeof(int)*4; i>=0; i--) putchar((n >> i) & 1 ? '1' : '0');

n = -1;
printf("\n%d = ", n);
for(i=sizeof(int)*4; i>=0; i--) putchar((n >> i) & 1 ? '1' : '0');

return 0;
}

こんな感じ>ビットシフト
0781デフォルトの名無しさん2007/10/07(日) 00:42:40
[1] 授業単元:
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5021.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月8日22:00まで
[5] その他の制限: 特にありません。
0782デフォルトの名無しさん2007/10/07(日) 00:51:54
>>779
書き方が悪いというか、独り言にしか見えなかった。
テンプレをすべて埋めろ!書き漏らすな!とまでは言わないけど、
居酒屋での愚痴じゃないんだからもう少しまともに書いた方がいいよ

#include<stdio.h>
int main(){
unsigned int i;
int n = -1;
for(i=1<<(sizeof(int)*8-1);i>0;i>>=1)printf("%d",!!(n&i));
return 0;
}
ビットシフトと言われて思いついてみたのを書いたけど、>>780の方がスマートで凹む orz
0783デフォルトの名無しさん2007/10/07(日) 01:03:23
>>782
申し訳ない、仰るとおりです。
今後気をつけます。

シフト演算子なんてものがあったんですね。
こんな簡単に書けるとは…。勉強になります。
0784デフォルトの名無しさん2007/10/07(日) 01:13:06
!!(真の値)
が1になることって保障されてます?
0785デフォルトの名無しさん2007/10/07(日) 01:23:45
C言語の場合、!0で1になることは保証されているはず。自信ないけど。
0786デフォルトの名無しさん2007/10/07(日) 01:25:11
自信持て
0787デフォルトの名無しさん2007/10/07(日) 01:28:05
普通に!=0でいいじゃん
0788デフォルトの名無しさん2007/10/07(日) 01:30:56
!!の方が一般的とか思ってた漏れは逝った方がいいですか?
0789デフォルトの名無しさん2007/10/07(日) 01:37:22
!! Σ(・ω・;)
0790デフォルトの名無しさん2007/10/07(日) 01:58:52
>>781

void preorder(NodePointer node){
printf("%c ",node->key);
if(node->left != tail) preorder(node->left);
if(node->right != tail) preorder(node->right);
}

void inorder(NodePointer node){
if(node->left != tail) inorder(node->left);
printf("%c ",node->key);
if(node->right != tail) inorder(node->right);
}

void postorder(NodePointer node){
if(node->left != tail) postorder(node->left);
if(node->right != tail) postorder(node->right);
printf("%c ",node->key);
}
0791デフォルトの名無しさん2007/10/07(日) 08:43:40
プログラミングの演習で、プログラミングの宿題ではないのですが
用語を習ってなくて自分で調べても意味不明なのでよろしくお願いします

DBMSを使用せずに、Web掲示板をプログラミングすることを考える。
記事番号、記事タイトル、投稿日付時刻、投稿者名、投稿内容(全角400文字以内)をひとつのレコードとして保存管理するものとする。

【問題】
�@このレコードをプレーンテキストで保存するとしたとき、そのファイルの書式を設計せよ。
具体的にはレコードセパレータと、フィールドセパレータを何にするかを書き、どうしてそう設計するかを説明せよ。
�A具体的な例を3レコード示せ。
0792デフォルトの名無しさん2007/10/07(日) 08:46:06
>>791
期限は10月8日17:00までです
スミマセン
0793デフォルトの名無しさん2007/10/07(日) 09:14:30
>>791 C言語となんの関係があるんだお(^ω^;) 死んでしまえばいいお・・・。
1:
 レコード = [レコード全体のバイト数を表す十六進数数字列] ":"
  (" " × [任意数] [次のカラムのバイト数を表す十六進数数字列] ":" [次のカラムの生データ]) × 5
 (注意:記事番号、記事タイトル、投稿日付時刻、投稿者名、投稿内容の5個。)

 ファイル全体 = (レコード "\n") × [レコード数]

 設計理由:
  ・テキストエディタで開いて編集できる。
  ・特定のレコードまで読み捨てるとき、飛ばし読みが容易に出来る。(レーコードの終端文字を判断する必要がない。)
  ・カラムのデータをエスケープ等をすることなく生の状態で保存できる。
   よって読み書きの度に発生するエスケープにかかるコストを削減できる。
  ・とりあえず宿題として何かをでっち上げないといけないから。

2:
45: 1:1 1c:スレタイも読めない奴は死ね。 8:20071007 a:まんすこう 6:死ね。
38: 1:2 8:ちわす。 8:20080628 a:通りすがり e:過疎ってルナ。
43: 1:3 a:名無しさん 8:20081225 a:名無しさん 16:面倒くさいお(^ω^;)。
0794デフォルトの名無しさん2007/10/07(日) 09:16:36
あ、セパレータ使わないといけないのか。
変な制限つける糞高校の先生は死ねばいいお。
0795デフォルトの名無しさん2007/10/07(日) 10:14:38
>>774
僕もわからないので火曜日に友達に聞きます
申し訳ないで。
0796デフォルトの名無しさん2007/10/07(日) 10:25:14
>>795
『申し訳ないです』の誤りです
すいません
0797デフォルトの名無しさん2007/10/07(日) 11:17:57
[1] 授業単元: プログラミング
[2] 問題文:2次方程式の解:1次元変数c[2]を入力し、c[0]xの2乗+c[1]x+c[2]=0の
2つの解(実部と虚部:xre[2],xim[2])を表示するプログラムを作れ。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C言語
[4] 期限: ([2007年10月8日まで]
[5] その他の制限: for,if,switch、do-while
0798REI2007/10/07(日) 19:21:11
皆様には本当にくだらない質問だと思いますが、

『現在の日付を取得してそれを8けたの数値とし変数bに代入する』

というのはどうすればいいんでしょうか。

OSはWindowsでC言語の授業です。
まわりは男の先輩ばっかりで聞きにくくて・・・。
来年は技術科から教育家政科に転科予定なのですが、
この単位を落とすと移れません。
勉強しても全く頭に入らずかなり泣きたい状況です。

自分がこんなに機械オンチだったなんて・・・。
助けて下さい。
0799デフォルトの名無しさん2007/10/07(日) 19:39:20
>>798
>>1 を参照。

それと、数値への変換というのがよくわからないが、
例えば2007年10月07日を変換すると 20071007 になるのかい?
0800デフォルトの名無しさん2007/10/07(日) 20:46:14
>>798
#include <stdio.h>
#include <time.h>

int main(void)
{
    time_t timer;
    struct tm *t_st;
    int b;

    time(&timer);
    t_st = localtime(&timer);

    b = (t_st->tm_year + 1900)*10000 + (t_st->tm_mon + 1)*100 + t_st->tm_mday;
    printf("%d\n", b);

    return 0;
}
0801デフォルトの名無しさん2007/10/07(日) 21:38:08
localtime()でばらしたんならstrftime()を使うだろう……常考
0802デフォルトの名無しさん2007/10/07(日) 21:50:09
>『現在の日付を取得してそれを8けたの数値とし変数bに代入する』
文字列にしろとは言ってない
0803デフォルトの名無しさん2007/10/07(日) 21:54:37
atoiは?
0804デフォルトの名無しさん2007/10/07(日) 23:48:02
#include <stdio.h>

int main (void)
{
int a,b,average;

printf("aの値を入力してください>>>");
scanf("%d", &a);
printf("bの値を入力してください>>>");
scanf("%d", &b);
average=(double)(a + b)/2;
printf("平均は%fです\n",average);

return 0;
}

キャストを使って2つの整数の平均を出せとの問題なのですが
平均値に0.0000としか出ません
最後を%dで代入させると整数値だけは出るんですけど…
なぜかご教授いただけると有り難いです
0805デフォルトの名無しさん2007/10/07(日) 23:53:09
averageがintだからじゃない?
0806デフォルトの名無しさん2007/10/07(日) 23:55:43
printf("平均は%lfです\n",(double)average);

にしたら動くかな?
0807デフォルトの名無しさん2007/10/07(日) 23:58:09
>>805-806
書き直してみると正確に値がでました。ありがとうございます。
でも式に(double)とキャストを付けたら型変換で演算結果もdoubleにならないのかな…
0808デフォルトの名無しさん2007/10/07(日) 23:59:51
>>807
doubleに変換して演算した結果をintにいれてるじゃないか
0809デフォルトの名無しさん2007/10/08(月) 00:01:16
>>808
あ、なるほど…ありがとうございました。
0810REI2007/10/08(月) 00:08:55
他の課題をやっていてこんな時間になってしまいました。
せっかくアドバイスを頂いたのに遅くなってしまって申し訳ありませんでした。

799さん、気づきませんでした。
ごめんなさい。
そうですよね。
質問する側にもマナー!!(これから守れるように頑張ります。)
&そうです。2007年10月8日なら数値としての20,071,008になるということです。

800さん、ありがとうございます。
チューターの前できちんと説明できるようにするには、
あと2、3時間かかりそうですが、頑張ってみます。
こういう事のできる頭が欲しかった・・・。
ウ・・・ウラヤマシイ・・・。

親切な方がいて、かなり感激しています。
本当にありがとうございます。
勇気をだして書き込んで良かったです。

また皆様からしたら馬鹿な質問かもしれませんが、
させてください。
よろしくおねがいします。

0811REI2007/10/08(月) 00:14:01
801さん、802さん
考えて下さってありがとうございます。
他人事をこんなに真剣に考えていただいてうれしいです。
ココにはこんなにいっぱい優しい人がいるんですね。
0812デフォルトの名無しさん2007/10/08(月) 01:41:24
要らん文章までくっつけんでいい、うざい
0813↑ツンデレ?2007/10/08(月) 02:45:53
 
0814デフォルトの名無しさん2007/10/08(月) 02:52:38
要らん文章までくっつけないでいいんだからねっ☆
0815デフォルトの名無しさん2007/10/08(月) 02:53:46
どこがデレなのかヤラシク説明してくれ
0816デフォルトの名無しさん2007/10/08(月) 04:08:47
[1] 授業単元: プログラミング
[2] 問題文:2次方程式の解:1次元変数c[2]を入力し、c[0]xの2乗+c[1]x+c[2]=0の
2つの解(実部と虚部:xre[2],xim[2])を表示するプログラムを作る。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C言語
[4] 期限: ([2007年10月8日まで]
[5] その他の制限: for,if,switch、do-while
お願いします
0817デフォルトの名無しさん2007/10/08(月) 04:34:17
>>816
#include <stdio.h>
#include <math.h>

int main(void)
{
int i;
double c[3], xre[2], xim[2] = {0}, j;

for(i=0; i<3; i++) {
printf("Input c[%d]:", i);
scanf("%lf", c + i);
}
j = c[1] * c[1] - 4 * c[0] * c[2];
if(j>=0) {
xre[0] = (-c[1] - sqrt(j)) / ( 2 * c[0]);
xre[1] = (-c[1] + sqrt(j)) / ( 2 * c[0]);
}
else {
xre[0] = xre[1] = -c[1] / (2 * c[0]);
xim[0] = sqrt(-j) / (2 * c[0]);
xim[1] = -sqrt(-j) / (2 * c[0]);
}
for(i=0; i<2; i++) {
printf("xre[%d] = %f xim[%d] = %f\n", i, xre[i], i, xim[i]);
}

return 0;
}
0818デフォルトの名無しさん2007/10/08(月) 04:49:58
>>817
助かりました
ありがとうございました
0819 ◆vLIz8KOkPM 2007/10/08(月) 11:25:23
[1] 授業単元: プログラミング
[2] 問題文
次の(1)(2) の処理を,この順に行うプログラムを作成しなさい
(1) ファイルから書籍データを読み込み,構造体に格納する.
ファイルは>>820
書籍データファイルのフォーマットは以下のように,「著者名, 書名, 出版社, 発行年」の4 つの属性がそれぞれカンマで区切られ,1 行に1 書籍のデータが格納されている.
H.M.Deitel & P.J.Deitel,C How to Program,Prentice Hall,2001
B.W.Kernighan & D.M.Ritchie,The C Programming Language,Prentice Hall,1988
(2) (1) で読み込んだ書籍データを発行年の昇順に並べ替え(すなわち,発行年の早いものほど前に来る),以下の形式でファイル(pro.txt)へ出力する.
各書籍データの区切りには空白行を1 つ入れること.
% ./kadai
% cat pro.txt
Author: B.W.Kernighan & D.M.Ritchie
Title: The C Programming Language
Publisher: Prentice Hall
Year: 1988
・
・
・
Author: M.Barr & A.Oram
Title: Programming Embedded Systems in C and C++
Publisher: O'Reilly & Associates
Year: 1999
%
[3.1] OS: Linux[3.2] コンパイラ名:gcc[3.3] 言語: c言語
[4]期限:2007年10月9日午前8時まで
[5]制限:構造体、配列、関数まで習いました
0820デフォルトの名無しさん2007/10/08(月) 11:26:29
てす
0821 ◆vLIz8KOkPM 2007/10/08(月) 11:26:35
Author: B.W.Kernighan & D.M.Ritchie
Title: The C Programming Language
Publisher: Prentice Hall
Year: 1988

Author: W.H.Press & B.P.Flannery & S.A.Teukolsky & W.T.Vetterling
Title: Numerical Recipes in C : The Art of Scientific Computing
Publisher: Cambridge University Press
Year: 1993

Author: G.M.Perry
Title: Absolute Beginner's Guide to C
Publisher: Sams
Year: 1994

Author: D.M.Etter
Title: Introduction to C
Publisher: Prentice Hall
Year: 1999

Author: M.Barr & A.Oram
Title: Programming Embedded Systems in C and C++
Publisher: O'Reilly & Associates
Year: 1999
0822デフォルトの名無しさん2007/10/08(月) 11:28:50
>>819
著名にカンマが含まれている場合は?
0823デフォルトの名無しさん2007/10/08(月) 11:29:47
>>821

>>819では
> 書籍データファイルのフォーマットは以下のように,「著者名, 書名, 出版社, 発行年」の4 つの属性がそれぞれカンマで区切られ,1 行に1 書籍のデータが格納されている.
って書いてあんのに,どうみてもフォーマットが違いますありがとうございました
0824 ◆vLIz8KOkPM 2007/10/08(月) 11:30:19
>>819のtxtファイルは>>820ではなく、>>821に書き込まれました
0825 ◆vLIz8KOkPM 2007/10/08(月) 11:33:37
>>822著名にカンマは絶対に含まれないです。よろしくおねがい致しますm(__)m
0826 ◆vLIz8KOkPM 2007/10/08(月) 11:37:19
間違えました・・・
>>819>>821>>824をもう一度書き直します
0827 ◆vLIz8KOkPM 2007/10/08(月) 11:37:56
B.W.Kernighan & D.M.Ritchie,The C Programming Language,Prentice Hall,1988
H.M.Deitel & P.J.Deitel,C How to Program,Prentice Hall,2001
J.R.Hanly & E.B.Koffman,Problem Solving and Program Design in C,Addison-Wesley,2002
D.M.Etter,Introduction to C,Prentice Hall,1999
H.H.Tan & T.B.D'Orazio,C Programming for Engineering and Computer Science,McGraw-Hill,2000
G.M.Perry,Absolute Beginner's Guide to C,Sams,1994
S.Prata,C Primer Plus,Sams,2001
S.P.Harbison III & G.L.Steele Jr.,C : A Reference Manual,Prentice Hall,2002
W.H.Press & B.P.Flannery & S.A.Teukolsky & W.T.Vetterling,Numerical Recipes in C : The Art of Scientific Computing,Cambridge University Press,1993
M.Barr & A.Oram,Programming Embedded Systems in C and C++,O'Reilly & Associates,1999
0828 ◆vLIz8KOkPM 2007/10/08(月) 11:39:01
[1] 授業単元: プログラミング
[2] 問題文
次の(1)(2) の処理を,この順に行うプログラムを作成しなさい
(1) ファイルから書籍データを読み込み,構造体に格納する.
ファイルは>>827
書籍データファイルのフォーマットは以下のように,「著者名, 書名, 出版社, 発行年」の4 つの属性がそれぞれカンマで区切られ,1 行に1 書籍のデータが格納されている.
H.M.Deitel & P.J.Deitel,C How to Program,Prentice Hall,2001
B.W.Kernighan & D.M.Ritchie,The C Programming Language,Prentice Hall,1988
(2) (1) で読み込んだ書籍データを発行年の昇順に並べ替え(すなわち,発行年の早いものほど前に来る),以下の形式でファイル(pro.txt)へ出力する.
各書籍データの区切りには空白行を1 つ入れること.
% ./kadai
% cat pro.txt
Author: B.W.Kernighan & D.M.Ritchie
Title: The C Programming Language
Publisher: Prentice Hall
Year: 1988
・
・
・
Author: S.P.Harbison III & G.L.Steele Jr.
Title: C : A Reference Manual
Publisher: Prentice Hall
Year: 2002
%
[3.1] OS: Linux[3.2] コンパイラ名:gcc[3.3] 言語: c言語
[4]期限:2007年10月9日午前8時まで
[5]制限:構造体、配列、関数まで習いました
0829デフォルトの名無しさん2007/10/08(月) 11:42:50
質問ですが・・・
このスレは画像処理系の問題も質問してよろしいのでしょうか?
0830デフォルトの名無しさん2007/10/08(月) 11:51:31
スレタイみて考えろ。
0831 ◆OJTev..Ns6 2007/10/08(月) 11:59:22
[1] 問題文(含コード&リンク): 構造体を使って項目(名前など)の追加と
削除ができるプログラミングを作成
[2] 環境
[2.1] OS:Windows
[2.2] コンパイラ名とバージョン:VC2005
[2.3] 言語: C
[3] 期限:できれば早目でオナガイ(´д`;)
(´д`)マッタクモッテワカリマセン
void InsertNode(List *list,char name,int sex,int age,int birth,int zipcode,char addr, int *tell)
{
Index ptr = Top;
Top = GetIndex(list);
SetNode(&list->n[Top], name,sex,age,birth,zipcode,addr,tell,ptr);
}
中略
int main(void)
{
Menu menu;
List list;
InitList(&list,100);
do{
Node x;
switch (menu = SelectMenu())
{
case Insert: x = Read("挿入");
InsertNode(&list,x.name,x.sex,x.age,x.birth,x.zipcode,x.addr,x.tell);
break;
エラーMSG
mainのInsertNodeの
8 番目の引数を 'int' から 'int *' に変換できません。(新しい機能 ; ヘルプを参照)
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
0832デフォルトの名無しさん2007/10/08(月) 12:04:41
>>633
の回答がまだないようだ…この問題でスレの品格が問われるのだが…
0833デフォルトの名無しさん2007/10/08(月) 12:08:37
>>832
そういう偉そうなことが言えるんなら、お前が解いてやれよw
0834デフォルトの名無しさん2007/10/08(月) 12:16:21
>>828
直リンしてみた
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5022.c
0835デフォルトの名無しさん2007/10/08(月) 12:17:27
>>831
問題文に中略とか使って説明省くような奴は今すぐ死んで教官に絞られて来い
0836デフォルトの名無しさん2007/10/08(月) 13:08:09
>>828
あっ、ごめ。勘違いしてC++で書いちゃった。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5023.txt
0837 ◆vLIz8KOkPM 2007/10/08(月) 13:10:49
>>834
初心者でも理解しやすいプログラム(forとかifを使用して、mallocなどを使わず、構造体をシンプルに
struct bookdate{
char author[256]
char title[256]
char publisher[256]
int year
};

みたいな感じで書いていただけないでしょうか……?
0838デフォルトの名無しさん2007/10/08(月) 13:16:51
typedef struct _cite{
char *author,
*title,
*publisher;
int published_date;
} cite;

のほうがシンプルだと思うが
0839 ◆vLIz8KOkPM 2007/10/08(月) 13:18:36
>>838
typedef struct _cite{
char *author,
*title,
*publisher;
int published_date;
} cite;

が理解できないんです・・・
0840デフォルトの名無しさん2007/10/08(月) 13:24:26
>>831
その問題文じゃ何も作れん。
サンプルコードも含めて問題全体をどっかにアップするなりしてくれ
0841デフォルトの名無しさん2007/10/08(月) 13:26:32
>>839
全く難解じゃないから少し勉強しろ
0842デフォルトの名無しさん2007/10/08(月) 13:30:00
>>837
間違ってC++で書いちゃったので、シンプルなCに書き換えました。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5024.txt
0843デフォルトの名無しさん2007/10/08(月) 13:55:40
宿題━キョロ━(゚∀゚≡゚∀゚)━キョロ━マダ━?
0844デフォルトの名無しさん2007/10/08(月) 14:02:07
>>831のは明らかにサンプルとか問題文ではないだろ
>void InsertNode(List *list,char name,int sex,int age,int birth,int zipcode,char addr, int *tell)
こんな引数だし。名前一文字か、っていう

エラー書いてあるし、多分書きかけの
0845デフォルトの名無しさん2007/10/08(月) 14:08:18
>>829
とりあえず書いてみて。
0846 ◆OJTev..Ns6 2007/10/08(月) 14:08:54
>>840
問題 構造体を使用して”名前、性別、年齢、生年月日、郵便番号、住所、電話番号を表示させる
   又、データの追加、削除ができるこでき一覧表示は各項目でソートされていること
0847デフォルトの名無しさん2007/10/08(月) 14:10:09
>>846
C++でも良いですか?私の今の気分はC++なんですが・・・(´・ω・`)
0848デフォルトの名無しさん2007/10/08(月) 14:10:57
>>846
なんか>>831の後ろに付いてるソースコードは無視して良いの?
0849デフォルトの名無しさん2007/10/08(月) 14:13:40
>>846
それ機能要件じゃん
本当にいいのか?
0850 ◆OJTev..Ns6 2007/10/08(月) 14:30:45
>>847
すみません。。。Cで指令が出てるもんで(´・ω・`)

>>848
問題ないです(^ω^)

>>849
機能要件??
すみません、まだまだ未熟ですのでわからないですorz
■ このスレッドは過去ログ倉庫に格納されています