C/C++の宿題を片付け ..
[2ch|▼Menu]
369:デフォルトの名無しさん
08/06/13 03:10:02
sum1 += (the[i] - mea1[i]) * (the[i] - mea1[i]);
sum2 += (the[i] - mea2[i]) * (the[i] - mea2[i]);

370:デフォルトの名無しさん
08/06/13 03:11:20
[1] 授業単元: プログラミング実験
[2] URLリンク(kansai2channeler.hp.infoseek.co.jp) 6889
[3] 環境
 [3.1] OS windows
 [3.2] コンパイラ名とバージョン: Visual studio2005
 [3.3] 言語: C
[4] 期限 本日13時まで
[5] その他の制限:特になし

よろしくお願いします


371:デフォルトの名無しさん
08/06/13 03:12:30
>>366
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
unsigned int u = ~0;
double d;
if(argc!=2) return 0;
d = atof(argv[1]);
if(d - u > 0) printf("入力値が範囲外です。\n");
else printf("%u", (unsigned int)d);

return 0;
}


372:デフォルトの名無しさん
08/06/13 03:12:32
2重投稿すみませんorz

373:デフォルトの名無しさん
08/06/13 03:13:47
>>361

> 文字列をn文字比較する関数:strncmp(str1,str2,n)
を使ってくれといっているのに
> ・指定した文字列が含まれているか判定
が分からないとは。

自分が分からないものを他人に作ってもらって分かったふりして
提出する程度の人だからしょうがないけど。

374:デフォルトの名無しさん
08/06/13 03:22:47
>>369
解決しました
ありがとうございました

375:366
08/06/13 03:29:05
>>371
早速ありがとうございます。
ただ以下の箇所でSIGSEGVが発生してしまいます。
 d = atof(argv[1]);

376:366
08/06/13 03:32:44
char *argvとしていました。申し訳ありません。

377:366
08/06/13 03:38:31
>>371
0未満の値を入力すると大きな値が出力されてしまいます。
例) -1 → 4294967295

378:デフォルトの名無しさん
08/06/13 03:49:43
>>377
符号無しが範囲だから、0未満は範囲外として良いん?

379:366
08/06/13 03:56:17
>>378
0〜4294967295以外はエラーという事でお願いします。
こんな感じでしょうか?

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
unsigned int u = ~0;
double d;
if(argc!=2) return 0;
d = atof(argv[1]);
if(d - u > 0) printf("入力値が範囲外です。\n");
else if(d < 0) printf("入力値が範囲外です。\n");
else printf("%u", (unsigned int)d);

return 0;
}

380:デフォルトの名無しさん
08/06/13 04:00:55
if(d - u > 0 || d < 0) とすると一つにまとめられるよ

381:デフォルトの名無しさん
08/06/13 04:01:39
あと小数点を入れられた時はどうすんの?その辺りも教えて

382:デフォルトの名無しさん
08/06/13 04:09:29
っつか、int型って時点で小数点以下は無視かと。
範囲って言うと・・・どうなん?>質問者
まぁ、切り落としちゃえば良い話だろうけど

383:デフォルトの名無しさん
08/06/13 04:14:20
>>381
>>382
ここでは小数を想定していないので、
「不正な形式です。」と表示させたいです。
文字列が0〜9の数字で構成されているかチェックする必要が
ありそうです。

384:デフォルトの名無しさん
08/06/13 04:17:03
エラーの種類は最初に確定しとかないと後出しで条件つけるなって怒られるよ

385:デフォルトの名無しさん
08/06/13 04:34:29
ほっほっほ、麻呂がクソースを書くでおじゃるから、待ってたもう

386:デフォルトの名無しさん
08/06/13 04:36:41
入力された文字列が正しい範囲のC言語の意味での符号無し整数を
表しているかどうかは、次の方法を取るべきであろう。
まず、文字に不正な文字が含まれていないか検査する。
これは文字列を先頭からスキャンし、不正な('0'~'9'以外の)文字が
含まれているか否かをチェックし、検出された場合は、エラー出力
して終了する。
4294967295は10桁なので、スキャンが終わった段階で、長さ
??以上あった場合はエラーとしたいが、それは間違いである。
先頭に?が何個継続しているかで、文字列の長さが100あっても
正しく範囲にあるかも知れない。
最初に?ではない文字が出た位置を記憶(これを実質開始位置とする)し、
文字終端の位置と比較して、差を取り、??桁より大きい場合はこの時点
でエラー出力して終了して良い。
以降文字列の開始点が上記実質開始位置であるとして考える。
文字列の長さが?桁未満の場合は、正常終了できる。
??桁の時が問題であり、先頭の文字が?以下の時は正常数量
?以上の時はエラー終了とする。
?桁目を見て、?以下の場合は正常終了、?以上の時はエラー終了する。
?桁目を見て、?以下の場合は正常終了、?以上の時はエラー終了する。
以降同様の処理を1桁目まで書く。

387:デフォルトの名無しさん
08/06/13 04:41:08
>>366
URLリンク(kansai2channeler.hp.infoseek.co.jp)
麻呂のクソースを喰らうでおま〜

388:デフォルトの名無しさん
08/06/13 04:43:11
しまった、flgの設定が不適切だったでおじゃる、ちと直してくるでおまる

389:デフォルトの名無しさん
08/06/13 04:47:12
>>366
URLリンク(kansai2channeler.hp.infoseek.co.jp)
今度こそ、喰らうでおじゃる

390:デフォルトの名無しさん
08/06/13 04:50:34
>>389
間違ってる

391:デフォルトの名無しさん
08/06/13 05:18:31
>>366
strtoulを使い、エラーチェックすれば簡単。
if (先頭が数字でない || *endがNULでない || errnoがERANGE && 結果がULONG_MAX) 不正な形式です。
longがunsigned intの大きさが異なるなら、これにさらにチェックを加えれば良い。

ライブラリ関数を使わないのであれば、
unsigned int r, s; int i;
for (r = 0, i = 0; s = r * 10 + argv[1][i] - '0'; i++, r = s)
if (r > s || argv[1][i]が数字でない) 不正な形式です。
かな。こちらは自信なし。

392:デフォルトの名無しさん
08/06/13 05:20:14
不等号の向きが逆だお。

393:デフォルトの名無しさん
08/06/13 05:37:32
>>390
アッーーー!って、見つけちゃったあなた、罰ゲームとして修正しておまっ

394:デフォルトの名無しさん
08/06/13 05:40:44
どこが間違ってるか分からないなら素直に教えてくださいって言えよ。

395:デフォルトの名無しさん
08/06/13 05:59:48
>>394
またお前か・・・態度でバレバレ。桁が同じだったときの
各桁の大小の評価のところだろ。面倒だから後はあんたがやっとけw

396:デフォルトの名無しさん
08/06/13 06:05:37
教えてくださいって言えよ。
教えてくださいって 教えてくださいって 言えよ。 言えよ。

これはハマるぜ、この程度のことでここまで偉そうに出来るやつって
日ごろ相当つまらないことで恩着せがましい態度で嫌われてんぞw

397:デフォルトの名無しさん
08/06/13 06:09:10
どこが間違っているか分かっているなら素直に答えてやるよっておっしゃってぇ〜

398:デフォルトの名無しさん
08/06/13 06:24:19
ミスったら自分で修正しないか?

399:デフォルトの名無しさん
08/06/13 06:24:25
アルェー、結果がおかしかったから間違っているとだけ言ったけど
本当はコードのどこが間違っているか分かってなかったのかYO!

400:デフォルトの名無しさん
08/06/13 06:25:04
1時間かけてようやく分かった癖にw

401:デフォルトの名無しさん
08/06/13 06:25:25
>>398
> どこが間違ってるか分からないなら素直に教えてくださいって言えよ。
って指摘したら指摘した奴が率先して口先だけじゃないってことを
証明するためにも、修正しないか?ウホッ?

402:デフォルトの名無しさん
08/06/13 06:30:05
ミス指摘されて逆ギレってみっともなさすぎるな

403:デフォルトの名無しさん
08/06/13 06:59:32
>>400
> 1時間かけてようやく分かった癖にw
そもそも、ソースを書いた本人じゃないし、俺はw
指摘した奴が詳細を把握してないのに、何言ってんだお前?w
どうせ数日前に現れた蛇足野郎だろ?w
あれを蛇足なんて言う程度の低さだから、どうせ口先だけだろ。

404:デフォルトの名無しさん
08/06/13 07:07:05
一体誰と戦ってるんだw

405:デフォルトの名無しさん
08/06/13 07:29:16
漢は黙ってソースうp

406:デフォルトの名無しさん
08/06/13 07:36:14
ここで空気読めない俺がミスを指摘
if(argv[1][i] < uim[i]) break;
を追加するだけ。

407:デフォルトの名無しさん
08/06/13 09:12:35
>>366
もうこんなのでいいんじゃないか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 0〜9の文字以外の表現だと不正な値になる unsigned int のパーサ
unsigned int parse(const char *str){
  unsigned int u=0;
  for(; str!='\0'; str++){ u+=u*10+(*str-'0'); }
  return u;
}
int main(int c, char **a){
  unsigned int u = parse(a[1]);
  char us[11];
  sprintf(us, "%u", u);
  if(strcmp(us, a[1])!=0) printf("unsigned int の範囲外です");
  else printf("%u", u);
}


408:デフォルトの名無しさん
08/06/13 09:24:25
なにそのコード、ふざけてるの?

409:デフォルトの名無しさん
08/06/13 09:45:08
>>317
まじだあああああああ
ありがとうございます(つд⊂)エーン

410:デフォルトの名無しさん
08/06/13 09:55:33
(つд・)∩チラッ

411:デフォルトの名無しさん
08/06/13 09:59:29
>>407
実行してから貼れよ
>for(; str!='\0'; str++){ u+=u*10+(*str-'0'); }
いくらなんでもこれはひどすぎだろ

412:デフォルトの名無しさん
08/06/13 10:27:07
>>368
すいません、見落としてました
ピボットのとり方が変わってもソート結果が変わることはないので、
原因はほかにあると思うんですがよろしくお願いします

413:デフォルトの名無しさん
08/06/13 12:11:33
>>408
ふざけてはないと思う。よく見れば単なるタイプミス
*が抜けてて+が余計についてる。
for(;str !='¥0'...→for(;*str !='¥0'...
u+=u*10...→u=u*10...

貼る時に、インデント付けようと、コピペじゃなく
ブラウザのtextareaに直接タイプしたんじゃなかろうか(想像)

ただし実行して確かめてみたコードだとしても、
>>366の要求をほぼ満たしてるとは言い切れないと思う。
>>366は、>>407のコードを修正して実行出来たのかな?

414:55
08/06/13 14:51:43
[1] 授業単元:グラフ理論2
[2] 問題文:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] 言語:C

スルーだったので、少しばかり自分でやってみました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
初心者の自分にはこの程度が限界です。
ヘルプをお願いいたします。

415:デフォルトの名無しさん
08/06/13 14:55:00
>>366
URLリンク(kansai2channeler.hp.infoseek.co.jp)

416:デフォルトの名無しさん
08/06/13 15:03:42
>>408 コードを書かないくせに、相変わらず茶化しだけの屑か

417:デフォルトの名無しさん
08/06/13 15:06:44
コードを読めるだけましじゃね?

418:デフォルトの名無しさん
08/06/13 15:14:45
コードを読めなくても文句は言える
コードを書くまで信用するな

419:デフォルトの名無しさん
08/06/13 15:16:10
そうそう、結果で判断すりゃそれまで。指摘するなら具体的にどこが?
言わないと、かなり印象が悪いぞ。例え間違っているのがわかっていても
何でお前はそれを指摘したか?逆に言い返されると、お前がわかってないだの
茶化すから余計に悪い。

420:デフォルトの名無しさん
08/06/13 15:18:00
>>415
小数点を入力したときがおかしい

421:デフォルトの名無しさん
08/06/13 15:25:23
>>415
手持ちのgccでチェックしたが、
[Suma]:~ Asagiri$ ./6894 4199999999
4199999999
[Suma]:~ Asagiri$ ./6894 4200000000
範囲外です。

となった

422:デフォルトの名無しさん
08/06/13 15:42:28
>>366
URLリンク(kansai2channeler.hp.infoseek.co.jp)
クソースを改良したでおまる

423:デフォルトの名無しさん
08/06/13 15:49:33
>>421
>415はstrcmp()の戻り値の仕様を誤解しているらしい。

424:デフォルトの名無しさん
08/06/13 15:49:46
>>415
strcmp の返り値に注意

425:デフォルトの名無しさん
08/06/13 15:52:52
URLリンク(www.bohyoh.com)
> 等しければ0、s1がs2より大きければ正の整数値、
> s1がs2より小さければ負の整数値を返す。

426:デフォルトの名無しさん
08/06/13 15:55:23
>>423
否strcmpの仕様がおかしい。1,-1,0のいずれかを返すべき

427:デフォルトの名無しさん
08/06/13 15:58:38
標準関数の仕様にケチをつけるか・・・だから駄目なんだよ、お前はw

428:デフォルトの名無しさん
08/06/13 15:58:46
文字同士の差を直接返すほうが、差の正負で1と-1にするより単純だから

429:デフォルトの名無しさん
08/06/13 16:12:04
>>426
バーカ
ISO/IEC 9899:1999を読んでから言え

430:デフォルトの名無しさん
08/06/13 16:12:56
>>425
そこの実現例、nはどっから湧いてきたんだ?

431:デフォルトの名無しさん
08/06/13 16:40:42
>>430
確かに、実装例はおかしいね・・・サイト管理者に聞いてみw

432:デフォルトの名無しさん
08/06/13 16:43:06
>>430
そう思って strncmp のとこも見に行ったw

433:デフォルトの名無しさん
08/06/13 16:50:14
柴田望洋さんって日本人の中ではまともな本を書く人なんだが
こういう間違いを犯す事もあるんだな

434:デフォルトの名無しさん
08/06/13 16:57:13
しょっちゅうだろ。

435:デフォルトの名無しさん
08/06/13 16:58:04
難しいコトする時は誰でも気を付けるけど
簡単なことは気が抜けちゃうんだよ

436:デフォルトの名無しさん
08/06/13 17:02:04
日本語でおkな出版物はどこにでもあるさ。
映像コンテンツに於いても、映画ではあまりそういうことはないが
アニメなんて日本語でおk日本語でおkなものも少なくないw

437:デフォルトの名無しさん
08/06/13 17:46:24
[1] C
[2] 問[1] 1^1+2^2+3^3+4^4+……99^99を1000で割った値を求めよ。
  問[2] 1から20までの数すべてで割り切れる最小の正整数を求めよ。
[3] 環境
 [3.1]  LINUX
 [3.3] C
[4]6月16日
[5]なし
2問も書いて厚かましいかもしれませんが
よろしくお願いします

438:デフォルトの名無しさん
08/06/13 18:19:22
>>437 とりあえず問1だけ
#include <stdio.h>
unsigned int f(unsigned int a,unsigned int b,unsigned int m)
{
    /* a^b (mod m) */
    unsigned int x=1;
    while(b!=0){
        if(b%2==0){
            a=(a*a)%m;
            b=b/2;
            
        }
        else{
            x=(x*a)%m;
            b=b-1;
        }
    }
    return x;
}
int main( void )
{
    int i;
    int answer=0;
    for(i=1;i<=99;i++)
        answer=(answer+f(i,i,1000))%1000;
    printf("1^1+2^2+3^3+...+99^99≡%d (mod 1000)",answer);
    return 0;
}
実行結果:1^1+2^2+3^3+...+99^99≡920 (mod 1000)
a^b ( mod m)の値を返す関数の引数やら色々unsigned int になってるけど
気に入らなかったらこのくらいの計算ならintに変えても大丈夫だろう
というか、答えあってるのかな・・・これ

439:デフォルトの名無しさん
08/06/13 18:20:59
> 1000で割った値を求めよ。

440:デフォルトの名無しさん
08/06/13 18:22:05
うはwつって来るわorz


441:デフォルトの名無しさん
08/06/13 18:24:08
[1] 授業単元:
[2] 問題文:
構造体配列で名前と背丈適当に入れて、1番背の高い人表示するプログラムを作成せよ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

[3] 環境 OS:WindowsC言語

その他:
関数list srchmaxtall内の maxt.name = (p + i)->name;の行でのエラーが出てしまい困っています。
maxt.name = (p + i)->name;この行を消すとエラーが消え、実行されるのでこの行がどこか間違っていると思うのですが
文字列の格納の仕方がどこか間違ってますか?

お願いします、誰か教えて下さい。



442:デフォルトの名無しさん
08/06/13 18:33:56
>>441
文字列には代入できない。エラーが出た時は常にエラーメッセージをちゃんと読むこと。

strcpy(maxt.name,(p + i)->name);

443:デフォルトの名無しさん
08/06/13 18:34:53
>>437
問[2]
#include <stdio.h>

int gcm(int a, int b) { return a % b ? gcm(b, a%b) : b; }

int main(void)
{
int i, n = 1;

for(i=2; i<=20; i++) if(n % i) n *= i / gcm(n, i);

printf("%d", n);

return 0;
}

444:デフォルトの名無しさん
08/06/13 19:00:40
>>442
ありがとうございます!助かりました!

大学の講義でstrcpyは習った事がなかったのですが
この関数以外で簡単に記述する方法があれば教えて下さい



445:デフォルトの名無しさん
08/06/13 19:03:54
>>443 結果のさらに半分でおk

446:デフォルトの名無しさん
08/06/13 19:07:02
[Fuga]:~ Miyabi$ ./443
232792560
232792560 % 2=0
232792560 % 3=0
232792560 % 4=0
232792560 % 5=0
232792560 % 6=0
232792560 % 7=0
232792560 % 8=0
232792560 % 9=0
232792560 % 10=0
232792560 % 11=0
232792560 % 12=0
232792560 % 13=0
232792560 % 14=0
232792560 % 15=0
232792560 % 16=0
232792560 % 17=0
232792560 % 18=0
232792560 % 19=0
232792560 % 20=0

検算コード入れてみた。すげー。あってるじゃん。検算コード入りソース↓


447:デフォルトの名無しさん
08/06/13 19:07:51
#include <stdio.h>
#define int long long
int gcm(int a, int b) { return a % b ? gcm(b, a%b) : b; }
#undef int
int main(void)
#define int long long
{
int i, n = 1;

for(i=2; i<=20; i++) if(n % i) n *= i / gcm(n, i);

printf("%lld¥n", n);
/*チェック*/
for(i=2;i<=20;i++)
printf("%lld % %% lld=%lld¥n",n ,i,n %i);
return 0;
}

448:デフォルトの名無しさん
08/06/13 19:07:52
>253です。
>251さん
raw形式です。気にかけてくださって有難うございます。

449:デフォルトの名無しさん
08/06/13 19:24:14
>>445
nを2で割って447のチェック試してみろ

450:デフォルトの名無しさん
08/06/13 20:17:47
>>437
問1を適当にといてみたら答えがオーバーフローしたw

451:デフォルトの名無しさん
08/06/13 20:25:42
>>55,414
とりあえず作ってみた
出力の仕様がよくわからんので適当になおしてくれ
URLリンク(kansai2channeler.hp.infoseek.co.jp)


452:デフォルトの名無しさん
08/06/13 20:34:32
>>437
1^1+2^2+....+99^99=(恐らく)
371115746176445351701210713361941528546861949073514542015172437236580034634746971244943788132460150776779198800002366059871900041784732217539059306483834977865973576751345853385981719448969027641920

だから1000で割った値は、下3桁を000にしたものが答
ソースはC++だから無意味なんで省略
こういった問題はC/C++の問題としては余りにも不適当。検算のしようがないじゃん。
誰だこんな宿題出したの?

この結果で見る限り
>>438で使われてる式は合ってるな (ま、当然と言えば当然だが)

453:デフォルトの名無しさん
08/06/13 20:39:12
多分余りで>>438みたいな答えを期待したんじゃないかと思うんだが

454:デフォルトの名無しさん
08/06/13 20:41:44
>>443
ユークリッドの互除法を使ってるのは分かるんですが
そのプログラムにより何故目的の数値が出てくるのか分からないんですが…
できれば詳しく教えてもらえませんか?本当にすいません

455:デフォルトの名無しさん
08/06/13 20:43:38
>>454
数学板の質問箱にでも逝って1,2,3,4,5,6,7,8,9,10,...,20の最小公倍数を求める方法を
聞いてくるのが最善かと

456:デフォルトの名無しさん
08/06/13 20:47:24
1と2の最小公倍数を求める
1と2の最小公倍数と3の最小公倍数を求める
1〜3の最小公倍数と4の最小公倍数を求める


1〜19の最小公倍数と20の最小公倍数を求める

457:デフォルトの名無しさん
08/06/13 20:48:22
>>438
ありがとうございます
>>452
今日の実技試験でこの問題が出されました
問題にはヒントとしてオーバーフーロー起こすからどうとかこうとか書いてました


458:デフォルトの名無しさん
08/06/13 20:48:31
>>444
構造体はそのままコピーできる
つまり

maxt.tall = (p + i)->tall;
strcpy(maxt.name, (p + i)->name);

じゃなくて

maxt=p[i];

でいい

459:デフォルトの名無しさん
08/06/13 20:54:56
>>457
本当に1000で割った値?余りじゃなくて?

460:デフォルトの名無しさん
08/06/13 20:56:47
>>459
先ほどプリント見たら
余りでした…すいません…

461:デフォルトの名無しさん
08/06/13 20:58:51
そんなの あ(ん)まり ダッーーーー!

462:デフォルトの名無しさん
08/06/13 21:05:49
#include <stdio.h>

int main(void)
{
int i, j, rt = 0;

for(i=1; i<=99; i++) {
int r = 1;
for(j=0; j<i; j++) r = (r * i) % 1000;
rt += r;
if(rt >= 1000) rt -= 1000;
}

printf("%d\n", rt);

return 0;
}

463:デフォルトの名無しさん
08/06/13 21:24:08
>>462
ありがとうございます

464:デフォルトの名無しさん
08/06/13 22:19:10
>>437
URLリンク(kansai2channeler.hp.infoseek.co.jp)
まっ、麻呂もクソースを提示するでおじゃ〜

465:デフォルトの名無しさん
08/06/13 22:58:24
1] 授業単元:C言語応用
[2] 問題文:コマンドラインに指定されたディレクトリのファイルに変更があったら、そのファイルをコンソールに
出力するプログラムを作りなさい。(出力:時刻、ファイル名、(新規作成/削除/内容変更/アクセス))
[3] 環境 OS:gcc Linux
[4]言語: C
[5]その他:
system関数などの子プロセスを作成をさせたりすることはしてはならないそうです。

466:465
08/06/13 22:59:21
すみません。期限は、再来週の水曜日までだそうです。

467:デフォルトの名無しさん
08/06/13 23:05:59
>>465
変更があったらって、何をもとに判断するん?

468:デフォルトの名無しさん
08/06/13 23:27:13
[1] 授業単元:プログラム
[2] 問題文 以下を逆ポーランド記法を使って答えを求めるプログラムを作成せよ
        char a[] = "123+*45+*"
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C
[4] 期限:14日まで
[5] その他の制限:関数、配列、などを習いました
よろしくお願いします

469:デフォルトの名無しさん
08/06/13 23:41:36
大変遅くなりましたが、>>362-363さんありがとうございます。
今日一日、友人と考えていたのですが、置き換えた文字列が別の文字に化けたりで
結局完成しませんでした。
なので>>362さんのコードを是非使わせていただきます。ありがとうございます。

470:デフォルトの名無しさん
08/06/14 00:17:58
>>465
URLリンク(kansai2channeler.hp.infoseek.co.jp)
とりあえず指定したディレクトリの中身と
中にあるファイルのファイル名、作成、更新、アクセス時間を表示する
部分は作っておいたでおじゃる。
時間に関してはプロパティの時間の値をもとに ctime を用いて表示しているでおまる。

あとは、適当に、何をもとに変更したか条件をつけて作り変えるでござるよ。

471:デフォルトの名無しさん
08/06/14 00:44:42
[1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク):
1,文字列に母音(a,i,u,e,o)が何個含まれているかをint型数値として返すような関数VowelNumber()を作成せよ。
また,この関数を使用して,キーボードから入力された文字列に
母音が何個含まれているかを表示するプログラムを作成せよ。


2,
(1)
ある自然数に対して,その自然数の約数は何個かを関数値として返すような
関数FactorQuantity()を作成せよ。
例として20の場合は{1,2,4,5,10,20}なので個数は6となる。
(2)
ある自然数Nの約数の個数が2個だけ(1とNだけ)の場合,Nは素数である。
そこで(1)の関数FactorQuantity()を利用してNが素数がどうかを判定し,
Nが素数なら1を返し,素数でなければ0を返す関数Prime()を作成せよ。
(3)
(2)の関数Prime()を用いて次のプログラムを作成せよ。
2つの自然数a,bを入力させ(a<bとする),a以上b以下の素数を全て表示するプログラムを作成せよ。
※ソースファイルは1つのファイルにまとめよ。
[3] 環境
 [3.1] OS:Linux
 [3.3] 言語:C
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
いままで習ったのは、printf,scanf,ループ文,if文,配列,strcat,strcpy,strlen,stricmp,strcmpなどです。まだポインタは習っていません。
解説も少し加えてくれるとありがたいです。
よろしくお願いします。


472:デフォルトの名無しさん
08/06/14 00:56:23
>>471
2.
#include <stdio.h>

int FactorQuantity(int n)
{
int i, ret = 1;
for(i=1; i<=n/2; i++) if(n % i == 0) ret++;
return ret;
}

int Prime(int n)
{
return FactorQuantity(n) == 2;
}

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

scanf("%d%d", &a, &b);

for(i=a; i<=b; i++) if(Prime(i)) printf("%d ", i);

return 0;
}

473:デフォルトの名無しさん
08/06/14 00:58:39
っつか、マジで。見づらいからうpロダ使えって

474:デフォルトの名無しさん
08/06/14 01:08:01
>>472
ありがとうございました
明日実行してみます

475:デフォルトの名無しさん
08/06/14 01:24:38
>>471
1
URLリンク(kansai2channeler.hp.infoseek.co.jp)

476:デフォルトの名無しさん
08/06/14 01:26:29
>>473
自治厨いね

477:デフォルトの名無しさん
08/06/14 01:28:12
>>471
もう出てるけどやっちゃたので
URLリンク(kansai2channeler.hp.infoseek.co.jp)
解りやすいコードだと思うから解説なしで

478:デフォルトの名無しさん
08/06/14 01:28:48
>>476
いちいち反論するお前みたいなバカがうざい
空気読め、引きこもり

479:デフォルトの名無しさん
08/06/14 01:30:17
>>472 = >>476
> 自治厨いね
日本語でおk。ここに書き込むのに、{} の位置やら無駄に改行をして
ウザイのが自分だと気づかない痛い自己中だろ・・・

480:デフォルトの名無しさん
08/06/14 01:31:44
>>464
麻呂さんありがとうございます

481:デフォルトの名無しさん
08/06/14 01:43:57
自治でも何でもないだろ・・・まぁ、理解力の無い奴は
身勝手な行動をとるし、そのせいで放置されるんだろうね・・・
言っても聞かない基地外は、スルー、放置が一番だしな。
どうせ面倒臭いだの、他の奴に先を越されるのが嫌だから
少しでも早くって、必死に書き込んでいるんだろうけどさ・・・
何か言われると、俺に命令するな!だろ。しかも、罵倒レスをし返す。
孤立した引きこもりが取るお決まりのパターンだな。
だから集団社会の中に入れないんだよ。
頼むから秋葉原で暴れるなよ。昼と夜が逆転した自己中さん。


482:デフォルトの名無しさん
08/06/14 01:50:32
複数レスにわたる長いプログラムであればうpろだ使えってのはわかるが、
1レスで収まる範囲くらい許して欲しいところ
正直うpろだ使うのが面倒なときもある

483:デフォルトの名無しさん
08/06/14 01:51:53
7行に収まるなら直接書いていいよ

484:デフォルトの名無しさん
08/06/14 01:56:30
>>479
いね = 去ね
高校出てれば当然習ってるはずの言葉。

485:デフォルトの名無しさん
08/06/14 01:57:39
>>481
毎日毎日よくそこまで暴れられるなw

486:デフォルトの名無しさん
08/06/14 01:59:02
>>483
>>481はアウトですか?

487:デフォルトの名無しさん
08/06/14 02:00:46
473が余計なこと書かなきゃ荒れないのにな。
いつもうpロダ使えっていっては反論されて大暴れ。

488:デフォルトの名無しさん
08/06/14 02:06:17
>>485 オマエモナー。
>>487 自己紹介乙。いつもうpロダ使えって注意されてファビョっているのがお前か・・・
>>484 ますます日本語でおk。どこの高校だよ、お前は?w

489:デフォルトの名無しさん
08/06/14 02:09:40
古文で習うはずなんだが

490:デフォルトの名無しさん
08/06/14 02:10:11
平成時代に古文を使うってどれだけKYだよ

491:デフォルトの名無しさん
08/06/14 02:10:18
>>475
いろいろとひどいコードだなw

492:デフォルトの名無しさん
08/06/14 02:10:38
URLリンク(dic.yahoo.co.jp)
現代において、現代語ではなく古典に出てくる言葉でコミュニケーションをとるなんて
流行ですか?w ますます日本語でおk、だな。時代によっては日本だって
大きく社会情勢も文化も違うし。あっ、近代を理解できない時代遅れか、すまねーな。
PCも性能も、随分変わっちまったしな。まぁ、うpロダも使えない時代遅れは
いつまでもコードを直接書いて、他人の迷惑を無視してなさい。
知らないところでウザがられてるから。

493:デフォルトの名無しさん
08/06/14 02:12:21
基礎的な教養に欠けてる人間が何言ってもムダw

494:デフォルトの名無しさん
08/06/14 02:13:31
>>492
>2 (動ナ四)
>〔補説〕 1 の四段化。近世中期以降の語
>[1] (関西地方で)立ち去る。帰る。

495:デフォルトの名無しさん
08/06/14 02:15:52
日本語でおkが最近のお気に入りみたいだけど、どんだけ流行に遅れてんだよ

496:デフォルトの名無しさん
08/06/14 02:19:25
人格障害者だな
華麗にスルーしようぜ
どうせこいつ第二の加藤君だから

497:デフォルトの名無しさん
08/06/14 02:26:18
URLリンク(dic.yahoo.co.jp)
URLリンク(dic.yahoo.co.jp)
現代語でおk。現代において古典から用いる奴って、何がしたいんだ?
まぁ、最近じゃ文系でもプログラミングやってんの?俺の通ってた大学は
もともと外語学から発展した大学で、コンピュータだらけの学校だったが
文系でも一般教育の科目でコンピュータを扱う授業はあったが・・・

498:デフォルトの名無しさん
08/06/14 02:28:14
>>468
ポインタ使ってるが良いか?
URLリンク(kansai2channeler.hp.infoseek.co.jp)

499:デフォルトの名無しさん
08/06/14 02:30:31
>>497
> ◆ナ変は現在関西方言で用いられる。また、近世中期以降、四段化して用いられるようにもなった。

500:デフォルトの名無しさん
08/06/14 02:32:10
>>497
大学名教えてw
教えてくれなかったら脳内大学とみなす

501:デフォルトの名無しさん
08/06/14 02:34:39
いねを知らなかった馬鹿が入れる大学なんてないだろ

502:465
08/06/14 02:35:24
>>467
初期状態はすべて新規作成という設定だそうです。つまり起動したら対象のディレクトリのファイルを新規作成
という状態で出力しなければなりません。
プリントを確認したら、フォルダーの中のファイルは10000個以内に制限されるそうですがサブフォルダー
を任意の階層まで含むことはあり得るそうです。
明示されていないので、対象フォルダー以外のフォルダーへの書き込みアクセスは可能なようですが、
この点来週にでも確認したいと思ってます。

>>470
定期的にls -laをsystem()し、一時ファイル(対象ディレクトリ外)にリダイレクト出力し、
直近の同種ファイルリストとの差分で、出力しようかと思いましたが、system()やfork()が使用禁止らしいので
ls -laに相当するものを作らなければならないことは確実でしたが、参考になりました。
ありがとうございます。けれど、残念ながら回答にはなっていない感じです。

503:デフォルトの名無しさん
08/06/14 02:36:32
おじゃるの時は現代語だのなんだの突っ込みなかったのに
いねくらいで荒れるなよ

504:デフォルトの名無しさん
08/06/14 02:37:09
おじゃる本人だしw

505:デフォルトの名無しさん
08/06/14 02:37:37
URLリンク(www.kobekko.com)
URLリンク(contest.thinkquest.jp)
URLリンク(en.wiktionary.org)

あぁ、なんだ、関西人か?それとも、本当に古代人?化石になっても
なおこの世に未練を残した、貴族文化の時代の方々ですか?
最近の再生医療もすごいけど、古人を残す保存技術もあったんですかっ!?
ググってもろくなページが検出されねーや。ツマンネッ

506:468
08/06/14 02:37:59
>>498
作っていただきありがとうございます
できればポインタを使わずに作っていただきたいのですが
あとまだ初心者なので簡単にお願いします

507:デフォルトの名無しさん
08/06/14 02:38:30
必死でググってる姿が微笑ましい。

508:デフォルトの名無しさん
08/06/14 02:40:37
>>501
いねを知っている程度でそこまで詰まらないことが言えるなんて
大学に入学したことがない、かなりレベルの低い知識しかもってないんだw
っつかね、もうお前みたいなことを言い出したら負けだよ。くだらねぇ。
この世に全知全能な奴だけが大学に入学しているわけでもないし、
プログラミングをやっているわけでもない。しかし、なんで知らなかったってことになってるの???
辞書も引いたことがない奴が入れる学校すらないだろうねw
ちゃんと出典を見たか?タイピングミスを無理やりフォローして必死になっている
ようにしか思えんな。みっともないから止めとけ。関西人

509:498
08/06/14 02:40:45
>> 498
あー、スマン
最初にスタックをchar型で作ってたから

/* スタック初期化 */
memset( stack, 0, STACK_SIZE );



/* スタック初期化 */
memset( stack, 0, sizeof(int) * STACK_SIZE );

に直してくれ


510:デフォルトの名無しさん
08/06/14 02:40:50
自分に知識が不足してるのに、他人が間違ってると思い込んでバカにするから引っ込みがつかなくなるんだよ。

511:468
08/06/14 02:41:20
>>498
#include <string.h>
あとこれもなしでできませんか?
はじめて見るので…

512:デフォルトの名無しさん
08/06/14 02:42:03
>>507
> 必死で
にーーーほーーーんーーーーごーーーーでーーーー おkw
どっちが必死なんだよ、フォローにもならねー古典野郎w
お前はプログラミングなんてやってねーで、古事記でも読んでろや。
現代語を知らない方が痛す

513:デフォルトの名無しさん
08/06/14 02:44:48
痛すなんて現代語ありませんよ?

514:デフォルトの名無しさん
08/06/14 02:46:20
>>506
本物のクソース見せてやる><
URLリンク(kansai2channeler.hp.infoseek.co.jp)

515:514
08/06/14 02:48:42
>>498
0割エラーも判定してないし、コメントもないし、
pushもpopも関数化してないけど

516:デフォルトの名無しさん
08/06/14 02:51:07
こんなスレで古典で出た言葉を使って、知らなさそうな奴に対して
強がっている場違い、うpロダすら使えない奴が必死すぎて笑え・・・ない・・・
そんなの知らなくても大学に入学できるが、自分は知っていて
敢えてタイピングミスだと茶化してみたら、詰まらないフォローをしててワラタw
素直に認めたら?タイピングミスだって。ほんっと、現代語でおkな時代遅れか・・・
スレタイ読める?読めない?空気読める?読めない?
URLリンク(jp.youtube.com)

お前ってさぁ〜〜〜、数学の授業中に歴史の話でもしてんの?
場違い野郎ってほんっとKYだよな。ぜってー社会じゃ成功しないタイプ。
むしろ、そういう詰まらないことを持ち出して、他人を罵倒、非難するから
余計に周りから無視されて、孤立が原因で失敗するんだろ?
だいたい、こんな時間にこのスレで必死になって、ソースも書かずに
罵倒レスとな?(麻呂風に)
もはや大学にすら入学できなかった奴の妬み、僻みだな。哀れ、チーン。

517:デフォルトの名無しさん
08/06/14 02:51:58
>>477
str[i] == 'a' が2個あるぞw

518:デフォルトの名無しさん
08/06/14 02:52:40
>>516
で、お前どこの大学なの?

519:デフォルトの名無しさん
08/06/14 02:52:45
3行とは言わないからせめて7行にまとめて

520:デフォルトの名無しさん
08/06/14 02:53:30
>>518
脳内に決まってるだろw

521:498
08/06/14 02:54:19
>>468
>>511
…逆ポーランド記法で、俺の技量じゃ、これ以上簡単にならん…
URLリンク(kansai2channeler.hp.infoseek.co.jp)

522:デフォルトの名無しさん
08/06/14 02:54:54
>自分は知っていて敢えてタイピングミスだと茶化してみたら
相変わらず完全に論破されると後釣り宣言ですか。
全然進歩してないね。

523:デフォルトの名無しさん
08/06/14 02:57:22
>>516
あれ?
君の敵は472じゃなかったの?
ソース書いてるじゃん。

524:デフォルトの名無しさん
08/06/14 02:58:47
>だいたい、こんな時間にこのスレで必死になって、ソースも書かずに罵倒レスとな?
>もはや大学にすら入学できなかった奴の妬み、僻みだな。

なんでこいつ追い詰められると自己紹介しちゃうんだろうな。

525:デフォルトの名無しさん
08/06/14 03:00:00
>>521
どうもです!!
まだ時間があるので自分でもねばってみます

526:デフォルトの名無しさん
08/06/14 03:02:52
IDの出ない板で煽りあい止めれ

527:デフォルトの名無しさん
08/06/14 03:09:39
自分が解けない問題が出ると質問者でなく回答者が荒れる
何だか末期的なスレでつね

528:デフォルトの名無しさん
08/06/14 03:12:04
>>525
えー俺のクソースしかと?

529:デフォルトの名無しさん
08/06/14 03:14:41
古典で使われていた 去ぬ を知っているだけで、ここまで
得意気になれる恥ずかしい香具師・・・こんな時間にコーヒーを
ディスプレイに吹いちまったじゃねーかよw
知らなかったと勘違いした奴を、勝手な自分基準で蔑む、貶す必死さ・・・
もう終わってるよ・・・。こんなスレで、自分以下の人間を見て安心してんだろ?
頼むから、秋葉原以外の歩行者天国で暴れるなよ。警備は強化されているだろうけど。

ちなみに、自分、高校生のときは10段階評価で平均8.0以上、3年間ほとんど9.0以上で
成績優秀者だったんで、センター試験なんぞ屁でもないものは受けずに
自己推薦で卒業する前の年には、入学する大学は決まってましたから。
理系の学科を専攻、大学生時代も、秀、優ばかりの成績優秀でしたが、何か?
国語の試験もあったけど、去ぬはたまたま試験に出なかったけど、知ってましたが何か?

スレが流れちゃうんで、この辺で。コード書けよ、古典で勝負しようとしないでw

530:デフォルトの名無しさん
08/06/14 03:20:17
>>529
どこの高校なんだ?
どこの大学かもまだ訊いてないけどさ。

通知簿の成績なんてその学校の中での相対評価に過ぎないんだから、
学校のレベルが分からんことには9.0とか優とかいっても何の意味も成さないよ。

531:デフォルトの名無しさん
08/06/14 03:20:21
鏡見てみたら?
お前の書き込みが一番口汚く他人を罵ってるよ。

532:デフォルトの名無しさん
08/06/14 03:21:37
531は529当てね、わかるとは思うけど

533:じゃあ和むソースコードをひとつ
08/06/14 03:22:51
#include<stdio.h>
int
main
(
void
)
{
printf
(
"H"
"E"
"L"
"L"
"O"
"!"
"W"
"O"
"R"
"L"
"D"
"!"
)
;
return
(
0
)
;
}

534:デフォルトの名無しさん
08/06/14 03:24:37
return(0)はお勧めできない

535:デフォルトの名無しさん
08/06/14 03:58:39
>>445
バカが他人にケチつけるのは一億年はえーよw

536:デフォルトの名無しさん
08/06/14 04:00:27
明らかに間違っていると分かっているレスに、何を今さら
亀レスで蒸し返してんだ・・・やべぇ、こいつ歩行者天国に向かうぞ。
誰か阻止してやってくれ。

537:デフォルトの名無しさん
08/06/14 04:00:54
古典、おk
これらをNGワードに加えればすべておk
と、今までROMってた自分が言ってみるテスト

538:デフォルトの名無しさん
08/06/14 04:04:21
>>536
あれあれ?
自分は平気で一日前のを蒸し返すのに、他人には許さないの?
まさか445本人でしたか?
そりゃ恥ずかしくて思わずそう言いたくなるのも分かるよw

539:デフォルトの名無しさん
08/06/14 04:14:49
>>475
ループの外にbuff[i] = '\0'があるのに、breakする前にもあるのはムダ。
あとVolumeNumber関数間違ってる。

540:デフォルトの名無しさん
08/06/14 04:23:22
Volumeってw
Vowelだぞ、よく見ろw

541:231
08/06/14 04:35:06
>>231 を
どなたかお願い致します。

542:デフォルトの名無しさん
08/06/14 05:04:13
>>517
本当だw
>>471は直しておいてね

543:デフォルトの名無しさん
08/06/14 05:36:21
なんか、前にこのスレで自分の間違いを指摘された基地外が
ここぞといわんばかりに、自分に対して意見をした奴とは別の奴に
噛み付いているよな・・・キモイ。見えない敵と戦う奴って、恥ずかしいなw

544:デフォルトの名無しさん
08/06/14 05:40:04
知ったか無知が 蛇足 って言った後、蛇足ではないことを
資料を提示されて言い返されたのがよっぽど悔しかったんだな・・・

545:デフォルトの名無しさん
08/06/14 05:46:06
発作はおさまったか?
壁のうちならいいけど、人は殴るなよw

546:デフォルトの名無しさん
08/06/14 05:53:03
行数制限内で完結するならソース書いてよし。
>>1にも長い時だけうpろだ使えと書いてあるし。

547:デフォルトの名無しさん
08/06/14 05:54:37
>>543
そんなことどうでもいいから早く大学名とついでに高校名を教えろよw
脳内だから言えませんか〜〜〜w

548:デフォルトの名無しさん
08/06/14 05:59:33
>>210 >>207 < こいつが必死こいてファビョってます、放置よろ

549:デフォルトの名無しさん
08/06/14 06:01:53
早く大学名教えろよw

550:デフォルトの名無しさん
08/06/14 06:04:39
なんか、朝まで必死だなぁ。ちちまわされたいんか、ワレ?

551:デフォルトの名無しさん
08/06/14 06:10:01
ちちまわすは現代語ではありません

552:デフォルトの名無しさん
08/06/14 06:20:24
俺は乳を回すほうがいいなあ

553:デフォルトの名無しさん
08/06/14 06:43:00
>>465
cont =1;
SIGINTを受けたらcontが0になるようハンドラーを仕込んでおく。
fts(3)で対象ディレクトリを開く。
while (cont) {
fts_children(3) でプレインファイルのリストを作成。
前回のリストと比較し、
増えたものは新規作成、
消滅したものは削除、
fts_statp->st_mtimeが変わっていたら内容変更、
fts_statp->atimeが変わっていたらアクセス。
前回のリストを破棄。
今回のリストを前回のリストとして記憶。
(次回のfts_children(3)の呼び出しで今回のリストは破壊されるので注意)
何秒かスリープ。
}
後始末。

でどうかな。

554:デフォルトの名無しさん
08/06/14 07:14:37
>>493
人間性が崩れているお前が言うなよ・・・
しっかし、去ぬだけでここまで煽れるお前らに脱帽だぜ。
よっぽど暇な奴がこのスレに常駐してんだな。

555:デフォルトの名無しさん
08/06/14 07:16:31
>>491
具体的にどこがダメか、指摘くらいしたら?口先だけの坊や。

556:デフォルトの名無しさん
08/06/14 07:21:35
5時間も前のレスに反応するなよw

557:デフォルトの名無しさん
08/06/14 07:27:00
バカの癖にプライドだけは高いから困りもんだな。
いやバカだからこそか?

558:デフォルトの名無しさん
08/06/14 07:29:13
>>554
煽られるのは自分が原因だってわかってないの?

559:デフォルトの名無しさん
08/06/14 07:36:26
>>555
そういう書き方が荒れるもとだろ。

560:553
08/06/14 07:46:02
ごめんなさい。


561:デフォルトの名無しさん
08/06/14 07:53:07
何か言われると相手を威圧しようと、言い返さないと気が済まない一言居士。
もはや人格どころか人生が狂ってるな、こいつら。だからこんな場所にいても
まともなソースが書けねーんだよw

562:デフォルトの名無しさん
08/06/14 08:24:18
>>231
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#define MAXLINE 1024
int main(int argc, char *argv[]){
int fd[2];
char line[MAXLINE];
pid_t pid;
if (pipe(fd)<0) exit(1);
if ((pid=fork())>0) { /*parent process */
close(fd[0]);
dup2(fd[1],fileno(stdout));
close(fd[1]);
fgets(line, MAXLINE, stdin);
fputs(line, stdout);
fflush(stdout);
wait(NULL);
exit(0);
} else{ /*child process */
close(fd[1]);
dup2(fd[0],fileno(stdin));
close(fd[0]);
fgets(line, MAXLINE, stdin);
fputs(line, stdout);
exit(0);
}
}


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

5023日前に更新/317 KB
担当:undef