C/C++の宿題片付けます 137代目at TECH
C/C++の宿題片付けます 137代目 - 暇つぶし2ch382:デフォルトの名無しさん
10/07/01 06:59:49
368は人気者?

383:デフォルトの名無しさん
10/07/01 07:02:14
>>382
この間隔で書き込まれているのを見ていると、
一人で騒いでいるだけのようにしか見えない

384:デフォルトの名無しさん
10/07/01 07:25:34
あいかわらずですね。

385:デフォルトの名無しさん
10/07/01 07:37:16
見えない敵と戦っているんだろう
プログラマなら魔法で戦えよ

386:デフォルトの名無しさん
10/07/01 07:47:46
>>383
一度に多数の人間が同時に書き込んだ、というのを演出したいらしい。

387:デフォルトの名無しさん
10/07/01 12:11:13
vectorをリファレンス引数で扱う意味を教えてください

388:デフォルトの名無しさん
10/07/01 12:53:33
>>387
コピーするコストがもったいないから
コピーだと中身に変更を加えても呼び出し元に影響を与えられないから

389:デフォルトの名無しさん
10/07/01 12:59:28
>>388
つまり、コピーだとその後代入などの手間がかかるため
リファレンス引数で扱い、その手間を省くということですね
ありがとうございます。

390:デフォルトの名無しさん
10/07/01 14:36:20
[1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Vc
 [3.3] 言語: C++
[4] 期限:2010年07月10日まで
[5] その他の制限:なし

391:デフォルトの名無しさん
10/07/01 14:50:54
>>383
その感覚じゃ連続投稿に引っかかることくらい、ここの住人なら知っているだろう。
バイバイさるさんにも引っかかる可能性はある。

392:デフォルトの名無しさん
10/07/01 18:39:51
>>391
抜け道はいくらでもある。

393:デフォルトの名無しさん
10/07/01 21:27:49
>>390
void main (笑)

394:デフォルトの名無しさん
10/07/01 21:29:53
>>389
コンストラクタ・デストラクタのコストを避けるのが主目的。

395:デフォルトの名無しさん
10/07/01 21:32:19
>>379
なに、ほんの手遊びですよ。ちょろちょろっと書いてみるのもまた楽しいものです。

396:デフォルトの名無しさん
10/07/01 21:35:24
>>378
>>250
オリジナルの多桁演算ライブラリです。いつのまにか乗算・除算もできてしまいました。
効率は悪いのですが、それでもわりに重宝しています。

397:デフォルトの名無しさん
10/07/01 21:44:08
トリップ付けずに代弁するとか、大人しくトイレで大便しといれw

398:デフォルトの名無しさん
10/07/01 21:53:17
>>396
横レスで失礼。除算をどうやったのか興味があります。

399:デフォルトの名無しさん
10/07/01 21:59:57
>>398
2進法での除算そのものです。ちょっとググってみたところでは URLリンク(homepage2.nifty.com) など。
多桁数を1bit ずつシフトさせながら引き算できるときは引き算をする、という感じです、言葉にすれば。
>>250 も、折をみて、剰余を出力させるように改良しなくては。

400:デフォルトの名無しさん
10/07/01 22:25:54
>>399
なるほど。繰り返しで処理出来るからハードウェア化も可能、というのが理解出来ました。
有難う御座います。

401:デフォルトの名無しさん
10/07/01 22:39:01
>>400
手近な環境でマシン語を習得し、割り算を実装することができれば、そのマシン語は卒業したといってもいいと思います。
x86 がいいでしょうが、casl でもできます。

402:デフォルトの名無しさん
10/07/01 22:54:25
>>401
CASLには虎馬が...ww

403:デフォルトの名無しさん
10/07/01 23:05:13
>>390の前半
// ◎ソースコード
#include <stdio.h>
#define N 10
#define ID   "/0000/"
#define NAME "/やまだ/"

static int fib(int n)
{
    int r;
    if (n <= 2)
r = 1;
    else
r = fib(n - 1) + fib(n - 2);
    return r;
}

//-----------------------------------------------------
int main(void)
{
    int i;
    printf("%s %s\n\n", ID, NAME);
    for (i = 1; i <= N; i++) {
printf("F%2d = %7d\n", i, fib(i));
    }
    return 0;
}


404:デフォルトの名無しさん
10/07/01 23:09:06
>>403
ついでに改造版。
#include <stdio.h>
#define N 40
#define ID   "/0000/"
#define NAME "/やまだ/"
#define fib(n) fib2(n,1,1)
static int fib2(int n, int a, int b)
{
    return (n <= 2) ? b : fib2(n - 1, b, a + b);
}

//-----------------------------------------------------
int main(void)
{
    int i;
    printf("%s %s\n\n", ID, NAME);
    for (i = 1; i <= N; i++) {
printf("F%2d = %7d\n", i, fib(i));
    }
    return 0;
}


405:デフォルトの名無しさん
10/07/01 23:15:15
摂氏から華氏,及び華氏から摂氏に換算する関数を作成して、
main関数でキーボードから温度とその値が摂氏であるか華氏であるかを
入力し,摂氏ならば華氏に,華氏ならば摂氏に換算した値を小数点以下1桁までで出力するプログラムを作成しなさい。
なお出力は main関数で行うこと。

406:デフォルトの名無しさん
10/07/01 23:29:03
#include <stdio.h>
float power(float x,float y)
{
float ans;
char i;

ans=0;

if((char)y='C'){
ans=9/5 * x + 32;
y='摂氏';
i='華氏';
}else{
ans=5/9 * (x - 32) ;
y='華氏';
i='摂氏';
}
return ans;
}


407:デフォルトの名無しさん
10/07/01 23:29:54
int main(void)
{
float a;
char b,i;

a=0;

printf("温度を入力してください: ");
scanf("%f", &a);

printf("%d度が「摂氏」なら 'C' を「華氏」なら'F' を入力してください: ",(int)a);
scanf("%s", &b);
printf("\n");

printf("%c %8.3f = %c %8.3f\n",b, a, i, CelsiusFahrenheit(a, b));
return 0;
}

ここまでできたんですが、出力がうまくいきません。
誰か教えてください。

408:デフォルトの名無しさん
10/07/02 00:20:43
>>405
#include <stdio.h>

float CelsiusFahrenheit(float a, char *b)
{    return (*b == 'C') ? (a - 32) * 5 / 9 : a * 9 / 5 + 32;}

int main(void){
    float a = 0;
    char b[2];

    printf("温度を入力してください: ");
    scanf("%f", &a);
    printf("%g度が「摂氏」なら 'C' を「華氏」なら'F' を入力してください: ", a);
    scanf("%s", b);
    b[1] = (*b == 'C') ? 'F' : 'C';
    printf("%5.1f °%c = %5.1f °%c\n",
            a, b[0], CelsiusFahrenheit(a, b), b[1]);

    return 0;
}

409:デフォルトの名無しさん
10/07/02 02:19:37
[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):
極座標(r,θ)の値を入力すると、直交座標(x,y)に変換するプログラムを作成せよ。
但し,θの値はdegree(度)で入力すること。また、πの値は逆三角関数(arctan(x))を使って計算をすること。
[3] 環境
 [3.1] OS:WinodwsVista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7/5(月)迄
[5] その他の制限:特になし

よろしくお願いします

410:デフォルトの名無しさん
10/07/02 02:42:39
[1] 授業単元:アルゴリズム論
[2] 問題文(含コード&リンク):分離連作法と外部ハッシュ法の性能比較
[3] 環境
 [3.1] OS:windows XP
 [3.2] gcc
 [3.3] 言語:C++
[4] 期限:2010年7月10日00:00
[5] その他の制限: 特になし

411: ◆QZaw55cn4c
10/07/02 05:55:41
>>409
URLリンク(codepad.org)

412:デフォルトの名無しさん
10/07/02 07:22:59
>>403
ありがとうございます
よろしければ演習2のほうもお願いします・・・

413:デフォルトの名無しさん
10/07/02 12:17:45
>>411
ありがとうございます!

414:デフォルトの名無しさん
10/07/02 12:56:28
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):switch 文を使用して
1. データファイルの新規作成
2. データファイルの追加作成
3. データファイルの読み込みと表示
4. 終了
をメニュー形式で処理するプログラムを作成せよ。
・ ファイル名はキーボードから入力する。
・ 1~4の処理はユーザ関数として定義すること。
void data_write(void)
void data_append(void)
void data_read(void)
void the_end(void)
・1~4以外の数値が入力されたら再入力させること。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:cc
 [3.3] 言語:C言語
[4] 期限:7月5日

415:デフォルトの名無しさん
10/07/02 17:27:31
もう麻呂のク(ryで十分じゃんw

416:デフォルトの名無しさん
10/07/02 18:26:04
>>415
コードを出したり引っ込めたりしなければね。

417:デフォルトの名無しさん
10/07/02 19:01:48
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
正の整数を引数とし、その階乗(n!)を計算して戻り値とする関数
factを作成して動作を確認せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月5日

よろしくお願いします。

418:デフォルトの名無しさん
10/07/02 19:04:56
>>417
>>211, >>250, >>306 あたりを参考にしてはいかが?

419:デフォルトの名無しさん
10/07/02 19:43:49
>>417
URLリンク(codepad.org)

420:デフォルトの名無しさん
10/07/02 20:35:07
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
実数値(xとする)と正の実数値(yとする)を引数としてx^yを戻り値とする
関数mypowを作成し、プログラムリストと実行結果を示せ。
ただし、xとyについてはmain関数でキーボードから入力するようにし、
出力結果としては、mypow関数の計算結果と数学関数pow関数の結果を
両方表示するようにせよ。また、mypow関数のプロトタイプ宣言も行うこと。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月5日

よろしくお願いします。


421:デフォルトの名無しさん
10/07/02 20:35:15
[1] 授業単元: プログラム言語
[2] 問題文(含コード&リンク):
10 人の成績を入力し,その順位を成績と共に表示したい。以下の考え方に基づいた
プログラムを作成せよ。
1 ?
2次元配列s[10][2] を用意する。
2 ?
i=0~9 のfor 文を用いてs[i][0] に成績を入力する。
3 ?
s[0][0] とs[j][0],j=0~9 を比較し,s[0][0] より大きい数値の個数n を数え
 る。その個数+1 が成績順位になるので,s[0][1] にn+1 を代入する。
4 ?
同様の操作をs[i][0],i=0~9 に対して行なえば,その成績順位がs[i][1] とし
 て求められるので,あとは成績と共に表示すればよい。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C++
[4] 期限: 2010年7月6日まで
[5] その他の制限: main関数
よろしくお願いします

422:デフォルトの名無しさん
10/07/02 20:39:26
>>419
ありがとうございます!

423:デフォルトの名無しさん
10/07/02 21:27:52
>>408
遅れてすいません。ありがとうございます!

424:デフォルトの名無しさん
10/07/02 21:44:46
>>416
しつけぇw

425:デフォルトの名無しさん
10/07/02 22:02:53
>>423ですが、何度もすいません。

>>408

80度が「摂氏」なら "C" を「華氏」なら "F" を入力してください: F

日本基準 80.0 度 = 欧米基準 176.0 度

と出力できるようにはできませんか?

426: ◆QZaw55cn4c
10/07/02 22:47:29
>>420
URLリンク(codepad.org)
もっとまじめにmypow()を定義しなければならないのでしたら、その旨ご返事ください。考え直します。

427: ◆QZaw55cn4c
10/07/02 23:06:15
>>421
URLリンク(codepad.org)
VC6 でコンパイルできなかったらごめんなさい。

428:デフォルトの名無しさん
10/07/02 23:47:19
>>424
質問でも宿題でもないのにあげている、という点で同一人間っぽいですね。
いわゆる自意識過剰ってやつですか。もっと大人になりましょうね。

429: ◆QZaw55cn4c
10/07/03 00:49:16
>>390
URLリンク(codepad.org)

430:デフォルトの名無しさん
10/07/03 00:56:52
>>425
計算違いがありましたので修正しました。

#include <stdio.h>
#define c1(c) (c=='C')?"日本基準":"欧米基準"

float CelsiusFahrenheit(float a, char *b)
{    return (*b == 'F') ? (a - 32) * 5 / 9 : a * 9 / 5 + 32;}

int main(void)
{
    float a = 0;
    char b[1];

    printf("温度を入力してください: ");
    scanf("%f", &a);

    printf("%g度が「摂氏」なら 'C' を「華氏」なら'F' を入力してください: ", a);
    scanf("%s", b);
    printf("%s %5.1f 度 = %s %5.1f 度\n",
   c1(*b), a, c1('C' + 'F' - *b), CelsiusFahrenheit(a, b));

    return 0;
}

431:デフォルトの名無しさん
10/07/03 06:36:17
>>428
し・つ・こ・い。このスレに何しに来てんの?基地外。自分のレスを読み返せ。
浮いてるぞ

432:デフォルトの名無しさん
10/07/03 06:43:38
>>428
> いわゆる自意識過剰ってやつですか。もっと大人になりましょうね。
自己紹介しているし、このバカw
お前の揚げ足取り、反論はどれも論点がズレている。もう少し自分の方が
勘違いをしてコミュ力がないと気づけよ、お子ちゃま。
で、fgetc()の戻り値なんて今更持ち出す池沼乙w

433:デフォルトの名無しさん
10/07/03 06:45:57
>>234
よろしければお願いします

434:バカ晒しage
10/07/03 06:48:26
ageているからという理由で勘違いしているなら
ピエロのお前を晒し続けてやるよw
お前がこのスレに無関係な話を延々と見えない敵に噛み付いて
し始めているからきめぇつってんだよ。スレタイ読めや、文盲かてめぇは?

435:いつまでもおつむは成長しないお子ちゃま
10/07/03 06:49:18
368 名前: ◆QZaw55cn4c 投稿日:2010/06/30(水) 23:23:11
>>344
fgetc() の戻り値は int 型であることを、そろそろ理解していただきたいのですが。
どうですか?成長しましたか?

436:見えない敵に噛み付く自分こそ自意識過剰のスレチバカ
10/07/03 06:50:06
428 名前:デフォルトの名無しさん 投稿日:2010/07/02(金) 23:47:19
>>424
質問でも宿題でもないのにあげている、という点で同一人間っぽいですね。
いわゆる自意識過剰ってやつですか。もっと大人になりましょうね。

437:デフォルトの名無しさん
10/07/03 06:53:32
>>368 = >>428
EOF がマクロで定義されていることを、そろそろ理解していただきたいのですが。
どうですか?精神レベルとプログラミングの技能は成長しましたか?

URLリンク(www.bohyoh.com)
> int getchar(void);
getchar() の戻り値は int 型であることを、そろそろ理解していただきたいのですが。
どうですか?成長しましたか?


438:433=234
10/07/03 07:10:46
ちなみに期限のほうですが、来週の月曜日にまで延長して貰えました

439:デフォルトの名無しさん
10/07/03 07:18:56
このスレがどんなスレか、そろそろ理解していただきたいのですが?
スレタイも>>1も読めないアホ

440:デフォルトの名無しさん
10/07/03 12:50:16
内容:
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7/6まで
[5] その他の制限:特になし
2問ありますがよろしくお願いします

441:デフォルトの名無しさん
10/07/03 13:27:17
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
UNIXコマンドのgrep(指定したファイルを読み込み、指定した文字列とマッチする行を出力するコマンド)と同じ動作をするプログラムを実装しなさい。
ただし、オプションなどの副次的な機能はつけなくてもよい。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月5日まで
[5] その他の制限:とくにありません。よろしくお願いします。

442: ◆QZaw55cn4c
10/07/03 15:41:24
>>441
URLリンク(codepad.org)

443:334
10/07/03 17:20:02
URLリンク(codepad.org)

コンパイルが上手く行ったので実行したらゴミができた
タイミングよく救急車のサイレンがきこえてきた 死にたいw

(gdb) run
Starting program: /cygdrive/c/works/1/rev/rev
[New thread 2376.0x258]
[New thread 2376.0xbf0]
6 [main] rev 2376 exception::handle: Exception: STATUS_ACCESS_VIOLATION
3713 [main] rev 2376 open_stackdumpfile: Dumping stack trace to rev.exe.stack
dump

Program received signal SIGSEGV, Segmentation fault.
0x611203f8 in _fread_r () from /usr/bin/cygwin1.dll

444:デフォルトの名無しさん
10/07/03 17:26:03
>>443
画像開く前から画像の幅と高さがわかるとかどんなエスパーだよバカ

445:デフォルトの名無しさん
10/07/03 17:29:08
ワロタ

446:デフォルトの名無しさん
10/07/03 19:06:49
>>426
ありがとうございます。

447:デフォルトの名無しさん
10/07/03 19:44:18
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
例を修正し、double型の配列変数に格納されている値の
平均値を求める関数aveを作成せよ。また、aveもdouble型とする。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月5日


448:デフォルトの名無しさん
10/07/03 19:46:04
>>447の例は以下の通りです。よろしくお願いします。

#include<stdio.h>
#define N 10
int sum(int num[])
{
int n, s=0;

for (n=0;n<N;n++)
s+=num[n];

return 0;
}

int main()
{
int aa[N], bb;
/* 配列変数aaに値を代入 */

bb = sum(aa);
printf(“sum=%d\n”,bb);

return 0;
}


449:デフォルトの名無しさん
10/07/03 20:06:46
>>447
#include<stdio.h>
#define N 10
double sum(double num[])
{
int n;
double s=0.0;
for (n=0;n<N;n++)
s+=num[n];
return s;
}

int main()
{
int i;
double aa[N], bb;
/* 配列変数aaに値を代入 値は適当*/
for (i=0;i<N;i++)
aa[i]=i*2.5;
bb = sum(aa);
printf("sum=%f\n", bb);
return 0;
}


450: ◆GmgU93SCyE
10/07/03 20:08:55
>>447
#include <stdio.h>
#define N 10

double ave( const double arr[] )
{
int i;
double total = 0;
for ( i=0; i<N; ++i )
total += arr[i];

return total/N;
}

int main()
{
const double arr[N] = { 1.23, 9.87, 5.94, 0.157, 7.2, 1.23, 9.87, 5.94, 0.157, 7.2 };
printf( "average = %f", ave(arr) );
return 0;
}


451:デフォルトの名無しさん
10/07/03 20:47:22
>>408
ありがとうございます!

452:デフォルトの名無しさん
10/07/03 20:52:37

[1] c言語活用:
[2] 例を改造して、ガウス関数に関する折れ線グラフにしなさい。
URLリンク(codepad.org)
[3] 環境
 [3.1] OS : Linux
 [3.2] コンバイラ名 : gcc
 [3.3] 言語 : C
[4] 期限: 7月 5日まで

例をガウス関数で定義するところまでは自力でできましたが、
グラフが点集合でしか表せません。
現在のX座標の点と隣のX座標の点を直線で結ぶために2組の座標の組
(x1, y1, disp_x1, disp_y1),
(x2, y2, disp_x2, disp_y2) を用意するとうまくいくそうですが
どうしてもわかりませんでした。
御助力お願いします。

453:デフォルトの名無しさん
10/07/03 21:42:14
>>452
handy.h とはなんでしょうか?
あと、X Window ?

454:デフォルトの名無しさん
10/07/03 22:01:38
>>390
誰かコレの演習2お願いしますっ

455: ◆QZaw55cn4c
10/07/03 22:35:14
>>390
>>454
URLリンク(kansai2channeler.hp.infoseek.co.jp)

>>431
宿題しにきていますが、なにか?

>>432
べつに当たり前のことをいってるだけですけどね。でも、当時話題になったが fgetc() ではなくて getchar() マクロや EOF だっただなんて、よくご存知ですね。やっぱり当事者だったんですね。つれた、つれた。

>>434
そういいながらも sage で投稿できないところなんか、末期的としかいわざるを得ないでしょうね。一度 sage で投稿してごらんなさい?

まあ一匹の自意識障害者をあぶりだすことができたようで、満足しています。

456: ◆QZaw55cn4c
10/07/04 00:21:30
>>390
>>454
訂正します。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

457:デフォルトの名無しさん
10/07/04 00:31:44
[1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):
以下のプログラムに、下に示す二つの関数を実装し、組み込みなさい。
ファイル中に保存するデータはアスキー形式でも、バイナリ形式でもどちらでも構わないものとする。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
・構造体Employee型のデータが順に保存されているファイルからデータを読み込む関数。
・作成したデータをファイルに書き出す関数。
例えば、構造体Employeeを下に示すものと同じ定義にしたとする。
この構造体に従ったASCII形式のデータベースファイルを読み込み、社員の追加や、給与の変更をした後、同様なデータベースファイルとして保存できるようにしなさい(もちろん、バイナリ形式のファイルにしても構わない)。
[構造体Employeeの例]
typedef struct {
char name[16];
int age;
int salary;
} Employee;

[データベースファイルの例]
TANAKA 32 620
SUZUKI 25 500
CHIBA 35 650
NAKAMURA 50 1000
IIDA 45 800

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月5日まで
[5] その他の制限:特にありません。よろしくお願いします。



458:457
10/07/04 00:43:11
>>459
ありがとうございます。

459:デフォルトの名無しさん
10/07/04 00:50:36
どういたしまして

460:デフォルトの名無しさん
10/07/04 01:02:03
>>456
ありがとうございます、助かりました

461:デフォルトの名無しさん
10/07/04 01:03:27
1] 授業単元: プログラミング実験
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C言語
[4] 期限: ([2010年07月05日22:00まで]
[5] その他の制限: よろしくお願いします!

462:デフォルトの名無しさん
10/07/04 01:03:42
>>455
精神障害者だろ、お前?いつまでも昔の(自分の勘違いのせいで起こった論争)を引き摺るとか。
気持ち悪い。このスレ、お前のオナニースレじゃないんだが?周りを見ろよ。
日頃、現実世界でまともに相手にされていないのがバレバレだぞ。

463:デフォルトの名無しさん
10/07/04 01:05:26
>>1
> 気に入らない質問やその他の発言はスルーの方向で。
最初の1行も読めないとか、日本人かも疑わしいわ。
ageられているのはお前みたいなキモイ奴を晒しageされていると気づけよ。
このスレにsageルールはないけど?

464:デフォルトの名無しさん
10/07/04 01:15:35
ID希望

465:精神障害者アスペ君の恥ずかしいレス
10/07/04 01:15:35
368 名前: ◆QZaw55cn4c 投稿日:2010/06/30(水) 23:23:11
>>344
fgetc() の戻り値は int 型であることを、そろそろ理解していただきたいのですが。
どうですか?成長しましたか?

466:デフォルトの名無しさん
10/07/04 01:23:04
どなたか教えてください。ずっと考えてたけど、答えがわかりませんorz。

<標準関数>文字列と削除文字列を入力し、文字列中から削除文字列を削除しなさい。
※配列の使用は2つだけ。
例) 文字列入力→ABCDEFAABCDABC
   削除文字列→ABC
   結果文字列→DEFAD

どなたか教えてください、お願いします。

467:デフォルトの名無しさん
10/07/04 01:35:50
IDが表示されない、だから相手が特定できないから自分にレスした奴を
虱潰しに煽る事で炙り出そうって魂胆だろ。一生見えない敵と戦うぞ、こいつw

468:デフォルトの名無しさん
10/07/04 02:00:45
>>467
今来産業の俺にもう少し分かりやすく

469:デフォルトの名無しさん
10/07/04 02:05:50
>>466
#include <stdio.h>
#include <string.h>

int main(void)
{
char source[] = "ABCDEFAABCDABC";
char target[] = "ABC";

size_t l = strlen(target);
char *p;

puts(source);
puts(target);

while (p = strstr(source, target)) {
while (p[0] = p[l]) {
p++;
}
}

puts(source);

return 0;
}


470:デフォルトの名無しさん
10/07/04 02:06:11
麻呂のクソースを超えるクソースは出てこない、間違いない

471:デフォルトの名無しさん
10/07/04 02:21:25
>>469
※配列の使用は2つだけ。
って言われてるけど

472:デフォルトの名無しさん
10/07/04 02:35:20
>>471
はあ?確保してる配列は2つだけだろうが
脳みそヒヨコかよ

473:デフォルトの名無しさん
10/07/04 11:33:13
>>449
「ave」という文字がないのですがこれでいいんですかね?

474:デフォルトの名無しさん
10/07/04 14:29:58
>>453

handy.h はHandyGraphic という
グラフィックスライブラリを使うことを意味しています。
また学校のパソコンなのでわかりませんがおそらく
X Windowかと思われます。いいかげんですみません。

明日提出なのでよろしければ、どなたかよろしくお願いします。

475:デフォルトの名無しさん
10/07/04 14:41:34
[1] 授業単元:プログラミング
[2]問題文:
ファイルseiseki.txt から氏名と点数を読み込んで、成績順に並べ替え、結果を画
面に表示するプログラムを作成せよ。
・氏名は2次元配列、点数は1次元配列に格納する。
・ データの並べ替えには単純挿入法、単純選択法またはバブルソートを使用する。
・ 文字列 x[]と文字列y[]の入れ替えは、文字列操作関数strcpy を用いて行う。
strcpy(z,x); strcpy(x,y); strcpy(y,z);
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2010年07月06日0:00まで]

この問題が解ける方はいらっしゃいますでしょうか。

476: ◆QZaw55cn4c
10/07/04 15:11:12
>>475
URLリンク(codepad.org)

>>463
>>1 を読めないのはおまえさんも同じ。私?いちおう宿題といてますけどね。
なによりこれだけの過剰反応を示していること自体が、つれた、つれた、と判断されてもしかたのないことでは?
さらしあげ?専用ブラウザを使っている私にはなんのことだか。

>>467
それはおまえさんのことですがな。

477:デフォルトの名無しさん
10/07/04 15:21:19
>>469
よみにくいから段下げをつけてくれ

478:デフォルトの名無しさん
10/07/04 15:24:06
>>473
>>450

479:デフォルトの名無しさん
10/07/04 15:36:07
>>477
ついてるよ
メモ帳にコピペしてみ

480:デフォルトの名無しさん
10/07/04 15:41:04
>>457もお願いします。

481:デフォルトの名無しさん
10/07/04 16:04:42
[1] 授業単元:方程式の解
[2] 問題文(含コード&リンク):方程式exp(-x^2/2)=0.5の解を求める
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:Cygwin
 [3.3] 言語:C
[4] 期限:7/9
[5] その他の制限:
double f(double x);
int main(void){
double x,min_f,solution;
min_f=1e100;
for(x=0;x<=3;x+=dx){
printf("%e,%e\n",f,min_f);
if(fabs(f(x))<min_f){
solution=x;
min_f=fabs(f(x));
}}
printf("f(%e)=%e\n",solution,min_f);
return 0; }
double f(double x){
double y;
y=exp(-x*x/2)-0.5;
return y; }
と組んで実行できたんですが、なぜmin_fを最初に10^100とするのでしょうか?
なんか私の感覚的には10^-100な気がするのですが・・・
この部分の解説お願いします。

482:デフォルトの名無しさん
10/07/04 16:20:47
>>479
確かにソースをみるとついてますな。

483:デフォルトの名無しさん
10/07/04 16:44:30
>>481
範囲をdx刻みで分割して、|f(x)|が最小となるxを求める。
min_fは暫定の最小。もしあるxで|f(x)|<min_fなら、min_fを更新する。
dxに対してmin_fを小さくしすぎると、|f(x)|<min_fなxがない可能性がある。

484:デフォルトの名無しさん
10/07/04 20:06:11
>>476
うわっ、お前マジキモイ・・・そのままトリップを付けたまま書き込めよ。
必死に自分の不満、苛立ちを露にする長文を書くしバカ丸出しw

485:デフォルトの名無しさん
10/07/04 20:06:54
>>476
> それはおまえさんのことですがな。
いや、お前のことだよ。第一、お前はトリップを付けているが
お前にレスした奴が特定の一人とは限らないだろ?

486:デフォルトの名無しさん
10/07/04 20:07:19
>>476
見えない敵と戦う必死な戦士、かっちょわりぃ~w

487:デフォルトの名無しさん
10/07/04 20:08:06
>>476
>>1
>あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。
読めませんか?相手をいちいち自分の勘違いで挑発するお前が一番幼稚

488:デフォルトの名無しさん
10/07/04 20:08:28
>>476 日本語でおk

489:デフォルトの名無しさん
10/07/04 20:09:12
>>476
自分はさっぱり分かりません、みたいなしらばっくれた書き込みをして
自分がした 勘違い を認めないとか、頭おかしいぞw
自覚が無いなら責任が問われる社会では通用しません。

490:デフォルトの名無しさん
10/07/04 20:09:55
>>476
最後の1行がみっともないです ><;
早くこのスレから出て行くか、大人になって下さい ><;
ねぇ、まだ社会に出て働いた事の無いお子ちゃまw

491:デフォルトの名無しさん
10/07/04 20:10:37
>>476
やっぱりお前が>>1の注意書きを読めてないじゃんw

492:デフォルトの名無しさん
10/07/04 20:11:40
>>476
そろそろ、自分の苛立ちを見えない敵にぶつけないで良いよ。
今後無駄なレスをしても、スルーされるだけだからw
で、お前は俺を麻呂と思っているんだろ?麻呂があれから
騙りもあり、しばらく来ていなかったことも知らないとは・・・
そうやって見えない敵に噛み付いてなさいw

493:デフォルトの名無しさん
10/07/04 20:14:39
>>476 の書き込み全てが恥ずかしい。このスレに何しに来てんですか?
他人にお前こそと言う前に、議論するスレは他にありますので、そちらでやって下さい。
トリップ付けてまでバカ晒すなよ、ガキw

494:デフォルトの名無しさん
10/07/04 20:16:42
>>493
お前はコテハンかトリップつけろクズ

495:デフォルトの名無しさん
10/07/04 20:28:46
>>469
解答ありがとうございます。もしよろしかったら、使用する標準関数は、strncmp(),strcpy(),strlen()で書いてもらえないでしょうか?

496:デフォルトの名無しさん
10/07/04 20:47:34
少しも勉強しないんだな。それでいいのか若者

497:デフォルトの名無しさん
10/07/04 20:56:45
>>476
ありがとうございます。助かりました。

498:デフォルトの名無しさん
10/07/04 21:23:46
>>495
URLリンク(codepad.org)

499:481
10/07/04 21:37:31
>>483
どうもありがとうございます。納得できました。
ifの条件文に引っかからなくなる直前のxがsolutionとなる、という認識で大丈夫ですか?

500:デフォルトの名無しさん
10/07/04 23:15:12
>>478
ありがとうございます。

501:デフォルトの名無しさん
10/07/04 23:29:02
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
次式の値を返す関数を作成せよ。
f(x)=e^{-x} cos(2πx)
その関数を用いて0≦x≦3の間で0.1刻みで計算し、結果をリダイレクトで
ファイルに記録せよ。その結果をgnuplotでグラフにして示せ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月6日

よろしくお願いします。

502:デフォルトの名無しさん
10/07/05 00:35:56
だれか>>440お願いします。

503:デフォルトの名無しさん
10/07/05 04:14:21
>>440
【1】 (1) return ; (2) shift_down(heap, s, 2*s, n);
【2】 (2) swap(&heap[1], &heap[i]); (2) shift_down(heap, 1, 2, i-1);

酷いコードだ。
教育だからこそ、スマートなコードにしてくれることを切に願う。

504:デフォルトの名無しさん
10/07/05 05:16:09
[1]授業単元:プログラミング演習
[2]問題文;離散探索木(26進)と外部ハッシュ法の比較(探索関数)
 キー:   文字列
 使用ファイル: wordE100KR.dat
 上記ファイルを読み込み、通常の配列に格納する。
 この配列から要素を読み込み、分離連鎖法および離散探索木(26進)を生成する。
 格納された要素と同一の要素集合すなわち、配列に格納された用語集合に対して、1万語毎に探索を行い、照合回数、および探索時間を測定する。
 結果として、照合回数について20個のデータ(2×10)、同様に探索時間について20個のデータ(2×10)が得られる。
 これらのデータをExcelに格納し、表、グラフを作成し、分析せよ。
[3]環境
[3.1]OS;windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3] 言語:C/C++どちらでも可
[4]期限;7月8日

使用ファイルはURLリンク(rg550.hp.infoseek.co.jp)にあります。
丸投げで申し訳ありません。よろしくお願いします。

505:デフォルトの名無しさん
10/07/05 06:49:51
すみません、>>457もお願いします。

506:デフォルトの名無しさん
10/07/05 12:32:23
[1] 授業単元: C言語プログラミング
[2] 問題文メモリや実行時間の許容範囲内の、最大完全数、最大友愛数、および最大婚約数を算出プログラムを作成
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Microsoft Visualstadio 2003
[3.3] C言語・C++
[4] 期限: ([2010年7月6日12:00まで

よろしくお願いします。



507:デフォルトの名無しさん
10/07/05 16:52:56
>>461おねがいします

508:デフォルトの名無しさん
10/07/05 17:01:57
>>507
zipはめんどくさいので放置。
できれば1レス、最低でもWEBだけで確認できる様に書きなおせ。

509:デフォルトの名無しさん
10/07/05 17:03:46
>>506
> 許容範囲内
とは誰が許容する範囲内なんだ。
具体的に書きなおせ。

510:デフォルトの名無しさん
10/07/05 17:50:36
最大友愛数、最大婚約数…

511: ◆QZaw55cn4c
10/07/05 18:29:52
>>501
URLリンク(codepad.org)

512:デフォルトの名無しさん
10/07/05 20:24:06
>>507
問題文の

確率指定 p

って何?>

513:デフォルトの名無しさん
10/07/05 20:28:32
あれだけISOの標準スタイルについて述べられていたのに未だに
int main() 笑 の奴がいるとかw

514: ◆QZaw55cn4c
10/07/05 20:28:45
>>457
>>505
URLリンク(codepad.org)

515: ◆QZaw55cn4c
10/07/05 20:34:19
>>513
スレリンク(tech板:101番) で述べられ済み。

ISO/IEC 9899TC2
6.7.5.3 Function declarators (including prototypes)
14
An identifier list declares only the identifiers of the parameters of the function. An empty
list in a function declarator that is part of a definition of that function specifies that the
function has no parameters.
とあり、関数の定義のときには、空のリストは no parameters である。
すなわち引数が void の場合と等価であり、int main() は int main(void) と同じ。

516:デフォルトの名無しさん
10/07/05 20:36:40
>>513
void main()でも別に構わんぞ
コンパイル通ればいいんだよ

517:デフォルトの名無しさん
10/07/05 20:45:25
>>516
これには異論があり。
個人的には、int main() でコンパイルできる環境で、main() が引数をかえさない、という main() 側の都合で void main() と宣言するのには疑問がある。

518:デフォルトの名無しさん
10/07/05 20:51:48
ま~たこの話題かw
ちょっと前にもどっかのスレで泥沼化してただろう?
だれか過去ログはっておやり。

519:デフォルトの名無しさん
10/07/05 20:53:34
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): 四則演算と平方根を求める事が出来る電卓プログラムを作成せよ.
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン:visual C++ 2008
 [3.3] 言語: C++
[4] 期限: 2010年7月7日22:00頃まで
[5] その他の制限: 数学関数等は利用不可,関数ライブラリは標準入出力ライブラリ stdio.h のみを利用可

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

math.h等の利用が出来ないため平方根はニュートン法により求めるプログラムを使用したいと思っています.
URLに記載した二つのプログラムを組み合わせて上記の条件を満たすような電卓プログラムを作りたいのですが,
私なりに見よう見まねで組み合わせて見たのですが,知識が足りず平方根を求める動作が働きません.
根本的に間違っている可能性もありますが,どなたか修正点を教えて頂けると幸いです.
よろしくお願いいたします.




520:デフォルトの名無しさん
10/07/05 20:55:25
あのな、isoだかなんだか知らんが、そんなもんただの標準だろ。
守らなきゃいけないルールじゃない。
単にコンパイラやソースが標準に沿っていますということを表明できるだけの意味しかないんだよ。
この世にはmainが存在しないプログラムをCで書くケースだって腐るほどあるし、
エントリ関数がWinMain()になっている世界で最も普及したコンパイラだってあるんだぞ。

521:デフォルトの名無しさん
10/07/05 20:58:04
>>518
このスレの先々代(135)、3月~4月にかけて宿題が欠乏し宿題解き人が暇になったために泥沼化した。
結論としては、規格の上では void main() も int main() も合法だったかと。

522:デフォルトの名無しさん
10/07/05 21:01:57
>>521
情報トンクス! ていうかこのスレだったかw

523:デフォルトの名無しさん
10/07/05 21:30:58
[1] 授業単元: Visual Studio 入門
[2] 問題文 3問ほどあるのでリンクを
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windowsvista 
[3.2] Microsoft Visual Studio 2008
[3.3] 言語:c言語
[4] 期限:なし
[5] 制限:なし
問題が多いのですがひとつお助けください

524:デフォルトの名無しさん
10/07/05 22:14:53
>>523
gccでの確認になりますが。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

525:デフォルトの名無しさん
10/07/05 22:23:17
x(1)、 x(2)、・・・とaは2000次元ベクトルとします。

N
Σ || x(n)-a || / N   || ・|| はノルム。

を高速に計算する方法わかりますか。

526: ◆QZaw55cn4c
10/07/05 22:30:05
>>523
URLリンク(codepad.org)
URLリンク(codepad.org)
URLリンク(codepad.org)

527:デフォルトの名無しさん
10/07/05 22:32:14
X=(x, y) Y=(z, w) A=(a ,b) とすると、

||X-A|| + ||Y-A|| = SQRT( (x-a)^2 + (y-b)^2 ) + SQRT( (z-a)^2 + (w-b)^2 )

を高速で計算したいという訳なんです。

2000次元だと、かけ算とSQRTが相当あって時間掛かりますが。
短縮する方法ありますか。

528:527
10/07/05 22:35:42
面倒なので、

||X-A||  = |x-a| + |y-b| と定義してしまうか。

すると、 |x-a| + |y-b| + |z-a| + |w-b| を求めるだけで簡単。

529: ◆QZaw55cn4c
10/07/05 23:23:14
>>519
URLリンク(codepad.org)
キー入力の具合はこれでいいですか?

530:デフォルトの名無しさん
10/07/05 23:24:23
◆QZaw55cn4c はもりもりがんばってるなぁ。
定期的に叩かれるみたいだけどがんばれ。

531:デフォルトの名無しさん
10/07/05 23:29:13
やってることは怠け者の成績を上げてやることだけどなw

532:デフォルトの名無しさん
10/07/05 23:31:38
>>530
叩いてもらえる、というのは、コードをみてくださっている、というありがたい反応ですから、ウェルカムです。
ちょっと前の、あいかわらず頭の変な奴にかかわってしまったのは失敗ですが、スルーすることにしました。
でも今日はおやすみなさいです。

533:デフォルトの名無しさん
10/07/05 23:51:43
>>532
じゃあたまにのぞいて気になるとこあったらレスすることにするよ。
っても地力ぼちぼちありそうに見えるんで、重箱の隅ぐらいしか突っ込めないかも。

534:デフォルトの名無しさん
10/07/05 23:53:45
[1] 授業単元: Visual Studio 入門
[2] 問題 半乱順列の関数作成
[3] 環境 指定なし
[3.1] OS:Windowsvista 
[3.3] 言語:c言語
[4] 期限:なし
[5] 制限:なし
半乱順列の関数を作ってください!お願いします!!

535:デフォルトの名無しさん
10/07/05 23:54:08
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):data.txtに書かれている氏名と成績を読み込み、氏名を2次元配列、成績を1次元配列に格納せよ。
[3] 環境
 [3.1] OS:Ubuntu 10.4
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限:7/7まで
[5] その他の制限:
data.txtの中身は
aoyama 36
oomura 42
sugiyama 50
morita 14

となっております。

536:デフォルトの名無しさん
10/07/06 00:06:46
>>535
>>476 は読み込んだあとソートしていますが、そのソート部分を削ればご所望のコードになるかと。

537:535
10/07/06 00:18:01
>>536
似た問題があったのですね。ありがとうございました。

538:デフォルトの名無しさん
10/07/06 16:11:53
>>529
お答え頂きありがとうございます。
動作は申し分無いのですがこのプログラムだとstdio.h以外にmath.h等の関数ライブラリが見られます。
すみませんがstdio .h のみで動作することを前提でお願いしたいと思います。
また、授業では本当に基礎的な内容のみしか扱っておらず、ネットや本を見て勉強している段階ですので、なるべく基本的な分かりやすい形でプログラムを組んでいただけたら幸いです。

539:デフォルトの名無しさん
10/07/06 16:15:25
このとき、穏やかな表情の>>529の脳裏に、
慇懃無礼、という言葉が頭をよぎったという。

540:デフォルトの名無しさん
10/07/06 16:17:37
>>538
せっかく答えてくれた人に喧嘩売るのはやめようね

541:デフォルトの名無しさん
10/07/06 16:48:46
>>538
ソースよく読めよ

542:デフォルトの名無しさん
10/07/06 16:53:32
はいはい、もう答えなくて結構です

543:デフォルトの名無しさん
10/07/06 17:44:44
int main() 笑 なんて使う奴はスルーしてヨシ!

544:デフォルトの名無しさん
10/07/06 18:04:56
538です。

せっかく解答をして下さったにも関わらず、不快感を与える表現をしてしまいすみませんでした。
if 0とend ifの意味を理解していませんでした。
こちらの理解不足で本当に失礼しました。



545:デフォルトの名無しさん
10/07/06 18:17:15
◆QZaw55cn4c は古い人間でしょ?コードの書き方でバレバレ

546:デフォルトの名無しさん
10/07/06 18:26:10
>>545
どの辺が古いの?

547:デフォルトの名無しさん
10/07/06 18:54:59
>>546
無理しないで良いよ、爺ちゃん。

548:デフォルトの名無しさん
10/07/06 19:01:50
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):

#include <stdio.h>typedef struct { char *fname, *mname, *lname; int byear, dyear;
} writer_t;

writer_t writers[] = { {"Edward", "Elmer", "Smith", 1890, 1965},
{"Robert", "Anson", "Heinlein", 1907, 1988},
{"Arthur", "Charles", "Clarke", 1917, 2008},
{"Isaac", " ", "Asimov", 1920, 1992},
{"Raymond", "Douglas", "Bradbury", 1920, 0}};
int main(void){ int i; char s[10];
for (i = 0 ; i < sizeof(writers)/sizeof(writer_t) ; i++){
printf("%c. ", writers[i].fname);
if (writers[i].mname[0] != "\0") {
printf("%c. %-10s", writers[i].mname[0], writers[i].lname); }
else { printf("%-13s", writers[i].lname); }
printf("%4s - ", writers[i].byear);
if (dyear > 0){ printf("%4s", writers[i].dyear); } printf("\n"); } return 0;}
上記のエラープログラムを正しく直す。
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2010年7月28日20:00まで
[5] その他の制限: なるべく簡潔に(新しい変数を定義したり)お願いします。見づらいですが改行が多いと怒られるので・・

549:デフォルトの名無しさん
10/07/06 19:09:55
お・に・い・ちゃ・ん、じゃなくて、お・じ・い・ちゃ・ん ♥

550: ◆QZaw55cn4c
10/07/06 19:11:24
>>538
#if 0
から
#endif
までの間を削除してください。
わかりやすさについては、これが限界です。

551:デフォルトの名無しさん
10/07/06 19:12:43
>>543
スレリンク(tech板:101番) で述べられ済み。

ISO/IEC 9899TC2
6.7.5.3 Function declarators (including prototypes)
14
An identifier list declares only the identifiers of the parameters of the function. An empty
list in a function declarator that is part of a definition of that function specifies that the
function has no parameters.
とあり、関数の定義のときには、空のリストは no parameters である。
すなわち引数が void の場合と等価であり、int main() は int main(void) と同じ。

552:デフォルトの名無しさん
10/07/06 19:15:17
>>545
確かに古いといわれたらそうかもしれません。
func(a, b)
int a;
char *b;
{
...
return 0;
}
と書いていたころもありました。
setq とか car とか cdr とかを乱発していたこともあります。

553:デフォルトの名無しさん
10/07/06 19:17:21
>>494
お前がコテハンかトリップつけろ塵

554: ◆QZaw55cn4c
10/07/06 19:18:17
>>544
いえいえ、全然。

555:デフォルトの名無しさん
10/07/06 19:22:15
>>553-554
コテハン付けたり、外したり大変だなw

556:デフォルトの名無しさん
10/07/06 19:24:57
>>555
専用ブラウザを使っていますから、簡単ですよ。

557:デフォルトの名無しさん
10/07/06 19:31:06
>>547
>setq とか car とか cdr とかを乱発していたこともあります。
横レスだけど、そのネタはww
[H|T] -> とか言い出さないようにw>>552

まあ、コード書けない煽りは無視で行きましょう。

558: ◆GmgU93SCyE
10/07/06 19:34:15
>>548
URLリンク(codepad.org)

559:デフォルトの名無しさん
10/07/06 19:35:47
>>552
その頃は
return (0);
と書いてたりしないか?

560:デフォルトの名無しさん
10/07/06 19:37:06
>>557
処理系をCで書く、という解説本を集めているんです。でも、いまんところ2冊しかみつかっていません。
やっぱり、そんな本は売れないんですかね。おもしろいんですけれどね。

561:デフォルトの名無しさん
10/07/06 19:38:44
>>559
しまった!

562:デフォルトの名無しさん
10/07/06 19:39:30
>>560
訳されてない本が沢山あるよ

563:デフォルトの名無しさん
10/07/06 19:51:18
>>560,562
Cに限らず、技術資料とかサンプルは英語の方が多いよね。
Google codeもよく使ったなあ。

564:デフォルトの名無しさん
10/07/06 19:51:18
お爺ちゃんお口くちゃ~い、クソースなんて書くなよw

565:デフォルトの名無しさん
10/07/06 19:53:06
>>562
洋書まではあさる実力がない‥‥‥。でもながめてみたいもの。
著者名でよければ教えてください。

566:デフォルトの名無しさん
10/07/06 20:06:48
>>558
ありがとうございました~

567:523
10/07/06 20:42:03
>>526
>>524
回答ありがとうございます。
 まさか一日かからずに終わらせてくれるとは思いませんでした。


568:デフォルトの名無しさん
10/07/06 21:09:00
C言語と関係無いじゃん。
OSやコンパイラを作るって事だろ。

569:デフォルトの名無しさん
10/07/06 22:11:38
コインの種類(例えば、1円、5円、8円、10円、15円)に対して、金額を入力すると
その金額を払うのに最も枚数が少なくて済むコインの出し方を出力してくれる
プログラム。
例えば、23円と入力すると、「10円1枚・8円1枚・5円1枚の計3枚」と出力できるプログラムです。
ただし、「10円2枚・1円3枚の計5枚」は「最小」ではないため、上の出力を優先します。
入力された金額が負の場合は、「Error」を出力するようにします。
そこで、下のようなプログラムを書いたのですが、うまく起動しません。
このプログラムを、上の出力例のように出力してくれるように書きなおしてくれませんか??
下のプログラムでは合計枚数を出力する部分しか書いてません。
ちなみに、再帰を使ってプログラミングお願いします。

570:デフォルトの名無しさん
10/07/06 22:14:36
569質問者のプログラム(続き)
#include<stdio.h>
int coinfunc(int *C, int k, int M){

/* *C・・・コインの種類の配列(小さい順にソートされているとする)
M・・・支払う金額/
k・・・コインの種類の数 */

if(M == 0){ return(0); }
else if(M < 0){ return(Error); }
else{
int min = 100000;
int i;
for(i = 0; i <= k - 1; i++){
int tmp = coinfunc(C, k, M - C[i]);
if(tmp < min){ min = tmp; }
}
return(min + 1);
}
}
int main(){
int C[5] = {1,5,8,10,15};
int k = 5;
int M;
printf("支払う金額M=");
scanf("%d",&M);
printf("%d\n",coinfunc(C, k, M));
}


571: ◆QZaw55cn4c
10/07/06 22:36:25
>>506
URLリンク(codepad.org)
許容範囲云々は考えていません。

572:デフォルトの名無しさん
10/07/06 22:38:55
明日までにある宿題あるんですけど頼めますかね?
すぐ貼ります

573:デフォルトの名無しさん
10/07/06 22:40:44
頼めます

574:デフォルトの名無しさん
10/07/06 22:42:55
>>572
ここまでは作った
#include<stdio.h>

int main(void)
{
return 0;
}

575:デフォルトの名無しさん
10/07/06 22:54:22
[1] 授業単元:プログラミング演習
[2] 問題文:このプログラムを拡張して、個人ごと平均点と科目ごとの平均点を小数点以下1桁まで
表示できるプログラムを作成せよ。

#include <stdio.h>
main()
{
int score[4][3]:
int total[4]:
int i , j ;
for (i = 0; i < 4; i++) {
total[i] = 0 ;
printf("No . %d\n" , i + 1);
for( j = 0 ; j < 3; j++) {
printf("score %d : " , j + 1) ;
scanf("%d", &score[i][j]);
total[i] += score[i][j];
}
}
printf("\n");
printf("No . | s1 s2 s3 | total\n");
printf("---+----------+------\n");
for ( i = 0; i < 4; i++) {
printf("%2d | " , i + 1) ;
for( j = 0; j < 3; j++) {
printf("%3d " , score[i][j]);
}
printf("| %4d\n" , total[i]) ;
}
}

576:デフォルトの名無しさん
10/07/06 22:56:36
連投すみません
[3]環境
 Windows、VC6.0、C
[4]期限
 7月7日
[5]配列まで

よろしくお願いします。

577:デフォルトの名無しさん
10/07/06 23:36:32
>>570 再帰は駄目だな、100円でいっぱいいっぱいだw
#include<stdio.h>
#include <limits.h>

int coinfunc(int *c, int k, int m)
{
    int i, tmp, min = INT_MAX;
    if (m == 0)
        return 0;
    else if (m < 0)
        return -1;
    for (i = 0; i < k; i++) {
        tmp = coinfunc(c, k, m - c[i]);
        if (tmp < 0)
            continue;
        else if (tmp < min)
            min = tmp;
    }
    return min + 1;
}

int main(void)
{
    int m, c[] = {1, 5, 8, 10, 15};
    while (scanf("%d", &m) != 1)
        scanf("%*[^\n]");
    printf("%d\n", coinfunc(c, sizeof(c)/sizeof(*c), m));
    return 0;
}

578:デフォルトの名無しさん
10/07/06 23:38:48
低額は計算済みにしておいて、再帰使えば。

579:デフォルトの名無しさん
10/07/06 23:45:42
結局イタチごっこだろ
じゃあ非再帰ならいいのかと思って試したら、100000000円くらいが限界だった(メモリ確保できず)
割り算で出来る貨幣制度にしろってこった

580:デフォルトの名無しさん
10/07/06 23:50:38
コインに関する問題への解答ありがとうございます。
>>577さんありがとうございます。
>>579さん、非再帰の場合のプログラムをのせてください。お願いします。

581:デフォルトの名無しさん
10/07/06 23:53:49
>>580
URLリンク(kansai2channeler.hp.infoseek.co.jp)

582:デフォルトの名無しさん
10/07/06 23:56:49
最終的には、低額の計算だけにできるだろ。
基本は、一番高いコインで、埋めていき、最後(低額)だけ考慮する。

583:デフォルトの名無しさん
10/07/06 23:59:29
予想では、コインの最小公倍数になるまでは最大値のコインで支払って
最小公倍数を下回る所になったら、組み合わせを考慮する。

584:デフォルトの名無しさん
10/07/07 00:01:27
<<579さん、ありがとうございます。
ここで、第2問↓↓
今も上で議論されていますが、このプログラム(<<577)の効率の解析をしてください。
「ある重要な演算1つに注目し、その実行回数(最悪の入力時における)を、入力
サイズを表すパラメータの関数として表す。最終的にはT(n,...)=O(n^2×・・・)
のような評価式を求めてください。」できれば、その式を求める過程をお願いします。

585:デフォルトの名無しさん
10/07/07 00:06:30
>>568
ええ、lisp 用として。

586:デフォルトの名無しさん
10/07/07 00:07:51
O(1)だろ。

587:デフォルトの名無しさん
10/07/07 00:08:29
>>582
確かにそれで大分削れそうだな

588:デフォルトの名無しさん
10/07/07 00:08:29
>>575
分かる人これも頼みます

589:デフォルトの名無しさん
10/07/07 00:26:32
>>583
#include<stdio.h>
#include<stdlib.h>
int gcd(int a, int b){ int c; while((c=a%b)) a=b, b=c; return b; }
int lcm(int a, int b){ return a/gcd(a, b)*b; }
void coin_func_r(int *result, int c[], int m, int n){
int i;
if(m<0 || c[0]<0 || (*result>0 && n>=*result)) return;
if(m==0){
if(*result<0 || *result>n) *result=n;
return;
}
for(i=0;c[i]>0;i++) coin_func_r(result, c+i, m-c[i], n+1);
}
int coin_func(int c[], int amount){
int i, lcm_all=1, result=-1, rest, c_max=1;
for(i=0;c[i]>0;i++){
lcm_all=lcm(lcm_all, c[i]);
if(c_max<c[i]) c_max=c[i];
}
rest=amount%lcm_all;
coin_func_r(&result, c, rest, 0);
return result+(amount-rest)/c_max;
}
int main(int argc, char *argv[]){
int c[]={15, 10, 8, 5, 1, -1}, x=100, result=-1;
if(argc==2) x=atoi(argv[1]);
result=coin_func(c, x);
printf("%d\n", result);
return 0;
}

590:デフォルトの名無しさん
10/07/07 00:36:26
>>589
とてもいい感じだが、コインの最小公倍数の大きさに極めて依存

- int c[]={15, 10, 8, 5, 1, -1}, x=100, result=-1;
+ int c[]={777, 128, 100, 15, 10, 8, 5, 1, -1}, x=100, result=-1; // tekitou
として 100000をコマンドライン引数で与えると帰ってこねえ

最小公倍数よりも範囲を狭くする方法はありそうだけどなぁ

591: ◆QZaw55cn4c
10/07/07 00:37:41
>>575
URLリンク(codepad.org)
表示具合の微調整はお願いいたします。

592:デフォルトの名無しさん
10/07/07 00:40:32
>>591
ありがとうございます!
本当に助かりました。

593:デフォルトの名無しさん
10/07/07 01:07:22
>>503
ありがとうございました!

594:デフォルトの名無しさん
10/07/07 01:58:42
>>551
そこでも述べられているがそれTC2

595:デフォルトの名無しさん
10/07/07 02:06:02
[1] 授業単元:プログラミング演習
[2]Q1. 問題文:4つの整数を入力し、それらを要素とする行列を求め、その値を以下のような
形式で表示するプログラムを作成せよ。

例 100 20 30 40と入力すれば
  | 100 20 | =3400
| 30 40 | と表示される

Q.2ディスカウントストアでどの商品でも5個以上買えば1割引、10個以上で2割引、20個以上で
4割引となっていた。キーボードから買う商品の単価と個数を入力し、合計金額を計算するプログラミングを
作成せよ。

[3]環境
 Windows、VC6.0、C
[4]期限
 7月8日
[5]配列よりちょっと前

Q.1に関してはできそうだったのですが、バーが表示されないために却下となってまいました。
皆さんにとっては大変簡単だと思いますがよろしくお願いします。
初心者ですみません。

596:デフォルトの名無しさん
10/07/07 02:10:06
>>551
ちがう。そういうことじゃない。ISO、ANSI準拠はプログラムの開始、主体となる関数を
mainとし、引数がある時と無い時でどう記述するか、標準スタイルを提唱している。
ただし、それはあくまでも 標準スタイル であり、各自の環境によって準拠しなくても構わない。

597:デフォルトの名無しさん
10/07/07 02:12:37
また、main関数の戻り値はint型とする。これは散々既出だから議論する必要なし。
自分はどうこうすると、根拠も無く意味も分からないスタイルを用いると
他者とコードをやり取りする場合は、弊害が起こるかもしれないが。
そもそも、ここでは個人的なやり取り、スタイルが通用するが
C言語は何も個人が私用で使うだけでなく、世界に通じて商業用としても
普通に用いられている。それは工業規格も同じ事。だから少しでも
幅広く通用するスタイル、規格というのが必要になる。
ちなみに、CDやDVDなどもISO準拠で世界で通用する方式、規格が使われている。

598:デフォルトの名無しさん
10/07/07 02:25:18
さらに、C++では引数が無い場合は int main() としている。
あくまでも ANSI、ISO準拠の標準スタイルの話。個人的なスタイルには言及せず。

599:デフォルトの名無しさん
10/07/07 05:44:31
>>590
最大のコインを選ぶか選ばないかのときだけやればいい。
777円が最大なら 777*2-1以上までは777円を選んでおいてokのはず。
一枚選べる最大価格は777*2-1円だからこの辺から調べる。

600:デフォルトの名無しさん
10/07/07 06:08:18
コインが100円と99円としたとき。
297円 = 99*3円で100円を選ぶと失敗するから
599は間違えだな。
やっぱどのコインの倍数でもある最小公倍数がよさげか。

601:デフォルトの名無しさん
10/07/07 12:20:52
>>582
>最終的には、低額の計算だけにできるだろ。
>基本は、一番高いコインで、埋めていき、最後(低額)だけ考慮する。

>>11を改造させてもらいました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

602:デフォルトの名無しさん
10/07/07 13:24:29
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: ([2010年07月10日22:00まで]
[5] その他の制限: よろしくおねがいします!


603:デフォルトの名無しさん
10/07/07 15:23:20
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
10人の成績を入力し、その順位を成績と共に表示したい。以下の考えに基づいたプログラムを作成せよ。

1. 2次元配列s[10][2]を用意する。
2. i=0~9のfor文を用いて、s[i][0]に成績入力する。
3. s[0][0]とs[j][0], j=0~9を比較し、s[0][0]より大きい数値の個数nを考える。
  その個数+1が成績順位になるので、s[0][1]にn+1を代入する。
4. 同様の操作をs[i][0]にi=0~9に対して行えば、その成績順位がs[i][1]として求められるので、
  あとは成績と共に表示すればいい。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (VC 6.0)
 [3.3] 言語: C
[4] 期限: ([2010年07月9日15:00まで]
[5] その他の制限: 初心者で申し訳ないですが頼みます。

604:デフォルトの名無しさん
10/07/07 15:25:25
>>603
>>421,427

605:デフォルトの名無しさん
10/07/07 15:28:54
>>604
おお同じ人がいたとはw
ありがとうございます!

606:デフォルトの名無しさん
10/07/07 17:49:16
>>604
これC++用だからできなかったorz

607:デフォルトの名無しさん
10/07/07 18:00:51
>>606
URLリンク(codepad.org)

608:デフォルトの名無しさん
10/07/07 18:15:29
>>607
ありがとうございます。
感謝感謝です。

609:デフォルトの名無しさん
10/07/07 18:20:35
>>595
暇ならでいいんでこれも頼みます

610:デフォルトの名無しさん
10/07/07 18:35:12
>>609
Q2.
URLリンク(codepad.org)

611:デフォルトの名無しさん
10/07/07 18:42:57
>>610
ありがとうございます。

612:デフォルトの名無しさん
10/07/07 19:14:20
>>609
Q1
URLリンク(codepad.org)

613:デフォルトの名無しさん
10/07/07 19:26:52
>>550
ありがとうございました。
プログラムをしっかり理解出来るようもっと知識を深めたいと思います!

614:デフォルトの名無しさん
10/07/07 19:29:25
>>612
ありがとうございます!
助かりました。

615:デフォルトの名無しさん
10/07/07 20:57:40
>>612
重くて開かないですね

616:デフォルトの名無しさん
10/07/07 21:24:39
見れました!

617:デフォルトの名無しさん
10/07/07 21:58:05
独自のライブラリも悪くは無いが 標準ライブラリ で済むならそれでおk

618:デフォルトの名無しさん
10/07/07 22:39:34
【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
円形テンプレートマッチングのプログラムを作成せよ。

白い楕円が複数書いてあるBMP画像を読み込み(適当にペイントで作成)画像左下からラスタ走査し、円形テンプレートマッチングをするプログラムを作成せよ。
円形テンプレートはサイズA~Bまで変化させ、一致率(円形テンプレートの円周上に一致する白画素と一致している数/円形テンプレート円周のプロット数、円形テンプレート内の黒画素に一致している黒画素数/円形テンプレート内の黒画素数)
上位5つを色を変えて描画せよ。

また、一致率上位5つの半径、一致率、座標(画像の左下をx=0、y=0とする)をdos窓上に標示せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語:C++
[4] 期限:2010年7月10日まで
[5] その他の制限:

よろしくお願いします

619:デフォルトの名無しさん
10/07/07 23:37:51
[1] 授業単元:Cプログラミング演習
[2] 問題文(含コード&リンク):
問題1. 10進数1234を2進数で表示するプログラムを作成せよ。
問題2. 変数の下位16ビット中の1のビット数を数える関数 int bit_count(int x) を作成せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual Stduio 2008
 [3.3] 言語:C
[4] 期限:2010年7月9日まで
[5] その他の制限:無

よろしくお願いします


620:デフォルトの名無しさん
10/07/07 23:53:18
#include <stdio.h>

int main()
{
int a, b, c, d;

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

int value= a*d - b*c;


printf( "| %d %d | =%d\n", a, b);
printf( "| %d %d |\n", c, d );

return 0;
}

エラー
z:\プログラミング演習\sample\sample\sample01c.c(12) : error C2143: 構文エラー : ';' が 'type' の前に必要です。
cl.exe の実行エラー

どこを直せば良いのですか?

621:デフォルトの名無しさん
10/07/07 23:54:42
#include <stdio.h>

int main()
{
int unit_price; // 単価
int num; // 個数

printf( "買う商品の単価: " );
scanf( "%d", &unit_price );

printf( "個数: " );
scanf( "%d", &num );

int total_price = unit_price * num;

// 小数を使うと誤差がでるので使わない
if ( num >= 20 )
total_price = total_price*6/10;
else if ( num >= 10 )
total_price = total_price*8/10;
else if ( num >= 5 )
total_price = total_price*9/10;

printf( "合計金額: %d", total_price );
}

エラー
Z:\プログラミング演習\sample\ensyu8\ensyu8.c(14) : error C2143: 構文エラー : ';' が 'type' の前に必要です。
Z:\プログラミング演習\sample\ensyu8\ensyu8.c(18) : error C2065: 'total_price' : 定義されていない識別子です。
cl.exe の実行エラー

これもお願いします。

622:デフォルトの名無しさん
10/07/07 23:58:40
>>621
変数の宣言場所をブロックの先頭に移動

623:デフォルトの名無しさん
10/07/07 23:59:05
#include <stdio.h>
const int n = 10;
int main()
{
int i, j;
int s[n][2];
for (i = 0; i < n; i++) {
printf( "%d: ", i );
scanf( "%d", &s[i][0] );
}

for (i = 0; i < n; i++) {
s[i][1] = 0;
for (j = 0; j < n; j++) {
if (s[i][0] < s[j][0])
s[i][1]++;
}
s[i][1]++;
}
for (i = 0; i < n; i++)
printf( "s[%d]: %d\n", i, s[i][1] );
return 0;
}
/* end */

Z:\プログラミング演習\sample\sample33\ensyu33.c(7) : error C2057: 定数式が必要です。
Z:\プログラミング演習\sample\sample33\ensyu33.c(7) : error C2466: サイズが 0 の配列を割当てまたは宣言しようとしました。
Z:\プログラミング演習\sample\sample33\ensyu33.c(7) : error C2133: 's' : サイズが不明です。
cl.exe の実行エラー

すみませんこれも駄目でした。
お願いします。

624:デフォルトの名無しさん
10/07/08 00:01:53
>>622
ありがとうございます。
しかし警告が出てしまいました。

Z:\プログラミング演習\sample\ensyu8\ensyu8.c(7) : warning C4700: 値が割り当てられていないローカルな変数 'unit_price' に対して参照が行われました。
Z:\プログラミング演習\sample\ensyu8\ensyu8.c(7) : warning C4700: 値が割り当てられていないローカルな変数 'num' に対して参照が行われました。

625:デフォルトの名無しさん
10/07/08 00:18:06
もしかして↓みたいな感じにしてない?

int unit_price; // 単価
int num; // 個数
int total_price = unit_price * num;


626:デフォルトの名無しさん
10/07/08 00:19:39
>>625
なってます。
初心者ですみません。
正しいやり方教えてください。

627:デフォルトの名無しさん
10/07/08 00:27:29
int unit_price; // 単価
int num; // 個数
int total_price;

printf( "買う商品の単価: " );
scanf( "%d", &unit_price );

printf( "個数: " );
scanf( "%d", &num );

total_price = unit_price * num;


628:デフォルトの名無しさん
10/07/08 00:30:08
>>627
できました!
どうもありがとうございました。

629:デフォルトの名無しさん
10/07/08 00:34:44
>>620
自己解決できました。

630:デフォルトの名無しさん
10/07/08 02:22:04
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (visual stadio 2008)
 [3.3] 言語: (C)
[4] 期限: [2010年07月08日13:00まで]
[5] その他の制限:ほんの入門級なので、if,for,whileぐらいしか使えません
あと配列は禁止

概要:数値を1つ(2~9の数字)入力し、その個数分の"*"を1辺とする
完成図(*=★、空白=☆):

3を入力した場合
★★★
☆☆★
★★★

9を入力した場合
★★★★★★★★★
☆☆☆☆☆☆☆☆★
★★★★★★★☆★
★☆☆☆☆☆★☆★
★☆★★★☆★☆★
★☆★☆☆☆★☆★
★☆★★★★★☆★
★☆☆☆☆☆☆☆★
★★★★★★★★★

ーーーーーーーーーーーーーーーー
自分の考え方で進んでみましたが、ifの条件式の部分が分からなくて
助力を求めます

631:デフォルトの名無しさん
10/07/08 07:27:39
>>630
URLリンク(kansai2channeler.hp.infoseek.co.jp)
奇数のみ出力できるモノで良ければ

632:デフォルトの名無しさん
10/07/08 10:01:13
[1] 授業単元:C・プログラミング
[2] 問題文(含コード&リンク):
下記のGPA計算のプログラムを読み込んだ数値を入れる配列を指すポインタを用いて書き換えよ.ただし,配列は1次元配列を用い,また関数を使う必要はない.
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] Windows 7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2010年7月10日迄
よろしくお願いします。

633:デフォルトの名無しさん
10/07/08 10:51:09
>>632
void input(int sei[][N2], int n);
↓↓↓↓
void input(int (*sei)[N2], int n);

for(i=0; i<n; i++){
↓↓↓↓
int (*p)[N2];
for (p = sei; p < sei + n; p++) {

sei[i][2]= 0;
↓↓↓↓
(*p)[2]= 0;

634:デフォルトの名無しさん
10/07/08 11:18:09
C言語プログラミング(再帰)について質問です。
コインの種類(例えば、1円、5円、8円、10円、15円)に対して、金額を入力すると
その金額を払うのに最も枚数が少なくて済むコインの出し方を出力してくれる

プログラムを書こうと思っています。
例えば、23円と入力すると、「10円1枚・8円1枚・5円1枚の計3枚」と出力できるプログラムです。
ただし、「10円2枚・1円3枚の計5枚」は「最小」ではないため、上の出力を優先します。
そこで、下のようなプログラムを書いたのですが、合計枚数を出すまでしかできませんでした。
これを、それぞれのコインが何枚必要か出力するように書き換えてください!お願いします。

ソースコードは次の書き込みで。

635:デフォルトの名無しさん
10/07/08 11:19:16
#include<stdio.h>
#include<limits.h>

int coinfunc(int *c, int k, int m)
{
int i, tmp, min = INT_MAX;
if (m == 0)
return 0;
else if (m < 0)
return -1;
for (i = 0; i < k; i++) {
tmp = coinfunc(c, k, m - c[i]);
if (tmp < 0)
continue;
else if (tmp < min)
min = tmp;
}
return min + 1;
}

int main(void)
{
int m, c[] = {1, 5, 8, 10, 15};
printf("m=?\n");
while (scanf("%d", &m) != 1)
scanf("%*[^\n]");
printf("%d\n", coinfunc(c, sizeof(c)/sizeof(*c), m));
return 0;
}

636:デフォルトの名無しさん
10/07/08 11:21:49
23円は15と8じゃダメですか? ><;

637:デフォルトの名無しさん
10/07/08 11:28:10
>>636
すいません!!23円のときは15と8が最小ですね。。

638:デフォルトの名無しさん
10/07/08 11:57:17
>>634
URLリンク(codepad.org)

639:デフォルトの名無しさん
10/07/08 12:01:39
性帝トーマス△

640:デフォルトの名無しさん
10/07/08 12:17:43
>>638
33円 -> 15円1枚、10円1枚、8円1枚 が最小。

641:デフォルトの名無しさん
10/07/08 12:26:46
1 #include<stdio.h>
2 #include<string.h>
3 typedef struct K{
4 char* name;
5 int tensuu;
6 }K;
7 int main(void)
8 {
9 FILE *fp;
10 char str[256];
11 char *p1,*p2;
12 int i,j,n;
13 double d,e,f;
14 int a[250];
15 char b[250][250];
16 int x;
17
18 if((fp=fopen("seiseki.txt","r"))==NULL){
19 printf("ファイルがありません\n");
20 return -1;
21 }else{
22 /*while(fgets(str,256,fp)!=NULL){
23 p1=strtok(str," ");
24 p2=strtok(NULL," ");
25 a.name=p1;
26 a.tensuu=atoi(p2);*/
27 i=0;
28 while(fscanf(fp,"%s %d",&b[i],&a[i])!=EOF){
29 i=i+1;



642:デフォルトの名無しさん
10/07/08 12:28:08
30 }
31 n=i;
32 printf("----------入力データ------------\n");
33 for(i=0;i<n;i++){
34 printf("%s %d\n",b[i],a[i]);
35 }
36 for( j=0; j<n; j++){ /* 未処理データの先頭 */
37 for( i=1; i < n-j; i++){
38 if( a[i-1] < a[i] ){ /* 隣り合うデータの交換*/
39 x = a[i-1];
40 a[i-1] = a[i];
41 a[i] = x;
42
43 strcpy(str,b[i-1]);
44 strcpy(b[i-1],b[i]);
45 strcpy(b[i],str);
49 }
50 }
51 }
52
53 }
54 printf("----------出力データ------------\n");
55 for(i=0;i<n;i++){
56 printf("%s %d\n",b[i],a[i]);
57 }
58 fclose(fp);
59 return 1;
60 }
61


643:デフォルトの名無しさん
10/07/08 12:29:05
ファイル処理の応用
switch 文を使用して
1. データファイルの新規作成
2. データファイルの追加作成
3. データファイルの読み込みと表示
4. 終了
をメニュー形式で処理するプログラムを作成せよ。
 ファイル名はキーボードから入力する。
 1~4の処理はユーザ関数として定義すること。
void data_write(void)
void data_append(void)
void data_read(void)
void the_end(void)
 1~4以外の数値が入力されたら再入力させること。
 switch 文については教科書 56 ページを参照すること。



644:デフォルトの名無しさん
10/07/08 12:31:22
1. 新規作成の実行例

********** 成績処理 ********* ← メニューの表示
ファイルの新規作成・・・・・1
ファイルの追加作成・・・・・2
ファイルの読み込みと表示・・3
終了・・・・・・・・・・・・4
← データ入力の誤り
処理番号を入力して下さい(1~4):9
********** 成績処理 *********
ファイルの新規作成・・・・・1
ファイルの追加作成・・・・・2
ファイルの読み込みと表示・・3
終了・・・・・・・・・・・・4
処理番号を入力して下さい(1~4):1
← ファイル名の入力
Input file name= abc.txt
name=?oota
tensuu=?10
oota 10
name=?yamada
tensuu=?50
yamada 50
name=? ← 入力の終了 Ctrl + D





645:デフォルトの名無しさん
10/07/08 12:33:27
2. 追加作成の実行例

********** 成績処理 *********
ファイルの新規作成・・・・・1
ファイルの追加作成・・・・・2
ファイルの読み込みと表示・・3
終了・・・・・・・・・・・・4
処理番号を入力して下さい(1~4):2

name=?isida
tensuu=?90
isida 90
name=?torii
tensuu=?70
torii 70
name=? ← 入力の終了 Ctrl + D

3. 読み込みと表示の実行例

********** 成績処理 *********
ファイルの新規作成・・・・・1
ファイルの追加作成・・・・・2
ファイルの読み込みと表示・・3
終了・・・・・・・・・・・・4
処理番号を入力して下さい(1~4):3
Input file name= abc.txt
oota 10
yamada 50
isida 90
torii 70



646:デフォルトの名無しさん
10/07/08 18:25:35
>>633
ありがとうございます。助かりました。


647:デフォルトの名無しさん
10/07/08 18:25:53
>>641-645
>>1

648:デフォルトの名無しさん
10/07/08 18:29:13
[1] 授業単元:
[2] 問題文(含コード&リンク):
2~9の数字を入力その数字に応じて図形を表示させる関数を作る
正方形 三角形 六角形 菱形 星 渦巻き
星と渦巻き以外できたからこの2つについて知りたい
例 7を入力したとき 左:渦 右:星

*******  *   *   *
         *    * *  *
*****  *     ***
*    *  *  *******
* ***  *     ***
*       *   *  *  *
*******  *   *   *
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: よくわからない 申し訳ないVS2008使ってる
 [3.3] 言語: C
[4] 期限: 2010年7月13日
[5] その他の制限: 配列は禁止

649:デフォルトの名無しさん
10/07/08 18:44:06
>>648
ほー。配列は禁止。

printf("*******  *   *   * \n");
printf("         *    * *  * \n");
printf("*****  *     *** \n");
printf("*    *  *  ******* \n");
printf("* ***  *     *** \n");
printf("*       *   *  *  * \n");
printf("*******  *   *   * \n");
は禁止?

650:デフォルトの名無しさん
10/07/08 18:51:34
面白いと思ってやってんの?

651:デフォルトの名無しさん
10/07/08 19:11:07
>>648
渦巻きの偶数パターンが分かればコードが書けるんだが

652:デフォルトの名無しさん
10/07/08 22:56:04
>634
ってさ、たとえば 36 のときみたいに解が複数あるときはどうすんの?
15,15,5,1 の4枚と、10,10,8,8 の4枚。

653:デフォルトの名無しさん
10/07/08 23:06:15
>>630
ありがとうございます
助かりました

654:デフォルトの名無しさん
10/07/08 23:20:25
>>653
いえいえ

655:デフォルトの名無しさん
10/07/08 23:32:53
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):

以下の仕様に従って,分数の四則演算を行うプログラムを作成せよ。
[仕様1] 以下のような構造体を定義し,分数のデータ構造に利用すること。
struct fraction{
int parent; /* 分母(denominator) */
int child; /* 分子(numerator) */
};
[仕様2] 以下の実行結果となるようなプログラムを作成せよ。
プログラムの実行結果↓
1つ目の分数を入力して下さい。
3/4 ←キーボードより入力
2つ目の分数を入力して下さい。
1/4 ←キーボードより入力
演算方法(1.加算,2.減算,3.乗算,4.除算)を入力して下さい。
2 ←キーボードより入力
3/4 - 1/4 = 1/2
計算結果は約分をして表示

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 7月9日
[5] その他の制限:ポインタ変数、データ構造まで習いました
よろしくお願いします

656:デフォルトの名無しさん
10/07/08 23:41:48
>>651
特に指示はないからこっちに任せただと思う
だから左上からスタートで

********
          *
****** *
*      * *
* *    * *
* ****  *
*         *
********

>>649
ifかswitchでそれをつくろうかと思ったがさすがにふざけてると思われそうなのでやめた

657:デフォルトの名無しさん
10/07/08 23:51:27
>>656
日本語でおk。偶数パターンを出力してからものを言え

658:デフォルトの名無しさん
10/07/09 00:02:35
>>657
すまなかった 6 4 2の順で

******
       *
**** *
*   * *
*      *
******

****
    *
*   *
****

2は正方形でも右の形でもどっちでもいい

** **
**   *

659:デフォルトの名無しさん
10/07/09 00:34:07
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
URLリンク(yonex1.cis.ibaraki.ac.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 4.3.4
 [3.3] 言語:C
[4] 期限:2010年7月11日
[5] その他の制限:
よろしくお願いします。

660:デフォルトの名無しさん
10/07/09 01:28:45
次のプログラムを、分かりやすく疑似コードに直してください!!
分かり易ければOKです!
static int coin[] = {1, 5, 8, 10, 15};
int main(void){
int *nr, *hist, money, c, n, new;
printf("input money : ");
while (scanf("%d", &money) != 1) {
scanf("%*[^\n]");
printf("input money again : "); }
scanf("%*[^\n]");
nr = (int *)malloc((money + 1)*sizeof(*nr));
if (nr == 0) {
perror("calloc");
return 1; }
hist = (int *)calloc(money + 1, sizeof(*hist));
if (hist == NULL) {
perror("calloc");
goto err; }
for (n = 0; n <= money; n++)
nr[n] = n;
for (c = 0; c < sizeof(coin)/sizeof(*coin); c++)
for (n = coin[c]; n <= money; n++) {
new = nr[n - coin[c]] + 1;
if (new < nr[n]) { nr[n] = new; hist[n] = c;}
}
printf("total number : %d\n", nr[money]);
printf("coins : ");
for (n = money; n > 0; n -= coin[hist[n]])
printf("%d ", coin[hist[n]]); printf("\n");
free(nr); free(hist); return 0; err:
free(nr); return 1; }

661:デフォルトの名無しさん
10/07/09 02:34:47
>>648
> 2~9の数字を入力
2はどうなのよ、2の時は?

662:デフォルトの名無しさん
10/07/09 04:46:59
>>602お願いします!!

663:デフォルトの名無しさん
10/07/09 07:59:57
>>655
URLリンク(kansai2channeler.hp.infoseek.co.jp)

664:デフォルトの名無しさん
10/07/09 16:09:48
>>661
星は正方形で
渦巻きは>>658でおねがいします

665:デフォルトの名無しさん
10/07/09 20:03:15
URLリンク(codepad.org)

666:デフォルトの名無しさん
10/07/09 20:21:22
> URLリンク(codepad.org)
↑便利だ。
コンパイルまでしてくれる必要は無いんだけど、
もっと色々な言語(Pascalとかverilogとか)貼り付けて、
整形して表示してくれるアプローダ無いかな?

667:デフォルトの名無しさん
10/07/09 20:26:18
ideone.comは?整形して表示の意味がよく分からないけど

668:デフォルトの名無しさん
10/07/09 20:40:12
>>667
ありがとう。これでいいです。
こんなんとかPascal似の言語とか貼り付けたかったのです。
URLリンク(ideone.com)

669: ◆QZaw55cn4c
10/07/09 22:04:40
ideone.com は対応している言語が多いけれども、コンパイルエラーの表示に難があるからなあ。
URLリンク(ideone.com)
正解は、
transform(radians.begin(), radians.end(), sines.begin(), (double (*)(double))sin);

670:デフォルトの名無しさん
10/07/09 22:41:13
整数を入力:18
1
2
3!?
(中略)
13!?
14
15!?
16
17
18!?

こんなプログラムはどうやって書くんですか?

671:デフォルトの名無しさん
10/07/09 22:48:40
さぁ、世界のナベアツ先生に聞いてちょっ

672:デフォルトの名無しさん
10/07/09 22:49:53
誘導されてきたんだなぁ。ってか宿題だったのか。
次は>>1を読もう。

673:デフォルトの名無しさん
10/07/09 22:57:56
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):3の付く数字と3の倍数の時にアホになりなさい。
[3] 環境
 [3.1] OS: (Windows/Linux/等々)windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)Borland C++ 5.5.1
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 20日(火)


674:デフォルトの名無しさん
10/07/09 23:19:04
>>673
URLリンク(kansai2channeler.hp.infoseek.co.jp)

675:デフォルトの名無しさん
10/07/09 23:27:09
>>674
こうすれば文字列操作が不要になるんでは。
int isAho(int n)
{
if (n % 3 == 0) return 1;
while (n)
{
if (n % 10 == 3) return 1;
n /= 10;
}
}

676:デフォルトの名無しさん
10/07/09 23:28:12
>>675
最後にreturn 0;するの忘れてた。

677:デフォルトの名無しさん
10/07/09 23:45:55
30台もどうかとは思うが300、3000台にもなるとアホばかりで疲れるわ・・・

678:デフォルトの名無しさん
10/07/10 00:17:05
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
以下の機能を持つプログラムを作ること。

-1から100の数字の中から素数を抽出する (配列に直接数字を指定することは不
可)
-抽出した素数を大きい順(降順)にソートする
-ソートした素数を1行につき5個表示する(6個目以降は次の行に表示する)

但し、以下の4つの機能を使ったプログラムにすること。
-サブ関数
-配列
-if文
-for文

以下の点に関して工夫をした場合は加点の対象とする

-素数の計算時間の低減
-見つけた素数の数のカウント
-ソートのアルゴリズム高速化
-実行時間の表示

作成したプログラムの特徴を提出時のコメントに記入すること
(素数の見つけ方、ソートの仕方、表示方法での工夫など)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2010/07/23

初心者ですがよろしくお願いします。

679:デフォルトの名無しさん
10/07/10 02:06:24
>>678
URLリンク(kansai2channeler.hp.infoseek.co.jp)

680:名無しさん@そうだ選挙に行こう
10/07/10 09:13:45
ソートはなんならクイッ クソート があるでおじゃる

681:618
10/07/10 09:33:45
その他制限はありません。一通り学びましたが初心者です。
よろしくおねがいします

682:名無しさん@そうだ選挙に行こう
10/07/10 10:10:43
>>589
該当する関数をこれに置き換えると早くなる

int coin_func_r(int result[], int c[], int m, int n){
int i, num;
if(m<0 || result[m]==0) return -1;
if(result[m]>0) return result[m];
for(i=0;c[i]>0;i++){
num=coin_func_r(result, c, m-c[i], n+1);
if(num>0 && (result[m]<0 || result[m]>num+1)) result[m]=num+1;
}
if(result[m]<0) result[m]=0;
return result[m];
}

int coin_func(int c[], int amount){
int i, lcm_all=1, rest, c_max=1, *result, ret;
for(i=0;c[i]>0;i++){
lcm_all=lcm(lcm_all, c[i]);
if(c_max<c[i]) c_max=c[i];
}
result=calloc(lcm_all, sizeof(int));
for(i=0;i<lcm_all;i++) result[i]=-1;
for(i=0;c[i]>0;i++) result[c[i]]=1;
rest=amount%lcm_all;
coin_func_r(result, c, rest, 0);
ret=result[rest]+(amount-rest)/c_max;
free(result);
return ret;
}

683:名無しさん@そうだ選挙に行こう
10/07/10 10:24:32
>>511
ありがとうございます!

684:名無しさん@そうだ選挙に行こう
10/07/10 10:28:20
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
二つのint型整数の小さい方の値を返す関数
 int i_minof(int x, int y){ /* ... */}
を作成せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月12日まで

よろしくお願いします。


685:名無しさん@そうだ選挙に行こう
10/07/10 10:40:05
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
下に示すように、整数値を読み込んで、その値を0までカウントダウン
しながら表示するプログラムを作成せよ。なお、負の値を読み込んだ時は
何も表示しない(改行も表示せず終了する)ようにせよ。
=====
整数を入力してください:9
9 8 7 6 5 4 3 2 1 0
=====
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月12日まで

よろしくお願いします。

686:名無しさん@そうだ選挙に行こう
10/07/10 10:41:38
>>684
int i_minof(int x, int y){ return rand()&1?x:y; }

687:名無しさん@そうだ選挙に行こう
10/07/10 11:41:06
>>684の訂正です。

[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
二つのint型整数の小さい方の値を返す関数
 int i_minof(int x, int y){ /* ... */}
を作成せよ。
=====
二つの整数を入力してください。
整数1:49
整数2:92
小さい方の値は17です。
=====
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月12日まで

よろしくお願いします。


688:名無しさん@そうだ選挙に行こう
10/07/10 11:42:32
>>687
×小さい方の値は17です。
○小さいほうの値は49です。

何度も訂正すいません。


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