C/C++の宿題片付けます 124代目at TECH
C/C++の宿題片付けます 124代目 - 暇つぶし2ch323:デフォルトの名無しさん
09/03/16 21:17:48
>>320-322
むしゃくしゃしてやった。反省はしていない。

>>316
URLリンク(kansai2channeler.hp.infoseek.co.jp)

324:デフォルトの名無しさん
09/03/16 21:44:34
>>323
これは信用していいんですよね?

325:デフォルトの名無しさん
09/03/16 21:47:51
>>311
だからqsortは使っちゃだめ!

326:デフォルトの名無しさん
09/03/16 22:05:18
>>315 ./a <ソース.c
#include <stdio.h>
int main()
{
  char s[] = "string", b[1024]; /*
string */
  do {
    if(!gets(b)) return 1;
    printf("%d\n", strncmp(b,s,3) ? 1:0);
  } while(strcmp(b, "XXXX"));
  return 0;
}

327:デフォルトの名無しさん
09/03/16 22:19:52
>>326
./a<ソース.cが意味不明なんですけど


328:デフォルトの名無しさん
09/03/16 22:26:25
>>326
>>318の後にこれを貼る勇気に乾杯
とりあえずgetsはやめろ

329:デフォルトの名無しさん
09/03/16 22:36:55
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):要素数10個の整数配列を用意します。要素を入力し、シェルソートを用いて昇順にソートするプログラムを作成しなさい。
今回は、比較幅を1,2,4,8…のような2のべき乗とする。
[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: なし
よろしくおねがいします

330:デフォルトの名無しさん
09/03/16 22:42:12
2021年か、結構先だな

331:デフォルトの名無しさん
09/03/16 23:11:38
>>315 ./a <ソース gets使ってしまった。
#include <stdio.h>
int main()
{
  char s[] = "string", b[1024]; /*
string */
  do {
    if(!fgets(b,1024,stdin)) return 1;
    printf("%d\n", strncmp(b,s,3) ? 1:0);
  } while(strcmp(b, "XXXX\n"));
  return 0;
}

332:デフォルトの名無しさん
09/03/17 00:07:12
>>329
URLリンク(kansai2channeler.hp.infoseek.co.jp)

333:デフォルトの名無しさん
09/03/17 00:10:26
>>329
比較幅って言葉の意味がわかんね。

334:デフォルトの名無しさん
09/03/17 00:17:02
>>332さんありがとうございます。


335:デフォルトの名無しさん
09/03/17 00:54:07
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):qsort関数を用いてソートするプログラムを作成しなさい。身長の昇順、視力の降順など、複数の条件でソートすること。
※qsort関数
書式 void qsort(void*base,size_t nmemb,size_t size,int(*compar)(const void*,const void))
[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([09年3月17日まで] )
[5] その他の制限:


336:335
09/03/17 00:58:08
お願いします。この問題とかないと単位がやばいです。

337:デフォルトの名無しさん
09/03/17 01:01:11
>>335
入力の形式が分からん。勝手に決めていいのか?

338:335
09/03/17 01:05:26
いいです。レスください!

339:デフォルトの名無しさん
09/03/17 01:32:54
>>335
URLリンク(kansai2channeler.hp.infoseek.co.jp)

340:デフォルトの名無しさん
09/03/17 01:44:02
>>339
修正
URLリンク(kansai2channeler.hp.infoseek.co.jp)

341:335
09/03/17 06:18:57
>>340ありがとうございます。


342:335
09/03/17 07:09:00
すいません!ヘッダとしてが必要という条件が出ているのを忘れてました。どなたか
<stdlib.h>を使った>>335をレスお願いします!

343:335
09/03/17 07:10:59
すいません訂正ですヘッダとして<stdlib.h>が必要という条件が出ているのを忘れてました。どなたか
<stdlib.h>を使った>>335をレスお願いします!


344:335
09/03/17 07:16:32
>>340さんせっかくレスくれたのに申し訳ありません。

345:デフォルトの名無しさん
09/03/17 07:39:30
>>1
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。

346:335
09/03/17 07:45:25
そこをなんとか!せっぱつまってるんです。

347:デフォルトの名無しさん
09/03/17 07:48:51
340の
void qsort(void*base,size_t nmemb,size_t size,int(*compar)(const void*,const void*));
の代わりに
#include <stdlib.h>
にすりゃいいだけだろw

348:デフォルトの名無しさん
09/03/17 07:51:12
>>346
qsort()のプロトタイプ宣言を#include<stdlib.h>に置き換える

349:335
09/03/17 08:00:10
>>347さん>>348さんありがとうございます。


350:デフォルトの名無しさん
09/03/17 12:41:52
論より証拠、言葉よりソースコード、日本語よりプログラム言語
分かったか?最近、口先だけの、新入りは?

351:デフォルトの名無しさん
09/03/17 13:02:20
>>350
ソースでくれ

352:デフォルトの名無しさん
09/03/17 13:27:20
>>351
URLリンク(www.bulldog.co.jp)

353:デフォルトの名無しさん
09/03/17 13:28:06
いまどきそれかよw

354:デフォルトの名無しさん
09/03/17 13:34:08
>>353
URLリンク(www.otafuku.co.jp)

355:デフォルトの名無しさん
09/03/17 13:48:04
腹減るじゃんか。

356:デフォルトの名無しさん
09/03/17 15:06:26
やっぱり今時はおたふくだよねー

357:デフォルトの名無しさん
09/03/17 16:46:44
よろしくお願いします。
[1] 授業単元: プログラミング実習
[2] 問題文 キーボードから名前と年齢を入力し、入力した順序につながったリストを作成して、それを利用して表示するプログラムを作成しなさい。
(実行例)
>%a.out
Please,write down your name >taro
How old are you? >27
Continue?yes(1)or no(0)>1
Please,write down your name >hanako
How old are you? >27
Continue?yes(1)or no(0)>0

taro /27
hanako /27
>%

[3] 環境
 [3.1] OS: (UNIX)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([09年3月17日まで] )
[5] その他の制限: (なし)


358:デフォルトの名無しさん
09/03/17 17:31:22
このプログラム./a.outしても%がでてしまうのですがどこを直せばいいですか?
URLリンク(ime.nu)

359:デフォルトの名無しさん
09/03/17 17:45:20
>>357張り付いてリロードリロード大変でしょ?
ネタ投下したらしばらく
本読むなりバイトするなり有意義に時間使いなよ

360:デフォルトの名無しさん
09/03/17 17:50:20
 323 :デフォルトの名無しさん :2009/03/16(月) 21:17:48
 >>320-322
 むしゃくしゃしてやった。反省はしていない。

 >>316
 URLリンク(kansai2channeler.hp.infoseek.co.jp)
./a std <8981.c     <-- これでOK

361:デフォルトの名無しさん
09/03/17 17:53:11
>>360
いやそれじゃだめなんすよ…

362:デフォルトの名無しさん
09/03/17 18:06:35
URLリンク(tokyo-ct.net)
BM法

363:デフォルトの名無しさん
09/03/17 18:10:50
>>362 嫌そうじゃないだろう。
(実行例)
% ./a.out <8981.c
入力した文字列は:#include <stdio.h>
検索する文字列を入力してください:std
10 文字目で一致しました。(一致する文字列が見つかりませんでした。)
% でOK?

364:デフォルトの名無しさん
09/03/17 18:15:51
>>357
URLリンク(kansai2channeler.hp.infoseek.co.jp)

365:デフォルトの名無しさん
09/03/17 18:17:52
え?./a.out<8981.cって入力するんですか?


366:デフォルトの名無しさん
09/03/17 18:19:49
>>364さん。ありがとうございます。

367:360
09/03/17 18:22:37
>>361 以下のように入力すると答えが出る。
% ./a.ou std <8981.c
10
%

368:デフォルトの名無しさん
09/03/17 18:34:47
>>357 364に先越されたorz...
#include<stdlib.h>
#include<stdio.h>
typedef struct P{struct P*x;char n[64];int a;}P;
P h,*c=&h;int q;
int main(){
 for(;
  c->x=malloc(sizeof(*c)),c=c->x,c->x=0,
  printf("Please,write down your name >"),scanf("%63s",&c->n),
  printf("How old are you? >"),scanf("%d",&c->a),
  printf("Continue?yes(1)or no(0)>"),scanf("%d",&q),q;
 );
 for(c=&h;c=c->x;printf("%s /%d\n",c->n,c->a));
}


369:デフォルトの名無しさん
09/03/17 18:38:53
>>368さんありがとうございます。


370:デフォルトの名無しさん
09/03/17 18:39:00
くせぇくせぇ、後だし麻呂の臭いがぷんぷんすんぜ

371:デフォルトの名無しさん
09/03/17 18:40:48
こりゃ~生粋のクソースだ、クソースを消毒だ~

372:デフォルトの名無しさん
09/03/17 19:31:03
>>357 オリジナルは>>368さんのソース。
#include<stdio.h>
typedef struct P {
  struct P *x;
  char name[64];
  int age;
} Q ;

int main(){
  Q h, *c = &h;
  int qa;
  char dmy[2];

  do {
    c->x = malloc(sizeof(*c));
    c = c->x;
    c->x = 0;
    printf("Please,write down your name >"), fgets(c->name, 64, stdin);
    c->name[strlen(c->name)-1] = '\0';
    printf("How old are you? >"), scanf("%d", &c->age);
    printf("Continue?yes(1)or no(0)>"), scanf("%d%c", &qa, dmy);
  } while (qa);
  for( c = &h; c = c->x; )
    printf("\n%s /%d", c->name, c->age);
}

373:デフォルトの名無しさん
09/03/17 21:19:37
ネタ切れー?

374:デフォルトの名無しさん
09/03/17 21:35:51
mallocしたあとfreeしなくていいのか?

375:デフォルトの名無しさん
09/03/17 21:37:47
課題だから書かないとダメってぐらいのレベルじゃね?

376:デフォルトの名無しさん
09/03/17 21:39:26
いまどきのハードウェアでfreeしなくちゃならんヤツなんて皆無だろ
freeとか気取ってやってるソース見たらデスクトップ破りたくなる

377:デフォルトの名無しさん
09/03/17 21:41:12
>>376
好きなだけ破ってろよマヌケ

378:デフォルトの名無しさん
09/03/17 23:04:22
>>377


379:デフォルトの名無しさん
09/03/17 23:50:49
>>357 >>374free追加したぞ。>>376のデスクトップ破れ。
#include<stdlib.h>
#include<stdio.h>
struct P{struct P*x;char n[64];int a;}h,*c=&h,t;
int main(){
 for(;
  (c=c->x=malloc(sizeof(*c)))->x=0,
  printf("Please,write down your name >"),scanf("%63s",&c->n),
  printf("How old are you? >"),scanf("%d%*c",&c->a),
  printf("Continue?yes(1)or no(0)>"),getchar()-'0';
 );
 for(c=&h;c=c->x;t=*c,free(c),c=&t)printf("%s /%d\n",c->n,c->a);
}

380:今年度最高峰のレス
09/03/18 03:28:13
>>376 >>376 >>376 >>376 >>376 >>376 >>376 >>376

>>376 >>376 >>376 >>376 >>376 >>376 >>376 >>376


381:デフォルトの名無しさん
09/03/18 12:35:35
ハードがどうとか言う前に、例えmainの最後だろうと、メモリの動的確保をしたら
それに対してfreeはセットで使うのが望ましいのだが

382:デフォルトの名無しさん
09/03/18 12:49:28
struct P tいらんかった。
 for(;c=h.x;h=*c,free(c))printf("%s /%d\n",c->n,c->a);

383:デフォルトの名無しさん
09/03/18 12:58:14
たまに、プログラムが異常終了して、跡が残ることはある。
自分は大学で、ネットワーク関連の管理に携わったことがあるが、
ユーザがログオフしても、まだログインしたまま残ることもあった。
そう、コンピュータやプログラムには完璧なんて無いんだよ。
だから、こうやって今も、昔から色々と改善がされているんだろ?
その改善の経緯をもとに、こういったものも作られていくんだよ。
ただ単に、電子計算機に数値を与えて、処理をすれば良いわけじゃない、
システムを運営するのは。

384:デフォルトの名無しさん
09/03/18 13:01:14
どこを縦読み?

385:デフォルトの名無しさん
09/03/18 13:06:27
ネットゲームでクライアントを終了してもキャラがサーバーに残って
再ログインしようとしても入れませんでしたw

386:デフォルトの名無しさん
09/03/18 13:19:57
大学でUNIXを使っていたが、まぁそれは管理者が今も普通に使っている
OSの基本。学生がワークステーションからログインして、終了するときに
ログオフの手続きをせずに、接続、作業で使っているプログラムを
Windowsのウィンドウの右上にあるクローズボックスで閉じてしまう人もいる。
それ以前に、コンピュータの電源スイッチを押して起動は出来るのだが
終了する際に、OSの終了手続きを取らずに電源を切ってしまった人もいた。
それにおけるトラブルも体験したさ。そういった、管理者側の立場になれば、
エンドユーザの身勝手さや、それを阻止する手立てや仕組みを作るのも、
プログラマーには必要なのさ、ワトソン君。

387:デフォルトの名無しさん
09/03/18 13:51:52
また、OSも完璧ではない。プログラムを作った側の措置が不十分だったのか、
あるいはハードウェアに問題があったのか?それに応じてデバッグされることもある。
ただ、それも本当は、プログラマーの思い違いにより、作り直せば解決するものもあるが、
巨大なプロジェクトでいくら個別にモジュールを改良できるとしても、根幹、組み合わせ方に
問題があれば、やり直すしかない。ただ、この世には既にある定石、常套手段を用いてやれば
特に余計なことをしなければ、問題は起きないもんだよ。
しかし、人間の行動までは、正直、予期できない。今もなお、過去から続く争い。
裁判、解決のための判例作り。そして、判例に基づいて、今後は処理される人間同士の
トラブル。PCのトラブルなんて、電子計算機をちょちょいと弄れば済むことが多く、
楽なものですね、ポワロ殿。

388:デフォルトの名無しさん
09/03/18 14:02:47
>>386,387___
  / || ̄ ̄||   ∧∧
  |  ||__||  (   )
  | ̄ ̄\三⊂/ ̄ ̄ ̄/
  |    | ( ./     /

   ___    ゴキッ
  / || ̄ ̄|| <⌒ヽ ))
  |  ||__|| <  丿
  | ̄ ̄\三⊂/ ̄ ̄ ̄/
  |    | ( ./     /

   ___
  / || ̄ ̄||   ∧∧
  |  ||__||  (   )
  | ̄ ̄\三⊂/ ̄ ̄ ̄/
  |    | ( ./     /

   ___
  / || ̄ ̄||
  |  ||__||        ミ ゴトッ
  | ̄ ̄\三⊂/ ̄ ̄ ̄/ミ ,'⌒>
  |    | ( ./     /  l、_>

389:デフォルトの名無しさん
09/03/18 14:17:40
それで、結局、例え初歩的だろうとプログラムを作る以上は、何かしら
そういったシステムに関わる部分の知識も必要になるわけだろ?
第一、APIを使っているだけでも、既に出来上がったその仕組みを知ることになるし。
麻ー呂っくの後に、振りーを忘れないで賜う。

390:372
09/03/18 15:41:13
実体のコピーを省く。
P *t;
for( c=h.x; c!=0; c=t) printf("\n%s /%d", c->n, c->a), free((t=c->x,c));

391:デフォルトの名無しさん
09/03/18 15:49:31
病気が進行してるw

392:デフォルトの名無しさん
09/03/18 17:02:20
聞き方が悪いかもしれませんが

hairetsu[0] = 10
hairetsu[1] = 5
hairetsu[2] = 13
...
というようなものにたいして
rank[0] = 1
rank[1] = 0
rank[2] = 2
...
というような感じにしてくれる関数はありますか?

それとも,自分で作らないとないですか?

393:デフォルトの名無しさん
09/03/18 17:11:30
>>392
無いです
multimap もしくは map
にいれてイテレータで取り出せばおk


394:デフォルトの名無しさん
09/03/18 17:14:41
何がしたいのか訳わからん。エスパー検定?

rankと聞くと行列の階数を思い出す。
なんか、肝心な所を省略してません?

395:デフォルトの名無しさん
09/03/18 17:15:50
hairetsuのそれぞれの要素の大小関係をrankに0から入れていると?
並び替えの応用でやってみ。

396:デフォルトの名無しさん
09/03/18 17:25:42
>>392
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
int hairetsu[10], rank[10], i, j, temp;

srand(time(NULL));
for(i=0; i<10; i++) rank[i] = i, hairetsu[i] = rand() % 100;

for(i=0; i<10; i++) {
for(j=9; j>i; j--) {
if(hairetsu[rank[j]] < hairetsu[rank[j-1]]) {
temp = rank[j];
rank[j] = rank[j-1];
rank[j-1] = temp;
} } }

for(i=0; i<10; i++) printf("hairetsu[%d] = %2d, rank[%d] = %d\n", i, hairetsu[i], i, rank[i]);

return 0;
}

こんな感じにrankの方をソートしても可

397:デフォルトの名無しさん
09/03/18 17:42:36
>>325

398:デフォルトの名無しさん
09/03/18 17:59:18
>>397
どした?

399:デフォルトの名無しさん
09/03/18 19:15:15
>>398 やらないか?

400:デフォルトの名無しさん
09/03/18 19:19:17
>>396 ん?んんんっ?

401:デフォルトの名無しさん
09/03/18 21:04:01
struct{int hairetu; int rank;} data[10];
rankには0を初期値として入れておいて、dataをhairetuでソートして、
次にrankに0~9をセットして、もう一度、dataをrankでソート。
これは、「バブルソート」という名前。
#include <stdlib.h>
#include <time.h>

int main(void)
{
  int hairetsu[10], rank[10], i, j, temp;

  srand(time(NULL));
  for(i=0; i<10; i++)
    rank[i] = i, hairetsu[i] = rand() % 100;

  for(i=0; i<9; i++) {
    for(j=9; j>i; j--) {
      if(hairetsu[j] < hairetsu[j-1]) {
        temp = rank[j], rank[j] = rank[j-1], rank[j-1] = temp;
        temp = hairetsu[j], hairetsu[j] = hairetsu[j-1], hairetsu[j-1] = temp;
  } } }

  for(i=0; i<10; i++)
    printf("hairetsu[%d] = %2d, rank[%d] = %d\n", rank[i], hairetsu[i], rank[i], i);

  return 0;
}

402:デフォルトの名無しさん
09/03/18 21:18:19
stdio.h
同じ値でもrankの中の値が違う

403:392
09/03/18 23:24:12
適当な聞き方をしてしまってすみません。

ただ配列の値がでかい順や小さい順で順位をつけられないかなと思ったので。

ありがとうございました。

404:デフォルトの名無しさん
09/03/18 23:37:12
[1] 授業単元:プログラミング実習
[2] 問題 ガウス・ジョルダン法+ピボット選択法を用いて以下の連立1次方程式を解くプログラムを作成しなさい。
2x+3y+z=4
4x+y-3z=-2
-x+2y+2z=2

[3] 環境
 [3.1] OS: (UNIX)
 [3.2] : (gcc)
 [3.3] 言語: (C)
[4] 期限: ([09年3月19日12:00まで] )
[5] その他の制限: (なし)
よろしくおねがいします。



405:デフォルトの名無しさん
09/03/18 23:50:24
[1] 授業単元: アルゴリズム
[2] 問題文:ハッシュ探索(チェイン法)のプログラムを作成しなさい。
1・データファイル「j2」を読み込みなさい。
      2・任意の語彙がいくつ使われているか調べなさい。
      3.データの追加、削除、表示ができるようにしなさい。
      データはyahooのtopページをテキスト化したものとする。
      検索文字列:任意の文字(列)、(例として「配信」など)の使用回数を
      調べなさい。
      画面の表示例は、
      1:表示 2:検索(任意の文字検索&任意の文字の個数) 3:追加 4:削除 5:終了
   
      以上のことをふまえたプログラムをサンプルを変更して作りなさい。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 3月19日夕方まで
[5] その他の制限: ライブラリ関数はサンプル以外使用しない。

406:デフォルトの名無しさん
09/03/18 23:51:43
>>405
サンプルはこれです。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

407:デフォルトの名無しさん
09/03/18 23:58:15
よろしくお願いします。
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):タグ名をpricetype,メンバ名をteika,waribikiとする構造体kakakuとタグ名goodstype,
メンバ名をname[30],kakaku(←構造体)とする要素数10個の構造体配列goodsを作成し、商品名と定価を入力すると商品名、
定価、割り引き価格の一覧が表示されるプログラムを作成しなさい。」ただし、割引価格は、定価が1000円以上の場合は
定価の2割引、それ以外は1割引とする。また、表示するときはポインタを使用すること。
[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)


408:407
09/03/19 00:04:18
すいません環境等書き忘れていましたosはUNIX、コンパイラはgcc期限無期限その他制限なしでお願いします。

409:デフォルトの名無しさん
09/03/19 00:56:43
>>399何を?

410:デフォルトの名無しさん
09/03/19 01:56:56
>>392 >>396への追加。
#include <stdio.h>
#include <time.h>
int main(void)
{
  int hairetsu[10], rank[10], index[10], i, j, temp;
  srand(time(NULL));
  for(i=0; i<10; i++)
    rank[i] = i, hairetsu[i] = rand() % 100;

  for(i=0; i<9; i++) {
    for(j=9; j>i; j--) {
      if(hairetsu[rank[j]] < hairetsu[rank[j-1]]) {
        temp = rank[j];
        rank[j] = rank[j-1];
        rank[j-1] = temp;
  } } }
  for(i=0; i<10; i++) {
    printf("hairetsu[%d] = %2d, index[%d] = %d\n", i, hairetsu[i], i, rank[i]);
    index[i] = i;
  }

  for(i=0; i<9; i++) {
    for(j=9; j>i; j--) {
      if(rank[index[j]] < rank[index[j-1]]) {
        temp = index[j];
        index[j] = index[j-1];
        index[j-1] = temp;
  } } }
  for(i=0; i<10; i++) printf("rank[%d] = %d\n", i, index[i]);
  return 0;
}

411:デフォルトの名無しさん
09/03/19 04:17:31
>>410
人のコードに無駄なもの付け足すなw

for(i=0; i<10; i++) index[rank[i]] = i;

で十分だろうが

412:デフォルトの名無しさん
09/03/19 07:01:36
ありがとうございます。それで、2回もソートする必要ないですね。
やってみます。

413:407
09/03/19 07:59:06
すみません言語c言語で期限は今日のお昼までにお願いします!

414:デフォルトの名無しさん
09/03/19 08:42:42
>>407
#include<stdio.h>
#include<string.h>
#include<math.h>
typedef struct pricetype{int teika, waribiki;}kakaku;
typedef struct goodstype{char name[30];kakaku kakaku;}goods;
int get_waribiki(int price){
return (price>=1000)?round(price*0.8):round(price*0.9);
}
void print_goods(goods *p){
printf("name:%s teika:%d waribiki:%d\n", p->name, p->kakaku.teika, p->kakaku.waribiki);
}
int main(void){
goods goods[10];
int i, price, goods_num;
char buf[30], *p;
for(i=0;i<10;i++){
printf("Input name : ");
if(fgets(buf, sizeof(buf), stdin)==NULL) break;
if((p=strchr(buf, '\n'))) *p='\0';
strcpy(goods[i].name, buf);
input_price:
printf("Input price : ");
if(fgets(buf, sizeof(buf), stdin)==NULL) break;
if(sscanf(buf, "%d", &price)!=1) goto input_price;
goods[i].kakaku.teika=price;
goods[i].kakaku.waribiki=get_waribiki(price);
}
goods_num=i;
for(i=0;i<goods_num;i++) print_goods(goods+i);
return 0;
}

415:デフォルトの名無しさん
09/03/19 09:21:23
#include <stdio.h>
#define N 10
struct goodstype {
  char name[30]; /* 商品名 */
  struct pricetype {
    int teika; /* 定価 */
    int waribiki; /* 割り引き価格 */
  } kakaku;
} goods[N];
int main(void)
{
  int i, num;
  struct goodstype *work;
  for(i=0; i<N; i++) {
    work = &goods[i];
    printf("商品名[%d/%d]?",i+1,N); fgets(work->name, 30, stdin);
    work->name[strlen(work->name)-1] = '\0';
    do {
      printf("定価[%d/%d]?",i+1,N); num = scanf("%d", &work->kakaku.teika); getchar();
    } while(num == 0);
    if(work->kakaku.teika >= 1000)
      work->kakaku.waribiki = work->kakaku.teika * (1-0.2);
    else
      work->kakaku.waribiki = work->kakaku.teika * (1-0.1);
  }
  printf("商品名,定価,割り引き価格\n");
  for(i=0; i<N; i++) {
    work = &goods[i];
    printf("\"%s\",%d,%d\n",work->name, work->kakaku.teika, work->kakaku.waribiki);
  }
  return 0;
} >>407

416:407
09/03/19 16:23:45
>>415さんありがとうございます

417:デフォルトの名無しさん
09/03/20 01:16:32
>>405
こうか?
URLリンク(kansai2channeler.hp.infoseek.co.jp)

サンプルにファイルを読む関数がないんだが、「読み込みなさい」とか「調べなさい」は手作業?
探索や削除が間違っとる気がして変えたが、間違ってなかったらマクロを両方とも100に戻しといてくれ。

418:417
09/03/20 01:48:36
ごめん。寝付けん暇つぶしでやっとったら、期限見落としとったorz

419:デフォルトの名無しさん
09/03/20 17:59:26
ネタ投下キボン

420:デフォルトの名無しさん
09/03/20 19:57:17
問題出す方も大変だ。
[1] 授業単元:
[2] 問題文(含コード&リンク): スレリンク(tech板:211番)

【 課題 】
課題1.
以下のような賭をすることを考えます.
  1. 開始時の所持金をA円とします.
  2. 目標とする金額をB円とします.
  3. さいころを投げて偶数の場合は1円を獲得,奇数の場合は1円を失います.
  4. 所持金が目標額のB円に到達すれば賭は終了,また所持金が0になった場合は破産で終了とします.
数学的な考察をすると,この賭の期待値はA円となります.つまり,何回もこの賭を続けていると,成功したり破産したりしますが,平均すると元の所持金しか得られないということです.
また,勝ち負けまでに投げるさいころの回数の平均は,(B-A)×Aとなります.
たとえば,開始時の所持金をA=8円,目標額をB=10円とすると,勝つ確率は8割,1ゲームあたり平均すると(10-8)×8=16回,さいころを投げることになります.
このことは,賭をしても儲からない,ことを意味していますね.
このことを確かめるプログラムを作成しなさい.

421:デフォルトの名無しさん
09/03/20 21:02:31
入力した文字に対応するモールス信号を出力するプログラム、お願いします

422:デフォルトの名無しさん
09/03/20 21:12:20
>>1

423:デフォルトの名無しさん
09/03/20 21:14:19
>>421テンプレ嫁

424:デフォルトの名無しさん
09/03/20 21:17:15
読んだけど課題じゃないし書くのめんどくさい

頼んだぜ

425:デフォルトの名無しさん
09/03/20 23:06:55
>>424
・・・---・・・

426:デフォルトの名無しさん
09/03/21 00:39:28
>このことは,賭をしても儲からない,ことを意味していますね.
ダウト。一部の人間が損をし(破産し)、一部の人間が儲かることを意味している。

427:デフォルトの名無しさん
09/03/21 00:46:19
分散と試行回数による

428:デフォルトの名無しさん
09/03/21 00:51:43
問題の問題点を指摘するルートに入ってるw

>問題出す方も大変だ。
本人も問題を出すつもりだったのだから,本望かw

429:デフォルトの名無しさん
09/03/21 00:54:33
>また,勝ち負けまでに投げるさいころの回数の平均は,(B-A)×Aとなります.
マジで?

430:デフォルトの名無しさん
09/03/21 02:21:08
[1] 授業単元:C言語
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1]OS:Win
 [3.2] VC 6.0
 [3.3]言語:C
[4]期限:3月24日
[5]その他の制限:main関数以外に自作の関数を利用する

どなたかよろしくお願いします。


431:デフォルトの名無しさん
09/03/21 02:39:02
>>430
最高に間抜けだな

432:デフォルトの名無しさん
09/03/21 02:41:04
前スレにあった気がする

433:デフォルトの名無しさん
09/03/21 02:42:14
スレと時刻的に8992だろ?

434:デフォルトの名無しさん
09/03/21 02:57:50
>>430
8992で合ってんなら
URLリンク(kansai2channeler.hp.infoseek.co.jp)

435:デフォルトの名無しさん
09/03/21 03:38:25
>>420
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
int i, j, targetMoney, startMoney, currentMoney;
int totalGame = 10000, totalDice = 0, totalWin = 0;

srand(time(NULL));

printf("所持金を入力してください:");
scanf("%d", &startMoney);
printf("目標額を入力してください:");
scanf("%d", &targetMoney);

for(i=0; i<totalGame; i++) {
for(j=1, currentMoney = startMoney; ; j++) {
if((int)(rand() / (RAND_MAX + 1.0) * 6) & 1 ) currentMoney++;
else currentMoney--;
if(currentMoney == targetMoney) { totalWin++; break; }
if(currentMoney == 0) break;
}
totalDice += j;
}

printf("勝率%.2f%% 平均回数%.2f\n", 100.0 * totalWin / totalGame, (double)totalDice / totalGame);

return 0;
}

436:デフォルトの名無しさん
09/03/21 12:08:02
>>434
すみません、8992です
ありがとうございました

437:デフォルトの名無しさん
09/03/22 02:29:33
[1] 授業単元:基礎演習
[2] 問題文:URLリンク(www.pref.fukushima.jp)
10ページ目の6問目です
[3] 環境
 [3.1] OS:Win
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C

考えれば考えるほどわからなくなっていましました…
良ければよろしくお願いします。

438:437
09/03/22 02:38:00
437です。

[4]期限:4月1日12:00
[5]その他制限:特になし

改めてお願いします。

439:デフォルトの名無しさん
09/03/22 02:56:56
>>437
URLリンク(kansai2channeler.hp.infoseek.co.jp)

440:デフォルトの名無しさん
09/03/22 02:58:58
あ、printfに\n入れるの忘れてた

441:デフォルトの名無しさん
09/03/22 03:05:55
>>437
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n, *data, key, begin, end, mid, i;

    while(1){
        scanf("%d", &n);
        if(n <= 0) break;
        data = (int *)malloc(sizeof(int) * n);
        for(i = 0; i < n; i++) scanf("%d", &(data[i]));
        scanf("%d", &key);
        begin = 0; end = n - 1;
        for(i = 0; begin <= end; i++){
            mid = (begin + end) / 2;
            if(data[mid] == key){
                i++;
                break;
            }
            if(data[mid] < key) begin = mid + 1;
            else end = mid - 1;
        }
        printf("%d\n", i);
        free(data);
    }
    return 0;
}

442:デフォルトの名無しさん
09/03/22 03:06:27
速いなorz

443:デフォルトの名無しさん
09/03/22 03:11:59
i++を二箇所に書くくらいならi=1からはじめればいいのに。

444:デフォルトの名無しさん
09/03/22 03:23:14
begin > endで抜けることを考えてi++2つとしたが、非常に頭悪いことをしてる気がする。

445:デフォルトの名無しさん
09/03/22 03:53:53
こんなプログラムメンテしたくない。というか、プログラミングのセンスないね、チミ。

446:デフォルトの名無しさん
09/03/22 03:54:54
>>445
先生のセンスをこのスレの奴らに見せ付けてやってください!

447:デフォルトの名無しさん
09/03/22 09:22:37
>>445
うん、ないよ。でも、趣味でしかないし、1人でのんびりやれればいいから
下手の横好きでもいいかなー。

448:デフォルトの名無しさん
09/03/22 10:03:53
>>445
メンテじゃなくて、先輩社員が作ったプログラムを触る仕事しかさせてもらえないんだろ?

449:デフォルトの名無しさん
09/03/22 12:32:16
>>441
ぱっと見、無限ループの可能性有だな~
問題10ではOKだけど、脱出条件組み込んだ方が吉
if(begin == end) break;見たいな

450:デフォルトの名無しさん
09/03/22 12:35:24
>>449
へーそーなのかーwww

451:デフォルトの名無しさん
09/03/22 12:44:41
scanfで値読んでるからマイナス入れれば終了するか・・・
>>450サンクス

それより、問題文だとファイルアクセスっぽいがコマンドラインでよいのか?


452:デフォルトの名無しさん
09/03/22 12:52:55
何を言ってるのかわからない
>for(i = 0; begin <= end; i++){
で脱出条件とやらは十分だと思うが

453:デフォルトの名無しさん
09/03/22 13:02:46
>>452
いや、外のWhile抜けないでしょそれじゃ。
While抜ける条件が、nのScanf or 値が同じ時のみ。
同値無し && 入力無し時のことを言ってる

454:デフォルトの名無しさん
09/03/22 13:06:44
外のwhile抜けるのになんでbeginとendが出てくるんだよw

455:デフォルトの名無しさん
09/03/22 13:10:30
>>454
441のプログラムを見れば分かると思うが、While(1)で無限ループしてんだぞ?
んで、beginとendで配列範囲を設定して、2文探索をしてる。
同値無し時にbeginとend判定しなくなるから、同値breakがキャンセルされ、あとはScanf()のbreakだけになる。

何を持ってbegin/endで煽るのか分かりかねる。

456:デフォルトの名無しさん
09/03/22 13:12:58
二分探索で見つからなかった場合に終了なんて、問題文のどこを探しても書いてありませんがw

457:デフォルトの名無しさん
09/03/22 13:14:22
終了しないとも書いてないなw

458:デフォルトの名無しさん
09/03/22 13:16:39
もしかして、見つかった場合のbreakで外側のループ抜けるとか思ってないか?

459:デフォルトの名無しさん
09/03/22 13:18:06
>>417
返事遅くなってすいません。
期限が延びて明日までになりました。

サンプルでは読み込む関数はないので自分で作成せよと本日問題追加されました。


460:デフォルトの名無しさん
09/03/22 13:30:33
>>455
begin/endはプログラムの終了と関係ないからだろ。
見つからなかった場合でも、終了するのはプログラムじゃなくて「探索」だぞ。
>探索の範囲がつきてしまった時に探索
>を終了します。

461:デフォルトの名無しさん
09/03/22 13:32:02
>>453
> While抜ける条件が、nのScanf or 値が同じ時のみ。
値を見つけた時に抜けているのはforだぞ

462:デフォルトの名無しさん
09/03/22 13:32:47
そもそも0を読み込んだら終了なのも理解できてないようだ

463:デフォルトの名無しさん
09/03/22 13:33:38
WhileとかScanfとか書いてるからただのアホだろw

464:デフォルトの名無しさん
09/03/22 15:56:15
>>441 さん
>>459 % ./a.out <data でファイル入力[Enter]
#include <stdio.h>

int BinarySearch(void);
int main(void) {
  while(!BinarySearch()); return 0;
}
int BinarySearch(void) {
  int n=0, *data, key=0, begin=0, end, mid, i;

  if(scanf("%d", &n) != 1) return 1;
  if(n == 0) return 0;
  if(n < 0) return 2;
  if((data = (int *)malloc(sizeof(int) * n)) == NULL) return 3;
  for(i = 0; i < n; i++)
    if(scanf("%d", &(data[i])) != 1) {free(data); return 1;}
  if(scanf("%d", &key) != 1) {free(data); return 1;}

  for(i = 1, end = n-1; begin < end; i++){
    mid = (begin + end) / 2;
    if(data[mid] < key)
      begin = mid + 1;
    else
      end = mid - 1;
  }
  printf("%d\n", i);
  free(data); return 0;
}

465:デフォルトの名無しさん
09/03/22 16:01:02
n==0のとき0返してどうすんだよw

466:465
09/03/22 16:12:54
0はfalse、while(!false);で次のデータ。

467:デフォルトの名無しさん
09/03/22 16:42:40
問題は0で終了なのに、また関数呼び出してscanf()失敗してからループ抜けるってのがどうなのかって話

468:466
09/03/22 16:48:42
464が俺だ。どうすんだよd どうもしない。

469:464
09/03/22 18:28:13
>>464 修正
#include <stdio.h>
#define returnVal(n) {free(data); return n;}
int BinarySearch(void);
int main(void) {
  while(BinarySearch() == 0); return 0;
}
int BinarySearch(void) {
  int n=0, *data, key=0, begin=0, end, mid, i;

  if(scanf("%d", &n) != 1) return 2;
  if(n == 0) return 1;
  if(n < 0) return 0;
  if((data = (int *)malloc(sizeof(int) * n)) == NULL) return 3;
  for(i = 0; i < n; i++) {
    if(scanf("%d", &(data[i])) != 1) returnVal(2)
    if(data[i] == 0) returnVal(1)
  }
  if(scanf("%d", &key) != 1) returnVal(2)
  if(key == 0) returnVal(1)

  for(i = 1, end = n-1; begin < end; i++){
    mid = (begin + end) / 2;
    if(data[mid] < key)
      begin = mid + 1;
    else
      end = mid - 1;
  }
  printf("%d\n", i);
  returnVal(0)
}

470:デフォルトの名無しさん
09/03/22 18:56:59
気持ち悪いマクロだw

471:デフォルトの名無しさん
09/03/22 19:09:48
#define returnVal free(data); return
{returnVal 2;}
のほうがよかったかd

472:デフォルトの名無しさん
09/03/22 22:11:35
いやそこじゃないだろw

473:デフォルトの名無しさん
09/03/23 02:02:49
BinarySearch() で
nの入力
malloc
free
をやろうとする頭がキモイ


474:デフォルトの名無しさん
09/03/23 09:38:05
>>437 負の値と零も検索出来るように。マクロ似のmainも外した。
#include <stdio.h>

int main(void) {
  int n=0, *data, key=0, begin, end, mid, i;

  while(1) {
    if(scanf("%d", &n) != 1) break;
    if(n == 0) break;
    if(n < 0) continue; // 暫定コンティニュー
    if((data = (int *)malloc(sizeof(int) * n)) == NULL) break;
    for(i = 0; i < n; i++) {
      if(scanf("%d", &(data[i])) != 1) break;
    }
    if(i != n) { free(data); break; }
    if(scanf("%d", &key) != 1) { free(data); break; }

    for(i = 1, begin = 0, end = n-1; begin < end; i++){
      mid = (begin + end) / 2;
      if(data[mid] < key)
        begin = mid + 1;
      else
        end = mid - 1;
    }
    printf("%d\n", i);
    free(data);
  }
  return 0;
}

475:デフォルトの名無しさん
09/03/23 09:46:38
いつまでも引っ張るようなもんでもない

476:デフォルトの名無しさん
09/03/23 21:39:26
char*型を引数にとる関数に
std::string型に格納されてる文字列を渡したいんですが、
c_str()の返す型がconst char *であるためうまく渡せません。
(char *)でキャスト変換するとコンパイルは通るのですが安全とはいえないです。
これを安全に渡すための方法があれば教えてください。
strcpyでコピーする方法はwarningが出てしまいます。
環境はVS2005です。

477:デフォルトの名無しさん
09/03/23 21:41:26
>>476
(char *)でキャストで良いと思います。

478:デフォルトの名無しさん
09/03/23 21:43:38
キャストを用いることはプログラマーが結果に関して責任を持つということ。
プログラマーが安全だと判断すればそれで良い。

479:デフォルトの名無しさん
09/03/23 21:50:04
const_cast使えば?

だがスレ違いだ

480:デフォルトの名無しさん
09/03/23 21:51:15
C++なら(char *)じゃなくconst_cast<char *>だろーと議論に資しないことを申し奉りさぶらわんと欲す

481:デフォルトの名無しさん
09/03/23 21:54:18
[1] 授業単元:C言語
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:4月2日
[5] その他の制限:ユーザ定義関数を利用する

よろしくお願い致します。

482:デフォルトの名無しさん
09/03/23 22:11:37
コラッツの問題だw
きっと誰かが剰余演算子を使わず,さらにはアクロバティックに書いてくれると期待w

483:デフォルトの名無しさん
09/03/23 22:16:06
>>481
#include <stdio.h>

int collatz(int n)
{
    int i;

    for(i = 0; n > 1; i++){
        if(n % 2 == 0) n /= 2;
        else n = n * 3 + 1;
    }
    return i;
}

int main()
{
    int n;

    while(1){
        scanf("%d", &n);
        if(n == 0) break;
        printf("%d\n", collatz(n));
    }
    return 0;
}

484:デフォルトの名無しさん
09/03/23 22:17:47
>>477-480
本当にありがとう。参考になりました。


485:デフォルトの名無しさん
09/03/23 22:34:37
これくらいしか思いつかんかった。
#include <stdio.h>
void main(){
int i=0,j;
while((!i||printf("%d\n",j))&&scanf("%d",&i)&&i)
for(j=0;i!=1;i=((i^1)&1)*(i>>1)+(i&1)*((i<<1)+i+1),++j);
}

486:デフォルトの名無しさん
09/03/23 23:26:57
>>483 さん
#include <stdio.h>
static int n = 0;
void collatz(void)
{
  int i;

  for(i = 0; n > 1; i++)
    if(n & 1) n *= 3, n++;
    else n >>= 1;
  printf("%d\n", i);
}

int main(void)
{
  while(scanf("%d", &n) != EOF && n) collatz();
  return 0;
}

487:デフォルトの名無しさん
09/03/24 00:00:33
>>483
ありがとうございました
助かりました

488:デフォルトの名無しさん
09/03/24 09:42:53
>>476>>484
おいキャストするな。
c_strを元にコピーすることを薦める次第だ。

489:デフォルトの名無しさん
09/03/25 20:07:37


490:デフォルトの名無しさん
09/03/27 04:12:17
初歩的な問題だと思いますが、勉強し始めでわかりません。どうかよろしくお願いします

下記のソースを記述しコンパイルと実行を確認しなさい
/** データ型 */
#include<stdio.h>

void printDataType1();

main(){
printDataType1();
}
/**
* データ型の表示
* 単純に表示
*/
void printDataType1(){
int intData = 10;


491:デフォルトの名無しさん
09/03/27 04:21:13
ごめん、難解すぎる

492:デフォルトの名無しさん
09/03/27 08:04:15
printf("dec %d\n", intData);
printf("hex %x\n", intData);
printf("oct %o\n", intData);
}
と、後ろに追加する。コンパイルのしかたは、調べれば分かるので省略する。

493:デフォルトの名無しさん
09/03/27 08:09:41
ソースの書き方とコンパイルの仕方を質問しているんじゃないかとエスパーする
どっちにしてもこれ以上のエスパーは無理だが

494:デフォルトの名無しさん
09/03/27 13:20:00
一番下に"}"を付けるだけでいいんじゃね

495:デフォルトの名無しさん
09/03/27 15:59:32
[1] 授業単元:
[2] 問題文(含コード&リンク):ファイル出力で二つ以上の関数が同じファイルに続けて出力させるにはどうすればいいですか?
毎回file openさせてやってみたら、途中まで上書きになってしまいました。
[3] 環境
 [3.1] OS:Win xp
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:無期限
[5] その他の制限:

496:デフォルトの名無しさん
09/03/27 16:11:04
>>495
二回目はアペンドモード"a"で開くしかないよ
ただしXPならMS-DOSの系統なのでテキストモードだと
EOFが最後に入っているのでこれを1バイト切り詰めてから
アペンドしないといけない

497:デフォルトの名無しさん
09/03/27 16:13:52
「途中まで上書き」と言ってるから、俺はfseekで解決と予測。

498:デフォルトの名無しさん
09/03/27 16:19:26
>>495
ファイルポインタを関数で使いまわす
FILE* fp = fopen("***", "w");
func1(fp);
func2(fp);
fclose(fp);

499:デフォルトの名無しさん
09/03/27 16:25:10
>>498
それあかんよ
FILE構造体にはデータも書き込むので

func1(&fp);
func2(&fp);

としておき

受ける側は

func1(FILE **fp)
func2(FILE **fp)

としないといけない
実際に実験してみればわかる

500:495
09/03/27 16:26:59
みなさんありがとうございます。
やってみます。

501:デフォルトの名無しさん
09/03/27 17:40:12
>>499
どういう実験か書いてみそ

502:デフォルトの名無しさん
09/03/27 17:56:08
実験してないし流れも読めないが、
>>499の主張は間違っている気がする。
だって、FILE* fpなんでしょ?
> FILE構造体にはデータも書き込むので
FILEへのポインタの値を変えたりするつもりは無いはず。

503:デフォルトの名無しさん
09/03/27 18:00:09
C++のifstreamとかofstreamのようなオブジェクトなら
リファレンス渡しまたはアドレス渡しをしなければいけないのは
わかるが、CのFILE*ってポインタなんだからそのまま渡していいと思う

504:デフォルトの名無しさん
09/03/27 18:14:38
>>499 への容赦ない怒涛のツッコミにワロタww
本人ではないが、func1() や func2() の中で fopen する場合と
勘違いしたんじゃないか、とフォローしてみる。

505:デフォルトの名無しさん
09/03/27 18:53:06
void foo(FILE *fp) {
fputs("foo\n", fp);
}
void bar(FILE *fp) {
fputs("bar\n", fp);
}
int main() {
FILE *fp = fopen("124-495.txt", "w");
foo(fp);
bar(fp);
fclose(fp);
return 0;
}
出力結果は
foo
bar

506:デフォルトの名無しさん
09/03/27 23:31:46
>>504
>>498にfopenも書いてあるからその勘違いは無いんじゃね?

507:デフォルトの名無しさん
09/03/27 23:57:18
499> それあかんよ
あかんって何が?

508:デフォルトの名無しさん
09/03/28 02:35:51
992 名前:デフォルトの名無しさん 投稿日:2009/03/26(木) 23:10:42
世界的には日本語を使う人よりも英語を使う人の方が多い

前スレのこいつが必死なんだろ。日本語よりと比較したら間違いでもないんだが。

509:デフォルトの名無しさん
09/03/28 10:52:35
誤爆としてもワロた

510:デフォルトの名無しさん
09/03/28 12:28:32
>>498
そらあかんわ
FILE *fp = fopen("***", "w");

FILE* fp, fl; は同じように見えるが2つの変数は型が違う。
FILE *fp, *fl; と書く。Javaではない。

511:デフォルトの名無しさん
09/03/28 12:33:19
だれか>>501を翻訳してくれ

512:デフォルトの名無しさん
09/03/28 13:38:41
どういう実験か書いてみてください

513:デフォルトの名無しさん
09/03/28 14:01:25
ところでこのゴミ、
どこに捨てたらいい?
   ∧_∧
  (´∀`)
  /⌒  丶
 / /   \_M
( /|  |\__E)
 \/  | / \
  (  イ / ウワァァン丶
  | /|ハ( `Д)ノ|
  | / / 丶(>>510) ノ
  ( 丿丿   ̄ ̄ ̄
  |||
  |||
  / ト、\
 /_ノ  ̄

514:デフォルトの名無しさん
09/03/28 17:50:42
>>513
スレリンク(tech板)
スレリンク(tech板)

515:デフォルトの名無しさん
09/03/29 15:19:16
初めまして。
URLリンク(www.pref.fukushima.jp)に記載されている2006年の本選問題の
問7のヘビの問題と問8のバス路線の問題をお願いします。
お手数だと思いますが、よろしくお願いします。
単元;c言語
期限なんですがなるべく早めによろしくお願いいたします。
環境;os xp
コンパイル名;gcc



516:デフォルトの名無しさん
09/03/29 15:40:40
>>515
C/C++の宿題片付けます 122代目
スレリンク(tech板:449番)

ヘビもあったな

517:デフォルトの名無しさん
09/03/29 15:58:17
ヘビのは正規表現使えたらすごく楽なんだけどな…。

518:デフォルトの名無しさん
09/03/29 16:09:07
問8
URLリンク(kansai2channeler.hp.infoseek.co.jp)
どこが仕様を満たしてない!

519:デフォルトの名無しさん
09/03/29 16:19:50
いろいろ回答ありがとうございます。
問題文通りでお願いします。




520:デフォルトの名無しさん
09/03/29 16:36:39
すいません。追加なんですけど、2007年度の本選の問9、12をよろしくお願いします。
問題通りの出力、入力でお願いします。
後、先程の問題の回答も引き続きお願いします。
もし、何か質問で至らない点があったらこちらですぐに回答します。

521:デフォルトの名無しさん
09/03/29 17:19:24
問題文どおりか、ありがと、蛇の問題は考えておく。ところで、問題のタイトルは
問題9 円に内接する多角形の面積
問題12 ブラックジャック・ゲーム

522:デフォルトの名無しさん
09/03/29 18:08:07
>>520
#include <stdio.h>
int getLine(int*a){
int temp = 0;int i=0;int c;
while(c = getchar(),c!='\n'){
if(c==' '){
a[i]=temp<10?temp:10;i++;temp = 0;
}else{
temp*=10;temp+=c-'0';
}
}
a[i]=temp<10?temp:10;i++;
return i;
}
int main(){
int a[21];int len;
while(len = getLine(a),a[0]!=0){
int sum = 0;int cnt = 0;
for(int i=0;i<len;i++){
if(a[i]==1)cnt++;
sum+=a[i];
}
for(int i=0;i<cnt;i++){
if(sum+10<=21)sum+=10;
}
if(sum>21)sum=0;
printf("%d\n",sum);
}
return 0;
}

523:デフォルトの名無しさん
09/03/29 18:37:10
>>515 ヘビ
#include<stdio.h>
#include<string.h>

int is_typeA(const char *p){
int i, j;
if(strncmp(p, ">'", 2)!=0) return 0;
for(i=0,p+=2;*p=='=';i++,p++);
if(i<1 || *p++!='#') return 0;
for(j=0;j<i && *p=='=';j++,p++);
return !(j<i || strcmp(p, "~"));
}

int is_typeB(const char *p){
int i;
if(strncmp(p, ">^", 2)!=0) return 0;
for(i=0;strncmp(p+=2, "Q=", 2)==0;i++);
return !(i<1 || strcmp(p, "~~"));
}

int main(void){
char buf[100+1];
int n=0, i;
scanf("%d\n", &n);
for(i=0;i<n && gets(buf);i++){ // gets!
if(is_typeA(buf)) printf("A\n");
else if(is_typeB(buf)) printf("B\n");
else printf("NA\n");
}
return 0;
}

524:デフォルトの名無しさん
09/03/29 19:21:57
>>520 あってるかどうか・・・
//09 gcc -std=gnu99 main.c -o main.exe
#include <stdio.h>
#include <math.h>
double s(int n){
double sum = 0;
for(int i=0;i<n;i++){
int in=0;
scanf("%d",&in);
double theta =3.14 * (90-(in/2))/180;
sum += sin(theta)*cos(theta)*sin(theta)*cos(theta);
}
return sum;
}
int main(){
int n;
while(scanf("%d",&n),n!=0){
double sum1 = s(n);
scanf("%d",&n);
double sum2 = s(n);
//
if(sum1==sum2){
printf("0\n");
}else if(sum1>sum2){
printf("1\n");
}else{
printf("2\n");
}
}
return 0;
}

525:521
09/03/29 19:40:11
>>523
短いコード!しかし、gets() を使うから、100文字を超えても一致してしまう。
バスの再掲
#include <stdio.h>
void myfunc(int, int);
int main(){
  int x, y;
  scanf("%d %d", &x, &y);
  myfunc(x, y);
}
void myfunc(int x, int y){
  int t, i;
  t = 1;
  i = x;
  if(i <= 5)
    t *= (x < y)? 1: -1;
  putchar(i+'0');
  while(i != y){
    i += t;
    if(i == 0)
      t *= -1;
    if(i == 10){
      i = 5;
      t *= -1;
    }
    putchar(' ');
    putchar(i+'0');
  }
  putchar('\n');
}

526:デフォルトの名無しさん
09/03/29 19:43:02
あみだくじを自動的に生成するプログラムをお願いします。

参加者の人数と当たりの数を入力し、当たり部分には◎ハズレには×
となるようにお願いします。

527:デフォルトの名無しさん
09/03/29 19:43:46
本当に助かります。ありがとうございます
申し訳ないですけど2007年本選の6と7、2007年予選10番もお願いします

528:デフォルトの名無しさん
09/03/29 19:54:30
ってかもう全部の問題をお願いしますね

529:デフォルトの名無しさん
09/03/29 20:02:14
527番の者ですが
528番の回答は自分の発言ではありません

530:デフォルトの名無しさん
09/03/29 20:10:49
>>529
言ってることは同じ

531:デフォルトの名無しさん
09/03/29 20:13:45
後からちょこちょこ追加されるよりは>>528のほうがマシ

532:デフォルトの名無しさん
09/03/29 20:23:27
すいませんでした。しかし期限が詰まっているもので527番の回答なんですが、引き続き回答のほう
よろしくお願いします。今回はちょこちょこと付け加えてしまい迷惑をかけました。

533:デフォルトの名無しさん
09/03/29 20:28:01
>>532
過去ログくらい読めカス

534:デフォルトの名無しさん
09/03/29 20:29:02
解き方問題文中で丁寧に説明してるのになんで解けないのか理解できない

535:527
09/03/29 20:30:04
お前らガタガタ抜かさんととっとと答えんかい!!

536:デフォルトの名無しさん
09/03/29 20:38:01
527さん、偽者が現れ始めているのでfusianasanやった方がいいですよ

537:IP address
09/03/29 20:40:22
問題10 マトリョーシカ
問題6 有料道路料金
問題7 おはじき取り

>>蛇の模様
URLリンク(kansai2channeler.hp.infoseek.co.jp)

538:デフォルトの名無しさん
09/03/29 21:21:48
>>524
theta=3.14*in/180.0;
sum+=0.5*sin(theta);

じゃないかな?


539:IP address
09/03/29 21:42:56
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
  int i, r, atari, deta=0, hito, honn;

  atari = 1; // printf("あたりの本数を入力:%d\n", atari);
  printf("あみだくじに参加する人数を入力:"); scanf("%d", &hito);
  printf("あみだくじの本数を入力:"); scanf("%d", &honn);
  if(honn < atari) {
    printf("あたりの数が多すぎます\n"); return 2;
  }
  if(honn < hito) {
    printf("くじの本数が足りません\n"); return 2;
  }
  srand(time(NULL));
  for(i=1; i<=hito; i++) {
    r = rand();
// printf("%d/%d=%d 残り%d本\n", r, RAND_MAX/honn, r/(RAND_MAX/honn), honn );
    if(r/(RAND_MAX/honn) >= 0 && r/(RAND_MAX/honn) <= atari-1) {
      printf("%d 番の人◎\n", i);
      atari--; honn--;
    } else {
      printf("%d 番の人×\n", i);
      honn--;
    }
  }
  return 0;
}

540:デフォルトの名無しさん
09/03/29 22:07:53
>>527 2007年本選の6 有料道路料金
#include<stdio.h>
void swap(int *a, int *b){int c;c=*a;*a=*b;*b=c;}
int get_distance(int from, int to){
static const int distance[]={0, 6, 13, 18, 23, 43, 58};
if(from>to) swap(&from, &to);
return distance[to-1]-distance[from-1];
}
int get_normal_price(int from, int to){
static const int price[][6]={
{ 300}, { 500, 350}, { 600, 450, 250}, { 700, 600, 400, 250},
{1350,1150,1000, 850, 600}, {1650,1500,1350,1300,1150, 500} };
if(from>to) swap(&from, &to);
return price[to-2][from-1];
}
int is_special_time(int hour, int min){
return (1730<=(hour*100+min) && (hour*100+min)<=1930);
}
int get_price(int from_ic, int from_hour, int from_min, int to_ic, int to_hour, int to_min){
int price=get_normal_price(from_ic, to_ic);
if(get_distance(from_ic, to_ic)<=40 && (is_special_time(from_hour, from_min) || is_special_time(to_hour, to_min))) price=((price/2)+50-1)/50*50;
return price;
}
int main(void){
int from_ic=0, from_hour, from_min, to_ic, to_hour, to_min;
for(;;from_ic=0){
scanf("%d %d %d %d %d %d", &from_ic, &from_hour, &from_min, &to_ic, &to_hour, &to_min);
if(from_ic==0) break;
printf("%d\n", get_price(from_ic, from_hour, from_min, to_ic, to_hour, to_min));
}
return 0;
}

541:デフォルトの名無しさん
09/03/29 22:25:36
>>527 2007年本選の7 おはじき取り
#include<stdio.h>

int main(void){
int strategy_size, strategy[25];
int i, j, rest;

for(;;){
strategy_size=0;
scanf("%d", &strategy_size);
if(strategy_size<1) break;
for(i=0;i<strategy_size;i++) scanf("%d", &strategy[i]);
for(rest=32,j=0;rest>0;j++)
{
rest-=(rest-1)%5;
printf("%d\n", rest);
rest-=strategy[j%strategy_size];
if(rest<0) rest=0;
printf("%d\n", rest);
}
}
return 0;
}

542:デフォルトの名無しさん
09/03/29 22:43:14
int main(void)
{ return 0; }

543:デフォルトの名無しさん
09/03/29 23:01:52
回答ありがとうございました。

544:IP address
09/03/30 00:05:18
>>539 問題文の読み違いがあったので、修正します。
printf("あたりの本数を入力:", atari); scanf("%d", &atari);
printf("あみだくじに参加する人数を入力:"); scanf("%d", &hito);
honn = hito; // printf("あみだくじの本数を入力:%d\n", honn);
if(honn < atari) {
 :
// printf("%d/%d=%d 残り%d本\n", r, RAND_MAX/honn, r/(RAND_MAX/honn), honn );
if(r/(RAND_MAX/honn) <= atari-1) {

545:デフォルトの名無しさん
09/03/30 19:55:03
>>526
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(void){
int hito, atari;
int i, j;

printf("参加者の人数 : ");
scanf("%d", &hito);
printf("当たりの数 : ");
scanf("%d", &atari);
srand(time(NULL));

printf("\n");
for(j=0;j<15;j++){
if(j%2) printf("│");
for(i=j%2;i<hito-1;i+=2) printf("%s", (rand()%3)?"├┤":"││");
if(i<hito) printf("│");
printf("\n");
}
for(i=0;i<hito;i++){
if((rand()%(hito-i))<atari){
atari--;
printf("◎");
}else printf("×");
}
printf("\n");

return 0;
}

546:デフォルトの名無しさん
09/03/30 21:40:37
[1] 授業単元:C言語
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1]OS:Windows
 [3.2] VC6.0
 [3.3]言語:C言語
[4]期限:4月1日
[5]その他の制限:ユーザ定義関数を利用する

どなたかよろしくお願いします。

547:デフォルトの名無しさん
09/03/30 21:47:58
URLリンク(www.pref.fukushima.jp)にある2008年本選の
問1の三目並べの答えお願いします。
c言語 コンパイル gcc 

548:デフォルトの名無しさん
09/03/30 21:49:07
URLリンク(www.pref.fukushima.jp)にある2008年本選の
問1の三目並べの答えお願いします。
c言語 コンパイル gcc 

549:デフォルトの名無しさん
09/03/30 22:00:29
#include <stdio.h>
double abs(double d){ return d < 0 ? -d : d; }
double BMI(int h, int w){ return 10000.0 * w / h / h; }
void main(){
  int n, i, h, w, j;
  double d;
  while(scanf("%d", &n) && n){
    d = 2000000; /* BMI(1,200) */
    while(n--){
      scanf("%d %d %d", &i, &h, &w);
      if(abs(BMI(h,w)-22) < d){
        j = i;
        d = abs(BMI(h,w)-22);
      }
    }
    printf("%d\n", j);
  }
}

550:デフォルトの名無しさん
09/03/30 22:29:36
>>547
#include <stdio.h>
int judge(int p){
  return (p & 7) == 7 || (p & (7<<3)) == (7<<3) || (p & (7<<6)) == (7<<6) ||
    (p & 73) == 73 || (p & (73<<1)) == (73<<1) || (p & (73<<2)) == (73<<2) ||
    (p & 273) == 273 || (p & 84) == 84;
}
void main(){
  char c;
  int n = 0, b = 0, w = 0;
  while(scanf("%c ", &c) && c != '0'){
    b <<= 1; b |= c == 'b' ? 1 : 0;
    w <<= 1; w |= c == 'w' ? 1 : 0;
    if(++n == 9){
      if(judge(b)) printf("b\n");
      else if(judge(w)) printf("w\n");
      else printf("NA\n");
      n = 0; b = 0; w = 0;
    }
  }
}

551:デフォルトの名無しさん
09/03/30 22:53:30
URLリンク(www.pref.fukushima.jp)に記載されている
2007年の本選の問12 ブラックジャックの問題よろしくお願いします。
あと、問題を解く上でどのようなアルゴリズム、データを利用したか。と何の
処理を関数としたのかを付け加えてお手数だと思いますがよろしくお願いします。
OS xp
C言語
コンパイル gcc


552:デフォルトの名無しさん
09/03/30 23:58:22
春休みに宿題があるわけが無いとはいえ、
大学生ならともかく、高校生の問題を解くのは飽きた・・・

553:デフォルトの名無しさん
09/03/31 00:58:19
>>552
マトリョーシカの問題が結構難しいよ

554:デフォルトの名無しさん
09/03/31 01:38:05
>>551
URLリンク(kansai2channeler.hp.infoseek.co.jp)
説明ぐらい自分で見て考えろ。

555:デフォルトの名無しさん
09/03/31 10:09:51
どなたか>>546をお願いできませんか?

556:デフォルトの名無しさん
09/03/31 10:20:48
>>546

557:デフォルトの名無しさん
09/03/31 11:34:46
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double bmi(int height, int weight) { return 10000.0 * weight / (height * height); }

int main(void)
{
int *p, i, n, height, weight, indx = 0;
double min, temp;
FILE *fp;

if((fp=fopen("data.txt", "r"))==NULL) return 0;
while(1) {
fscanf(fp, "%d", &n);
if(n==0) break;
p = malloc(sizeof(int) * n);
fscanf(fp, "%d%d%d", p, &height, &weight);
min = fabs(22 - bmi(height, weight));
for(i=1; i<n; i++) {
fscanf(fp, "%d%d%d", p + i, &height, &weight);
temp = fabs(22 - bmi(height, weight));
if(temp < min || (temp == min && p[i] < p[indx])) min = temp, indx = i;
}
printf("%d\n", p[indx]);
free(p);
}
return 0;
}

558:デフォルトの名無しさん
09/03/31 12:18:18
>>546
#include<stdio.h>
#include<math.h>

typedef struct tag_info_t{
long i;
double h, w;
}info_t;

double get_bmi(double h, double w){
return w/(h*h);
}

int main(void){
long i, n;
double bmi, best_bmi;
info_t x, best;

for(;;){
if(scanf("%ld", &n)!=1 || n<1) break;
for(i=0;i<n;i++){
scanf("%ld %lf %lf", &x.i, &x.h, &x.w);
bmi=get_bmi(x.h/100., x.w);
if(i==0 || fabs(best_bmi-22)>fabs(bmi-22)){
best=x;
best_bmi=bmi;
}
}
printf("%ld\n", best.i);
}
return 0;
}

559:デフォルトの名無しさん
09/03/31 15:29:51
>>558
>受付番号の小さい方を出力することとします。
忘れてた

560:デフォルトの名無しさん
09/03/31 15:39:46
>>559

>>1
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。

そのくらいの修正は自分でやればいいとおもうんだな

561:デフォルトの名無しさん
09/03/31 16:03:22
>>560
いや、問題文に書かれている文言で、
>>558は仕様を満たしてないってこと。

562:デフォルトの名無しさん
09/03/31 16:06:28
>>561
ああ、失敬失敬
早計だった

563:デフォルトの名無しさん
09/03/31 17:58:12
>>553
h優先とr優先の二系統で組み入れられる人形の多い方をとればいいよ。

564:デフォルトの名無しさん
09/03/31 18:31:37
いちおー>>549>>546の回答なんやけどな。アンカ付け忘れたけど。
見て分からんのは、本人、問題読んでないんちゃうやろか?
読んでたらBMIって関数ある時点で判断できるやろ。すぐ下やし。

565:デフォルトの名無しさん
09/03/31 19:53:11
>>564
C/C++系のスレで一番バカでやる気の無い質問者の溜まり場だからな

566:デフォルトの名無しさん
09/04/01 04:35:17
ここで描かれたプログラム甲子園の回答は不合格とします

567:デフォルトの名無しさん
09/04/01 13:28:50
[1] 授業単元:ばば抜きの者です
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Redhat, Win Xp Pro
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:無期限
[5] その他の制限:いつもお世話になっています。153さんのソースを丸々使わせてもらいながらやっています。ほかにもいろいろ伺いながらやっています。
シミュレータなので何回か実行させて結果を比べたいのですが、どうも、最初の配る段階でいつも同じようにしか配ってくれない(並び替えが最初のまま)様です。
srandのtime(NULL)にプレイ回数をかけて見たら変わるかなとも思ったのですがどうやら変わらないようです。
何かヒントがあればよろしくお願いします。

今後書き出し方を変えてRで読み込めるようにしていこうと思っています。


568:デフォルトの名無しさん
09/04/01 13:41:05
宿題じゃないなら続きはこっちでやってくれ

C言語でトランプゲームを作りたい
スレリンク(tech板)

569:デフォルトの名無しさん
09/04/01 15:09:08
C言語の問題なんですが、

n個の実数データx(i)(i=1,2,3・・・n)を入力し、合計kei,件数n,平均ave,標準偏差sdを計算し、表示しなさい。ただし、ave,sd,の名で関数を作りなさい。また、終了データは0とする。計算式は次の通りである。

平均値:ave=1/n∑[i=1,n]x(i)
標準偏差:sd=√{1/n∑[i=1,n](x(i)-x')^2} x'は平均値

お願いします。

570:569
09/04/01 15:10:44
細く
↑のC言語のプログラムを教えてください。

571:569
09/04/01 15:12:05
○補足
×細く

572:デフォルトの名無しさん
09/04/01 16:47:29
>>569
#include <stdio.h>
#include <math.h>
double kei(const double *data, unsigned int n)
{
unsigned int i;
double sum = 0.0;
for(i = 0 ; i < n; i++){ sum += data[i]; }
return sum;
}
double ave(const double *data, unsigned int n)
{ return kei(data, n) / n; }
double sd(const double *data, unsigned int n)
{
unsigned int i;
double a = ave(data, n), t = 0.0;
for(i = 0 ; i < n; i++)
{ t += (data[i]-a)*(data[i]-a); }
return sqrt(t/n);
}
int main()
{
unsigned int n = 0;
double data[1024];
while(!n || data[n-1] != 0.0){ scanf("%lf", data+n); n++; }
printf("kei: %lf\nave: %lf\nsd: %lf\n", kei(data,n), ave(data,n), sd(data,n));
return 0;
}

573:デフォルトの名無しさん
09/04/03 04:04:53
[1] 授業単元:基礎
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:4月5日
[5] その他の制限:上記のソースに最低一つユーザ定義関数をつける

上記のソースにユーザ定義関数をつけてくださいorz


574:デフォルトの名無しさん
09/04/03 04:22:43
>>573
それ以前に、そのプログラムは何をするプログラム?

575:デフォルトの名無しさん
09/04/03 04:49:45
>>574
A君、Bさん、C君でバドミントンをします。
A君 VS Bさんの勝負をC君が記録しましたが、記録していたのはサーブの順番だけでした。
1セット3ゲーム11点先取で行い、デュースを適用しました。
C君が残した記録から得点を出力するプログラムを作成してください。
1ゲーム目は必ずA君から始まり、以降は最終ゲームの勝者からです。
また、1ゲーム中のサーブ回数は必ず100回以内です。

こういうものです。

576:デフォルトの名無しさん
09/04/03 08:37:29
#include<stdio.h>
#include<string.h>
#define GM 3
#define MAX 101

void tokuten(char *buf){
int g,len;
int Ac = 0, Bc = 0;

len=strlen(buf);
for(g=1;g<len;g++){
if(buf[g]=='A') Ac++;
if(buf[g]=='B') Bc++;
}
printf("%d %d\n", Ac, Bc);
}

int main(void){
int i;
char buf[GM][MAX];

for(i = 0; i < GM; i++){
scanf("%s", buf[i]);
if(buf[i][0] == '0'){
return -1;
}
}
for(i = 0; i < GM; i++){
tokuten(buf[i]);
}
return 0;
}

577:569
09/04/03 15:05:12
>>572
ありがとうございましたm(_ _)m

578:デフォルトの名無しさん
09/04/04 13:53:55
[1] 授業単元:C++
[2] 問題文:
C++ではvalidではないがCではvalidなプログラムを書きなさいというなぞなぞみたいな
宿題が出ました。普通に考えるとCで動くプログラムはC++で動くはずですが、そうでないものを
書けというものみたいです。ヒントは、「C言語の経験がなくても出来る」だそうです。
型にはまらない発想でシンプルなコードを書きなさいと言われました。問題文は以上です。
(validの意味がコンパイル可能を指すのか動作可能なのかを確認し忘れてしまい、今確認
できないのですが、それでも何かピンと来る方宜しくお願いします)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C++
[4] 期限:4月6日

579:デフォルトの名無しさん
09/04/04 14:01:10
>>578
スレを勃てるまでもないC/C++の質問はここで 8
スレリンク(tech板:489番)

489 名前:デフォルトの名無しさん[sage] 投稿日:2009/03/23(月) 09:24:50
char hoge[4] = "ABCD"; // これがエラーになるかどうか

580:デフォルトの名無しさん
09/04/04 14:40:46
なそなぞではなく、C++ 優位
int main(void)
{
   char data;
   char pointer = &data;

   pointer = &data;
}

581:デフォルトの名無しさん
09/04/04 14:47:29
>>578
関数プロトタイプのない関数の呼び出し
void* からの暗黙のポインタ変換

582:デフォルトの名無しさん
09/04/04 15:40:42
[1] 授業単元:上級C++
[2] 問題文:URLリンク(www.dotup.org)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:g++
 [3.3] 言語: C++
[4] 期限:4月6日
[5] その他の制限:
初回の宿題から難しく全く理解出来ないのでよろしくお願いします
サンプルコードを使って書くのか、単純にこれは参考に使うものなのかすらわかっていませんがよろしくおねがいします

583:578
09/04/04 16:21:13
>>579, 580, 581
ありがとうございました

584:デフォルトの名無しさん
09/04/04 16:25:51
[1] 授業単元:C++
[2] 問題文:std::copyと同じような機能が<algorithm>ヘッダのstd::tranformから提供されている。
使い方を理解し、std::transformを使用して以下のようなプログラムを作成しなさい。
- vectorにfloatを複数書き込む。
- 元のvectorのそれぞれの要素を二乗したものからなる新しいvectorを生成する。
- 新しいvectorを画面に表示する。
(ostream_iteratorを使う場合は出力時最後にコンマがつくかもしれないが、気にしなくて良い)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:g++
 [3.3] 言語: C++
[4] 期限:4月6日

585:デフォルトの名無しさん
09/04/04 16:43:58
>>584
URLリンク(www.geocities.jp)

586:デフォルトの名無しさん
09/04/04 20:17:52
>>582
使えってかいてあるからとりあえず使うだけのコード
URLリンク(kansai2channeler.hp.infoseek.co.jp)

587:デフォルトの名無しさん
09/04/04 20:30:19
>>584
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
float power2(float x)
{ return x*x; }
int main()
{
const int size = 10; float c = 0.1;
std::vector<float> vec1(size), vec2(size);
for(int i = 0; i < size; ++i){ vec1[i] = c; c += 1.1; }
std::transform(vec1.begin(), vec1.end(), vec2.begin(), power2);
std::copy(vec2.begin(), vec2.end(), std::ostream_iterator<float>(std::cout, ","));
return 0;
}

588:デフォルトの名無しさん
09/04/05 00:55:26
>>586
助かりました!有り難うございました。

589:584
09/04/05 01:55:15
>>587
ありがとうございました!これから解読します

590:デフォルトの名無しさん
09/04/05 03:21:24
解読する価値ねーだろ

591:デフォルトの名無しさん
09/04/05 03:23:05
価値というか、問題文そのまま書き下しただけだな

592:デフォルトの名無しさん
09/04/05 03:29:26
お前引っこんでろ


593:デフォルトの名無しさん
09/04/05 03:33:04
>>589
あんまいじると可哀想だろ 
そのへんでやめとけ


594:デフォルトの名無しさん
09/04/05 12:59:37
#include <stdio.h>
【  1  】      /* 文字列の標準ヘッダーファイルの取り込み */
#define TRUE 1
#define FALSE 0

int passCheck(char *p); /* ユーザー作成関数のプロトタイプ宣言 */

void main()
{
char buff[256];
int cnt, flg = FALSE;

for (cnt=1; 【  2  】 ; cnt++)
{
printf("パスワードは?=> ");
scanf("%s",buff);

flg = 【  3  】 ;

if (flg == TRUE)
printf("パスワードは合致しました。\n");
else
printf("%d回目 入力ワード %s は間違っています。\n",cnt,buff);
}
}



595:デフォルトの名無しさん
09/04/05 13:00:24
int passCheck(char *p)
{
static char *pass = "MissionC";
int flg;

flg = strcmp(pass,p);

if (【  4  】 )
return TRUE;
else
return FALSE;
}

596:デフォルトの名無しさん
09/04/05 13:02:59
1,2,3,4に入る解答を教えて

597:デフォルトの名無しさん
09/04/05 13:13:16
>>595-596 3回もしなくても、1回で投稿できるだろう。
#include <string.h>
!fig
passCheck(buff)
!fig

598:デフォルトの名無しさん
09/04/05 13:22:14
回答群から選ぶ問題だった

1
#include "string.h"
#include <string.h>
#include <strcmp.h>
#include <strings.h>

2
cnt<=3 and flg==FALSE
cnt<3 && flg!=TRUE
cnt<=3 && flg==FALSE
newStr[5]

3
passCheck(*p)
passCheck(p)
passCheck(&buff)
passCheck(buff)

4
flg > 0
flg = 0
flg < 0
flg == 0

599:デフォルトの名無しさん
09/04/05 13:26:16
>>598
>>1
>・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
#include <string.h>
cnt<=3 && flg==FALSE
passCheck(buff)
flg == 0

600:デフォルトの名無しさん
09/04/05 15:08:13
[1] 授業単元:C++
[2] 問題文:
16行からなるパスカルの三角形をコンソールに出力するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:g++
 [3.3] 言語: C++
[4] 期限:4月7日
[5] その他制限事項:
(1)正三角形にすること。(各行がコンソール左端ぴったりから始まるような直角三角形ではない)
(2)一つのデータの入る領域を「レンガ」とすると、レンガのサイズは三角形を構成するデータの
最大値の桁を格納出来る大きさとしなさい。ただし見栄えの点から偶数の場合は奇数にした方がよいでしょう。
(=>つまりサイズは4桁(+1)=5にしろって言ってるんだと思います)
(3)数値はレンガの真ん中に位置するようにしなさい。
(4)入れ子のコンテナを使用しなさい。(例 vector<vector<int>>)

よろしるおねがいします

601:デフォルトの名無しさん
09/04/05 15:22:37
>>600
ぐぐれ

602:600
09/04/05 15:38:41
>>601
ぐぐると似た者はたくさんあるのですが制限事項を満たした者がありませんでした。
URLリンク(www.daniweb.com)
とかは6行目くらいから正三角形が崩れて来るし、最終的に微妙な三角形になるし、
というわけでよろしるおねがいします

603:デフォルトの名無しさん
09/04/05 16:53:55
あなたは、10とか1000の桁数偶数の場合は、5桁の中央にどう配置するのか?

604:デフォルトの名無しさん
09/04/05 17:36:04
_1_0_
10_00

605:デフォルトの名無しさん
09/04/05 17:57:49
>>604 OK. あと、STL使うみたい。
#include <iostream>
int main(void){ std::cout <<
"_______________________________________________1__ \n" <<
"____________________________________________1_____1__ \n" <<
"_________________________________________1_____2_____1__ \n" <<
"______________________________________1_____3_____3_____1__ \n" <<
"___________________________________1_____4_____6_____4_____1__ \n" <<
"________________________________1_____5____1 0___1 0____5_____1__ \n" <<
"_____________________________1_____6____1 5___2 0___1 5____6_____1__ \n" <<
"__________________________1_____7____2 1___3 5___3 5___2 1____7_____1__ \n" <<
"_______________________1_____8____2 8___5 6___7 0___5 6___2 8____8_____1__ \n" <<
"____________________1_____9____3 6___8 4___126___126___8 4___3 6____9_____1__ \n" <<
"_________________1____1 0___4 5___120___210___252___210___120___4 5___1 0____1__ \n" <<
"______________1____1 1___5 5___165___330___462___462___330___165___5 5___1 1____1__ \n" <<
"___________1____1 2___6 6___220___495___792___924___792___495___220___6 6___1 2____1__ \n" <<
"________1____1 3___7 8___286___715__12 87_17 16_17 16_12 87__715___286___7 8___1 3____1__ \n" <<
"_____1____1 4___9 1___364__10 01_20 02_30 03_34 32_30 03_20 02_10 01__364___9 1___1 4____1__ \n" <<
"__1____1 5___105___455__13 65_30 03_50 05_64 35_64 35_50 05_30 03_13 65__455___105___1 5____1__ \n" ;
}

606:600
09/04/06 00:52:27
↑こんな感じで表示出来ると助かるのですが
どなたかコンテナを使ったプログラムでお願い出来ないでしょうか

607:デフォルトの名無しさん
09/04/06 01:06:27
これって正三角形じゃなくて二等辺三角形だよな

608:デフォルトの名無しさん
09/04/06 01:16:04
教員の端末がプロポーショナルフォントだったら・・・

609:600
09/04/06 01:28:10
「正」じゃなくて二等辺でもたぶん大丈夫です

610:デフォルトの名無しさん
09/04/06 01:42:20
printf("%*d",WID,NUM);
WID 文字数の指定
NUM 値

611:デフォルトの名無しさん
09/04/06 01:43:05
C++でも書式の指定ができるものがあったような・・・

612:デフォルトの名無しさん
09/04/06 01:44:52
#include <vector>

typedef std::vector<int> VecInt;
typedef std::vector<VecInt> VecVecInt;

void main()
{
VecVecInt vvi;

vvi[0][0] = 1;

vvi[1][0] = 1;
vvi[1][1] = 1;

vvi[2][0] = 1;
vvi[2][1] = 2;
vvi[2][2] = 1;
}

613:デフォルトの名無しさん
09/04/06 02:14:45
#include <stdio.h>
#include <vector>

typedef std::vector<int> VecInt;
typedef std::vector<VecInt> VecVecInt;

void main()
{
VecVecInt vvi;
VecInt vi;
int iRow, iCol;
int iStep = 10;

vi.push_back(1);
vvi.push_back(vi);
for (iRow = 0; iRow < iStep; iRow++) {
vi.clear();
vi.resize(iRow + 2, 0);
vvi.push_back(vi);
for (iCol = 0; iCol <= iRow; iCol++) {
vvi[iRow + 1][iCol] += vvi[iRow][iCol];
vvi[iRow + 1][iCol + 1] += vvi[iRow][iCol];
}
}

for (iRow = 0; iRow < iStep; iRow++) {
for (iCol = 0; iCol <= iRow; iCol++) {
printf("%d,", vvi[iRow][iCol]);
}
printf("\n");
}
}

614:デフォルトの名無しさん
09/04/06 02:16:20
1,
1,1,
1,2,1,
1,3,3,1,
1,4,6,4,1,
1,5,10,10,5,1,
1,6,15,20,15,6,1,
1,7,21,35,35,21,7,1,
1,8,28,56,70,56,28,8,1,
1,9,36,84,126,126,84,36,9,1,

615:600
09/04/06 02:27:33
毎行左端からスタートではない左辺と右辺の二等辺である三角形に出来ませんか?
(イメージ的に605みたいな)

616:デフォルトの名無しさん
09/04/06 02:33:38
#include <stdio.h>
#include <string.h>

char* NumFmt(unsigned int uiNum)
{
static int aiPos[][5] = {{2},{1,3},{1,2,3},{0,1,3,4},{0,1,2,3,4}};
static char acRet[6];
char acBuf[16];
size_t uiLen;
unsigned int ui;

sprintf(acBuf, "%u", uiNum);
uiLen = strlen(acBuf);
if (5 < uiLen) return NULL;
strcpy(acRet, "_____");
for (ui = 0; ui < uiLen; ui++) {
acRet[aiPos[uiLen - 1][ui]] = acBuf[ui];
}
return acRet;
}

void main()
{
printf("%s\n", NumFmt(5));
printf("%s\n", NumFmt(55));
printf("%s\n", NumFmt(555));
printf("%s\n", NumFmt(5555));
printf("%s\n", NumFmt(55555));
}

617:デフォルトの名無しさん
09/04/06 02:35:52
__5__
_5_5_
_555_
55_55
55555

一応、骨格と部品は用意したんで
適当に加工してちょ
もっと綺麗に書けたらなぁw

618:デフォルトの名無しさん
09/04/06 03:51:43
>>600
URLリンク(kansai2channeler.hp.infoseek.co.jp)

619:600
09/04/06 04:00:09
>>618
完璧です。。ほんとに感謝です!
ありがとうございました!

620:デフォルトの名無しさん
09/04/06 09:00:45
#include <stdio.h>
#include <string.h>
#include <vector>

#define N 14

using namespace std;

void main()
{
vector< vector<int> > vvi;
vector<int> vi;
char acBuf[16];
int iRow, iCol, iMax = 0, iMaxLen, i, iSpc;

for (iRow = 0; iRow < N; iRow++) {
vi.push_back(1);
for (iCol = iRow - 1; 0 < iCol; iCol--) {
vi[iCol] += vi[iCol - 1];
iMax = __max(iMax, vi[iCol]);
}
vvi.push_back(vi);
}

621:デフォルトの名無しさん
09/04/06 09:02:04
sprintf(acBuf, "%d", iMax);
iMaxLen = strlen(acBuf);
iMaxLen |= 1; // 奇数に繰り上げ

for (iRow = 0; iRow < N; iRow++) {
for (i = 0; i < (iMaxLen / 2 + 1) * (N - 1 - iRow); i++) putchar(' ');
for (iCol = 0; iCol <= iRow; iCol++) {
sprintf(acBuf, "%d", vvi[iRow][iCol]);
iSpc = iMaxLen - strlen(acBuf);
for (i = 0; i < iSpc / 2; i++) putchar(' ');
printf(acBuf);
for (i = 0; i < (iSpc + 1) / 2; i++) putchar(' ');
putchar(' ');
}
putchar('\n');
}
}

もう解答は上がってるけど、別解として

622:デフォルトの名無しさん
09/04/06 09:30:13
くせぇくせぇ、後出し麻呂の臭いがぷんぷんすんぜ
こりゃ~クソースだぁ~クソースは消毒だぁ~

623:デフォルトの名無しさん
09/04/06 09:38:04
g++ だと、void main はコンパイルエラーになる。
#define __max(a,b) a>b?a:b
どれだけ花がいいんだ。

624:デフォルトの名無しさん
09/04/06 10:31:46
URLリンク(www.dotup.org)

四つの引数をとるバージョンのaccumulateを使用して、26行目、27行目のtransformとaccumulate(三つの引数バージョン)
を合体するにはどうしたらいいですか?単純に繋いだらコンパイルエラーになりますた(28行目)
あっそれとinnerproductは使っちゃいけないみたいなのであくまでも4つの引数をとるaccumulateバージョンでお願いします

625:デフォルトの名無しさん
09/04/06 11:23:42
template<class T>
struct power : public binary_function<T, T, T> {
T operator()(const T& x, const T& y) const {
return x + y * y;
}
};

sum=std::accumulate(new_vec.begin(), new_vec.end(), 0, power<float>());

こんな感じにすればいいんじゃね?よく分からんが

626:デフォルトの名無しさん
09/04/06 14:49:20
>>618 #define N 17 だと、なぜかダメ。

627:デフォルトの名無しさん
09/04/06 15:25:28
>>626
最大表示桁数が5桁を超えるからじゃないの?

628:デフォルトの名無しさん
09/04/06 15:28:48
>>578
new delete 等の C++ キーワードを変数名に

629:624
09/04/06 16:10:26
>>625
おぉ!すごいできました。
ありがとうございました。(^人^)感謝♪

630:569
09/04/08 19:10:27
>>572のプログラムについてなんですが、
各行にコメントをつけなきゃなくて、さらに提出するときに説明しなきゃないんですけど、
while(!n || data[n-1] != 0.0){ scanf("%lf", data+n); n++; }の文について誰か詳しく教えてくれませんか?
あとこのプログラムだと平均値が終了データの0まで件数にカウントされているらしく、
例えば1、2、3の平均値は2になるはずが、(1+2+3+0)÷4=1.5となってしまっているので、
修正の仕方を教えてくださいm(_ _)m

631:デフォルトの名無しさん
09/04/08 19:35:20
while (n < 1024) {
if (scanf("%lf", &data[n]) != 1) { // 入力
scanf("%*s"); // 入力バッファ読み捨て
printf("error\n");
continue;
}
if (data[n] == 0.0) { // 0なら入力終了
break;
}
n++;
}

改良案

632:デフォルトの名無しさん
09/04/08 20:05:04
[1] 授業単元: ファイルの入出力(fprintf文の高度な使用法)
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc )
 [3.3] 言語: (C/C++/どちらでも可)
[4] 期限: 来週の月曜日まで
[5] その他の制限: 特に無し


633:デフォルトの名無しさん
09/04/08 21:26:26
問題文正確か?

634:632
09/04/08 21:40:51
>>633
一応正確ですよ
よろしくお願い致します。

635:デフォルトの名無しさん
09/04/08 22:50:27
まだ4月初めなのにもう課題がでてるの?
どういう学校だろうか。

うちなんかこれから講義資料作りますよ。
自分が出した問題がここに出てくるかwktkしながら見ることにします。

636:632
09/04/08 23:12:35
>>635
専門学校ですのでカリキュラムがギュウギュウなんですよ
出来るようならお願い致します

637:デフォルトの名無しさん
09/04/08 23:15:23
いったい何のために専門学校に入ったの?

638:デフォルトの名無しさん
09/04/08 23:17:29
>>636
カリキュラムがギュウギュウって本当か?
卒業時にバブルソートがなんとかできるとかじゃないよな?

639: ◆zQ5xe/OcaA
09/04/08 23:20:42
>>632
int main()
{
  output=fopen("vib1.inp","w");
  t=0.0, x[1]=1.0; x[2]=0.0;

  printf("%10.5lf\n",t);
  printf("%10.5lf%10.5lf\n",x[1],x[2]);

  fprintf(output,"♯AVS field file\n");
  fprintf(output,"%d\n",NMAX+1);
  fprintf(output,"data_geom\n");
  fprintf(output,"step%d step%d\n%d %d\n%d",1,1,1,1,1);
  fprintf(output,"%9.6lf%9.6lf%9.6lf\n",x[1],0.0,0.0);
  fprintf(output,"%d 1 pt %d\n%d %d\n%d %d\n",1,1,1,0,1,1);
  fprintf(output,"radius,\n%d%4.1f\n",1,1.0);

  for(i=1; i<=NMAX;i++){
    t=((double) i)*h;
    fprintf(output,"step%d step%d\n%d %d\n%d",i+1,i+1,1,1,1);
////////////////////////////////////////////////////////////////////////////////
    runge( vib,x,f,wrk1,wrk2,t,h,n);
////////////////////////////////////////////////////////////////////////////////
    fprintf(output,"%9.6lf%9.6lf%9.6lf\n",x[1],0.0,0.0);
    fprintf(output,"%d 1 pt %d\n%d %d\n%d %d\n",1,1,1,0,1,1);
    fprintf(output,"radius,\n%d%4.1f\n",1,1.0);
    printf("%10.5lf\n",t);
    printf("%10.5lf%10.5lf\n",x[1],x[2]);
  }
}

640:632
09/04/08 23:21:05
>>637
プログラムの勉強をするためです
>>638
卒業時には立派なプログラマー予備軍?になってるだろうと先生から言われています

641:632
09/04/08 23:27:17
>>639
このままだとエラーが結構出ますがこれを参考にしろってことですね
ありがとうございます。やってみます

642:デフォルトの名無しさん
09/04/09 00:42:36
プログラムの勉強をするために専門学校に入って、ここで宿題解いてもらうのか。

とりあえずうちの会社には来ないでね。


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