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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/03/31(木) 15:35:33.04
あなたが解けない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://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/
0153 ◆QZaw55cn4c 2011/04/15(金) 07:18:03.38
>>152
ささいなことですが、
>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
>>153
ささいなことですが、
> if (!*root)
> if (*root == NULL)
これはありえません。
どっちかの書き方に統一しろバカ
01561522011/04/15(金) 10:01:42.55
> assert(p->left == NULL);
assert(!p->left);
だった▼よく見てなかった。
0157デフォルトの名無しさん2011/04/15(金) 12:08:57.63
再帰にする必要も、双方向にする必要もないな
0158 ◆QZaw55cn4c 2011/04/15(金) 12:29:23.08
>>157
双方向ではなく二分木です。
そしてニ分木を非再帰で書くんですか?やってできないことはないでしょうけれども、それでどんな利益があるのでしょうか?
0159デフォルトの名無しさん2011/04/15(金) 12:32:19.61
と、>>143を必要もないのに二分木で書いている馬鹿が申しております
>>158はまるで自分自身に吐いた言葉のようですね
0160 ◆QZaw55cn4c 2011/04/15(金) 12:36:38.69
>>155
統一するメリットは?
0161 ◆QZaw55cn4c 2011/04/15(金) 12:41:43.99
>>159
生成された新しいデータを加えて全体を逐一ソートにかけるくらいなら、 Ο(logn) の二分木に放り込む方が効率がいいと考えています。

>必要もないのにニ分木で書いている
ではニ分木を使わないやり方を書けるのなら書いてみていただけませんか。その上で客観的に比較してみましょうか。
0162デフォルトの名無しさん2011/04/15(金) 12:44:16.98
効率で言うなら>>140のほうがよっぽどいいだろw
0163デフォルトの名無しさん2011/04/15(金) 12:46:35.05
>>160
>>153
>あとから読むときのことを考えたほうがいいと思います。
0164 ◆/91kCCQXBo 2011/04/15(金) 13:36:14.92
a.out | sort | uniq | tail -n 3225
0165デフォルトの名無しさん2011/04/15(金) 13:55:06.27
136です。
上限は適当な数で構わないと思います。
今更ですが>>138>>141は私ではないので答えさせて頂きました。

>>140
皆様
ありがとうございました。
0166デフォルトの名無しさん2011/04/15(金) 16:47:26.06
>>161
アホ
氏ね
誰もお前と競争したくないわけ
何が「客観的に比較してみましょうか」だよ
相手が「したい」か「面倒臭い」のかも聞かないで自分の意見に従わせる気か
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.76
5倍も使うのは贅沢すぎるんじゃね?
0169デフォルトの名無しさん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.63
必ず3回判定するのも無駄じゃね
0171 ◆QZaw55cn4c 2011/04/15(金) 19:20:04.09
>>162
おっと。見落としていました。まあ、そうやるのが普通なんでしょうね。
>>161 は撤回します。
0172デフォルトの名無しさん2011/04/15(金) 19:25:35.93
>>171
客観的に比較するんじゃなくて、撤回するんだ?
0173デフォルトの名無しさん2011/04/15(金) 20:07:46.95
また恥を晒したか ◆QZa w55cn4c

そんなんでよく書き込みできるな
あ、恥の概念がないんでしたっけww
0174デフォルトの名無しさん2011/04/15(金) 23:04:08.53
[1] 授業単元:画像処理
[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
>>174
出力する表はどんな形でもいいのか?
0176 ◆QZaw55cn4c 2011/04/16(土) 03:00:02.03
>>167
>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.06
>>169
0178デフォルトの名無しさん2011/04/16(土) 10:26:31.22
すれ違い
0179 ◆6W4srb4nmo 2011/04/16(土) 11:47:36.44
// CL /TP >>174
#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
>>179
[3.3] 言語: C++
0181デフォルトの名無しさん2011/04/16(土) 13:05:55.92
>>179のどこがC++に違反してる?
0182デフォルトの名無しさん2011/04/16(土) 13:13:38.02
>>181
依頼者が求めていることに答えるのがこのスレの趣旨
0183デフォルトの名無しさん2011/04/16(土) 13:16:42.27
>>174
ttp://codepad.org/OuDr0ZDC
なんかめんどくさくなったからこれでいいや
0184デフォルトの名無しさん2011/04/16(土) 13:17:15.30
>>180
http://codepad.org/SSUDKHuw
01851742011/04/16(土) 15:38:22.55
>>174です。遅くなりました
表の形は↓のような形でお願いします

 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
http://codepad.org/Fh1Id2SZ
最初にいえよ・・・・
0187デフォルトの名無しさん2011/04/16(土) 17:06:52.83
>>186
本当に申し訳ありません
それと、このプログラムを<stdio.h>のみで作ることはできますか?
0188デフォルトの名無しさん2011/04/16(土) 17:11:06.69
>>182
ほら>>187のように結局はなるんだよ
わかったか
C++と書いてあっても大抵はC
classや継承を使う場合のみC++だと思って置けば大抵は間違いない
0189デフォルトの名無しさん2011/04/16(土) 17:16:41.40
>>188
依頼者の指示内容の誤りは、依頼者自身に言えよ。
間違ってても、指示通りに作れば良いんだよ。


面倒なら回答する必要無いんじゃない?
0190デフォルトの名無しさん2011/04/16(土) 17:27:06.73
>>189
>間違ってても、指示通りに作れば良いんだよ。
その通りだな。
疑問持ったなら依頼者に確認
勝手に仕様を俺俺変更するものじゃないよな
0191デフォルトの名無しさん2011/04/16(土) 17:27:29.21
その語尾が気に入った。
0192デフォルトの名無しさん2011/04/16(土) 17:33:06.56
>187
>このプログラムを<stdio.h>のみで作ることはできますか?

それマジで言ってる?
言語はC++なのに?

CはC++の「ほぼ」サブセットだから可能ではある。
しかしそれをC++のコードと言われると、モヤモヤする。

それにしても後出しで条件付けられると、手戻りが
ひどいことになるのだから、回答付けてくれた人に申し分ないと思わなきゃ。

>189さんの言うことも最もですが、>182さんの気持ちわかります。
0193デフォルトの名無しさん2011/04/16(土) 17:36:30.05
>>174は、立派な発注元になれるな
0194デフォルトの名無しさん2011/04/16(土) 18:24:49.95
[1] 授業単元: C
[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 toddler2011/04/16(土) 18:44:43.88
>>187
>>186のパクリ
http://codepad.org/E4C7nTTx
01961742011/04/16(土) 18:52:07.23
>>195
ありがとうございます

皆さまご迷惑をおかけしました
今後は皆様のご迷惑をかけないよう、努力していく所存でございます
0197 ◆S2mzliix4OVR 2011/04/16(土) 18:56:40.69
// CL /clr >>187
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.98
>>194
http://hibari.2ch.net/test/read.cgi/tech/1295273862/387
0199デフォルトの名無しさん2011/04/16(土) 19:25:14.77
>>194
標準入力から名前を入力する形に直しました。
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
>>143みたいなゴミしか書けないのにな
0203 ◆QZaw55cn4c 2011/04/16(土) 19:57:25.92
>>201
その心配はありません。情報宣伝活動の一環ですので、私が勝手に書く分については「ポリタポ」を請求することはありません。

>>200
じゃあトリップつけます。

>>202
ゴミすら書けないあなたよりましです。
0204デフォルトの名無しさん2011/04/16(土) 20:22:29.51
自分を批判する人間は自分より下って思い込みはどうにかしたほうがいい
0205 ◆QZaw55cn4c 2011/04/16(土) 20:27:16.76
>>204
そのつもりはなく、いただいたコメントには真摯に対応しているつもりです。
そのような思い込みが感じられるとすれば、私の文面に問題があるのかもしれません。
もしよろしければ、どこがまずいのかポインタでもいただければありがたいです。
0206デフォルトの名無しさん2011/04/16(土) 20:50:06.09
人の嫌がることをすすんでやります
02071942011/04/16(土) 20:51:05.16
>>205 http://yuzuru.2ch.net/test/read.cgi/idol/1298418299/l50
0208デフォルトの名無しさん2011/04/16(土) 21:04:01.04
>>202
そういうなら
ゴミじゃないコード晒さないとな
0209 ◆S2mzliix4OVR 2011/04/17(日) 00:55:10.96
>>195
[3.3] 言語: C
0210 ◆QZaw55cn4c 2011/04/17(日) 02:13:20.89
>>173
目先の端だか恥だかは気にしない性分なんです。それに、>>140 に比べて、>>143 には利点もあります。
常々使っている mygetline() もそうですが、C でちゃんとかくのなら、>>143 位は考慮しておきたいもの、と考えています。
0211デフォルトの名無しさん2011/04/17(日) 03:49:52.01
>目先の端だか恥だかは気にしない性分なんです。

こりゃ人に嫌われるわ
特に女に嫌われる
女は屁理屈大嫌いだからな
お前いい年して童貞だろ?
0212デフォルトの名無しさん2011/04/17(日) 06:08:35.29
[1]C言語演習
[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
[1] 授業単元: 無し
[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.58
D+って1つの文字って言えるのか?
0215デフォルトの名無しさん2011/04/17(日) 06:43:08.68
>>212
グループ数:xx ではなく クラス数:xx ではないかな。
02162122011/04/17(日) 07:30:53.46
>>215
もしかすると写し間違いがあるかも知れません。
0217デフォルトの名無しさん2011/04/17(日) 07:44:13.28
>>214
文字じゃなくて文字列ですね
1つというのも、A〜F+までのなかから1つ選んで、ということです
0218デフォルトの名無しさん2011/04/17(日) 07:52:45.63
>>213
http://codepad.org/PivS0ly3
0219 ◆S2mzliix4OVR 2011/04/17(日) 08:07:24.47
>>213
http://codepad.org/q0l9wGid
その上で客観的に比較してみましょうか。
0220デフォルトの名無しさん2011/04/17(日) 08:30:34.73
>213

cygwin gcc にて確認。使用方法はusageにてわかるとおもう。
ttp://codepad.org/s07YB57F
0221 ◆S2mzliix4OVR 2011/04/17(日) 08:35:03.45
>>220
成績だなんて、問題には書いてないよ。
0222デフォルトの名無しさん2011/04/17(日) 08:40:55.10
>221
それはそうですね。
じゃkeyに読み替えてください。

変数に具体的な名前を与えたかっただけです。
0223デフォルトの名無しさん2011/04/17(日) 08:57:06.24
>213
>220

はじめの文字まで連続表示する、という部分が抜けていたので書き直しました。

ttp://codepad.org/IOSPQ8NQ
0224 ◆QZaw55cn4c 2011/04/17(日) 09:41:21.65
>>212
グループ数というのは、問題文をみるかぎり「同一得点だった人数」だと思われますから、グループ要素数、くらいになるのでしょうかね。
それよりも(2)の日本語が全然わかりません。(2) の出力結果例を教えてください。
0225 ◆QZaw55cn4c 2011/04/17(日) 09:55:22.44
>224
ちがいました。クラス数ですね。やはり。
0226 ◆S2mzliix4OVR 2011/04/17(日) 10:41:17.52
>>219 VC 用に修正
char *mondai[]={"A","A+","B","B+","C","C+","D","D+","E","E+","F","F+",""};
0227 ◆6W4srb4nmo 2011/04/17(日) 12:38:41.77
>>212
(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
>>226
それをせずにすむ環境(または言語)はどちら?
0229デフォルトの名無しさん2011/04/17(日) 13:20:18.33
Sなんとかは正しく動作すらしないので、客観的には>>223がいいかな。警告もでなかったし。
0230デフォルトの名無しさん2011/04/17(日) 18:06:29.08
>211
目端がきく、というイデオムを軽くバクったつもりですが、ご理解いただけなかったでしょうか?
0231デフォルトの名無しさん2011/04/17(日) 18:26:06.82
>>206
>人の嫌がることをすすんでやります

この評価が一番適切
0232デフォルトの名無しさん2011/04/17(日) 19:09:45.68
>>230
理解したくないね
独りよがりのパクリとかどこのナルシストだよ
分かりやすく言えないのかアホ

>>231
人の嫌がる事を進んでやります(・ω・)
人の嫌がる事を進んでやりまず<ヽ`∀´>←意味が違う

◆QZaw55 cn4c は在日チョンではないかと最近思い始めた
0233デフォルトの名無しさん2011/04/17(日) 22:20:08.26
>>212のような問題って、昔Cプログラマ適性検査として
入社後の配置決定試験の時に出された課題みたいな感じ
確か3時間で仕様通りのコードが書けなければ
3年以内退職を前提とした誓約書書かされたっけ
俺?見事失敗。その代わり3年間はオフィスに10時に
着いて、あとは喫煙室との往復だけで給料貰ったし
ボーナスも出たし結婚もしたし...
今は嫁のツテでIT関連学校の教師
この業界はよほどの素質かよほどのコネが無いと生きていくのは
無理なんじゃね?
0234 ◆QZaw55cn4c 2011/04/17(日) 23:41:25.49
>>212
とりあえず (1) だけ。
http://hibari.2ch.net/test/read.cgi/tech/1301553333/397

>>233
3時間ですか?ちょっと無理ですねえ。
0235 ◆QZaw55cn4c 2011/04/17(日) 23:49:54.58
リンクミスがありました。
>>212
とりあえず (1) だけ。
http://hibari.2ch.net/test/read.cgi/tech/1295273862/397

>>233
3時間ですか?ちょっと無理ですねえ。
0236デフォルトの名無しさん2011/04/17(日) 23:49:58.89
>234
お前仕事してんの?ニートだろ?
0237 ◆QZaw55cn4c 2011/04/18(月) 00:28:46.01
>>212
>ただしあるクラスの2つの教科の平均点が一致している場合はその2つの教科の得点の大小関係は不問として出力する。

もし国語と数学のクラスの平均点が 50 、英語が 70 のとき、

生徒A 国語 100 数学 0 英語 69
生徒B 国語 0 数学 100 英語 71
生徒C 国語 100 数学 0 英語 49
生徒D 国語 0 数学 100 英語 51

この四人のうちどれが出力対象になるのでしょうか?
問題文だけでは、二つの教科の平均点が一致したとき、残りの教科をどう扱うかがはっきりしません。
0238 ◆6W4srb4nmo 2011/04/18(月) 00:38:40.07
国語<英語 AND 数学<英語 の生徒。
0239デフォルトの名無しさん2011/04/18(月) 00:47:15.14
ま、このような時勢に4月末迄の期限のまだ余裕のある宿題を
日曜日がな一日潰して片付けてあげる人は偉大なのかそれとも...
ちなみに(1)と(2)はmainを共通にすべきじゃないかと...
02402122011/04/18(月) 04:45:54.88
>>235
取り敢えずはお礼を申し上げます。どうもお手数をおかけしました。
実はこの問題研修終了試験の過去問の5重コピーくらいの劣悪な
コピーから写したものです。もういちど調べてみるとやっぱり
グループ数じゃなくてクラス数でした。
ただCodePadは無償じゃないそうなので開くのには躊躇しております。
02412132011/04/18(月) 06:29:36.20
>>218,223,226
皆さんありがとうございました!
0242デフォルトの名無しさん2011/04/18(月) 07:33:57.76
>>239
自分の力を誇示したいだけだと思われます。そして>>235の

>3時間ですか?ちょっと無理ですねえ。

からも分かるように本当はプログラマ適性がないにも関わらず脅迫的にプログラムに
取り憑かれています。変ですね。
0243 ◆QZaw55cn4c 2011/04/18(月) 07:41:53.59
>>239
例のスレッドに誘導をはかるべく自分の力を誇示したいだけです。意図したとおりにはなっていませんが。

そして、>>235の
>3時間ですか?ちょっと無理ですねえ。
からも分かるように職業的適性はないアマチュアにも関わらずプログラミングに取り憑かれています。
やっぱり変ですね。
0244デフォルトの名無しさん2011/04/18(月) 08:20:49.62
>212
これってどのくらいのレベルが想定ですか?
最大1000万レコードというあたりが、初学者向けとは思え無いので確認したいのです。

ちょろっと1000万レコード生成と読み込み処理だけコーディングしてみたけど、
IOの時間だけでも結構かかります。前データをオンメモリに展開すると250メガくらい
になります。
最近のPCではこのくらいは屁でもないですが、そこは富豪的アプローチでOK?

これが最大1000レコードで各教科100点満点なら初学者向けだと思います。
1000万レコード、999点満点となると、オーバーフローを気にしなきゃならなくなるので、
かなり注意が必要です。

と思って面倒そうだから見てたけど、どうでしょ>212さん。
0245デフォルトの名無しさん2011/04/18(月) 08:57:38.37
>235

1000万レコードのデータ食わせてみたら、とりあえずちゃんと動いているっぽいです。

コードをちゃんと追ってませんが、レコードをノードに展開しながら、
2分木にソートしながら突っ込んでいる感じでしょうか?
でも使用メモリ量は1.5M位だったようなので違うかな。

各関数に何をする関数かを示すヘッダコメントを書くと、だいぶコードが読みやすく
なるので、心がけていただけないでしょうか。
0246デフォルトの名無しさん2011/04/18(月) 09:05:28.09
1000万レコード全部合計点同じデータ食わせたらちゃんとうごかねえんじゃね?
0247デフォルトの名無しさん2011/04/18(月) 09:58:04.20
100万レコード全部合計点違うデータ食わせたら動かねえんじゃね??
0248デフォルトの名無しさん2011/04/18(月) 10:52:00.93
>>243
例のスレッドに誘導をはかるな。スレの邪魔だ。宣伝はあのスレでだけやれ。
他の人の迷惑だ。

>職業的適性はないアマチュアにも関わらずプログラミングに取り憑かれています。

だから変だと思いませんか?なぜそんな趣味レベルの力しかないのにそれで強引に
金儲けをしようとするのですか?自分の力を過大評価しているとは思いませんか?
金儲けとはそんな甘い物じゃありませんよ。

どちらにしろ職業にする力量が明らかに不足しているのにそれで金儲けしようなどとは
いかにも図々しい話です。ナルシスティックで自分に酔っているとしか思えませんね。
02492122011/04/18(月) 11:07:29.36
>>244
なんか凄い空気ですね...
>>212の問題はうちの会社が多分主記憶がMバイトオーダーの
中型UNIX機で業務アプリ開発をやっていた時代の問題じゃ
ないかと...1000万行ってのは当時でもそれほど大きな
データじゃなかったようです。他の過去問にもそのような
数字が出ていますし。ちなみに現在うちの会社が扱っている
のは一案件10億とか100億とかのレコード数当たり前だそうで
す。
0250デフォルトの名無しさん2011/04/18(月) 11:09:15.47
>>212 (1) のみ
#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
>>244
富豪を仮定しないと面倒でない?

>>212 (1)だけ適当に。まともに動いてるのかよく分からん
http://codepad.org/hzssz9EV
0252デフォルトの名無しさん2011/04/18(月) 11:37:51.41
業務相手にお優しいこって
■ このスレッドは過去ログ倉庫に格納されています