C/C++の宿題片付けます 147代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/03/31(木) 15:35:33.04【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
http://codepad.org/ ←遅い時間は重い事があります
http://ideone.com/
【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++の宿題片付けます 146代目
http://hibari.2ch.net/test/read.cgi/tech/1296387672/
ささいなことですが、
>struct node *p = *root;
これはありえません。
私なら、p は malloc() の返り値をうけるため *だけ* に使い、すでにpush() に入ったときからわかっている値は *root とかきます。
>>152 は p がすでにある *root の場合と *root == NULL のときに malloc() から得た値の場合との両方があり、読みにくくなってしまっています。
あとから読むときのことを考えたほうがいいと思います。
0154デフォルトの名無しさん
2011/04/15(金) 07:56:54.79人には人の流儀がある
お前を中心に世の中が回ってるわけじゃない
小学生でも分かる事がわからないのか?
いいから巣に帰れ
0155デフォルトの名無しさん
2011/04/15(金) 08:06:59.08ささいなことですが、
> if (!*root)
> if (*root == NULL)
これはありえません。
どっちかの書き方に統一しろバカ
0156152
2011/04/15(金) 10:01:42.55assert(!p->left);
だった▼よく見てなかった。
0157デフォルトの名無しさん
2011/04/15(金) 12:08:57.63双方向ではなく二分木です。
そしてニ分木を非再帰で書くんですか?やってできないことはないでしょうけれども、それでどんな利益があるのでしょうか?
0159デフォルトの名無しさん
2011/04/15(金) 12:32:19.61>>158はまるで自分自身に吐いた言葉のようですね
統一するメリットは?
生成された新しいデータを加えて全体を逐一ソートにかけるくらいなら、 Ο(logn) の二分木に放り込む方が効率がいいと考えています。
>必要もないのにニ分木で書いている
ではニ分木を使わないやり方を書けるのなら書いてみていただけませんか。その上で客観的に比較してみましょうか。
0162デフォルトの名無しさん
2011/04/15(金) 12:44:16.980163デフォルトの名無しさん
2011/04/15(金) 12:46:35.05>>153
>あとから読むときのことを考えたほうがいいと思います。
0165デフォルトの名無しさん
2011/04/15(金) 13:55:06.27上限は適当な数で構わないと思います。
今更ですが>>138>>141は私ではないので答えさせて頂きました。
>>140
皆様
ありがとうございました。
0166デフォルトの名無しさん
2011/04/15(金) 16:47:26.06アホ
氏ね
誰もお前と競争したくないわけ
何が「客観的に比較してみましょうか」だよ
相手が「したい」か「面倒臭い」のかも聞かないで自分の意見に従わせる気か
0167デフォルトの名無しさん
2011/04/15(金) 17:33:33.99#include <stdio.h>
int main(void)
{
enum {n=100};
char M[500]={
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
};
int i=1;M[1]=1;
while(i<n){if(M[i]==1)M[i*2+1]=1;M[i*3+1]=1;M[i*5+1]=1;i++;}
for(i=1;i<n;i++)if(M[i]==1)printf("%3.3d ",i);
return 0;
}
0168デフォルトの名無しさん
2011/04/15(金) 17:54:23.760169デフォルトの名無しさん
2011/04/15(金) 18:18:35.79#include <stdio.h>
int main(void)
{
enum {n=100};char M[n]={0};int i=1;M[1]=1;
while(i<n){if(M[i]==1){
(i*2+1)<n?M[i*2+1]=1:0;
(i*3+1)<n?M[i*3+1]=1:0;
(i*5+1)<n?M[i*5+1]=1:0;
}i++;}
for(i=1;i<n;i++)if(M[i]==1)printf("%3.3d ",i);
return 0;
}
0170デフォルトの名無しさん
2011/04/15(金) 18:23:10.630172デフォルトの名無しさん
2011/04/15(金) 19:25:35.93客観的に比較するんじゃなくて、撤回するんだ?
0173デフォルトの名無しさん
2011/04/15(金) 20:07:46.95そんなんでよく書き込みできるな
あ、恥の概念がないんでしたっけww
0174デフォルトの名無しさん
2011/04/15(金) 23:04:08.53[2] 問題文(含コード&リンク):アスキーコード(0x21~0x7eまで)表を出力をするプログラムを作りなさい
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual C++ 2008
[3.3] 言語: C++
[4] 期限:2011年4月18日
[5] その他の制限:なし
0175デフォルトの名無しさん
2011/04/16(土) 00:07:06.74出力する表はどんな形でもいいのか?
>char M[500]={
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>};
static char M[500];
でOK。
0177デフォルトの名無しさん
2011/04/16(土) 07:06:13.060178デフォルトの名無しさん
2011/04/16(土) 10:26:31.22#include<stdio.h>
int main(void)
{
int i,j;
printf("+---------------------------------------------\n") ;
printf("|Oct");
for(j=1;j<=8;j++){
printf("%5o",j);
}
printf("\n");
for(i=0x20;i<0x80;i+=8){
printf("|%3o",i);
for(j=0;j<8;j++){
if(i+j+1>=0x7f) break;
printf("%5c",i+j+1);
}
printf("\n");
}
return 0;
}
0180デフォルトの名無しさん
2011/04/16(土) 11:56:39.40[3.3] 言語: C++
0181デフォルトの名無しさん
2011/04/16(土) 13:05:55.920182デフォルトの名無しさん
2011/04/16(土) 13:13:38.02依頼者が求めていることに答えるのがこのスレの趣旨
0183デフォルトの名無しさん
2011/04/16(土) 13:16:42.27ttp://codepad.org/OuDr0ZDC
なんかめんどくさくなったからこれでいいや
0184デフォルトの名無しさん
2011/04/16(土) 13:17:15.30http://codepad.org/SSUDKHuw
0185174
2011/04/16(土) 15:38:22.55表の形は↓のような形でお願いします
0x20 0x30 0x40 0x50 0x60 0x70
0 0 @ P ` p
1 ! 1 A Q a q
2 " 2 B R b r
3 # 3 C S c s
4 $ 4 D T d t
5 % 5 E U e u
6 & 6 F V f v
7 ' 7 G W g w
8 ( 8 H X h x
9 ) 9 I Y i y
a * : J Z j z
b + ; K [ k {
c , < L \ l |
d - = M ] m }
e . > N ^ n 〜
f / ? O _ o
あと書き忘れてましたが、問題文に「for文の連続ループを用いる」ようにと書いてありました。
忘れていて申し訳ありません
そしてありがとうございます
0186デフォルトの名無しさん
2011/04/16(土) 16:46:24.60最初にいえよ・・・・
0187デフォルトの名無しさん
2011/04/16(土) 17:06:52.83本当に申し訳ありません
それと、このプログラムを<stdio.h>のみで作ることはできますか?
0188デフォルトの名無しさん
2011/04/16(土) 17:11:06.69ほら>>187のように結局はなるんだよ
わかったか
C++と書いてあっても大抵はC
classや継承を使う場合のみC++だと思って置けば大抵は間違いない
0189デフォルトの名無しさん
2011/04/16(土) 17:16:41.40依頼者の指示内容の誤りは、依頼者自身に言えよ。
間違ってても、指示通りに作れば良いんだよ。
面倒なら回答する必要無いんじゃない?
0190デフォルトの名無しさん
2011/04/16(土) 17:27:06.73>間違ってても、指示通りに作れば良いんだよ。
その通りだな。
疑問持ったなら依頼者に確認
勝手に仕様を俺俺変更するものじゃないよな
0191デフォルトの名無しさん
2011/04/16(土) 17:27:29.210192デフォルトの名無しさん
2011/04/16(土) 17:33:06.56>このプログラムを<stdio.h>のみで作ることはできますか?
それマジで言ってる?
言語はC++なのに?
CはC++の「ほぼ」サブセットだから可能ではある。
しかしそれをC++のコードと言われると、モヤモヤする。
それにしても後出しで条件付けられると、手戻りが
ひどいことになるのだから、回答付けてくれた人に申し分ないと思わなきゃ。
>189さんの言うことも最もですが、>182さんの気持ちわかります。
0193デフォルトの名無しさん
2011/04/16(土) 17:36:30.050194デフォルトの名無しさん
2011/04/16(土) 18:24:49.95[2] 問題文(含コード&リンク):
[3] 環境
[3.1] 7
[3.2] gcc
[3.3] C
[4] 期限: 今日の20:00
[5] その他の制限:a[]など配列は使わない。
リスト構造で名簿を作っているんですが、標準入力から名前を常に先頭に
入れるという処理を10回繰り返しても10個とも全部最後に入力した名前に
なってしまいます・・・どうしてでしょうか?
山田 田中 佐藤 鈴木 村上
山本 裏山 田山 小島 島々
これだけの名前を先頭から順番に入れて,
printf("%s",P.first->name);
printf("%s",P.first->->next->name);
printf("%s",P.first->->next->next->name);
・
・
10個とも島々になってしまいます・・・何故でしょうか?
一番簡単なリスト構造で先頭に入れるプログラム作っていただきませんか?
ちなみにPはfirstを含む構造体です。firstは構造体NAMEへのポインタで、
最初first=NULLです。 name,nextはNAMEのメンバーです。
0195Nursery school toddler
2011/04/16(土) 18:44:43.88>>186のパクリ
http://codepad.org/E4C7nTTx
using namespace System;
const int first = 0x21;
const int last = 0x7e;
const int height = 16;
const int begin = (first / height * height);
const int end = (last / height * height + height);
const int width = (end - begin) / height;
int main()
{
int i, j;
wchar_t c;
Console::Write("{0}{0}{0}", L' ');
for(i = begin; i < end; i += height)
Console::Write(" 0x{0,2:x}", i);
Console::WriteLine();
for(i = 0; i < height; ++i){
Console::Write("{0,2:x}", i);
for(j = 0; j < width; ++j){
c = begin + i + j * height;
Console::Write("{0,5}", ((first<=c && c<=last) ? c : L' '));
}
Console::WriteLine();
}
}
0198デフォルトの名無しさん
2011/04/16(土) 18:57:15.98http://hibari.2ch.net/test/read.cgi/tech/1295273862/387
0199デフォルトの名無しさん
2011/04/16(土) 19:25:14.77標準入力から名前を入力する形に直しました。
http://hibari.2ch.net/test/read.cgi/tech/1295273862/388
0200デフォルトの名無しさん
2011/04/16(土) 19:33:49.20/tech/1295273862/ もNGしなきゃならんじゃないか
0201デフォルトの名無しさん
2011/04/16(土) 19:35:56.86どこのやくざだよ
0202デフォルトの名無しさん
2011/04/16(土) 19:39:19.04その心配はありません。情報宣伝活動の一環ですので、私が勝手に書く分については「ポリタポ」を請求することはありません。
>>200
じゃあトリップつけます。
>>202
ゴミすら書けないあなたよりましです。
0204デフォルトの名無しさん
2011/04/16(土) 20:22:29.51そのつもりはなく、いただいたコメントには真摯に対応しているつもりです。
そのような思い込みが感じられるとすれば、私の文面に問題があるのかもしれません。
もしよろしければ、どこがまずいのかポインタでもいただければありがたいです。
0206デフォルトの名無しさん
2011/04/16(土) 20:50:06.090207194
2011/04/16(土) 20:51:05.160208デフォルトの名無しさん
2011/04/16(土) 21:04:01.04そういうなら
ゴミじゃないコード晒さないとな
[3.3] 言語: C
0210 ◆QZaw55cn4c
2011/04/17(日) 02:13:20.89目先の端だか恥だかは気にしない性分なんです。それに、>>140 に比べて、>>143 には利点もあります。
常々使っている mygetline() もそうですが、C でちゃんとかくのなら、>>143 位は考慮しておきたいもの、と考えています。
0211デフォルトの名無しさん
2011/04/17(日) 03:49:52.01こりゃ人に嫌われるわ
特に女に嫌われる
女は屁理屈大嫌いだからな
お前いい年して童貞だろ?
0212デフォルトの名無しさん
2011/04/17(日) 06:08:35.29[2]問題文
次の形式のタブ区切りファイルがある。(行数は最大で1000万行とする)
生徒ID クラス名 国語得点 数学得点 英語得点
生徒IDは8桁の0から9で構成される文字列
クラス名は4桁の0から9で構成される文字列
国語得点、数学得点、英語得点は3桁の0から9で構成される文字列とする。
(1)各教科の得点の和が同じ生徒達のグループについて、そのグループが何人で何クラスの
生徒から構成されているかを、得点和毎に表出力せよ
ただし0人で構成されるグループについては出力する必要がない。
形式例
得点:123 人数:5人 グループ数:4
得点:128 人数:3人 グループ数:3
得点:214 人数:11人 グループ数:9
............
(2)それぞれの教科の得点が所属しているクラスの各教科の平均点の大小関係と
同じ生徒をリストアップせよ
ただしあるクラスの2つの教科の平均点が一致している場合はその2つの教科の得点の
大小関係は不問として出力する。(3つが一致している場合はそのクラスの生徒全員
がリストアップされることになる
[3] OSはLinux,言語はCです。(C++は不可)
[4] 4/30まで
[5] stdlib.h stdio.h string.hをincludeしても良いがそれ以外は不可だそうです
よろしくお願いします。
0213デフォルトの名無しさん
2011/04/17(日) 06:22:37.60[2] 問題文(含コード&リンク):
A,A+,B,B+,C,C+,D,D+,E,E+,F,F+と文字が並んでて、1つ文字を入力したときに
その文字が例えばAならA→B+→D→E+→A、D+ならD+→F→A+→C→D+というように
入力された文字から2つ飛ばしで最初の文字まで表示する
[3] 環境
[3.1] OS: MAC OSX
[3.2] コンパイラ名とバージョン: gcc 4.0.1
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: 特になし
0214デフォルトの名無しさん
2011/04/17(日) 06:28:36.580215デフォルトの名無しさん
2011/04/17(日) 06:43:08.68グループ数:xx ではなく クラス数:xx ではないかな。
0217デフォルトの名無しさん
2011/04/17(日) 07:44:13.28文字じゃなくて文字列ですね
1つというのも、A〜F+までのなかから1つ選んで、ということです
0218デフォルトの名無しさん
2011/04/17(日) 07:52:45.63http://codepad.org/PivS0ly3
http://codepad.org/q0l9wGid
その上で客観的に比較してみましょうか。
0220デフォルトの名無しさん
2011/04/17(日) 08:30:34.73cygwin gcc にて確認。使用方法はusageにてわかるとおもう。
ttp://codepad.org/s07YB57F
成績だなんて、問題には書いてないよ。
0222デフォルトの名無しさん
2011/04/17(日) 08:40:55.10それはそうですね。
じゃkeyに読み替えてください。
変数に具体的な名前を与えたかっただけです。
0223デフォルトの名無しさん
2011/04/17(日) 08:57:06.24>220
はじめの文字まで連続表示する、という部分が抜けていたので書き直しました。
ttp://codepad.org/IOSPQ8NQ
0224 ◆QZaw55cn4c
2011/04/17(日) 09:41:21.65グループ数というのは、問題文をみるかぎり「同一得点だった人数」だと思われますから、グループ要素数、くらいになるのでしょうかね。
それよりも(2)の日本語が全然わかりません。(2) の出力結果例を教えてください。
0225 ◆QZaw55cn4c
2011/04/17(日) 09:55:22.44ちがいました。クラス数ですね。やはり。
char *mondai[]={"A","A+","B","B+","C","C+","D","D+","E","E+","F","F+",""};
(2) 形式例
クラス:1212
クラスの平均点の高い順:国語90.5>英語60.0>数学40.5
国語 英語 数学
A子 87 66 59
B男 90 87 80
クラス:1213
クラスの平均点の高い順:英語30.4>数学29.8>国語20.0
英語 数学 国語
C子 86 67 55
D男 91 88 82
D子 90 88 87
0228デフォルトの名無しさん
2011/04/17(日) 13:14:01.59それをせずにすむ環境(または言語)はどちら?
0229デフォルトの名無しさん
2011/04/17(日) 13:20:18.330230デフォルトの名無しさん
2011/04/17(日) 18:06:29.08目端がきく、というイデオムを軽くバクったつもりですが、ご理解いただけなかったでしょうか?
0231デフォルトの名無しさん
2011/04/17(日) 18:26:06.82>人の嫌がることをすすんでやります
この評価が一番適切
0232デフォルトの名無しさん
2011/04/17(日) 19:09:45.68理解したくないね
独りよがりのパクリとかどこのナルシストだよ
分かりやすく言えないのかアホ
>>231
人の嫌がる事を進んでやります(・ω・)
人の嫌がる事を進んでやりまず<ヽ`∀´>←意味が違う
◆QZaw55 cn4c は在日チョンではないかと最近思い始めた
0233デフォルトの名無しさん
2011/04/17(日) 22:20:08.26入社後の配置決定試験の時に出された課題みたいな感じ
確か3時間で仕様通りのコードが書けなければ
3年以内退職を前提とした誓約書書かされたっけ
俺?見事失敗。その代わり3年間はオフィスに10時に
着いて、あとは喫煙室との往復だけで給料貰ったし
ボーナスも出たし結婚もしたし...
今は嫁のツテでIT関連学校の教師
この業界はよほどの素質かよほどのコネが無いと生きていくのは
無理なんじゃね?
とりあえず (1) だけ。
http://hibari.2ch.net/test/read.cgi/tech/1301553333/397
>>233
3時間ですか?ちょっと無理ですねえ。
>>212
とりあえず (1) だけ。
http://hibari.2ch.net/test/read.cgi/tech/1295273862/397
>>233
3時間ですか?ちょっと無理ですねえ。
0236デフォルトの名無しさん
2011/04/17(日) 23:49:58.89お前仕事してんの?ニートだろ?
>ただしあるクラスの2つの教科の平均点が一致している場合はその2つの教科の得点の大小関係は不問として出力する。
もし国語と数学のクラスの平均点が 50 、英語が 70 のとき、
生徒A 国語 100 数学 0 英語 69
生徒B 国語 0 数学 100 英語 71
生徒C 国語 100 数学 0 英語 49
生徒D 国語 0 数学 100 英語 51
この四人のうちどれが出力対象になるのでしょうか?
問題文だけでは、二つの教科の平均点が一致したとき、残りの教科をどう扱うかがはっきりしません。
0239デフォルトの名無しさん
2011/04/18(月) 00:47:15.14日曜日がな一日潰して片付けてあげる人は偉大なのかそれとも...
ちなみに(1)と(2)はmainを共通にすべきじゃないかと...
0240212
2011/04/18(月) 04:45:54.88取り敢えずはお礼を申し上げます。どうもお手数をおかけしました。
実はこの問題研修終了試験の過去問の5重コピーくらいの劣悪な
コピーから写したものです。もういちど調べてみるとやっぱり
グループ数じゃなくてクラス数でした。
ただCodePadは無償じゃないそうなので開くのには躊躇しております。
0242デフォルトの名無しさん
2011/04/18(月) 07:33:57.76自分の力を誇示したいだけだと思われます。そして>>235の
>3時間ですか?ちょっと無理ですねえ。
からも分かるように本当はプログラマ適性がないにも関わらず脅迫的にプログラムに
取り憑かれています。変ですね。
例のスレッドに誘導をはかるべく自分の力を誇示したいだけです。意図したとおりにはなっていませんが。
そして、>>235の
>3時間ですか?ちょっと無理ですねえ。
からも分かるように職業的適性はないアマチュアにも関わらずプログラミングに取り憑かれています。
やっぱり変ですね。
0244デフォルトの名無しさん
2011/04/18(月) 08:20:49.62これってどのくらいのレベルが想定ですか?
最大1000万レコードというあたりが、初学者向けとは思え無いので確認したいのです。
ちょろっと1000万レコード生成と読み込み処理だけコーディングしてみたけど、
IOの時間だけでも結構かかります。前データをオンメモリに展開すると250メガくらい
になります。
最近のPCではこのくらいは屁でもないですが、そこは富豪的アプローチでOK?
これが最大1000レコードで各教科100点満点なら初学者向けだと思います。
1000万レコード、999点満点となると、オーバーフローを気にしなきゃならなくなるので、
かなり注意が必要です。
と思って面倒そうだから見てたけど、どうでしょ>212さん。
0245デフォルトの名無しさん
2011/04/18(月) 08:57:38.371000万レコードのデータ食わせてみたら、とりあえずちゃんと動いているっぽいです。
コードをちゃんと追ってませんが、レコードをノードに展開しながら、
2分木にソートしながら突っ込んでいる感じでしょうか?
でも使用メモリ量は1.5M位だったようなので違うかな。
各関数に何をする関数かを示すヘッダコメントを書くと、だいぶコードが読みやすく
なるので、心がけていただけないでしょうか。
0246デフォルトの名無しさん
2011/04/18(月) 09:05:28.090247デフォルトの名無しさん
2011/04/18(月) 09:58:04.200248デフォルトの名無しさん
2011/04/18(月) 10:52:00.93例のスレッドに誘導をはかるな。スレの邪魔だ。宣伝はあのスレでだけやれ。
他の人の迷惑だ。
>職業的適性はないアマチュアにも関わらずプログラミングに取り憑かれています。
だから変だと思いませんか?なぜそんな趣味レベルの力しかないのにそれで強引に
金儲けをしようとするのですか?自分の力を過大評価しているとは思いませんか?
金儲けとはそんな甘い物じゃありませんよ。
どちらにしろ職業にする力量が明らかに不足しているのにそれで金儲けしようなどとは
いかにも図々しい話です。ナルシスティックで自分に酔っているとしか思えませんね。
0249212
2011/04/18(月) 11:07:29.36なんか凄い空気ですね...
>>212の問題はうちの会社が多分主記憶がMバイトオーダーの
中型UNIX機で業務アプリ開発をやっていた時代の問題じゃ
ないかと...1000万行ってのは当時でもそれほど大きな
データじゃなかったようです。他の過去問にもそのような
数字が出ていますし。ちなみに現在うちの会社が扱っている
のは一案件10億とか100億とかのレコード数当たり前だそうで
す。
0250デフォルトの名無しさん
2011/04/18(月) 11:09:15.47#include<stdio.h>
#include<stdlib.h>
typedef struct tag_hoge_t{
long num;
unsigned long class_bits[(10000+32-1)/32];
}hoge_t;
int bit_count(const hoge_t *hoge){
int i, j, ret=0;
for(i=0;i<sizeof(hoge->class_bits)/sizeof(hoge->class_bits[0]);i++)
for(j=0;j<32;j++) if((hoge->class_bits[i]>>j)&1) ret++;
return ret;
}
int main(int argc, char *argv[]){
hoge_t *hoge=calloc(sizeof(hoge_t), 1000*3);
long i, student_id, class_id, japanese, math, english, score;
FILE *fp=NULL;
if(argc>1) fp=fopen(argv[1], "r");
if(hoge==NULL || fp==NULL) exit(1);
while(fscanf(fp, "%ld %ld %ld %ld %ld", &student_id, &class_id, &japanese, &math, &english)==5){
if(student_id<0 || 99999999<student_id) break;
if(class_id<0 || 9999<class_id) break;
if((japanese<0 || 999<japanese) || (math<0 || 999<math) || (english<0 || 999<english)) break;
score=japanese+math+english;
hoge[score].num++;
hoge[score].class_bits[class_id/32]|=1<<(class_id%32);
}
fclose(fp);
for(i=0;i<1000*3;i++)
if(hoge[i].num) printf("得点:%ld 人数:%ld人 クラス数:%d\n", i, hoge[i].num, bit_count(&hoge[i]));
return 0;
}
0251デフォルトの名無しさん
2011/04/18(月) 11:36:03.44富豪を仮定しないと面倒でない?
>>212 (1)だけ適当に。まともに動いてるのかよく分からん
http://codepad.org/hzssz9EV
0252デフォルトの名無しさん
2011/04/18(月) 11:37:51.41■ このスレッドは過去ログ倉庫に格納されています