C/C++の宿題片付けます 147代目at TECH
C/C++の宿題片付けます 147代目 - 暇つぶし2ch173:デフォルトの名無しさん
11/04/15 20:07:46.95
また恥を晒したか ◆QZa w55cn4c

そんなんでよく書き込みできるな
あ、恥の概念がないんでしたっけww

174:デフォルトの名無しさん
11/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] その他の制限:なし

175:デフォルトの名無しさん
11/04/16 00:07:06.74
>>174
出力する表はどんな形でもいいのか?

176: ◆QZaw55cn4c
11/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。

177:デフォルトの名無しさん
11/04/16 07:06:13.06
>>169

178:デフォルトの名無しさん
11/04/16 10:26:31.22
すれ違い

179: ◆6W4srb4nmo
11/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;
}

180:デフォルトの名無しさん
11/04/16 11:56:39.40
>>179
[3.3] 言語: C++

181:デフォルトの名無しさん
11/04/16 13:05:55.92
>>179のどこがC++に違反してる?

182:デフォルトの名無しさん
11/04/16 13:13:38.02
>>181
依頼者が求めていることに答えるのがこのスレの趣旨

183:デフォルトの名無しさん
11/04/16 13:16:42.27
>>174
URLリンク(codepad.org)
なんかめんどくさくなったからこれでいいや

184:デフォルトの名無しさん
11/04/16 13:17:15.30
>>180
URLリンク(codepad.org)

185:174
11/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文の連続ループを用いる」ようにと書いてありました。
忘れていて申し訳ありません
そしてありがとうございます

186:デフォルトの名無しさん
11/04/16 16:46:24.60
URLリンク(codepad.org)
最初にいえよ・・・・

187:デフォルトの名無しさん
11/04/16 17:06:52.83
>>186
本当に申し訳ありません
それと、このプログラムを<stdio.h>のみで作ることはできますか?

188:デフォルトの名無しさん
11/04/16 17:11:06.69
>>182
ほら>>187のように結局はなるんだよ
わかったか
C++と書いてあっても大抵はC
classや継承を使う場合のみC++だと思って置けば大抵は間違いない

189:デフォルトの名無しさん
11/04/16 17:16:41.40
>>188
依頼者の指示内容の誤りは、依頼者自身に言えよ。
間違ってても、指示通りに作れば良いんだよ。


面倒なら回答する必要無いんじゃない?


190:デフォルトの名無しさん
11/04/16 17:27:06.73
>>189
>間違ってても、指示通りに作れば良いんだよ。
その通りだな。
疑問持ったなら依頼者に確認
勝手に仕様を俺俺変更するものじゃないよな

191:デフォルトの名無しさん
11/04/16 17:27:29.21
その語尾が気に入った。

192:デフォルトの名無しさん
11/04/16 17:33:06.56
>187
>このプログラムを<stdio.h>のみで作ることはできますか?

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

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

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

>189さんの言うことも最もですが、>182さんの気持ちわかります。

193:デフォルトの名無しさん
11/04/16 17:36:30.05
>>174は、立派な発注元になれるな

194:デフォルトの名無しさん
11/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のメンバーです。

195:Nursery school toddler
11/04/16 18:44:43.88
>>187
>>186のパクリ
URLリンク(codepad.org)

196:174
11/04/16 18:52:07.23
>>195
ありがとうございます

皆さまご迷惑をおかけしました
今後は皆様のご迷惑をかけないよう、努力していく所存でございます

197: ◆S2mzliix4OVR
11/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();
  }
}

198:デフォルトの名無しさん
11/04/16 18:57:15.98
>>194
スレリンク(tech板:387番)

199:デフォルトの名無しさん
11/04/16 19:25:14.77
>>194
標準入力から名前を入力する形に直しました。
スレリンク(tech板:388番)

200:デフォルトの名無しさん
11/04/16 19:33:49.20
なんでトリップ外してんだよ
/tech/1295273862/ もNGしなきゃならんじゃないか

201:デフォルトの名無しさん
11/04/16 19:35:56.86
頼まれてもいないのに勝手にやって金払えか
どこのやくざだよ

202:デフォルトの名無しさん
11/04/16 19:39:19.04
>>143みたいなゴミしか書けないのにな

203: ◆QZaw55cn4c
11/04/16 19:57:25.92
>>201
その心配はありません。情報宣伝活動の一環ですので、私が勝手に書く分については「ポリタポ」を請求することはありません。

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

>>202
ゴミすら書けないあなたよりましです。

204:デフォルトの名無しさん
11/04/16 20:22:29.51
自分を批判する人間は自分より下って思い込みはどうにかしたほうがいい

205: ◆QZaw55cn4c
11/04/16 20:27:16.76
>>204
そのつもりはなく、いただいたコメントには真摯に対応しているつもりです。
そのような思い込みが感じられるとすれば、私の文面に問題があるのかもしれません。
もしよろしければ、どこがまずいのかポインタでもいただければありがたいです。

206:デフォルトの名無しさん
11/04/16 20:50:06.09
人の嫌がることをすすんでやります

207:194
11/04/16 20:51:05.16
>>205 スレリンク(idol板)l50

208:デフォルトの名無しさん
11/04/16 21:04:01.04
>>202
そういうなら
ゴミじゃないコード晒さないとな

209: ◆S2mzliix4OVR
11/04/17 00:55:10.96
>>195
[3.3] 言語: C

210: ◆QZaw55cn4c
11/04/17 02:13:20.89
>>173
目先の端だか恥だかは気にしない性分なんです。それに、>>140 に比べて、>>143 には利点もあります。
常々使っている mygetline() もそうですが、C でちゃんとかくのなら、>>143 位は考慮しておきたいもの、と考えています。

211:デフォルトの名無しさん
11/04/17 03:49:52.01
>目先の端だか恥だかは気にしない性分なんです。

こりゃ人に嫌われるわ
特に女に嫌われる
女は屁理屈大嫌いだからな
お前いい年して童貞だろ?

212:デフォルトの名無しさん
11/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しても良いがそれ以外は不可だそうです
よろしくお願いします。

213:デフォルトの名無しさん
11/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] その他の制限: 特になし

214:デフォルトの名無しさん
11/04/17 06:28:36.58
D+って1つの文字って言えるのか?

215:デフォルトの名無しさん
11/04/17 06:43:08.68
>>212
グループ数:xx ではなく クラス数:xx ではないかな。

216:212
11/04/17 07:30:53.46
>>215
もしかすると写し間違いがあるかも知れません。

217:デフォルトの名無しさん
11/04/17 07:44:13.28
>>214
文字じゃなくて文字列ですね
1つというのも、A~F+までのなかから1つ選んで、ということです

218:デフォルトの名無しさん
11/04/17 07:52:45.63
>>213
URLリンク(codepad.org)

219: ◆S2mzliix4OVR
11/04/17 08:07:24.47
>>213
URLリンク(codepad.org)
その上で客観的に比較してみましょうか。

220:デフォルトの名無しさん
11/04/17 08:30:34.73
>213

cygwin gcc にて確認。使用方法はusageにてわかるとおもう。
URLリンク(codepad.org)

221: ◆S2mzliix4OVR
11/04/17 08:35:03.45
>>220
成績だなんて、問題には書いてないよ。

222:デフォルトの名無しさん
11/04/17 08:40:55.10
>221
それはそうですね。
じゃkeyに読み替えてください。

変数に具体的な名前を与えたかっただけです。

223:デフォルトの名無しさん
11/04/17 08:57:06.24
>213
>220

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

URLリンク(codepad.org)

224: ◆QZaw55cn4c
11/04/17 09:41:21.65
>>212
グループ数というのは、問題文をみるかぎり「同一得点だった人数」だと思われますから、グループ要素数、くらいになるのでしょうかね。
それよりも(2)の日本語が全然わかりません。(2) の出力結果例を教えてください。

225: ◆QZaw55cn4c
11/04/17 09:55:22.44
>224
ちがいました。クラス数ですね。やはり。

226: ◆S2mzliix4OVR
11/04/17 10:41:17.52
>>219 VC 用に修正
char *mondai[]={"A","A+","B","B+","C","C+","D","D+","E","E+","F","F+",""};

227: ◆6W4srb4nmo
11/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

228:デフォルトの名無しさん
11/04/17 13:14:01.59
>>226
それをせずにすむ環境(または言語)はどちら?

229:デフォルトの名無しさん
11/04/17 13:20:18.33
Sなんとかは正しく動作すらしないので、客観的には>>223がいいかな。警告もでなかったし。

230:デフォルトの名無しさん
11/04/17 18:06:29.08
>211
目端がきく、というイデオムを軽くバクったつもりですが、ご理解いただけなかったでしょうか?

231:デフォルトの名無しさん
11/04/17 18:26:06.82
>>206
>人の嫌がることをすすんでやります

この評価が一番適切

232:デフォルトの名無しさん
11/04/17 19:09:45.68
>>230
理解したくないね
独りよがりのパクリとかどこのナルシストだよ
分かりやすく言えないのかアホ

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

◆QZaw55 cn4c は在日チョンではないかと最近思い始めた

233:デフォルトの名無しさん
11/04/17 22:20:08.26
>>212のような問題って、昔Cプログラマ適性検査として
入社後の配置決定試験の時に出された課題みたいな感じ
確か3時間で仕様通りのコードが書けなければ
3年以内退職を前提とした誓約書書かされたっけ
俺?見事失敗。その代わり3年間はオフィスに10時に
着いて、あとは喫煙室との往復だけで給料貰ったし
ボーナスも出たし結婚もしたし...
今は嫁のツテでIT関連学校の教師
この業界はよほどの素質かよほどのコネが無いと生きていくのは
無理なんじゃね?

234: ◆QZaw55cn4c
11/04/17 23:41:25.49
>>212
とりあえず (1) だけ。
スレリンク(tech板:397番)

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

235: ◆QZaw55cn4c
11/04/17 23:49:54.58
リンクミスがありました。
>>212
とりあえず (1) だけ。
スレリンク(tech板:397番)

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

236:デフォルトの名無しさん
11/04/17 23:49:58.89
>234
お前仕事してんの?ニートだろ?

237: ◆QZaw55cn4c
11/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

この四人のうちどれが出力対象になるのでしょうか?
問題文だけでは、二つの教科の平均点が一致したとき、残りの教科をどう扱うかがはっきりしません。

238: ◆6W4srb4nmo
11/04/18 00:38:40.07
国語<英語 AND 数学<英語 の生徒。

239:デフォルトの名無しさん
11/04/18 00:47:15.14
ま、このような時勢に4月末迄の期限のまだ余裕のある宿題を
日曜日がな一日潰して片付けてあげる人は偉大なのかそれとも...
ちなみに(1)と(2)はmainを共通にすべきじゃないかと...

240:212
11/04/18 04:45:54.88
>>235
取り敢えずはお礼を申し上げます。どうもお手数をおかけしました。
実はこの問題研修終了試験の過去問の5重コピーくらいの劣悪な
コピーから写したものです。もういちど調べてみるとやっぱり
グループ数じゃなくてクラス数でした。
ただCodePadは無償じゃないそうなので開くのには躊躇しております。

241:213
11/04/18 06:29:36.20
>>218,223,226
皆さんありがとうございました!

242:デフォルトの名無しさん
11/04/18 07:33:57.76
>>239
自分の力を誇示したいだけだと思われます。そして>>235

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

からも分かるように本当はプログラマ適性がないにも関わらず脅迫的にプログラムに
取り憑かれています。変ですね。

243: ◆QZaw55cn4c
11/04/18 07:41:53.59
>>239
例のスレッドに誘導をはかるべく自分の力を誇示したいだけです。意図したとおりにはなっていませんが。

そして、>>235
>3時間ですか?ちょっと無理ですねえ。
からも分かるように職業的適性はないアマチュアにも関わらずプログラミングに取り憑かれています。
やっぱり変ですね。

244:デフォルトの名無しさん
11/04/18 08:20:49.62
>212
これってどのくらいのレベルが想定ですか?
最大1000万レコードというあたりが、初学者向けとは思え無いので確認したいのです。

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

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

と思って面倒そうだから見てたけど、どうでしょ>212さん。

245:デフォルトの名無しさん
11/04/18 08:57:38.37
>235

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

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

各関数に何をする関数かを示すヘッダコメントを書くと、だいぶコードが読みやすく
なるので、心がけていただけないでしょうか。

246:デフォルトの名無しさん
11/04/18 09:05:28.09
1000万レコード全部合計点同じデータ食わせたらちゃんとうごかねえんじゃね?

247:デフォルトの名無しさん
11/04/18 09:58:04.20
100万レコード全部合計点違うデータ食わせたら動かねえんじゃね??

248:デフォルトの名無しさん
11/04/18 10:52:00.93
>>243
例のスレッドに誘導をはかるな。スレの邪魔だ。宣伝はあのスレでだけやれ。
他の人の迷惑だ。

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

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

どちらにしろ職業にする力量が明らかに不足しているのにそれで金儲けしようなどとは
いかにも図々しい話です。ナルシスティックで自分に酔っているとしか思えませんね。

249:212
11/04/18 11:07:29.36
>>244
なんか凄い空気ですね...
>>212の問題はうちの会社が多分主記憶がMバイトオーダーの
中型UNIX機で業務アプリ開発をやっていた時代の問題じゃ
ないかと...1000万行ってのは当時でもそれほど大きな
データじゃなかったようです。他の過去問にもそのような
数字が出ていますし。ちなみに現在うちの会社が扱っている
のは一案件10億とか100億とかのレコード数当たり前だそうで
す。


250:デフォルトの名無しさん
11/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;
}

251:デフォルトの名無しさん
11/04/18 11:36:03.44
>>244
富豪を仮定しないと面倒でない?

>>212 (1)だけ適当に。まともに動いてるのかよく分からん
URLリンク(codepad.org)

252:デフォルトの名無しさん
11/04/18 11:37:51.41
業務相手にお優しいこって

253:デフォルトの名無しさん
11/04/18 12:38:04.43
>>212
URLリンク(codepad.org)

・(1)、(2)の両方。
・ただし、Windowsでの作成のためLinuxで動かすにはちょっと改変が必要(キャリッジリターンの部分)。
・科目の数が3つとなっているが、遊び心で勝手に3つ以外(5個とか100個とか)可能にした。
 そのため、入力するファイルが若干変わり、次のように入力してもらうようにした。
  例.
   国語\t数学\t英語\t・・・\t理科
   12345678\t9012\t345\t567\t・・・\t890
           以下略
 まぁ、科目増えた分の点数と、1行目に科目名入れるようにしたってだけ。
・テスト行うため、ファイル作成する関数導入(rand()使用、srand()は付けてない)。上記にしたがった書き込みを行う。
・malloc使い過ぎたときのエラー対策が不十分(freeがてけとー)。
・データは、例えばid(8桁)の場合、00011111のように0を省略せずに入力しないとプログラム終了させている。
・わかりやすくを心がけて作ったつもり(遊び心スイッチ入れた後はそんなこと気にしなかった。)。
・ということもあり、計算速度はすげぇ遅い。1000万行はやるな。

254: ◆QZaw55cn4c
11/04/18 12:49:25.71
>>245
テストありがとうござます。

二分木に突っ込んでいるのは、レコードそのものではなく、0+0+0~999+999+999 の点数を単位としたデータ構造で、
点数ごとに同点数の人数とクラス名の線形リストを持っています。同一点ごとのクラス数は、線形リストに追加された要素の数を最後に勘定することで調べています。
レコードそのものをメモリに全部乗せるのは無理と踏みました。

>>246
プログラムのつくりとしては問題ありません。二分木に一つの要素が追加されるだけになります。

>>247
それは問題ですが、題意に沿うかぎり、0~999+999+999 の計 3000通り弱ですので、メモリは足りるだろうと踏みました。

>>248
>なぜそんな趣味レベルの力しかないのにそれで強引に金儲けをしようとするのですか?
金儲けじゃありません。モリタポ儲けです。

255:デフォルトの名無しさん
11/04/18 12:55:41.24
>>254
0-999が3組ある場合の組み合わせが3000通り弱なの?
国語が0点、算数が0-999の1000人と
国語が1点、算数が0-999の1000人と
国語が2点、算数が0-999の1000人で3000通りになってしまったよ。

256:デフォルトの名無しさん
11/04/18 12:59:10.20
>>254
>金儲けじゃありません。モリタポ儲けです。

また屁理屈かよ
聞き飽きた

URLリンク(auction.moritapo.jp)
これがある以上、金儲けと言われても文句は言えない

257:デフォルトの名無しさん
11/04/18 14:10:25.18
てゆーか、何でそんなにプログラミングが好きなのか
よくわからない
仕事とか勉強とかに必要だからいうのは兎も角

258:デフォルトの名無しさん
11/04/18 14:21:08.56
暇つぶしに宿題やるのは悪くないと思ってる職業マならここに。
関係ない人が、目的もなく宿題をやるのは不思議。けどなんかやろうとしてたんだっけか。
日曜大工的なもんだと思えばいいんでないかな。

259:デフォルトの名無しさん
11/04/18 14:27:56.19
>>258
少しでも、C言語の周りを活性にしようとしているだけだろ。
肝心のソースコードを晒す場所があまりないからここでということ。

260:デフォルトの名無しさん
11/04/18 14:38:03.12
てか何でソースを晒したいの?

261:デフォルトの名無しさん
11/04/18 14:39:43.21
>>259
日曜大工が趣味の人が、日曜大工の輪を広げたいがために
ホームセンターで展覧会を開いていると思えばよい?
それも、何度も拒絶されているにもかかわらず、懲りずに展覧会を開く。

262:デフォルトの名無しさん
11/04/18 14:42:27.49
>>260
ヌードになる心境でしょう。

263:デフォルトの名無しさん
11/04/18 15:06:47.24
>212

続々コードが上がってきましたね。
ちょっと読んでみます。

私もまずは1だけです。
URLリンク(codepad.org)

>249
>>212の問題はうちの会社が多分主記憶がMバイトオーダーの
>>中型UNIX機で業務アプリ開発をやっていた時代の問題じゃ
であれば、今上がっているようなコードではダメでしょうね。
すべてのデータをオンメモリに展開するわけにはいかないでしょうから。
点数別に読み込みながら集計して、出力の繰り返しかな?

>ちなみに現在うちの会社が扱っている
>のは一案件10億とか100億とかのレコード数当たり前だそうです。
そういう場合はDB使っているでしょうね。

264:デフォルトの名無しさん
11/04/18 15:20:00.37
>>263
読んでねーのにけなすとか馬鹿じゃね

265:デフォルトの名無しさん
11/04/18 15:33:53.86
自分のは兎も角、人が書いたC文書読んで面白いの?
てか最近はソフト頒布はオプソで原則が浸透しつつあ
るんで、読まざるを得ないことも少なくないけど

266:デフォルトの名無しさん
11/04/18 16:36:43.10
C文書w

267:デフォルトの名無しさん
11/04/18 16:40:08.27
>>265
他人のレスを読むのが面白いかどうかというとなんともいえないのと同じで、
反応するためには普通に読むでしょう

268:デフォルトの名無しさん
11/04/18 17:31:04.34
こういう言葉のやりとりが面白くないから、少しはソースコードでも
載らないものかと思ってる人にサービスするためのスレ。
宿題であるかなんて関係もない。

269: ◆QZaw55cn4c
11/04/18 18:46:03.39
>>255
>>212
>各教科の得点の和が同じ生徒達のグループについて
国語・数学・英語の総和だけ考えればいいので、個別で0~999 までなら、総和は 0~2997 です。この2998通りについて、おのおの出現回数と出現したクラス名を記録しておけばいいわけです。

270: ◆QZaw55cn4c
11/04/18 18:53:22.23
>>256
そういう換金可能性は、どのような「もの」に対しても当てはまることです。
どんな「もの」に対しても当てはまる性質を理由にあげても(それはオークションにかければ理論上どんなものでも換金できます。)それによr営利目的か営利目的でないかを判断することはできないのではないでしょうか。

271:デフォルトの名無しさん
11/04/18 19:15:44.31
>>270
対価とることがおかしいんだよ

272: ◆QZaw55cn4c
11/04/18 19:32:21.15
>>271
2ch で対価をとることを規制する規定はありますか?あるのなら URL を示してください。

以上、スレリンク(tech板) での議論の要約でした。

273:デフォルトの名無しさん
11/04/18 19:46:24.17
>>272
対価を取らずに宿題に答えるスレで、
対価を取るスレの宣伝行為はやめろ。
スレの進行の妨害だ

274:デフォルトの名無しさん
11/04/18 19:49:56.37
マジレスするとこっちのスレで対価無しの回答してたらモリタポ儲け出来ないじゃん
出題者側もそれに気づいてるから専用スレに出題者が現れないんだろ


275:デフォルトの名無しさん
11/04/18 19:55:09.77
>>274
有償スレへのリンクを貼り付ける行為がきわめて悪質。


276: ◆QZaw55cn4c
11/04/18 20:10:55.13
>>273
出題者の望む最大限の行動(すなわち動く C プログラムソースを作成し公開すること)を「妨害」と判断した根拠を示してください。

そういえば、あなたは私を糾弾するばかりで、ひとつもソースを公開していませんね。それこそこのスレの進行を妨害しているのではないでしょうか。
一度くらい、ソースを公開したその同じレスの中で私を批判してみてください。

277:デフォルトの名無しさん
11/04/18 20:19:17.31
誰と戦ってるんだw

278:デフォルトの名無しさん
11/04/18 20:20:26.55
お前らこっちでやれ。どっちも邪魔
スレリンク(tech板)

279:デフォルトの名無しさん
11/04/18 20:21:55.80
>>276
巣に帰れカス

280:デフォルトの名無しさん
11/04/18 22:25:51.70
>263です。

>250
コード読みました。
比較した中では一番シンプルでいいと思います。
読み込んだデータよりも、集計データの方をオンメモリで持ったほうが
小さくていいですね。しかも読みながらビンソートになっているから
パフォーマンスも一番です。

自分のコードも始めに読み込みデータと集計データを、オンメモリに
もつようにしていたのですが、ソートは必要だと思い込んでいました。
そうか、集計時にビンソートになっているから、読み込んだデータのソートは
不要ですね。ソートが必要だと思ったので、メモリ上に読み込んでいたので、
そのことに気づけなかったのは、自分が残念です。

クラス数の集計でビットカウントが使われているのが、私と全く同じだったので
少し親近感があります。
それだけに自分のコードが残念だ。



281:デフォルトの名無しさん
11/04/18 23:09:20.45
>250を踏まえて>263を書き直しました。

URLリンク(codepad.org)

本質的には>250と同じです。
投稿に収めるために、かなりコンパクトに書かれていたと思われるので、
あえて投稿しました。
やはり処理時間がダントツに違います。

282:212
11/04/19 06:58:15.81
>>281,263さん
貴重な時間を割いて回答いただきありがとうございました。

283:253
11/04/19 10:51:11.25
需要ないが、主に自己満足のため(あと、他に課題も相談もないようなので)、
>>253の改善をあっぷ。
URLリンク(codepad.org)

・キャリッジリターンなんて関係なかった。たぶんlinuxでも動く。
・つーか、便利な関数もっと使えばよかったと今更思う。
・メモリの開放をも少ししっかりやった。
・他いろいろ細かい部分の修正。
・遊び部分はそのまま。

284:デフォルトの名無しさん
11/04/19 13:23:09.15
>>183
クラス名を"0000"~"0009"に決め打ちしてない?
出力結果が何かおかしいんだけど

285:デフォルトの名無しさん
11/04/19 13:23:55.57
あ、間違った
>>284>>283に対してです

286:①
11/04/19 17:47:07.29
[1] 授業単元: C
[2] 問題文(含コード&リンク):
エラトステネスの篩
第一引数にint型の変数m, 第二引数にint型の配列Pが与えられたとき、
配列Pにm以下のすべての素数を格納し、格納した素数の個数を返す関数
int eratosthenes(int m, intP[])
を作成せよ。
なお、格納した素数の個数がhの場合、素数の配列PのP[0]からP[h-1]に昇順に
格納されているものとする。
[[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2011/4
[5] その他の制限:なし

よろしくお願いします。


287:②
11/04/19 17:48:05.50
よろしくお願いします。


#include<stdio.h>
#define max_n 10000/

int eratosthenes(int m, int P[]);

int eratosthenes(int m, int P[]){
/* この部分を作成 */

}

main(void){
int i,n,h;
int P[max_n];

printf("Input n: ");
scanf("%d",&n);

h=eratosthenes(n,P);

printf("Primes not exceeding %d are :\n",n);
for(i=0; i<h; i++) printf("%d ",P[i]);
printf("\n");
}


288:283
11/04/19 18:38:54.67
>>284
クラス数少なくするか、生徒数多くするかしないと、課題(2)の結果が1クラスあたり1人となってしまうため、クラス数を減らしてます。
#defineで10000に戻せば課題のどおりです。

289:デフォルトの名無しさん
11/04/19 18:59:57.54
>>286

int eratosthenes(int m, int P[])
{
int i, j;

for(i = 0; i <= m; i++) P[i] = 0;
for(i = 3; i <= m; i += 2) P[i] = 1;
P[2] = 1;

for(i = 3; i * i <= m; i += 2) if(P[i]) for(j = i * i; j <= m; j += 2 * i) P[j] = 0;

for(i = j = 0; i <= m; i++) if(P[i]) P[j++] = i;

return j;
}

290:デフォルトの名無しさん
11/04/19 20:09:44.48
篩として使った配列に、素数をつめなおすってなんか気持ち悪いなw

291:デフォルトの名無しさん
11/04/19 20:14:44.74
>>290
ソートして結果を返すっていう関数もあるからね

292: ◆QZaw55cn4c
11/04/20 01:18:00.02
>>212 の (2)
スレリンク(tech板:419番)

>>253, >>283
不等号情報の仕様は等号の場合も含んでユニークにできておりすばらしいと思います。
今度、機会があればぜひ採用しようかと。

ただし今回は、
>>212
>ただしあるクラスの2つの教科の平均点が一致している場合はその2つの教科の得点の
>大小関係は不問として出力する。
という仕様があるのですが、これには対応しているのでしょうか?

293:デフォルトの名無しさん
11/04/20 01:24:25.59
292 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん

294: ◆QZaw55cn4c
11/04/20 01:29:13.90
>>292
つづり間違いを訂正しました。
スレリンク(tech板:420番)

295:デフォルトの名無しさん
11/04/20 01:36:35.20
294 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん

296: ◆QZaw55cn4c
11/04/20 02:06:39.92
>>240
スレリンク(tech板:325番)

297:デフォルトの名無しさん
11/04/20 02:17:38.43
C言語
ソースファイル

#include <stdio.h>

int main(void){
int ch;
FILE *sfp, *dfp;
char sname[64], dname[64]; /* ファイル名 */

printf("コピー元ファイル名:"); scanf("%s", sname);
printf("コピー先ファイル名:"); scanf("%s", dname);

if ((sfp = fopen(sname, "r")) == NULL) { /* コピー元をオープン */
printf("コピー元ファイルをオープンできません。\n");
} else {
if ((dfp = fopen(dname, "w")) == NULL) { /* コピー先をオープン */
printf("コピー先ファイルをオープンできません。\n");
} else {
while ((ch = fgetc(sfp)) != EOF) {
fputc(ch, dfp);
}
fclose(dfp); /* コピー先をクローズ */
}
fclose(sfp); /* コピー元をクローズ */
}

return 0;
}

298:デフォルトの名無しさん
11/04/20 02:18:24.57
ファイルを連結するコマンド cat の自家版

次の処理を行うプログラムを作成します。

コマンド引数として,0個以上のファイル名を指定します。
コマンド引数で与えられた名前のファイルの内容を順次連結して、標準出力に出力します。
コマンド引数が与えられなかった場合、標準入力からのデータを標準出力に出力します。
エラーメッセージは、標準エラーへ出力します。

よろしくおねがいします

299: ◆QZaw55cn4c
11/04/20 02:31:34.94
>>298
その昔、void 氏が fj.sources に投稿していた記憶がありますが、今となってはどこを探せばいいのでしょうかね。

300:デフォルトの名無しさん
11/04/20 02:36:54.19
知らないなら黙っててくれませんか

301:デフォルトの名無しさん
11/04/20 02:39:28.79
>>299
無脳は黙ってて下さい

302:デフォルトの名無しさん
11/04/20 03:26:36.04
まるきりクローンが欲しいの?

303:デフォルトの名無しさん
11/04/20 07:37:10.76
>>298
>>297を拡張して作れということ?

304:デフォルトの名無しさん
11/04/20 12:46:54.33
>>298
>>1

305:デフォルトの名無しさん
11/04/20 18:44:30.76
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):URLリンク(deaimail.from.tv)
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:本日中
[5] その他の制限:
if・for・2次配列くらいしか習っていないので
可能ならそれらの文で書いていただけると助かります

306:デフォルトの名無しさん
11/04/20 19:02:19.15
>>305
#include<stdio.h>
#include<math.h>

int main()
{
int i;
double x[12];
double u,s;

printf("データを12個入力してってね\n");
for(i=0;i<12;i++)scanf("%lf",&x[i]);

u=0;
for(i=0;i<12;i++)u+=x[i];
u/=12;

s=0;
for(i=0;i<12;i++)s+=(x[i]-u)*(x[i]-u);
s=sqrt(s/11);

printf("平均=%lf 標準偏差=%lf\n",u,s);

return 0;
}

307:デフォルトの名無しさん
11/04/20 20:53:51.32
>>306
ありがとうございます

308:デフォルトの名無しさん
11/04/20 21:03:34.32
[1] 授業単元:ポインタ関連
[2] 問題文(含コード&リンク): 2重ポインタを使って、
014c7fcがポインタアドレスで
+0x4f4したところに01を代入して
+0x4f8したところに02を代入するソースを書いてもらえませんか?
お願いします
[3] 環境
 [3.1] OS: windows
 [3.2] VC++で
 [3.3] 言語: できればC++で
[4] 期限: 2011年4月28日まで
[5] その他の制限: 病院(肘の手術をうけました)にいて自分自身あまり習ってません・・・


309:308
11/04/20 21:28:44.35
何か足りないころがありましたら、言ってください

310:デフォルトの名無しさん
11/04/20 21:53:22.81
それ本当に問題文あってるか?

311:308
11/04/20 21:58:17.03
0x4f4と0x4f8に関してはオフセットです

312:デフォルトの名無しさん
11/04/20 21:59:28.08
>>311
相当危険な行為なんだが


313:デフォルトの名無しさん
11/04/20 22:02:13.35
そもそも一般的なwindowsアプリじゃ物理アドレス決め打ちなんて出来ないだろ
アドレスを指定する事は出来るがそこが物理アドレスと一致してるとは限らない

314:308
11/04/20 22:08:03.40
ではDLLとかでもおkです

315:デフォルトの名無しさん
11/04/20 22:11:32.95
int **ppi=reinterpret_cast<void**>(0x014c7fc);
**ppi+0x4f4=01
**ppi+0x4f8=02

みたいな感じか
絶対動かしたくないな

316:デフォルトの名無しさん
11/04/20 22:12:58.24
>>314
そういう事じゃなくて、
直値でアドレスを指定して読み書きする行為が
危険だと言う事なんだが
指定したアドレスが、読み書き可能かどうかが保障されてない。

317:デフォルトの名無しさん
11/04/20 22:14:28.53
質問者を装って、何か不具合起こさせようとしてるんじゃね

318:デフォルトの名無しさん
11/04/20 22:15:49.93
VirtualAlloc を使えば希望のアドレスが使えるかもしれない
もしくはデバイスドライバのようにカーネルモードで動かすか

319:308
11/04/20 22:17:10.19
なんか怪しまれてますが不具合を起こさせような事は考えていません。

320:デフォルトの名無しさん
11/04/20 23:06:54.16
int main(void)
{
int **ppi=reinterpret_cast<int**>(0x014c7fc);
**(ppi+0x4f4)=01;
**(ppi+0x4f8)=02;
return 0;
}

動くかどうかは知らん

321:デフォルトの名無しさん
11/04/20 23:09:59.00
>>316
危険?segmentation fault吐いて落ちるだけじゃね?

322:デフォルトの名無しさん
11/04/20 23:12:58.31
>>321

メモリ保護機能があるOSなら、落とされるけどね

323:デフォルトの名無しさん
11/04/21 00:34:44.14
ウィルス作ったら犯罪だぞ
コンピューター監視法が閣議決定されたからな

324:デフォルトの名無しさん
11/04/21 00:36:37.66
意図しない動作をしたらウイルス認定だから
バグってたらタイーホって法律だっけ

325: ◆6W4srb4nmo
11/04/21 00:37:32.78
コメントはずせばアボする
int main(void)
{
  int bb[0x500/4];
  int *b = bb; // = (int *)0x14c7fc;
  int **a = &b;
  *(*a + 0x4f4/4) = 1;
  *(*a + 0x4f8/4) = 2;

  printf("%x %x\n", bb[0x4f4/4], bb[0x4f8/4]);
}

326:デフォルトの名無しさん
11/04/21 00:55:31.29
{
system("format.exe c: /q);
}

↑こういうのでもウィルス認定か

327:デフォルトの名無しさん
11/04/21 01:00:15.76
>>324
本当にそんなんだったら最高裁まで争われて判例が出来るぞ
まあ政権交代したら骨抜きにされそうだけど

328:デフォルトの名無しさん
11/04/21 01:02:06.96
高木さんが必死で危険性を訴えてたな。
図書館の件あたりで。

329:デフォルトの名無しさん
11/04/21 01:09:13.70
図書館のヘボシステムのせいで酷い目にあってたな
あれは詐欺レベルのシステム作った奴が裁かれるべきだと思った

330:デフォルトの名無しさん
11/04/21 01:24:42.72
>>329
あの件は法律ではなくて普通に民事裁判を起こして決着を付けるべき問題

331:デフォルトの名無しさん
11/04/21 10:06:18.58
つまんないレス

332:デフォルトの名無しさん
11/04/21 11:32:38.83
自分自身を書き換えながら動くプログラムってもう作れない?

333:デフォルトの名無しさん
11/04/21 12:52:54.25
ウィルス作成の世界にようこそ

334:デフォルトの名無しさん
11/04/21 14:14:09.14
[1] 授業単元:システムコール
[2] 問題文(含コード&リンク):コマンドライン引数が十進整数として解釈できれば八進に変換、さもなくば、*を標準出力に出力するプログラムを書け。
出力は一行に一つずつで、出力順は、もとのコマンドライン引数の並びの順とする。 ただし、十進整数として解釈できる文字列とは、正規表現 ^[-+]?[0-9]+$ にマッチするものとする。 文字列の長さは制限しない。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限:2011年04月22日00:00まで
[5] その他の制限:解答例はURLリンク(codepad.org)です。多倍長整数を利用すればいいと言われました。

335:デフォルトの名無しさん
11/04/21 14:15:59.30
333です。
一言入れ忘れました。
よろしくお願いします。

336:デフォルトの名無しさん
11/04/22 04:05:37.13
>>308
bcだとスタックは0x12ff88 から下に向かって取られるみたいだから 0x14c7fc より上に書き込むのは無理だと思うよ

337:デフォルトの名無しさん
11/04/22 11:46:52.04
1] 授業単元: ガウスの消去法 [2] 問題文(含コード&リンク):
以下のを参考に三元連立一次方程式の解を表示するプログラムを作成したい.
URLリンク(codepad.org)

[3] 環境 [3.1] OS: Windows [3.2] gcc [3.3] 言語: C
[4] 期限: [2011年4月26日12:00まで]
お願いします.

338:デフォルトの名無しさん
11/04/22 13:01:56.09
>>337
URLリンク(codepad.org)

339:デフォルトの名無しさん
11/04/22 15:13:14.47
アセンブリ言語のソースファイルをドット言語ソースファイルに変換するc言語プログラムを教えてください

340:デフォルトの名無しさん
11/04/22 15:25:45.37
.NET (ドット・ネット)の事?

341:デフォルトの名無しさん
11/04/22 15:28:03.90
JITコンパイラの逆って事か?そんなの初耳だな

342:デフォルトの名無しさん
11/04/22 15:38:36.78
>>338
ありがとうございます.
とても助かります.

343:308
11/04/22 18:53:49.83
上にいろんなソースあったんですが2重ポインタ関連の質問は一応これで終わりってことで
いいんですかね・・・・

344:デフォルトの名無しさん
11/04/22 21:36:52.97
いいよ
終わりだ

345:デフォルトの名無しさん
11/04/22 22:57:02.22
[2] 環境 [2.1] win7[2.2] gcc [2.3] c
[3] 回答希望期限[4] その他の制限:大学1年
[1]問題
C言語で少数点20以下~20桁までの計算(結果もこの範疇)したいのですがどうしたらいいですか?
例えば8323234×32342とか0.2323×23242311とか。

すいません、似たような別スレで同じ質問しましたがあっちで取り消してきます・・


346:デフォルトの名無しさん
11/04/22 23:04:05.90
>>345
マルチすると誰も回答しないよ

347:デフォルトの名無しさん
11/04/22 23:10:45.76
>>346
C++と検索すると宿題片付けますスレがあって、あっちのほうがたまたま先に
見つかったし質問の形式は保存してるから、すぐに間違って書き込んでしまっただけです。

後でただの類似スレだと分かりました。

348:デフォルトの名無しさん
11/04/22 23:17:06.17
>>347
でしょ
すっごい迷惑ですよねあのスレ
紛らわしいわ有料だわ
本当に迷惑ですよね

349:デフォルトの名無しさん
11/04/22 23:17:30.22
>>345
かけ算だけでいいの?
筆算でやる手順をそのままプログラムにしてみたらどうかな?
効率は悪いけど、一桁ずつかけ算し、
繰り上がりが出たら、上位桁の計算時に足し込む。

350:デフォルトの名無しさん
11/04/22 23:17:38.83
>>347
君にはあっちのスレが向いてるから、あっちに行きなよ

351:デフォルトの名無しさん
11/04/22 23:18:38.08
どっちの計算もdoubleの範疇で、何か特別なことが必要にも見えないけど

352:デフォルトの名無しさん
11/04/22 23:28:13.99
>>351
double の有効精度知ってる?

353:デフォルトの名無しさん
11/04/22 23:28:34.29
>>351
例ですw

本当はもっと大きい計算もしたいです。


20桁範囲内ならどんな計算もできるプログラムです。僕の欲しいのは。

354:デフォルトの名無しさん
11/04/22 23:29:47.54
>>353
>どんな計算もできる

こういう要求だと、宿題スレには向かないんじゃない?

355: ◆QZaw55cn4c
11/04/22 23:30:12.06
>>351
たしかに、例として挙げられた計算は double 仮数部 52 bit = 10進15桁におさまるけれども‥‥‥。

>>345
紛らわしくてごめんなさい。お詫びに10進 40 桁の固定小数点演算を実装してみます。希望の期限を教えてください。

356:デフォルトの名無しさん
11/04/22 23:32:48.86
>>354

では
x×yという形に限定します。範囲は20桁~小数点20桁です。

357:デフォルトの名無しさん
11/04/22 23:33:10.46
ちゃんとあっちで答えたのにあちらは無視か
とんだクソ野郎だ

358:デフォルトの名無しさん
11/04/22 23:59:14.25
>>357==◆QZaw55cn4c

359:デフォルトの名無しさん
11/04/23 00:02:49.56
>>357のいうあっちはそっちじゃねーだろw

360:デフォルトの名無しさん
11/04/23 00:45:01.36
>>345
宿題じゃないなら gmp 使うだけでいいんじゃね
速いし精度に制限なしでデバッグ済み
LGPL だからライブラリとして変更無しで使えば面倒もない

361:デフォルトの名無しさん
11/04/23 01:51:22.68
>>360
宿題じゃなくても、アルゴリズムで実現したい。
そんなのプログラム習いたてなんだから当たり前。

プログラムを凝れないのにそんな便利なもの使いたくもない。
そんなの当たり前の事。

そもそもプログラム初心者がプログラム自体の仕組みを知りたがってる何て
当たり前の事。


362:デフォルトの名無しさん
11/04/23 01:53:24.02
そこまで言うならコードの一つも書いてやればいいのにな

363:デフォルトの名無しさん
11/04/23 01:56:39.85
あの糞コテがコード書いてくれるよ

364:361
11/04/23 02:00:49.47
プログラムのイロハも分からない僕はそういう便利なものには一切興味がなく
むしろ一生どうでもいいかもしれません・・ごめんなさい・・


365:デフォルトの名無しさん
11/04/23 02:05:47.01
>>364
興味がないなら、なおのことライブラリを使ったほうがいいよ
信用できるライブラリを使ってればデバッグも楽

366:361
11/04/23 02:11:43.46
>>365
便利なものを使うなら、壮大なスケールで独創的なものを作り上げる時に
必要となるが、今は"計算"を実装する事を目的としてる。よって今欲しい
のは"アルゴリズム"

以上。

367:デフォルトの名無しさん
11/04/23 02:16:39.57
>>366
欲しいものは検索ワードということだな
多倍長演算 アルゴリズム

368:デフォルトの名無しさん
11/04/23 02:17:58.00
>>366
簡単なものは
class xx{
uint dp;
vector<uint> arr;
];
でarrに万進数値をいれdpで小数点の位置を記憶する
あとは+,-,*,-,&,!..やtostringを実装するぐらい

URLリンク(ja.wikipedia.org)
小学校の算数レベルのアルゴリズムを使ったものである

といわれるように面白みのあるものではないよ
パフォーマンスを求めるならここで聞くより
gnumpなどのソースを参考にした方がいい

369:366
11/04/23 02:32:34.05
>>368
ありがとう。何かややこしそうだな。

ゲーム作る人は、計算とかどうしてんのかな。
doubleの範囲内ですむ計算が多いのかな。

370:デフォルトの名無しさん
11/04/23 03:07:25.40
というより、精度の問題だから。
コンピュータで実数を扱う意味を考えたらいい。

ちなみに、XNAという、箱○上で動くゲームを作るためのXNA Frameworkでは、
Vector3が、xyzの値をそれぞれfloatで持ってたりする。

三次元の点を山ほど扱う場合、floatをdoubleにするだけで、
それにかかるメモリ容量は単に倍になる。

371:デフォルトの名無しさん
11/04/23 18:53:49.19
説明文:引数:1~12の整数で、返値:月の名前の文字列へのポインタ
     引数が12を超えた場合はNULLを返す関数

URLリンク(codepad.org)

エラーが出てしまいます。アドバイスをお願いします。

372:デフォルトの名無しさん
11/04/23 19:03:46.49
>>371
char c;

char *c;

373: ◆QZaw55cn4c
11/04/23 19:13:05.87
>>371
スレリンク(tech板:497番)
mon() を二通り作ってみました。納得のいく方法でどうぞ。

374:デフォルトの名無しさん
11/04/23 20:24:55.20
>371

これこそテーブルを利用すべき関数と思う。
URLリンク(ideone.com)

375:デフォルトの名無しさん
11/04/23 20:31:09.45
>>373
ひょっとしてそれはギャグでやってるのか?マジでやってるならかなり恥ずかしいぞ

** 回答例 **
#include <stdio.h>

char *table[] = {"NULL", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};

char *mon(int i){
return table[i];
}

int main(){
int i;

printf("数字を入力:");
scanf("%d",&i);
if(i < 1 || i > 12) i = 0;

printf("%s\n", mon(i));
return 0;
}

376:デフォルトの名無しさん
11/04/23 20:48:17.08
>>373
関数にマイナスの値投げたらどうなるの?

377:374
11/04/23 20:57:25.50
NULLが返る条件を間違えていました。

そのあたりは読み替えてください。

378:デフォルトの名無しさん
11/04/23 21:04:27.97
なんつーか
if(i < 12) {
中略
if(i == 12)
}
に気づかないバカがコードいじることに恐怖を感じる


379:デフォルトの名無しさん
11/04/23 21:08:05.22
>>375
>>371 で示されたコードに対して最小限の変更になるようにしました。そうすればとりあえずの問題点を理解してもらえると思ったからです。
テーブル引きや switch も意図的に使いませんでした。

>>373
確かに穴がありました。元のソースをそっくりパクってしまった弊害がでました。

380: ◆QZaw55cn4c
11/04/23 21:13:08.09
>>371
いろいろ指摘がありましたので、元のソースコードには沿っていますが、幾分書き換えました。
ともあれ納得のいく方法でどうぞ。
URLリンク(codepad.org)

381:デフォルトの名無しさん
11/04/23 21:25:43.82
>>380
書き換えなくていいから巣に引っ込め低脳

382:デフォルトの名無しさん
11/04/23 21:26:24.65
>>372-380
ありがとうございます

383:デフォルトの名無しさん
11/04/23 21:30:36.89
>>382
礼は言わない方が良い
モリタポ取られるぞ

384:デフォルトの名無しさん
11/04/23 21:32:29.25
[1] 授業数学の問題をC言語で解く
[2] 問題
整数xを0から100000までの整数として,xが3つの素数の和で表現できるなら
その三素数を出力するプログラムを作成せよ。複数組み合わせの場合最初に
見つけたものを出力せよ。
[3.1] 7
[3.2] gcc
[3.3] C
[4] 期限:25日9:00
[5] その他制限: 純粋Cライブラリ。

385:デフォルトの名無しさん
11/04/23 21:34:34.53

x=31→(13,11,7)

386: ◆QZaw55cn4c
11/04/23 21:34:44.10
>>383
スレリンク(tech板:325番)

387:デフォルトの名無しさん
11/04/23 21:35:16.03
>>386
いいから書き込みすんな

388:デフォルトの名無しさん
11/04/23 21:35:29.22
>>382
こいつは2chを個人的な金儲けの道具にしようとしていて、みんなに嫌われてる。

それでも止めようとしない。多分精神の病気なんだろう。

389:デフォルトの名無しさん
11/04/23 21:37:42.08
重度の自己愛性人格障害だな
それが原因で就職も出来ずニート生活を続けている
しかも2chですら嫌われ者

390:デフォルトの名無しさん
11/04/23 22:27:20.94
>>384
#include <stdio.h>

#define N 100000

char sieve[N] = {0, 0, 1};

int main(void)
{
int i, j, x, y;

for(i = 3; i < N; i += 2) sieve[i] = 1;
for(i = 3; i * i < N; i += 2) if(sieve[i]) for(j = i * i; j < N; j += i) sieve[j] = 0;

scanf("%d", &x);

for(i = 2; i * 3 <= x; i++) {
if(sieve[i] == 0) continue;
y = x - i;
for(j = i; j * 2 <= y; j++) {
if(sieve[j] && sieve[y - j]) {
printf("%d %d %d\n", i, j, y - j);
return 0;
}}}

return 0;
}

391:デフォルトの名無しさん
11/04/24 01:03:13.14
おれ思うんだけど
>>371みたいなコードを書く奴が
>>375みたいなコードを提出すると先生怪しむんじゃないのか
学校でよたよたしながらやっている初心者のコードじゃないよな
他の学生のコードに比べてスマートすぎて先生にマークされそうだよな

392:デフォルトの名無しさん
11/04/24 01:04:49.61
>>391
375 はある意味 371 よりもダメだからいいんじゃね

393:デフォルトの名無しさん
11/04/24 01:08:38.00
>>392
すまん
>>375>>374の間違いだ、orz

394:デフォルトの名無しさん
11/04/24 01:19:26.05
>>393
375 は const をどういう意図で使ってるのか微妙

395:デフォルトの名無しさん
11/04/24 01:19:49.13
374 だった

396:デフォルトの名無しさん
11/04/24 01:28:21.96
>>394
C++だからじゃね?Cだと代入出来るけどC++だとエラーになる

397:デフォルトの名無しさん
11/04/24 01:29:38.04
だよなw
const char *mon(int i)
static const char *monthTbl[] = {
じゃね?せめて。

398:デフォルトの名無しさん
11/04/24 01:30:27.57
>>390
ありがとうございます・・・・

本当に分かりやすいコードですね・・
ただ、2とか3とかそういう簡単なのが2個くらい占めますね。


157 = 43 31 83

とかだったら少し感動するんですが・・・

399:デフォルトの名無しさん
11/04/24 01:30:34.23
>>397>>394-395へのレス。

400:デフォルトの名無しさん
11/04/24 01:37:37.45
>>384
いいね

401:デフォルトの名無しさん
11/04/24 01:39:13.37
>>398
どうでもいい
xを出力すればいいだけだろ

402:デフォルトの名無しさん
11/04/24 01:43:44.09
>394>397

static const char *monthTb
だとmonthTbがReadOnly

static char *const monthTb
だとmonthTbが指している先がReadOnly

403:デフォルトの名無しさん
11/04/24 01:46:44.99
static char *constでいいよな

404:デフォルトの名無しさん
11/04/24 01:47:05.33
>>402
節子、それ逆やw

405:デフォルトの名無しさん
11/04/24 01:47:42.72
>>402
逆だろ

406:デフォルトの名無しさん
11/04/24 01:49:34.32
const char *
const char へのポインタ

char *const
char へのコンストポインタ

407:デフォルトの名無しさん
11/04/24 01:49:41.25
>>398 割と大きめの数字が出力されるかな?
--- a.c 2011-04-24 01:48:25.688130470 +0900
+++ b.c 2011-04-24 01:48:53.978128063 +0900
@@ -13,10 +13,10 @@ int main(void)

scanf("%d", &x);

- for(i = 2; i * 3 <= x; i++) {
+ for(i = x/3; i >= 3; i--) {
if(sieve[i] == 0) continue;
y = x - i;
- for(j = i; j * 2 <= y; j++) {
+ for(j = y/2; j >= i; j--) {
if(sieve[j] && sieve[y - j]) {
printf("%d %d %d\n", i, j, y - j);
return 0;

408:デフォルトの名無しさん
11/04/24 01:52:02.75
i >= 2か、、、すんません

409:デフォルトの名無しさん
11/04/24 01:54:54.57
なるべく平均化したいなら
>for(i = 2; i * 3 <= x; i++)
for(i = x / 3; i < x; i++)

>for(j = i; j * 2 <= y; j++)
for(j = i; j > 0; j--)

あんまり意味があるとも思えないけど

410:デフォルトの名無しさん
11/04/24 02:09:07.37
それだと性能面でリグレッションしてるけどな

411:デフォルトの名無しさん
11/04/24 02:10:10.34
>>375
関数の中でインデックスチェックしろよ。

412: ◆QZaw55cn4c
11/04/24 06:43:53.19
>>398
スレリンク(tech板:499番)
可能な3個組を全部調べ上げ、できるだけ大きい数同士の組をとるようにしています。そのかわり、全検索するので遅いです。

>>388
金儲けじゃありません。モリタポ儲けかもしれませんが。

>>389
自己愛性人格障害ってなんですか?

>>402
であってると思います。

413:デフォルトの名無しさん
11/04/24 06:47:49.75
コードが頭悪すぎて吹いたw

414:デフォルトの名無しさん
11/04/24 08:36:56.22
>複数組み合わせの場合最初に見つけたものを出力せよ。

415:デフォルトの名無しさん
11/04/24 08:38:03.43
「抜くな!おい、そっちはサーバーの電源だ」

416:デフォルトの名無しさん
11/04/24 11:42:47.89
>>412
>金儲けじゃありません。モリタポ儲けかもしれませんが。

URLリンク(auction.moritapo.jp)
これがある以上、モリタポ儲けではなく金儲けと言われても文句は言えない。

417:デフォルトの名無しさん
11/04/24 11:44:39.98
>>412
>自己愛性人格障害ってなんですか?

★自己愛性人格障害の特徴 20人目★
スレリンク(utu板)

ただし俺に文句を言うなよ
精神科医の診断が必要だ
だが素人目に見てもお前はひどすぎる

418:デフォルトの名無しさん
11/04/24 11:48:38.79
・ 「理屈っぽい」とよく指摘される。
・ 他人から叱られたり文句を言われる回数が他の人に比べて明らかに多い。
・ 他人のせいにする意図は全くないのに「他人のせいにするな」とよく言われる。
・ 先輩後輩の上下関係や縦社会が苦手、理解不能。
・ 他人の話が聞こえない。耳が悪いのではなく、脳で理解できていない。
・ 皆に合わせて行動しようとしても、気がつけば一人で暴走しているか取り残されているしかない。
・ 他の人と一緒に行動したくても、一緒にいるのが苦痛にしか感じられない。
・ 他の人に対して無関心。
・ どうでもいい雑学的なムダ知識は豊富だが、常識として必要な知識が欠けている。
・ ファッションに無頓着。
・ 仕草や行動、言動を周囲の人たちから笑われたりからかわれることがよくある。
・ どこへ行っても嫌われる。
・ どこへ行っても浮いてしまう、孤立してしまう。
・ 「言葉がきつい」「言葉に棘がある」「毒舌」などと指摘されたことがある。
・ 場の空気を読めない。
・ 先を読んで行動できない。
・ 同性の友達さえ少ない(1~2人)、または1人もいない。
・ 「視野が狭い」とよく指摘される。
・ 一つの物事に夢中になると周囲が見えなくなる。
・ 発言を曲解、誤解されることが他の人に比べて圧倒的に多い。
・ 何でもすぐに本気にする、ムキになる。
・ 意外と多くの分野の知識を持っている。が、どれも中途半端でそれを仕事にするなどもってのほか。
・ 皺だらけの服や時代遅れの服でも平気で着る。
・ ファッションや身だしなみに無頓着。
・ 「自分勝手」「わがまま」と指摘されることが他の人に比べて明らかに多い。
・ 「幼稚」「精神年齢が低い」と指摘されることが他の人に比べて明らかに多い。
・ 「性格を直せ」「自分を変えろ」と言われる回数が他の人に比べて明らかに多い。
・ 他人と話していると、相手が怒ったり不愉快になることがよくある。
・ 「お前みたいな奴は初めて見た」と言われたことがある。
・ 「お前みたいな奴は社会では通用しない」と言われたことがある。
・ 学生時代からクラスでは孤立していた。

419:デフォルトの名無しさん
11/04/24 11:49:55.80
・ 一つの作業に集中して取り組んでいる時に話しかけられたりするなどの割り込みを受けると、再び集中するのが困難。
・ 仕事をしている時や他の人と行動している時でも、自分の好きな分野関連のものが目に入ると注意力が全部そちらに行ってしまう。
・ 集中しようとしても、頭の中でいろいろな考えがぐるぐると回ったり、
集中する対象の関連の言葉から全く別のことを連想して考えがあちこちに飛んでしまうことが日常的にある。
・ 一つの物事に取り組んだり夢中になると周囲が見えなくなることが日常的にある。
・ 自傷行為(リストカット、頭を壁などに繰り返しぶつける、自分で自分を殴る等)をしたことがある。
・ 興味のない分野に対する抵抗感が激しい。
・ 新しい分野に取り組んだり、新しい仕事を覚えたりすることに対して抵抗感が激しい。
・ 他の人と一緒に食事するのが苦痛。
・ どうでもいい事にこだわる。
・ 「常識」「普通」「しきたり」といったことに反感を覚える。
・ 「非常識」「常識が無い」と指摘されることが他の人に比べて明らかに多い。


420:デフォルトの名無しさん
11/04/24 11:54:10.40
>>418>>419
おお!まさに ◆QZa w55cn4c そのものだ

これってアスペルガー症候群か?

421:デフォルトの名無しさん
11/04/24 13:10:03.38
412 名前: ◆QZaw55cn4c [sage] 投稿日: 2011/04/24(日) 06:43:53.19
>>402
であってると思います。

422:デフォルトの名無しさん
11/04/24 14:57:49.13
#include <stdio.h>

#define N 100000

char sieve[N] = {0, 0, 1};

int main(void)
{
int i, j, k, x, y;

for(i = 3; i < N; i += 2) sieve[i] = 1;
for(i = 3; i * i < N; i += 2) if(sieve[i]) for(j = i * i, k = i * 2; j < N; j += k) sieve[j] = 0;

scanf("%d", &x);

for(i = x / 3; i < x; i++) {
if(sieve[i] == 0) continue;
y = x - i;
for(j = i >= y ? y - 1 : j; j > 0; j--) {
if(sieve[j] && sieve[y - j]) {
printf("%d = %d + %d + %d\n", x, i, j, y - j);
return 0;
}}}

printf("not exist.");

return 0;

423:デフォルトの名無しさん
11/04/24 15:00:23.74
>for(j = i >= y ? y - 1 : j; j > 0; j--) {
for(j = i >= y ? y - 1 : i; j > 0; j--) { だった

424: ◆QZaw55cn4c
11/04/24 19:45:20.37
>>402
確かめてみると逆でしたね。間違えて覚えておりました。
URLリンク(codepad.org)

すみません。

425:デフォルトの名無しさん
11/04/24 20:33:01.11
>>425
バーカ低脳

426:デフォルトの名無しさん
11/04/24 20:37:06.58
that's why he's called, 'loopy'

427:デフォルトの名無しさん
11/04/24 20:37:11.89
うるせーバカ

428:デフォルトの名無しさん
11/04/24 20:49:15.84
>>424
アホは来るな

429: ◆QZaw55cn4c
11/04/24 23:53:40.71
>>154
ふむ、いろんな人がいるんですね。私なら私のコードにケチを付けていただける方はウェルカムなんですけれどもね。
私の考えを表明するのも、それを受けてそれ以上のものが得られればいいなと思ってのこと。(それをナルシストとかいわれてもねえ。)
あと、>>152 は、私の >>143 を書き直したもの(だと思われるの)ですが、その書き直し方はないだろう、というのが >>153 の趣旨になります。まあどうでもいいですが。

430:デフォルトの名無しさん
11/04/24 23:59:49.22
>>429
他人の書いたプログラムソースを許諾無しにまるまるコピーは良いんですか?

431: ◆QZaw55cn4c
11/04/25 00:35:30.41
>>430
前に私はそれをしてしまって、非難 GO! GO! でした。ライセンスがあればそれに従いますし、特にライセンスがないところでも、引用元を明記するのがマナーですね。
私のコードに限って言えば、コピーレフトですら明示していません。責任はそちらもちで好きにしてください。

432:デフォルトの名無しさん
11/04/25 00:36:54.89
>>429
その割にはずいぶん生半可な知識でプログラムを書いておられますなあ>>424

433: ◆QZaw55cn4c
11/04/25 00:42:32.98
>>432
すみません。

434:デフォルトの名無しさん
11/04/25 02:01:18.08
ゴミしか書けないんだから、こっちに書かないで自分のスレに引きこもってろよ

435: ◆QZaw55cn4c
11/04/25 08:37:22.30
>>509-512
>>1 の表現がどのようであれ、結果として私のもとに渡るのはモリタポであり円ではありません。
したがってモリタポ儲けであり金儲けではありません。>>465でも確認されました。

436:435
11/04/25 08:38:33.22
誤爆失礼いたしました。

437:435
11/04/25 08:51:26.05
412 : ◆QZaw55cn4c :2011/04/24(日) 06:43:53.19
>>398
スレリンク(tech板:499番)
可能な3個組を全部調べ上げ、できるだけ大きい数同士の組をとるようにしています。そのかわり、全検索するので遅いです。

438:デフォルトの名無しさん
11/04/25 12:01:34.05
問題と解答のコードだけ載ってるスレに戻してくれ。

439:デフォルトの名無しさん
11/04/25 13:10:49.94
そもそも素数の調べ方がクソな上にループにもムダが多すぎ

440:デフォルトの名無しさん
11/04/25 13:41:39.08
金儲けスレへのリンク貼るなよ

441:デフォルトの名無しさん
11/04/25 15:14:25.20
#include <stdio.h>

#define MAX_LINE 30
#define MAX_NUM 20

typedef struct {
int code;
char name[MAX_LINE];
char type[MAX_LINE];
char maker[MAX_LINE];
int price;
}PARTS;

int main(int argc, char *argv[]) {
FILE *fp;
PARTS parts[MAX_NUM];
int i, num, id;

if (argc != 2) {
fprintf(stderr, "使用方法: %s FILENAME\n", argv[0]);
return 1;
}

if ((fp = fopen(argv[1], "r")) == NULL) {
fprintf(stderr, "ファイル %s がオープンできません\n", argv[1]);
return 1;
}


442:デフォルトの名無しさん
11/04/25 15:15:13.07

i = 0;
while(fscanf(fp, "%d %s %s %s %d",
&parts[i].code,
parts[i].name,
parts[i].type,
parts[i].maker,
&parts[i].price
) != EOF) {
i++;
}
fclose(fp);
num = i;

while(1){
printf("# ID: ");
if (scanf("%d", &id) == EOF) {
printf("\n");
break;
}



443:デフォルトの名無しさん
11/04/25 15:15:32.46
for(i = 0; i < num; i++){
if (parts[i].code == id) {
printf("%03d %-20s %-20s %-20s %5d\n",
parts[i].code,
parts[i].name,
parts[i].type,
parts[i].maker,
parts[i].price
);
break;
}
}
if (i == num) {
printf("ID %3d の商品はありません。\n", id);
}
}

return 0;
}


課題の回答にて少しわからないのでお願いします
最初のwhile文でscanfをつかって構造体を利用するところで
&がついてるところとそうでないところがあるのはなぜなのでしょうか?

444:デフォルトの名無しさん
11/04/25 15:27:55.01
scanfの書式と構造体メンバのデータ型見比べて味噌

445:デフォルトの名無しさん
11/04/25 15:35:13.21
>>443
char型の配列名はそれが既にポインタに変換されるから、&は不要
int型はアドレスを渡さないと代入出来ないから&が必要

446:デフォルトの名無しさん
11/04/25 15:38:03.13
>>441
さっぱりわからんけど
scanfする時[]あるのには&つけない、
[]ないのには付けるって決まりあるんじゃない
[],&って何か知らんけど

447:デフォルトの名無しさん
11/04/25 15:45:54.78
配列名を関数に渡す時、ポインタとして渡されているんだよ。
char array[]をfoo(char *p)へ、foo(array)と渡すような時に。
関数の中じゃそれを char *として扱ってる。

同様に、printfにparts[i].nameを渡す時、char *として渡っているようなイメージ。
(実際にはconst char *としてると思うけど)
parts[i]ってカッコつきでアクセスしてるから余計な事を考えてしまうのかもしれないけど、

PARTS part;でpart.nameを渡してるのと、肝心の部分は同じ。

448:デフォルトの名無しさん
11/04/25 16:19:19.99
なるほどありがとうございます
型の違いで自分でポインタとして代入しないといけないんですね
よくわかりました

449:デフォルトの名無しさん
11/04/25 17:02:14.91
ちなみに配列に&を付けても構わない

int main(void)
{
char *p, buf[128];

p = &&&&&buf;

return 0;
}

もコンパイルエラーにならない

しかしこれはお勧めしない
配列とポインタの関係を理解するのがあやふやになるからである

450:デフォルトの名無しさん
11/04/26 00:03:07.76
理解がちょっとおかしいですね
charだと&がなくてもポインタでいけるが正しいですね

>>449
もし配列でやる場合の&が重なってるのはそのとき使用する配列の数ってことなんですかね?
まぁおすすめされてないのでそこはちゃんと勉強しますが

451:デフォルトの名無しさん
11/04/26 00:09:31.57
int a[]でも&なしでいけるよ。

452:デフォルトの名無しさん
11/04/26 00:58:11.20
>>449
コンパイラはなに使ってるの?


453:デフォルトの名無しさん
11/04/26 01:24:33.95
449.c: In function 'main':
449.c:5:7: error: expected identifier before '&&' token

454:デフォルトの名無しさん
11/04/26 01:42:30.97
>>449
VS2010でもエラーが出る

c:\documents and settings\******\my documents\visual studio 2010\projects\Learn1\array2\array2.cpp(10): error C2059: 構文エラー : '&&'

455:デフォルトの名無しさん
11/04/26 02:03:44.17
char hoge[n];の時
hogeと&hoge[0]は等しい、それだけの話

456:デフォルトの名無しさん
11/04/26 05:38:15.10
規格書は小さな穴が一杯開いているみたいね。規格書の規約を全部守っても、コンパイラ書く場合は独自にルールを
決めてしまわないと書けないってことみたい。でないと同じソースを与えても、コンパイルするたびに結果が異なるなんて
ことになりかねないし。
規格書など大まかな部分しか信頼できないというのはこういう理由なんだね。

457:デフォルトの名無しさん
11/04/26 08:29:04.11
>>455
「3つの例外を除いては」という条項を付加しておきます。

458:デフォルトの名無しさん
11/04/26 14:03:13.79
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows
 [3.2] gcc 5.5
 [3.3] 言語:C言語
[4] 期限: 2011年 4月28日

x>0,y>0という条件でxとyを入力
xからy間の数字で2の倍数のみを出力

x=4
y=9

2の倍数
4 8

よろしくお願いします。

459:デフォルトの名無しさん
11/04/26 14:18:50.83
いつから6は2の倍数じゃなくなったんだ

460:458
11/04/26 14:37:10.61
>>459
すみません!4の倍数でした!

461:デフォルトの名無しさん
11/04/26 14:38:25.68
> [3.2] gcc 5.5
!!!

462:デフォルトの名無しさん
11/04/26 14:56:03.37
未来人か

463:デフォルトの名無しさん
11/04/26 14:56:38.51
>>461
bcc5.5の間違いってすぐ解るのに
!!!!

464:デフォルトの名無しさん
11/04/26 15:27:05.26
gcc 4.5じゃね?

465:デフォルトの名無しさん
11/04/26 15:31:24.63
>>458
#include <stdio.h>

int main(void) {
int x, y;

printf("x=");
scanf("%d", &x);

printf("y=");
scanf("%d", &y);

for( x = (x + 3) / 4 * 4; x <= y; x += 4 ) printf("%d ", x);

return 0;
}

466:デフォルトの名無しさん
11/04/26 17:34:28.59
>>458
2の倍数なら偶数って事だろう
x=4, y=9なら6はどうして無いの?
2の倍数ではなくてxの倍数の間違い?

467:デフォルトの名無しさん
11/04/26 17:44:14.43
>>466
>>459-460

468:デフォルトの名無しさん
11/04/26 19:55:57.28
俺は&hoge[0]をhogeって書かないで、&hoge[0]にしているが
おまえらは&hoge[0]をhogeと書いている?


469:デフォルトの名無しさん
11/04/26 19:57:04.21
>>468
意味によって変える

470:デフォルトの名無しさん
11/04/27 00:53:58.85

入力ファイル(成績ファイル)の仕様

ファイル名は、ASCII文字で構成されるものとする。
ファイル名の最大長は FILENAME_MAX である(第2回の課題0を参照)。
1行は、「学生番号」、「氏名」、「成績」の順に記述したもので、
各項目の区切り文字は、「タブ('\t')」1個である。
学生番号は、英数字からなる6桁の文字列である。
氏名の文字列長の最大は20バイトとする。
成績は、0~100までの整数である。
入力は、最大500行と仮定してよい。

出力形式
入力ファイルを読み込み、最初に、成績の最高点と最低点と平均点を出力する。
次に、成績の降順にソートして出力する。各項 目間は、「タブ('\t')」1個で区切る。
平均点は、小数点以下1桁まで出力する。
出力形式は、実行例を参照せよ。
エラー処理
呼出しでファイル名が指定されない場合はエラーとし、「ファイル名を指定してください」と表示し、プログラムを終了する。
指定されたファイルのオープンに失敗した場合に、「ファイルを開けませんでした」と表示し、プログラムを終了する。
今回のプログラムでは、a. b. 以外のエラー処理はしなくてよい。

471:デフォルトの名無しさん
11/04/27 00:56:39.81
% cat sample.txt
03888 八 90
03111 一 100
03222 二 30
03666 六 70
03555 五 60
03333 三 80
03777 七 40
03999 九 20
03444 四 50
% ./work31.exe sample.txt
最高点:100
最低点: 20
平均点: 60.0
100 03111 一
90 03888 八
80 03333 三
70 03666 六
60 03555 五
50 03444 四
40 03777 七
30 03222 二
20 03999 九
%

言語はCです
よろしくおねがいします

472:デフォルトの名無しさん
11/04/27 02:10:51.33
>>470-471
てきとう
URLリンク(ideone.com)


473:デフォルトの名無しさん
11/04/27 02:32:22.91
>>468
常に hoge って書くし &hoge[1] も hoge + 1 って書くよ

474:デフォルトの名無しさん
11/04/27 03:00:42.36
◆QZaw55cn4cから挑戦状がでたぞー
スレリンク(tech板:516-581番)

559 名前: ◆QZaw55cn4c [qzaw55cn4c@a.email.ne.jp] 投稿日:2011/04/26(火) 19:17:43.86
>>557
ご指摘ありがとうございます。たしかにまだまだ改良の余地はありました。とりあえず、>>518 の foundp() を取り入れました。
Knuth だったか、最初の思いつきはベストの思いつきではない、というわけでした。
>>516
URLリンク(codepad.org)

でも、ここまで来て、私以外にコードを晒す人はいないようですね。

564 名前:デフォルトの名無しさん[sage] 投稿日:2011/04/26(火) 19:51:12.60
>>559のアホなところもまだまだ指摘できるし、>>518に関しても10倍以上速いコード書けるけどなw

581 名前: ◆QZaw55cn4c [qzaw55cn4c@a.email.ne.jp] 投稿日:2011/04/27(水) 02:30:39.84
>>572
砂上の楼閣でしたかね。

>>564
codepad 上で実行してみてその通りであれば、このスレを店じまいしましょう。私は一介の名無しにもどります。


475:デフォルトの名無しさん
11/04/27 03:18:24.19
>>474
何でこっちに引っ張り出すのうっとうしい。

476:デフォルトの名無しさん
11/04/27 03:19:56.50
>>474
それは>>564に対してであって他のやつに対してじゃないだろう

477:デフォルトの名無しさん
11/04/27 03:23:31.60
>>475
キチガイだから
>>474
こんなところにキチガイコピペしないで、お前が10倍以上速いコードを今すぐ晒して来い

478:デフォルトの名無しさん
11/04/27 15:10:26.69
>>472
ありがとうございます

479:デフォルトの名無しさん
11/04/27 19:27:02.33
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows
 [3.2] VC++
 [3.3] 言語:C++
[4] 期限: 2011年 5月2日

HDDシリアル照合で、その番号以外使えなくするプログラムを組みなさいという
課題が出ました。ぜひお願いします



480:デフォルトの名無しさん
11/04/27 19:40:42.55
>>479

>その番号以外使えなくするプログラム
それ以外のHDDをフォーマットしてしまうのか?

481:デフォルトの名無しさん
11/04/27 19:43:42.51
それ以外のHDDはそのプログラムを動作させないんじゃないかと思いますが

482:デフォルトの名無しさん
11/04/27 20:06:36.13
>>479
CreateFile
DeviceIoControl
CloseHandle

でできるっぽいが
DeviceIoControl の引数調べるのが面倒

483:デフォルトの名無しさん
11/04/27 20:13:46.31
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(www.dotup.org)
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:本日中
[5] その他の制限:
習っている文はif,for,while,乱数程度なのでそのレベルに合わせてもらえると助かります


484:デフォルトの名無しさん
11/04/27 20:43:27.81
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
「Hit&Blow」のプログラムを作りなさい
URLリンク(www.dotup.org)
URLリンク(www.dotup.org)
URLリンク(www.dotup.org)
URLリンク(www.dotup.org)

「Hit&Blow」の答えを求めるプログラムを作りなさい
URLリンク(www.dotup.org)
URLリンク(www.dotup.org)

上記の2問です
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:本日中
[5] その他の制限:
習っている文はif,for,while,乱数程度なのでそのレベルに合わせてもらえると助かります

485:デフォルトの名無しさん
11/04/27 20:44:54.47
cygwinなの?

486:デフォルトの名無しさん
11/04/27 21:58:35.63
>>485
はい
後switchも習いました

487:デフォルトの名無しさん
11/04/27 22:13:39.47
>>483
switch無しでゴリゴリいっちゃったよ、もうしらね
URLリンク(ideone.com)


488:デフォルトの名無しさん
11/04/27 22:36:54.65
[1]Cプログラミング演習
[2]次のコードはコマンドラインから与えられた数までの素数を列挙するプログラムの筈であるが
間違いがある。これをなるべく少ない工数で修正して正しく動作するようにしなさい
#define <stdlib.h>

char *main(char **argc,int argv){
void work(char*);
argc++;argv++;
while(argc++)work(argv);
return("0");
}

void work(char *p){
int i,m,*p,c=0;
sprintf(p,"%d",m);
for(i=0;i<m;i++)p[i]=0;
p[0]=++p[1];
for(i=0;i<m;i++)if(p[i])for(j=i*i;j<m;j-=i)p[j]=1;
for(i=0;i<m;i++,c++)if(!p[i])fputs("%8d%s",i,(c%5==0)?"\n":" ");
}
[3]C言語
[4]明日まで
[5]コンパイルが出来ないのでお手上げです。

489:デフォルトの名無しさん
11/04/27 22:42:39.55
>>488
工数というなら全部書き直しが一番工数が少なそうだね

490:デフォルトの名無しさん
11/04/27 22:44:35.50
>>488
こういう問題腹立つわぁw

491:デフォルトの名無しさん
11/04/27 22:48:16.63
>>488
良門ですねw。言語教育は読解・修正作業が出発点で創造作業はその次の段階だし。

492:デフォルトの名無しさん
11/04/27 22:48:18.57
>>489
お願いします

493:デフォルトの名無しさん
11/04/27 22:54:50.75
俺も書き直した方が良いと思うわ。
出題者に従うだけが解答じゃないからね。

494:デフォルトの名無しさん
11/04/27 22:55:50.08
>>487
ありがとうございます
どなたか>>484もお願いします

495:デフォルトの名無しさん
11/04/27 23:03:35.61
>>493
でも、仕事では糞コードでも書き直ししないで最低限の修正ですますんでしょ

496:デフォルトの名無しさん
11/04/27 23:08:06.21
>>495
糞コードは順次置き換えてるよ。

どうしても糞コードを生み出してしまう状況があるのは分かるから、
糞コードを書くなとは言わないけど、見つけたらなるべく直す様にしてる。

497:デフォルトの名無しさん
11/04/27 23:11:19.69
>>488の問題のコードがウンコ味のカレーならば、
業務現場のコードはカレー味のウンコなんじゃね?

498:デフォルトの名無しさん
11/04/27 23:12:28.46
触らぬコードに祟り無し

499:デフォルトの名無しさん
11/04/27 23:16:18.86
char *main()って初めて見た・・・

500:488
11/04/27 23:18:37.22
難しいのでしょうか、やはり...

501:デフォルトの名無しさん
11/04/27 23:19:20.95
>>499
そえに対するreturn("0"); が素敵
で、
p[]って何をしようとしているんだ?

502:デフォルトの名無しさん
11/04/27 23:24:22.35
>>500
いや、決して難しくはない
むしろ笑える

>>501
顔に見えるよなそれw

503:デフォルトの名無しさん
11/04/27 23:24:42.21
俺が分かる所は
char *main(char **argc,int argv){
つint main(int argc, char **argv){

return("0");
つreturn 0;

504:デフォルトの名無しさん
11/04/27 23:33:45.65
プロトタイプ宣言も忘れずにな

505:デフォルトの名無しさん
11/04/27 23:43:06.16
俺のレベルで修正出来る範囲
#include <stdlib.h>
void work(char*);
int main(int argc, char **argv){

return 0;
}

506:デフォルトの名無しさん
11/04/27 23:55:10.08
>>494
URLリンク(www23.atwiki.jp)

507:デフォルトの名無しさん
11/04/28 00:04:45.19
>>506
習っていない文もありますし、もう少し簡単になりませんかね?
後答えを導くプログラムはどうすれば・・・

催促や文句ばかりで申し訳ないです

508:デフォルトの名無しさん
11/04/28 00:06:23.85
素数って何?
計算量って何?

#include <stdbool.h>
#include <stdio.h>

bool is_prime();

int main(int argc, char *argv[]) {

  int val;
  sscanf(argv[1], "%d", &val);
  for(int i = 1; i < val; i++) {
    if(is_prime(i)) printf("%d¥n", i);
  }

}

bool is_prime(int val) {

  for(int i = 2; i < val - 1; i++) {
    if( (val % i) == 0) return false;
  }

  return true;

}

509:デフォルトの名無しさん
11/04/28 00:09:31.27
>>507
答えを導くのは0-9999総当りでいいんじゃない?

510:デフォルトの名無しさん
11/04/28 00:11:31.84
>>488
//#define <stdlib.h>
#include <stdlib.h>
//char *main(char **argc,int argv){
int main(int argc,char **argv){
void work(char*);
//argc++;argv++;
//while(argc++)work(*argv);
while(--argc)work(*++argv);
//return("0");
return 0;
}
char pp[100];
void work(char *p){
//int i,m,*p,c=0;
int i,j,m,c;
//sprintf(p,"%d",m);
m = atoi(p);
//for(i=0;i<m;i++)p[i]=0;
for(i=0;i<m;i++)pp[i]=1;
//p[0]=++p[1];
//for(i=0;i<m;i++)if(p[i])for(j=i*i;j<m;j-=i)p[j]=1;
for(i=2;i<m;i++)if(pp[i])for(j=i+i;j<m;j+=i)pp[j]=0;
printf("\n");
//for(i=0;i<m;i++,c++)if(!p[i])fputs("%8d%s",i,(c%5==0)?"\n":" ");
for(i=2,c=0;i<m;i++)if(pp[i]){printf("%8d%s",i,(c%5==4)?"\n":" ");c++;}
printf("\n");
}

こんなんでいいかなあ?

511:デフォルトの名無しさん
11/04/28 00:12:00.84
>>484
URLリンク(ideone.com)

答えを導くのって単純な総当りからMin-Maxとか色んな解法があるけど本当に課題なの?
最後の2枚はダブりが無い4桁の整数を作るフローチャートだと思うんだけど・・・

512:デフォルトの名無しさん
11/04/28 00:17:29.68
>>488
URLリンク(codepad.org)

malloc, freeを追加したのが悔やまれるけど、あとはなるべく最小限の変更を努めた。

513:512
11/04/28 00:18:54.41
>>510
先人がいたw
whileの解釈はそれかもだね。

514:デフォルトの名無しさん
11/04/28 00:22:32.90
>>513
mallocは手抜きしたw

515:488
11/04/28 00:29:49.24
>>510さん
>>512さん
ありがとうございます。
>>512さんのコードのほうが綺麗に修正されてますね。
これからコンパイルして正しく動作するか確かめてみます。
ところで、コンパイルはどうやってやればいいのか、実は
わかってません。

516:デフォルトの名無しさん
11/04/28 00:33:25.62
>>515
古典的な方法としては命令に対応するマシン語を直接打ち込む方法もある
が普通はしない

517:デフォルトの名無しさん
11/04/28 00:49:43.56
>>511
すみません、下のフローチャートは関係なさそうですね
フローチャート関係なしに答えを求めるものは出来そうですかね?

518:デフォルトの名無しさん
11/04/28 03:02:13.94
>>517
いや、関係あるだろ。
そのフローチャートが提示されている意味は作成されるコードに影響を与えるよ。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch