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

C/C++の宿題を片づけます 49代目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/08/10(水) 17:10:47

あなたが解けないC/C++の宿題を片づけます
――【注意点】―――――――――――――――――――――――――
・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
―――――――――――――――――――――――――――――――

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows/Linux/等々
 [3.2] コンパイラ名とバージョン: gcc 2.9 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

【前スレ】
48代目: http://pc8.2ch.net/test/read.cgi/tech/1121471445/

【歴代スレは>>2-13】
0685595 ◆AOMdbQiVo. 2005/09/05(月) 17:20:28
>>683
すまんが、さすがに2chでそれはできない。
たまーにここや他のスレに見てるから、わからんことがあったら聞いておくれ。
名無しの回答者の中に俺が混ざってるかもしれん。

あと、>>683がこれから先、もっと難しいことをやるなら
画像処理スレの方で聞いた方が、ここよりも良い回答が得られるかもしれない。
(俺は画像処理は専門外なので、これ以上のことは答えられん)
そうはいっても、もうちょっと質問の仕方とC言語の勉強が必要だけどな。
ま、とにかく、がんばってくれ

あとは名無しに戻るよノシ
0686デフォルトの名無しさん2005/09/05(月) 17:21:29
>>684
こらこらw本当に書きそうだからやめれw
0687デフォルトの名無しさん2005/09/05(月) 17:27:37
良心の人だなぁ・・・
char usage[] = {数値列};
system(usage);
の人とはえらい違いだ。
0688デフォルトの名無しさん2005/09/05(月) 18:54:53
下駄を履かせてないのに-128するんはヘンだな。

それから浮動小数点演算してるんだから、誤差は出るつもりでいないとな。
上限や下限に収まらないときもあるだろう。

とヒントをくらいは出しておこう。
0689デフォルトの名無しさん2005/09/05(月) 21:05:25
なんか活気がないなと思う今日このごろ。
大学って10月からでしたっけか?
0690デフォルトの名無しさん2005/09/05(月) 21:22:34
国立系なら10月から後期課程のハズ
0691デフォルトの名無しさん2005/09/05(月) 21:59:53
後期課程?
0692デフォルトの名無しさん2005/09/05(月) 22:10:31
昔は知らないけど最近は春休みと夏休みを境目に前期と後期の二学期制になってる
冬休みもあったような気がするけど学期は変わらないかな
0693デフォルトの名無しさん2005/09/05(月) 22:22:16
>>692
それは知ってるけど後期課程とは言わないんじゃないのか?
ドクターじゃあるまいし。
0694デフォルトの名無しさん2005/09/05(月) 23:10:21
ああ、なるほど。課程って言ったらおかしいか。
俺が行ってた大学はSpring SemesterとFall Semesterって言ってた。
他は知らない。
0695デフォルトの名無しさん2005/09/06(火) 10:27:11
>>685
そうですか・・・残念です。画像処理のアイデアも求められているのは授業の課題内容から
わかりますね。


この授業の課題は大変難しくて有名で、私にも色々事情があって本当に死のうかと考えた時期も
ありました。課題でないくらいで大げさなとおもわれるかもしれませんが、理由は省きますが
本当に欝になって死ぬことばっかり考えてた3週間でした。
ここのみなさんには課題をやっていただいたりして大変助かりました。
私が死ななかったのはみなさんのおかげであるという部分がかなりあります。
ありがとうございました。
0696デフォルトの名無しさん2005/09/06(火) 10:36:58
授業か・・・ゼミではないのか?
0697デフォルトの名無しさん2005/09/06(火) 10:42:21
>>695
不快な事を書くな
0698デフォルトの名無しさん2005/09/06(火) 10:53:51
厨排除のため、うそ宿題でも作るか?
プログラミング言語C(通称K&R)の問題とかそれらしく書こうか。
0699デフォルトの名無しさん2005/09/06(火) 11:02:11
暇人だな、このスレを保守するという手段が目的化してるお前も十分に厨
0700デフォルトの名無しさん2005/09/06(火) 11:02:11
>>679
返事が送れてすみません。ありがとうございました
0701デフォルトの名無しさん2005/09/06(火) 11:26:04
うんうん。698と699は厨だね。
以後スルーで。
0702デフォルトの名無しさん2005/09/06(火) 11:36:54
はじめましてよろしくお願いします。
CSV形式のファイルの読み込みをしたいんですけど、ちょっとわからず、
知恵を貸していただけたら幸いかと思います。
#include<vector>
bool Load Maintenance File(LPCTSTR lpsaName,std||vectar<MAINTEREC>&vecRec))
↑           ↑
/*ファイル名*/ /*ファイル内容*/
===MAINTERECファイル内容===
=================================
MAINTEREC Rec;
整数(int)なら→Rec.nWave 浮動小数点(double)なら→Rec.dValve
vecRec.push_back(Rec);
=================================
※数字以外はエラー 必ず1つ目は整数値、二つ目は浮動小数点じゃない場合もある
 格納配列 obj
07037022005/09/06(火) 11:38:58
訂正
lpsaName→/*ファイル名*/
MAINTEREC→/*ファイル内容*/
07047022005/09/06(火) 11:45:36
例
==ファイル中身==   っていう感じでファイルがあります。
 123,0.123(一行)
  ・ ,  ・
  ・ ,  ・
  ・ ,  ・
  ・ ,  ・
==========
 整数 | 少数
  ↓    ↓
 整数   実数
  ↓    ↓
Rec.nWave Rec.dValve
0705デフォルトの名無しさん2005/09/06(火) 11:52:37
うむむ。全角か・・・。
0706デフォルトの名無しさん2005/09/06(火) 11:54:01
ttp://cm.bell-labs.com/cm/cs/tpop/csvgetlinec++.c
07077022005/09/06(火) 11:56:03
ああっ半角です。。それとも全角で書いたのがまずかったですか?
>>705
0708デフォルトの名無しさん2005/09/06(火) 12:04:00
>>707
ファイルの中身として全角数字出したわけだから全角解析しろってことだろ?
07097022005/09/06(火) 12:17:17
いやいやすみません半角でいいです・・・・
ごめんなさい・・・
>>708
0710デフォルトの名無しさん2005/09/06(火) 12:25:32
作ったのが無駄になったじゃねえか
むかつく
07117022005/09/06(火) 12:30:51
ホントすみません・・・ごめんなさい・・・
>>710
07127022005/09/06(火) 12:59:51
すみません誰か・・流れだけでもいいので教えていただけませんでしょうか?
07137022005/09/06(火) 13:22:06
>>710
作ったところまで教えていただけませんか?
0714デフォルトの名無しさん2005/09/06(火) 13:33:25
まあ、>>1読め。
0715デフォルトの名無しさん2005/09/06(火) 14:03:07
>>712
1) ファイルを開く
2) while(ファイルから1行取得→string、EOFまで)
  {
 3)  ・stringからカンマの前後で部分文字列切り出し
 4)  ・前後のスペース除去
 5)  ・文字列→数値変換
 6)  ・それぞれの値を構造体?のメンバに保存
 7)  ・構造体?をvectorにpush_back
}
8) ファイルを閉じる

あと、質問するときは>>1をちゃんと読んで、テンプレをちゃんと埋めること。
0716デフォルトの名無しさん2005/09/06(火) 14:09:19
>>712は日本語がなんかおかしいし留学生とかじゃねーの?
多分>>1を読んでも意味がよくわからなかったんだよ
07177022005/09/06(火) 14:10:15
>>714,715
すみません、焦っていて周りが見えなくなっていました。。。ごめんなさい!
07187022005/09/06(火) 14:14:38
[1] 授業単元: プログラム演習
[2] 問題文(含コード&リンク): >>702 
[3] 環境
 [3.1] OS: win2000
 [3.2] コンパイラ名とバージョン: VC++6.0
 [3.3] 言語: C
[4] 期限:9月6日16時30分ぐらいまで
[5] その他の制限: 半角でお願いします
0719デフォルトの名無しさん2005/09/06(火) 14:16:55
あと2時間かw
>>702の一番下の格納配列 objって何を格納したいの?
07207022005/09/06(火) 14:28:16
配列オブジェクトへ追加する

vecRec.push_back(Rec);→追加
07217022005/09/06(火) 14:30:01
>>715
stringってC言語なんですか?
0722デフォルトの名無しさん2005/09/06(火) 14:37:32
ソースコード直に書いてたらなんか変な操作したのか消えて一つ前の自分の書き込みが表示された。
最近多くて困る。@JaneStyle
0723デフォルトの名無しさん2005/09/06(火) 14:38:15
>>718
> MAINTEREC Rec;
> 整数(int)なら→Rec.nWave 浮動小数点(double)なら→Rec.dValve
これが意味分からない。MAINTERECの定義と、CSVの内容の書式を教えてくれ。
こういうことでいいのか?しかもstd::vectorってCじゃないし。

CSV = LINEが1つ以上
LINE = DATA ' ' DATA '\n'
DATA = INT | DOUBLE
0724デフォルトの名無しさん2005/09/06(火) 14:40:37
>>721
格納先変数でそ
0725デフォルトの名無しさん2005/09/06(火) 14:41:28
>>722
Ctrl+Zで案でゅ
0726デフォルトの名無しさん2005/09/06(火) 14:51:15
>>725
色々今試してみたらSHIFT+BackSpaceで再現出来た
07277022005/09/06(火) 15:09:24
あっホントだ・・・std::vector C++だ・・・
とりあえずもらった資料にはこれぐらいしか書いてないっす。。。
もう一度書きます。
bool LoadMaintenanceFile(LPCTSTR lpsaName/*ファイル名*/,std||vectar<MAINTEREC>/*ファイル内容*/&vecRec)

MAINTEREC Rec;       ※数字以外はエラー
----------------       一つ目は必ず整数
整数→Rec.nWave        2つ目は浮動小数点(ではない場合もある)
実数→Rec.dValve        格納配列ojb
vecRec.push_back(Rec);→追加
0728デフォルトの名無しさん2005/09/06(火) 15:12:19
>std||vectar
これだけの量で間違いすぎ
07297022005/09/06(火) 15:14:52
>>728
何を間違ってるの?
0730デフォルトの名無しさん2005/09/06(火) 15:21:02
std::vector
std||vectar
間違い探し
07317152005/09/06(火) 15:26:18
>>721
stringはstd:stringのつもりで書いた。ちなみにC++。
別にcharの配列でもいいんだけどね。
07327022005/09/06(火) 15:26:23
::でしたか!すみません!
07337022005/09/06(火) 15:58:43
すみませんC言語って言ってたんですけどC++でお願いできませんでしょうか
[1] 授業単元: プログラム演習
[2] 問題文(含コード&リンク): >>702 
[3] 環境
 [3.1] OS: win2000
 [3.2] コンパイラ名とバージョン: VC++6.0
 [3.3] 言語: C++
[4] 期限:9月6日18時00分ぐらいまで
[5] その他の制限: 半角でお願いします
0734デフォルトの名無しさん2005/09/06(火) 16:01:00
期限が延びてるw
0735デフォルトの名無しさん2005/09/06(火) 16:05:18
もしかしてMAINTERECは構造体じゃなくて共用体か?
0736デフォルトの名無しさん2005/09/06(火) 16:06:28
ああ、勘違い。そんなわけないな。
0737デフォルトの名無しさん2005/09/06(火) 16:08:29
てっかfscanfで簡単に読み込めるが
0738デフォルトの名無しさん2005/09/06(火) 16:09:46
>>727
だとしたら、その仕様を書いた人間の頭が悪い。書き直させろ。
07397022005/09/06(火) 16:22:16
流れは>>715の参考に
1) ファイルを開く
2) ファイルから1行取得し、EOFまで
  {
 3)  ・数字なら処理を!数字でなかったらエラー
 4)  ・文字列を数値に変換
 5)  ・整数と実数にわける
 6)  ・整数ならRec.nWaveに保存してリストの末尾に追加するpush_back(Rec.nWave)
 7)  ・実数ならRec.dValveに保存してリストの末尾に追加するpush_back(Rec.dValve)
}
8) ファイルを閉じる
0740デフォルトの名無しさん2005/09/06(火) 16:26:28
二つ目は整数でも実数でもRec.dValveに入れるんじゃないのか。
0741デフォルトの名無しさん2005/09/06(火) 16:47:27
>>739
だから、問題の仕様自体が曖昧に過ぎるから、皆書くにかけないんだよ。
聞く限りでは内容はかなり簡単そうなんだから。もしそれだけしか仕様が
与えられないのであれば、誰も書けない。
07427022005/09/06(火) 16:55:59
ちょっとまとめてから出直してきます。みなさんいろいろすみません・・・・
0743デフォルトの名無しさん2005/09/06(火) 16:58:19
CSV読み込み PHP ソース

fgetcsv
http://php.s3.to/man/function.fgetcsv.html
0744デフォルトの名無しさん2005/09/06(火) 17:01:29
CSVってカンマ区切り、タブ区切り、固定長などがある。
カンマ区切りの場合、文字をダブルコーテーションで区切ると、中のカンマは文字扱い。

まずは扱えるCSVファイルの仕様を確定すること。

漢字が有る場合、漢字の一部をカンマと判断する場合があるので、
1バイト文字と2バイト文字は、それぞれ適切に扱う必要がある。
07457152005/09/06(火) 17:04:24
>>702
期待した通りの物かどうか知らんが、とりあえず上げとく
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/905.txt
それなりに動くとこまでは確認した (↑のままじゃ動かないけど
0746デフォルトの名無しさん2005/09/06(火) 17:05:03
MS Officeだとcsvはカンマ区切りでタブ区切りはテキストだな
0747デフォルトの名無しさん2005/09/06(火) 17:08:32
CSV(Comma Separated Values)
ふつう、タブでも固定でも無い
07487442005/09/06(火) 17:13:09
そっすか。
0749デフォルトの名無しさん2005/09/06(火) 17:21:43
tsv(TabSeparatedValues)とも言うなぁ。
0750デフォルトの名無しさん2005/09/06(火) 17:25:01
>>745
サンクスです!
0751デフォルトの名無しさん2005/09/06(火) 17:38:13
今回の場合は関係ないけど、
文字の中にカンマが入ってる場合(ダブルクォートで囲む)とか、
さらにその中にダブルクォートが入ってる場合(エスケープするんだっけ?)とか、
ちゃんとしたものを実装しようとすると頭が痛くなる罠
0752デフォルトの名無しさん2005/09/06(火) 17:51:09
>>702
マルチポストしてないで早く仕様出せ。
0753デフォルトの名無しさん2005/09/06(火) 19:34:34
>>751
literalなダブルクォートは二つ重ねて""で書く
イヤらしいのは改行含むカラムがある場合(エクセルはそーゆーのも出力するはず。
CRだかLFだか忘れたが)
0754デフォルトの名無しさん2005/09/06(火) 19:40:13
妄想ですね。
0755デフォルトの名無しさん2005/09/06(火) 20:04:44
>>753
確認したら\nだった。
0756デフォルトの名無しさん2005/09/06(火) 20:06:23
>>755
LFか。ならstdioやiostreamのテキストモードでの行読みはつかえん
ということだな。
0757デフォルトの名無しさん2005/09/06(火) 21:53:48
下のポログラムを参考にして名前もホームランの本数も入力できて何人分も追加できるポログラムを教えてください。ポインター使用でお願いします。
#include <stdio.h> #include <malloc.h> #include <string.h>
struct MJlist {
char name [20]; int homerun;
struct MJlist *pointer;
};
int main (void){
struct MJlist *hd,*p1,*p2; int sum =0;
p2=(struct MJlist*)malloc(sizeof(struct MJlist));
strcpy(p2->name,"ICHIRO");
p2->homerun=10;
p2->pointer=NULL;
p1=(struct MJlist*)malloc(sizeof(struct MJlist));
strcpy(p1->name,"MATUI");
p1->homerun=15;
p1->pointer=NULL;
hd->pointer=p1;
p1->pointer=p2;
hd=(struct MJlist*)malloc(sizeof(struct MJlist));
strcpy(hd->name,"Nomo");
hd->homerun=5;
hd->pointer=NULL;
}

0758デフォルトの名無しさん2005/09/06(火) 21:55:40
ポログラムってなんだよ
0759デフォルトの名無しさん 2005/09/06(火) 21:58:18
プログラムです。提出明日であせってました
0760デフォルトの名無しさん2005/09/06(火) 22:06:07
おそらく連結リストにして欲しいのだろうけど。
サンプルは動かないわ/仕様は曖昧だわで
回答者がいないほうに一票
0761デフォルトの名無しさん2005/09/06(火) 22:11:55
いい加減なソース付ける暇があるなら、テンプレに従えよ
0762デフォルトの名無しさん2005/09/06(火) 22:12:06
>>757
このままで名前もホームランの本数も入力できて何人分も追加できるポログラムに
なっているよ。
だからそのまま提出すれば大丈夫でしょう。
もちろんポインターも使ってるし。
0763デフォルトの名無しさん 2005/09/06(火) 22:17:19
名前もホームランの本数も入力できて何人分も追加はキーボードであと入力でfor かなんかでまわしてほしいんですが(´Д⊂)
0764デフォルトの名無しさん 2005/09/06(火) 22:19:19
はぼ書き換えなるとおもいます
0765デフォルトの名無しさん2005/09/06(火) 22:25:12
うーん。ポログラムってキーボード使わないの?だと、完全にお手上げだ。
キーボードの付いているパソコンを用意して欲しい。
入力を for で回したいならつぎのようにすればいいかな?
char* nyuryoku[]={"入力  "," 入力 ","  入力","力  入"};
int i;
for(i=0;i<100;i++){
printf("%s\n",nyuryoku[i%4]);
}
0766デフォルトの名無しさん2005/09/06(火) 22:31:15
何そのギャグ。
0767デフォルトの名無しさん 2005/09/06(火) 22:32:12
ポインターをつっかて名前もホームランの本数も入力できて何人分も追加できれば
どんなんでもいいので教えてください
0768デフォルトの名無しさん2005/09/06(火) 22:32:35
しつこい
0769デフォルトの名無しさん 2005/09/06(火) 22:35:41
じゃあ。解いてくださいよ!!!
0770デフォルトの名無しさん2005/09/06(火) 22:44:25
>>757 batterにendと入力すれば入力終了。正しいかは保障しない。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct MJlist {
  char name [20];
  int homerun;
  struct MJlist *pointer;
};
int main (void) {
  struct MJlist *head = NULL, *tail = NULL, *temp;
  char name[256]; int homer;
  for (; ; ) {
    printf("batter?:"); scanf("%255s", name); if (!strcmp(name, "end")) break;
    printf("homer?:"); scanf("%d", &homer);
    temp = (struct MJlist*)malloc(sizeof(struct MJlist));
    strcpy(temp->name, name);
    temp->homerun = homer; temp->pointer = NULL;
    if (head != NULL) tail->pointer = temp; else head = temp;
    tail = temp;
  }
  temp = head;
  while (temp != NULL) {
    printf("batter:%s, homer:%d\n", temp->name, temp->homerun);
    temp = temp->pointer;
  }
  while (head != NULL) {
    temp = head; head = head->pointer;
    free(temp);
  }
  return 0;
}
0771デフォルトの名無しさん 2005/09/06(火) 22:53:43
770san
ありがとうございます(;´д`)
0772デフォルトの名無しさん2005/09/06(火) 23:34:21
なんか釣ってるのかまともな宿題なのかわからんなw
0773デフォルトの名無しさん2005/09/06(火) 23:41:20
if(!(0))はtrueでif(!(2))とかif(!(-3))はfalseになるんだっけ?
0774デフォルトの名無しさん2005/09/06(火) 23:51:31
そう
0775デフォルトの名無しさん2005/09/06(火) 23:53:22
>>773
それでいい
負数も単体では真




以下チラシの裏
だからGetMessageの戻り値チェックは0以外かじゃなくて0以上かにしろと…(-1が返ってくるとry
0776デフォルトの名無しさん2005/09/07(水) 00:01:37
>>774-775
サンクス。今までずっと0以下がfalseだと勘違いしてた。
まあ、if()に値を直接入れたりはしないようにしてたけど。
0777デフォルトの名無しさん2005/09/07(水) 00:11:15
>>776
そいつぁいい心がけだ。
0778デフォルトの名無しさん2005/09/07(水) 00:46:10
>>777
そーでもない
値が0か0以外かで保障される場合、むしろ直接使ったほうがいい。
0779デフォルトの名無しさん2005/09/07(水) 01:17:24
if (!!GetMessage(...)) {
...;
}
0780デフォルトの名無しさん2005/09/07(水) 09:38:47
GetMessage()の話だろ、きみら>>778-779分かってる?
特に779
07817792005/09/07(水) 10:31:28
GetMessage()がどんな関数かなんて知らない。
適当な関数なら何でもよかった。
0782デフォルトの名無しさん2005/09/07(水) 13:16:54
すみません、宿題お願いしまつ・・・!
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): 構造体を作る。
              (名前と年齢を入力する関数・名前と年齢を表示する関数を作る)
[3] 環境
 [3.1] OS: Windows/Linux/等々
 環境とかよくわかりませんがとりあえずWindowsです。
 [3.2] コンパイラ名とバージョン: gcc 2.9 VC 6.0等
 これちょっとわかりません、すいません・・・・
 [3.3] 言語: C/C++/どちらでも可 のいずれか
 C言語でお願いします。
[4] 期限: [yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか (「できるだけ早く」は不可)
 2005年9月7日(水)今日の5時まで
[5] その他の制限: どこまで習っているか、標準ライブラリは使ってはいけない等々
 当方C言語の初心者でいちお構造体習ったのですがさっぱりで・・・
 先ほど問題を出されあせっちゃってます(;´Д`)
 よろしくお願いします・・・・
0783デフォルトの名無しさん2005/09/07(水) 13:28:07
>>782
入出力関数だけ作ればいいのか?
(main関数等はいらんのか?)
0784デフォルトの名無しさん2005/09/07(水) 13:33:28
>>782
struct data
{
  char name[256];
  int age;
};
void input_data(struct data * p)
{
  char * pos, buf[64];
  printf("Name: ");
  fgets(p->name, sizeof(p->name), stdin);
  pos = strrchr(p->name, '\n');
  if (pos != NULL) * pos = '\0';
  printf("Age: ");
  fgets(buf, sizeof(buf), stdin);
  p->age = atoi(buf);
}
void output_data(struct data * p)
{
  printf("Name: %s\nAge: %d\n", p->name, p->age);
}
■ このスレッドは過去ログ倉庫に格納されています