C/C++の宿題を片付けます 97代目at TECH
C/C++の宿題を片付けます 97代目 - 暇つぶし2ch2:デフォルトの名無しさん
07/10/23 23:51:30
2

3:1
07/10/23 23:59:54
スレタイ間違えました…このスレッドは削除依頼出します

4:デフォルトの名無しさん
07/10/24 00:00:09
次99って覚えとけば問題ない
スレ立てた人は特に覚えておいて、
次スレの時期になったら次は99であると声高に叫ぶんだ

5:1
07/10/24 00:05:06
>>4
分りました。


6:1=3
07/10/24 00:23:03
皆様、削除依頼は出しませんので、お使いください
>>3 の書き込みは馬鹿の戯言と思い無視してください
スレタイに関しては生暖かくわらってくださいませ m(_ _)m

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


8:デフォルトの名無しさん
07/10/24 00:59:40
前スレ>>980
エクセルとかワードで書いてzipでうpればよかったんじゃないか?

9:デフォルトの名無しさん
07/10/24 01:02:24
>>8
それをC/C++の宿題と呼んでいいのか

10:デフォルトの名無しさん
07/10/24 01:04:49
前スレ>>976に言えよwww

11:前スレの907
07/10/24 01:09:04
>>前スレの919さん プログラムありがとうございました。
ですが実行してみたところ以下のようなエラーがでてしまいました。
1>Source1.obj : error LNK2019: 未解決の外部シンボル _dx が関数 _main で参照されました。
1>C:\Users\UCHIDA\Documents\Visual Studio 2005\Projects\a34\Debug\a34.exe : fatal error LNK1120: 外部参照 1 が未解決です
問題文は「オイラー法を用い、dy/dx=(3x-5y-4)/5 の常微分方程式を
      解きなさい。また、その結果をExcelファイルに出力して
      グラフを作りなさい。諸条件は以下のようにする。
      初期値 (x,y)=(0,0)
刻み幅 Δh=0.3
積分区間 [a,b]=[0,3] 」で
  #include<stdio.h>
long double df(long double x,long double y)
{ return (3*x-5*y-4)/5; }

int main(void)
{
long double x,y,delta;
FILE *outfile;
x = y = 0.0; delta = 0.3;
outfile = fopen("data.csv","w");
fprintf(outfile,"%Lf,%Lf\n",x,y);
do{
y += dx(x,y)*delta;
x += delta;
fprintf(outfile,"%Lf,%Lf\n",x,y);
}while(x<1.0);
fclose(outfile);
return 0;
} です。どなたかエラー解決お願いします。



12:デフォルトの名無しさん
07/10/24 01:23:51
[1] 授業単元:オペレーティングシステム
[2] 問題文(含コード&リンク):
HTTPリクエストを受け付けると、URLに記載された名前のHTMLファイルをブラウザに返す
簡単なWebブラウザをC言語を用いて作成せよ。
このWebサーバはHTTPリクエストを受け付ける毎にforkシステムコールにより新しいプロセスを生成し、
そのプロセスがURLに指定されたHTMLファイルをファイルシステムから取り出して、ブラウザに返す。
基本的には、リクエストを送りリプライを返すことができればいい。
また、結果をブラウザで表示できる程度の実装で構わない。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc 3.4.4
 [3.3] 言語: C言語
[4] 期限: 2007年11月15日
[5] なし

最低限の実装でいいのでよろしくお願いします。

13:デフォルトの名無しさん
07/10/24 01:25:57
>>11
×y += dx(x,y)*delta;
○y += df(x,y)*delta;

つかエラーメッセージ吐いてるんだからこのぐらい自分で気づこうよ。
>未解決の外部シンボル _dx が関数 _main で参照されました。


14:デフォルトの名無しさん
07/10/24 01:31:13
[1] 授業単元: プログラミング技術Ⅳ
[2] 問題文(含コード&リンク):

こんばんわ、夜も更けてしまいましたがよろしくお願いします。

文字列str1からstr2と一致する文字列を削除し、結果を表示するプログラムを作成せよ。

・文字列 st の pos 番目から始めて、len の長さの文字列を削除する
関数:void d _word(char st[], int pos. int len)を作成する。

・pos の場所と削除語の長さを d_wordに渡し、文字列削除を実行する
関数:void search_del(char str1[], char str2[])を作成する。

・main 関数で文字列1つと削除する文字列1つを入力させ、関数search_del
を用いて文字列から削除語を削除したものを出力する。

(メインのプログラムはヒントで出題されたのですが、うまく出来ませんでした。)

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

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin gcc
 [3.3] 言語: C言語
[4] 期限: 25日(木)
[5] その他の制限:

15:デフォルトの名無しさん
07/10/24 01:47:59
>>14
すいません、リンク先にあるプログラムコードの下から2行目の
ss}
のssはゴミです。


16:デフォルトの名無しさん
07/10/24 02:08:32
>>14
その二つの関数があるなら、できてるも同然な気がするが…

int main()
{
char str1[256], str2[256];

printf("string? : ");
gets(str1);

printf("deleted word? : ");
gets(str2);

serach_del(str1, str2);
puts(str1);

return 0;
}


17:デフォルトの名無しさん
07/10/24 02:16:11
頭は#include <stdio.h>のみで大丈夫でしょうか?

18:デフォルトの名無しさん
07/10/24 02:33:13
どのソースに対していってんだ?

19:デフォルトの名無しさん
07/10/24 02:40:08
>>16
いくつか修正して組み込んでみたけど、d _wordへ削除語の長さを渡すのがうまく行ってないのかエラーが出てうまくいかないです。

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

20:デフォルトの名無しさん
07/10/24 04:24:56
>>19
> if(j=m2)
==
> printf("%d\n", st1);
%s
これで動くかはわからんが。

21:11
07/10/24 05:16:42
>>13さん
すいません。ありがとうございました。

22:デフォルトの名無しさん
07/10/24 10:38:52
[1] 授業単元:専門演習
[2] 問題文(含コード&リンク):
1、数を入力し、その数が奇数か、偶数かを判定しなさい。
(ただし、数字以外を入力した際には「数字を入力してください」とメッセージボックスをでるように。
2、ビデオテープ一個の単価は150円である、しかし、購入個数が100個を超えると、ビデオテープの単価は2割引になる。
購入個数を入力して支払い金額を計算し、表示するプログラムを作りなさい。
3、三角形の三編の長さa,b,cを入力して、正三角形、二等辺三角形、直角三角形、直角二等辺三角形、単なる三角形を調べるプログラムを作りなさい。
[3] 環境
 [3.1] OS: windows XP
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) 不明
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) 一応C#なんですが・・・大丈夫ですかね??
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 今週中。
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
基礎レベル・・・。

どうかお願いいたします。

23:デフォルトの名無しさん
07/10/24 10:58:59
>>22
1番はこんな感じになります

#include<stdio.h>

int main(void)
{
int n;
printf("数を入力してください>");
while(scanf("%d",&n)>0) printf("入力がおかしいです。もう一度入力してください。>");
printf("%sです。\n",(n&1)?"奇数":"偶数");
return 0;
}

24:デフォルトの名無しさん
07/10/24 11:04:09
>>23
とりあえず次の入力を試しました
5
abon

何かがおかしいです。もう一度投稿して下さい。>

25:デフォルトの名無しさん
07/10/24 11:14:23
>>24

scanfの戻り値のチェック間違えてた…
始めに「失敗した」書式のとこ返すんだった…。

#include<stdio.h>

int main(void)
{
int n;
printf("数を入力してください>");
while(scanf("%d",&n)>1) printf("入力がおかしいです。もう一度入力してください。>");
printf("%sです。\n",(n&1)?"奇数":"偶数");
return 0;
}


26:デフォルトの名無しさん
07/10/24 11:17:55
>>25
テストしてから書き込むことを勧める

27:デフォルトの名無しさん
07/10/24 11:23:43
次は無限ループを作る予感

28:デフォルトの名無しさん
07/10/24 11:27:48
scanfの挙動はよう分からんからなあ……
とりあえず、while(scanf("%d",&x))...みたいな書き方だと条件満たさないと思うよ
%dは数字以外の文字をひたすら無視するから

というかC#知らないけど、
scanfとかでいいのか?

29:デフォルトの名無しさん
07/10/24 11:34:02
>>22 の問題文によると「メッセージボックス」を出すらしい

30:デフォルトの名無しさん
07/10/24 11:45:04
>>22,29
…メッセージボックスですか見落としてた…Win32APIですね…
そしたら全然ダメだわ

>>26
24 はDOSアプリとしてなら確認しました

もしかして他の二つもWinアプリとして作らないといけないのかでしょうか?
基礎レベルでWin32APIは使わないと思うのだが…

31:デフォルトの名無しさん
07/10/24 11:46:38
>>30
だからC#なんだってば。
つーか、>25もおかしいぞ。

32:デフォルトの名無しさん
07/10/24 11:48:36
メッセージボックス以前の問題だろ

33:デフォルトの名無しさん
07/10/24 11:49:20
>>28
scanfの戻り値
代入された項目数を返す とある
新ANSI C言語辞典(ISBN4-7741-0432-9)より

この本一部妖しいが…多次元配列あたりの説明が…


34:25=30
07/10/24 11:52:53
>>22,31
…あーー!。Cとして書いてしまった…
書き方違うや…全然…ごめん…

33、この発言取り消しで…

35:デフォルトの名無しさん
07/10/24 12:00:11
>>34
いや、それはいいから>25が拙いってことは理解しておいた方がいいよ。
二重の罠に填まっているから。

36:デフォルトの名無しさん
07/10/24 12:00:15
>[3.3] 言語: (C/C++/どちらでも可 のいずれか) 一応C#なんですが・・・大丈夫ですかね??
これおかしいだろ

37:デフォルトの名無しさん
07/10/24 12:02:25
>>25
日曜あたりからこのスレに書き始めた人っぽいけど、まだ他人の宿題に答えるレベルじゃないんじゃない?

38:デフォルトの名無しさん
07/10/24 12:02:51
うん、だから>22は無視して>23以降を構って遊んでる。

39:デフォルトの名無しさん
07/10/24 12:04:44
>>22
3.をあくまでCで
#include <stdio.h>

int main(void)
{
double a, b, c, max, mid, min;

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

max = a > b ? c > a ? c : a : b > c ? b : c;
min = a < b ? c < a ? c : a : b < c ? b : c;
mid = a + b + c - max - min;

if(max>=min + mid) printf("三角形じゃない\n");
else if(max == min) printf("正三角形\n");
else if(max * max == min * min + mid * mid) {
if(min==mid) printf("直角二等辺三角形\n");
else printf("直角三角形\n");
}
else if(max==mid||mid==min) printf("二等辺三角形\n");
else printf("ただの三角形\n");

return 0;
}



40:デフォルトの名無しさん
07/10/24 12:09:13
>>37
分りました…これ以降自粛します…。

>>22
もう書いてしまったので参考にしてください。
2.をCで書くと

#include<stdio.h>

int main(void)
{
long x;

printf("何本購入しますか?>");
while(scanf("%ld",&x)>1) printf("入力がおかしいです。もう一度入力してください。>");
x *=150;
if(x >= (150*100) ){
x = x * 8 / 10;
}
printf("%d円になります。\n",x);
return 0;
}


41:デフォルトの名無しさん
07/10/24 12:13:53
>>40
テストしてから書き込むことを勧める

例えば入力に次のものを入れてみる
abon
100

#あと負数をどうするとか

42:デフォルトの名無しさん
07/10/24 12:29:01
とりあえず、scanfの戻り値は使わない方がいい
というかscanfを使わない方がいい

43:デフォルトの名無しさん
07/10/24 12:30:42
C#って、VBみたいに簡単にMessageBox出せたりするの?

44:デフォルトの名無しさん
07/10/24 12:33:49
>>43
C# メッセージボックス でググったらすぐに出る

45:デフォルトの名無しさん
07/10/24 12:34:41
出せる

46:デフォルトの名無しさん
07/10/24 12:38:22
へえ、つまらん言語だな

47:デフォルトの名無しさん
07/10/24 12:40:53
>>42
scanfが不評な理由が身に染みました…。
かといってgetsもバッファオーバーランの危険がありますが…
stdinからfgstsしてから変換が安全でしょうか?

48:デフォルトの名無しさん
07/10/24 12:46:53
うざいよ
ここはお前の質問スレじゃないから、とっとと失せろ

49:デフォルトの名無しさん
07/10/24 12:49:27
>>47
>35を無視するから……
初心者スレ辺りに移動するなら付き合うけど、また無視するならしらね。

50:デフォルトの名無しさん
07/10/24 12:55:45
fgetsが定石なんだろうが、
俺はgetcharをこよなく愛してる

51:デフォルトの名無しさん
07/10/24 13:01:48
オレは scanf Loveだぜ

#include<windows.h>
#include<stdio.h>

int main(void){
int n;
printf("数を入力してください>");
while(scanf("%d",&n)<1){
scanf("%*s");
MessageBox(NULL, "数字を入力して下さい", "Error", MB_OK | MB_ICONERROR);
printf("\n入力がおかしいです。もう一度入力してください。>");
}
printf("\n%sです。\n",(n&1)?"奇数":"偶数");
return 0;
}

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

Microsoft(R) Visual C# .NET Compiler version 7.10.6001.4
for Microsoft(R) .NET Framework version 1.1.4322
で作動を確認(ロダの関係で拡張子を変更)

53:デフォルトの名無しさん
07/10/24 13:44:13
[1] 授業単元:プログラミング2
[2] 問題文(含コード&リンク):
(1)モンテカルロ法を用いて、y=x^2,y=0,x=1で囲まれる領域の面積を求めよ。
(2)モンテカルロ法を用いて、半径1の球の体積を求めよ。


[3] 環境
[3.1] OS Windows XP
[3.2] コンパイラ名とバージョン: Visual Studio.NET2003
[3.3] 言語: C
[4] 期限:10/25の12時
[5] その他の制限:(1)(2)において発生させる乱数の数を10,100,1000…1000000
と増やし、それぞれの場合における結果を画面に表示させること。

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

54:デフォルトの名無しさん
07/10/24 14:01:25
>>53
前スレのとは別の人?
(1)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

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

srand(time(NULL));

for(i=10; i<=1000000; i*=10) {
for(j=0, cnt=0; j<i; j++) {
x = (double)rand() / RAND_MAX;
y = (double)rand() / RAND_MAX;
if(x*x >= y) cnt++;
}
printf("試行回数:%7d 面積:%f\n", i, (double)cnt / i);
}

return 0;
}


55:デフォルトの名無しさん
07/10/24 14:02:05
(2)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

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

srand(time(NULL));

for(i=10; i<=1000000; i*=10) {
for(j=0, cnt=0; j<i; j++) {
x = (double)rand() / RAND_MAX;
y = (double)rand() / RAND_MAX;
z = (double)rand() / RAND_MAX;
if(x*x + y*y + z*z <=1) cnt++;
}
printf("試行回数:%-7d 球の体積:%f\n", i, cnt * 8.0 / i);
}

return 0;
}


56:デフォルトの名無しさん
07/10/24 14:10:30
scanfもちゃんと使えば、大分有用なんだけどね

57:デフォルトの名無しさん
07/10/24 14:12:52
【質問テンプレ】
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
リストへのポインタを引数としてとり、その内容を逆順に並べ替えたリストへの
ポインタを返す関数struct c *re(struct c *l)を再帰を用いて作成せよ。
並べ替え後に元のリストが破壊されていても構わない。
リストは連結リストで、その構造体は、
struct c{
int a;
struct c *n;
};
とする。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 木曜日の15時までです。
[5] その他の制限: 必ず再帰を使うこと。

58:デフォルトの名無しさん
07/10/24 15:22:13
>>14です。

アドバイスを頂き>>16>>20を組み込みましたが、コンパイルが通りません。

エラーメッセージは関数:void d _wordに受け渡しがうまく行ってない趣旨のものがでました。

出来る方、問題回答お願いします。

それと昨晩、途中まで付き合ってくれた方ありがとうございます。

59:デフォルトの名無しさん
07/10/24 15:54:52
>>58
typo だと思われる
自分で探せるよね

60:デフォルトの名無しさん
07/10/24 16:23:41
>>57
struct c *re(struct c *l)
{
struct c *p;
if(l->n==NULL) return l;
p = re(l->n);
l->n->n = l;
l->n = NULL;
return p;
}


61:デフォルトの名無しさん
07/10/24 17:23:27
>>12
JAIST?

62:デフォルトの名無しさん
07/10/24 18:00:19
>>12
( ´∀`)つURLリンク(kansai2channeler.hp.infoseek.co.jp)

めんどくさいので、cat を fork&exec してやったw

jaist ではないのかな?
たしか某S先生の授業でそんな課題があったような・・・

63:デフォルトの名無しさん
07/10/24 18:17:29
[1] 授業単元: アルゴリズム C言語応用Ⅱ
[2] 問題文(含コード&リンク):
英文を入力すると、単語に分割して出力するプログラムを書く。
ただし、ピリオドとカンマは出力しないようにすること。
(実行例)
英文を入力してください:
There is , a textbook.

---
There
is
s
textbook
---

今回はプログラム作成にあたり、用意されているテンプレートにプログラムを付け加えプログラムを完成させよ。

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


[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: CYGWIN gccバージョン不明)
 [3.3] 言語: C言語
[4] 期限: 無理を承知で明日の午前中までにお願いします。
[5] その他の制限: テンプレートに従ってプログラムを付け加えて完成させてください。

64:デフォルトの名無しさん
07/10/24 18:50:28
前スレで質問したものです
ただ単に不等号と&&→||のミスでした
お騒がせして申し訳ありません

65:デフォルトの名無しさん
07/10/24 18:56:01
[1] 授業単元: C++
[2] 問題文(含コード&リンク):ファイルのリンク:
URLリンク(spot.pcc.edu)
リンクに含まれるようなファイルを読み取って、金額(ファイルの一番右の項目)を州(ファイルの真ん中の項目)別に集計し、
アルファベット順にそれぞれの州の平均額を表示する。その後、全ての州の合計金額の平均を表示する。
最後に、最も平均金額の高かった州と、最も平均金額の低かった州を表示する。
注意: 町の名前(ファイルの一番左の項目)は、“Grants Pass” や “Klamath Falls”のように、空白で区切られているものが入ることもある。
[3] 環境 ?
 [3.1] OS: Windows
 [3.2] Dev C++ 4
 [3.3] 言語: C++
[4] 期限: 2007年10月27日深夜まで
[5] その他の制限: 標準ライブラリのみ使用可能。Getlineを使わず、Cinのみで作る方がよりよい。また、ファンクションは使用不可。

よろしくお願いします(_ _)

66:デフォルトの名無しさん
07/10/24 20:32:06
[1] 授業単元:線形台数
[2] 問題文(含コード&リンク):
対角行列の固有値を求めよ。
10次元の。
対角成分は3.4 2.3 5.1 8.2 2.21 -4.21 23.2 9.3 -21.2 0.2
  [3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007年10月25日
[5] その他の制限: なし


67:デフォルトの名無しさん
07/10/24 20:46:35
>>65
>[5] その他の制限: 標準ライブラリのみ使用可能。Getlineを使わず、Cinのみで作る方がよりよい。また、ファンクションは使用不可。
ファンクション使用不可ってのを詳しく

68:デフォルトの名無しさん
07/10/24 20:58:41
>>66
対角行列の固有値は自明。
対角行列の固有値は対角成分そのもの。

つまり、
3.4 2.3 5.1 8.2 2.21 -4.21 23.2 9.3 -21.2 0.2
となる。

69:デフォルトの名無しさん
07/10/24 21:07:57
scanfは失敗したの残すし、改行残すから鬱陶しくて仕方ない。
ってことで、fgets使うとか、
戻り値を変数に格納した後、残った文字を全部食ってから次の処理とかでいいんじゃね?

70:デフォルトの名無しさん
07/10/24 21:11:41
>>65
アメリカの州の略号は
URLリンク(www.urban.ne.jp)
でいいの?

71:デフォルトの名無しさん
07/10/24 21:29:00
>>68
だよね。
URLリンク(case.f7.ems.okayama-u.ac.jp)
のページの式の中の|Σ|っていうのは対角成分をかけたものってことでいいのかな?

ある問題で正規分布を使っていて、|Σ|を対角行列の対角成分をすべてかけたものを
固有値として計算すると間違った答えになるんです。

だけど。|Σ|に(対角成分の1つだけ)を代入して計算すると正解になるんです。

72:デフォルトの名無しさん
07/10/24 21:30:37
ベクトルを作って、ベクトルを初期化して
$ gcc -lm a.c
# ./a.out
すると
0.000000 0.000000 2.080315

というよく分からないベクトルが作られます。
init_vectorにバグがあるのでしょうか?そうは見えないのですが・・・
他にプログラムの宿題があるのですが、ここらへんがとりあえずバグってるので
問題を簡単化して質問します。

URLリンク(www.uploda.org)

コンパイラは
gcc3.3.6です。緊急の宿題です

73:デフォルトの名無しさん
07/10/24 21:33:35
[1] 授業単元:C/C++宿題スレ
[2] 問題文(含コード&リンク):
書式付標準出力関数printfと同様の動作を示すprint関数を作りなさい。標準出力関数等を用いてよいが、printf関数は使用してはならない。
なお、終わった者はscanfと同様の動作を示すscan関数を作ってもよい。
[3] 環境
 [3.1] OS: 任意
 [3.2] コンパイラ名とバージョン: 任意
 [3.3] 言語: C言語
[4] 期限: 無期限
[5] その他の制限: これよりも、他の宿題を優先すること

74:デフォルトの名無しさん
07/10/24 21:33:46
>>72
8行目を見なおしてみては?

75:デフォルトの名無しさん
07/10/24 21:36:09
>>74
ありがとうございます。逆ですね。
いつもRuby使ってて、授業でC使う事になったこういうミスが・・・涙
だったらコンパイル通さないでくれよ・・・

76:デフォルトの名無しさん
07/10/24 21:40:51
>>73
これわひどいw

77:デフォルトの名無しさん
07/10/24 21:47:01
そういえば、可変引数を使う宿題てあまり見ないな

78:デフォルトの名無しさん
07/10/24 21:52:50
[1] 授業単元:文字列操作プログラム
[2] 問題文(含コード&リンク):
配列とポインタを使用し、文字列操作を行うプログラムを作成せよ。
①独自のstrlen関数mystrlen関数を自作する。
  文字列のポインタを受け取り、文字列の長さを返す関数を作成する。

②独自のstrcpy関数mystrcpy関数を自作する。
  文字列のポインタ2つを受け取り、文字列のコピーを行う関数を作成する。

③独自のatoi関数myitoa関数を自作する。
  数値を受け取り、指定された基数で文字列変換を行う関数を作成する。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語:C言語
[4] 期限:2007年10月26日朝5:00まで
[5] その他の制限:問題が初級編ということで、出来るだけ難しくならないよう
  お願いします。



79:デフォルトの名無しさん
07/10/24 22:19:35
[1] 授業単元:
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月26日10:00まで
[5] その他の制限: 特にありません。
         どうぞよろしくお願いします。

80:デフォルトの名無しさん
07/10/24 22:22:08
すみませんがよろしくお願いします。
さっぱりわかりません・・
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
次のソースコードを参照して、DateTimeClass の代入演算子を定義してください。
ただし、定義はクラスの外で行うものとします。
class DateClass
{
int year, month, day;
};

class TimeClass
{
int hour, min;
};

class DateTimeClass : public DateClass, public TimeClass
{
char* strDate;
char* strTime;
};

[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C++
[4] 期限: 10/26いっぱい
[5] その他の制限:なし

81:前スレ972
07/10/24 22:27:39
問題の題名は「オペレータ オーバーロードを使ったプログラム作成」でした。
なのでオペレータオーバロードを使わなければいけないっぽい。。

82:デフォルトの名無しさん
07/10/24 22:31:25
>>78
>③独自のatoi関数myitoa関数を自作する。

myatoi関数?それともmyitoa関数?

83:デフォルトの名無しさん
07/10/24 22:34:31
>>78
URLリンク(kansai2channeler.hp.infoseek.co.jp)

84:デフォルトの名無しさん
07/10/24 22:34:48
>>82
>数値を受け取り、指定された基数で文字列変換を行う関数を作成する。
itoaだな
もしくはltostrとでもいうか

85:デフォルトの名無しさん
07/10/24 22:40:42
>>71
>|Σ|っていうのは対角成分をかけたものってことでいいのかな?
対角行列においてはその通り。

φA(λ) = |λI - A|= 0
を満たす値λがベクトルAの固有値。固有値は行列ではなく数値。
Iは対角単位行列。
Aがn×nの正方行列なら、重解を含めて、λはn個存在する。
個別のλのことを「固有値」と呼ぶ。

だから、
>ある問題で正規分布を使っていて、|Σ|を対角行列の対角成分をすべてかけたものを
>固有値として計算する
という部分がおかしい。

これ以上は数学板で聞いたほうがいいかも。

86:デフォルトの名無しさん
07/10/24 22:41:22
[1] 授業単元:Fizz Buzz問題
[2] 問題文(含コード&リンク):
1から100までの数字を順に表示しなさい
ただし3で割り切れる数の場合は数字の代わりにFizz、
5で割り切れる場合はBuzz、
3と5の両方で割り切れる場合はFizz Buzzと表示しなさい。
剰余演算を使うバージョンと、使わないバージョンを作ること。
ただし、あらかじめ該当数字を配列等に格納しておいてのチェックは無しとする。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C
[4] 期限: 10月25日PM1時
[5] その他の制限:
よろしくお願いします

87:デフォルトの名無しさん
07/10/24 22:45:51
就職試験対策キターーーー

88:デフォルトの名無しさん
07/10/24 22:48:37
>>79
void quicksort(int a[], int l, int r){
int comp(const void*a, const void*b){
if(*(int*)a < *(int*)b)
return -1;
else if(*(int*)a > *(int*)b)
return 1;
else
return 0;
}
qsort(a, r-l+1, sizeof(int), comp);
}

89:デフォルトの名無しさん
07/10/24 22:49:56
剰余を使わずに、もっとも短いコードをつくる 
出力は次のようにする
1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fizz Buzz, 16, 17, Fizz, 19, Buzz, Fizz, 22, 23,
Fizz, Buzz, 26, Fizz, 28, 29, Fizz Buzz, 31, 32, Fizz, 34,

90:デフォルトの名無しさん
07/10/24 22:50:37
関数内関数なんて使うなって一瞬言おうとしたけど、
そうゆうことなら許すw

91:デフォルトの名無しさん
07/10/24 22:52:40
>>86
「Fizz Buzz問題」 ネーミングがイカしてるな

#include <iostream.h>

int main (void)
{
int i;

for (i=1; i<=100; i++){
if (i%3==0 && i%5==0)
cout << "Fizz Buzz" << endl;
else if (i%3==0)
cout << "Fizz" << endl;
else if (i%5==0)
cout << "Buzz" << endl;
else
cout << i << endl;
}
}

92:デフォルトの名無しさん
07/10/24 22:52:48
>>73
#include <stdarg.h>
int print(const char*f, ...){
va_list a;
va_start(a, f);
vprintf(f,a);
va_end(a);
}

93:デフォルトの名無しさん
07/10/24 23:01:02
>>85
固有値ではないってことだね。
|Σ|は行列の値ってことか。

ってことは間違っている原因は|Σ|じゃないってことか。


94:73
07/10/24 23:01:09
>>92
すみません、後出しで悪いですが、
printfと同様の書式付き関数は使用しないで作ってください。
とにかく考えてくださりありがとうございます。

95:12
07/10/24 23:03:56
>>62
迅速な対応ありがとうございます。
参考にさせて頂きます。

96:デフォルトの名無しさん
07/10/24 23:04:06
#include<stdio.h>

main(){
int a=3,b=5,n;
for(n=1;n<101;n++){
if(n!=a && n!=b)printf(" %d,",n);
else {if(n==a){a+=3;printf(" Fizz");}
if(n==b){b+=5;printf(" Buzz");}
if(n<100)printf(",");
}}}

97:デフォルトの名無しさん
07/10/24 23:08:51
[1] 授業単元:コンピューターグラフィックス
[2] 問題文CGを作れ(自由課題)
ただし以下の評価項目に関して採点を行うのでこれを満たすようなCGを作成すること
1.CGアニメーションになっていること
2.マウスによってなんらかの操作ができる
3.ホップアップメニューが使用できること
4.シェーディングが適切に行われていること
5.テクスチャマッピングが使用されていること
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:11月6日
[5] その他の制限:あまりにも難しすぎる表現はNG
いきなり自由課題しろとか言われても俺にはイミフ
誰か助けてクレヨン

98:デフォルトの名無しさん
07/10/24 23:11:59
ナンセンス?

#include<stdio.h>

char * fizzBuzz( int n )
{
static char buffer[BUFSIZ];
return n % 15 == 0 ? "FizzBuzz" :
n % 5 == 0 ? "Fizz" :
n % 3 == 0 ? "Buzz" :
(sprintf( buffer, "%d", n ),
buffer);
}

int main()
{
int m = 0;
while( m != 100 )
{
++m;
printf("%s\n", fizzBuzz( m ) );
}
return 0;
}


99:デフォルトの名無しさん
07/10/24 23:12:31
>>97
それほんとにいきなり出されたのか?w

100:デフォルトの名無しさん
07/10/24 23:15:18
printf同様って・・・
300行くらいいるんじゃね?

101:デフォルトの名無しさん
07/10/24 23:15:38
剰余を使わず文字数が少なくてこう出力して
1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fizz Buzz, 16, 17, Fizz, 19,

最後は , をつけないプログラム

102:デフォルトの名無しさん
07/10/24 23:16:19
>>80
strDate, strTimeをどう扱うかによって回答が変わるけど、
こんなのを期待されてそう。

DateTimeClass &operator = (DateTimeClass &a, const DateTimeClass &b)
{
(DateClass &)a = (const DateClass &)b;
(TimeClass &)a = (const TimeClass &)b;
strcpy(a.strDate, b.strDate);
strcpy(a.strTime, b.strTime);
return a;
}


103:デフォルトの名無しさん
07/10/24 23:16:43
>>97
どう考えてもOpenGLとかDirectXとかが必要になりそう気がする……
どう考えてもcだけじゃコンピュータグラフィックは作れなさそうな気がする……

104:デフォルトの名無しさん
07/10/24 23:18:49
>>99
今まではただ惑星とかロボット作ってそれをキーボード入力で動かしてたしてただけだった
だけど授業でシェーディングとかの話し始めて出た課題がこれ
参考にできるサイトなどなんでもいいので参考になるものを教えてください

105:デフォルトの名無しさん
07/10/24 23:20:32
>>97
OpenGLいるな。。。じゃあここはスレ違いか
失礼しました

106:デフォルトの名無しさん
07/10/24 23:20:48
>>104
wisdomsoft OpenGLでググれ
もしくは単位をあきらめる

107:デフォルトの名無しさん
07/10/24 23:22:14
>>100
7行スレで7行printfがあったとか何とかって言ってた。

108:デフォルトの名無しさん
07/10/24 23:22:26
>>104
てっきりプログラミングの授業の第一回目とかで出されたのかと思った>いきなり

109:デフォルトの名無しさん
07/10/24 23:23:04
>>102
ありがとうございます。
そのように解答します。

110:デフォルトの名無しさん
07/10/24 23:23:25
>>104
少なくともCでCGできる時点でこのスレの住人の3分の2くらいよりレベル上だろうな

111:デフォルトの名無しさん
07/10/24 23:23:32
[1] 授業単元:Fizz Buzz問題
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
上記のプログラムは、1製品にのみ対応したものであるが、複数製品に対応したものに
書き換えなさい。また製品数の目安は100製品程度とする。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C++
[4] 期限: 10月25日18時
[5] その他の制限:

よろしくお願いします


112:デフォルトの名無しさん
07/10/24 23:26:27
>>63
だれか、お願いします。
現在作成中でしたら、おとなしく待ってます。

113:デフォルトの名無しさん
07/10/24 23:28:43
>>106
ググって来るわ
OpenGLの課題片付けてくれるスレってある?

114:デフォルトの名無しさん
07/10/24 23:29:11
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
class BaseClass {
char* name;
public:
BaseClass(const char* p) {name = strdup(p);}
~BaseClass() {free(name);}
};

class MyClass : public BaseClass
{
int count;
public:
MyClass(const char* p, int n = 0) : BaseClass(p), count(n)
{
// ...
}
};

ソースコードを参考にして派生クラスでの生成と消滅の順序を画面に
表示するプログラムを作成してください。
プログラムを実行し、派生クラスと基本クラスのコンストラクタ、
デストラクタが呼ばれる順序を確認してください。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C++
[4] 期限: 10/26まで
[5] その他の制限:なし

お願いします。

115:デフォルトの名無しさん
07/10/24 23:44:55
>>101
とりあえず剰余有版はこれでOK?
剰余無し版はfizzBuzz関数の実装を変更すればいいし。
就職活動がんばってな

#include<stdio.h>

char * fizzBuzz( int n )
{
static char buffer[BUFSIZ];
return n % 15 == 0 ? "FizzBuzz" :
n % 5 == 0 ? "Fizz" :
n % 3 == 0 ? "Buzz" :
(sprintf( buffer, "%d", n ), buffer);
}

int main()
{
int m;
for( m = 1; m <= 100; ++m )
{
printf( (m == 100 ? "%s\n" : "%s,"), fizzBuzz(m));
}
return 0;
}


116:デフォルトの名無しさん
07/10/24 23:50:14
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
上記のプログラムは、1製品にのみ対応したものであるが、複数製品に対応したものに
書き換えなさい。また製品数の目安は100製品程度とする。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C++
[4] 期限: 10月25日18時
[5] その他の制限:

よろしくお願いします



117:デフォルトの名無しさん
07/10/24 23:50:19
>>111

>>86と同じ人?Fizz Buzz問題でも今回は内容Fizz Buzzじゃないんだ。

>>86はもういいの?

とりあえず1問答えてるし、先客が終わるまで待てて。

118:デフォルトの名無しさん
07/10/24 23:50:55
>>110
CGがなんぼのもんじゃい!

119:デフォルトの名無しさん
07/10/24 23:51:16
>>112
一応作ったけどそのテンプレおかしい気がする。
入力文字列の最後に空白付けないと止まらないかも。

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

120:デフォルトの名無しさん
07/10/24 23:53:36
>>84
HP-UXかHI-UXな人だな?

121:111
07/10/24 23:54:12
>>117
すいません。同一人物じゃないです。
>>86の人のテンプレコピペしたんで授業単元変えるの忘れました

122:デフォルトの名無しさん
07/10/24 23:55:50
>>101はもういないのか?

剰余無し版

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

bool isMultipleOf( int n, int m )
{
int idx;
for( idx = 1; idx != 100; ++idx )
{
if( m == idx * n )
return true;
}
return false;
}
char * ff( int n )
{
static char buffer[BUFSIZ];
return isMultipleOf( 15, n) ? "FizzBuzz":
isMultipleOf( 5, n) ? "Fizz":
isMultipleOf( 3, n) ? "Buzz":
(sprintf(buffer,"%d", n ), buffer);
}


123:デフォルトの名無しさん
07/10/24 23:58:53
>>114
URLリンク(kansai2channeler.hp.infoseek.co.jp)

124:デフォルトの名無しさん
07/10/24 23:58:56
>>119
テンプレの
/* コンマかピリオドならstr2の位置を1つ左 */

}

}

/* str2(単語)に終端文字を追加 */
-------------------------------------------------------
上記の部分が
/* コンマかピリオドならstr2の位置を1つ左へ */

}
/* str1を1文字右に移動 */
}

/* str2(単語)に終端文字を追加 */
でした。
真ん中の/* str1を1文字右に移動 */を追加お願いします。

125:デフォルトの名無しさん
07/10/24 23:59:42
>>111

if(num<=300+0*10 && day>=inc_day)

の部分がヘン

というかこのプログラム、何をするプログラムなのかが一見してわからない

126:デフォルトの名無しさん
07/10/25 00:02:22
>>121
そなの?変なこと言ってすまん。

いまチャレンジしてるから、ちっと待って。

127:デフォルトの名無しさん
07/10/25 00:04:37
>>124
i++;
を追加してくれ。忘れてた。
まあ、それでも入力の最後に空白付けないといけないのは
変わらない気がするんだが。テンプレがそれならいいのかな。

128:デフォルトの名無しさん
07/10/25 00:05:46
>>125
日にちと商品の在庫不足数を数字のみで表示してるんじゃない?
商品のほうはランダムで数字作成してるみたいだし。
~日 在庫不足~個みたいな。でも、
>>複数製品に対応したものに
ってのがわからない。


129:デフォルトの名無しさん
07/10/25 00:08:09
>>128

>>111
if(num<=300+0*10 && day>=inc_day) inc_day=day+3;
で、あきらかに 0*10 という意味不明な演算をしている件について

130:93
07/10/25 00:08:40
>>85
正規分布を使いアルゴリズムに通して正解率を出すプログラムなんだけど
|Σ|を行列の値(対角成分の積)として計算すると全然正解率がでない。
どこがおかしいのかを見るために
試しに|Σ|に対角成分の和をいれてみて計算すると正解率98%だった。
ただ計算方法が違うのであっているかわからない。

正規分布について調べると|Σ|はΣの固有値とあるんです。

どうなんでしょうかね。

131:111
07/10/25 00:09:32
>>125
簡単に書くと、はじめ300個あった物が毎日80~120ずつ減っていき、
在庫が300+0*10以下になったら、その3日後に、350個プラスされるって感じです。
ちなみに、300+0*10の0の部分は1でも2でもなんでもよいです

132:デフォルトの名無しさん
07/10/25 00:15:22
>>125
別に変じゃなくないか?
numが一定値以下で、かつ現在発注中(到着待ち)じゃなけりゃ発注すんだろ?
inc_dayには発注日+3が入っているから、到着待ち中はday<inc_dayになる

133:デフォルトの名無しさん
07/10/25 00:16:59
>>127
「i++;」を付ける位置は以下で良いですか?

付けてみたのですが分割後に出力される最後の単語が文字化けしてしまいます。

後、テンプレ見直してみましたが、タイプミスや書き残しはもうないので仕様はこれでいいと思います。

/* コンマかピリオドならstr2の位置を1つ左へ */

}
/* str1を1文字右に移動 */
i++;
}

/* str2(単語)に終端文字を追加 */

134:デフォルトの名無しさん
07/10/25 00:17:32
プログラマは数学が苦手なんです。
プログラマはコーヒーとタバコが好きなんです。

135:デフォルトの名無しさん
07/10/25 00:18:36
>>131
納得したその計算してたのね。

136:86
07/10/25 00:19:18
>>86>>89>>91>>96>>98>>101>>>>115>>122
本当にありがとうございます
大変助かりげぶき



137:デフォルトの名無しさん
07/10/25 00:20:34
>>134
英語も苦手だよ。後、眠気覚まし+暇つぶしにガムもスキだよ。

138:デフォルトの名無しさん
07/10/25 00:30:39
>>133
i++はそこでいいよ。

テンプレどおりにやると入力の最後に空白入れないとバグる。
str1[i] != ' ' のとこを str1[i] != ' ' && str1[i] != '\0'
にすればたぶんOK.

139:86
07/10/25 00:30:55
ミス……
本当に助かりました
ありがとうございます

140:22
07/10/25 00:34:15
自分の問題に対してレスしてくれたり、といてくれた人達、
本当にありがとう!!
助かりました!!!!

141:デフォルトの名無しさん
07/10/25 00:37:59
>>138
提出の際に聞いてみます。

期限ぎりぎりで半ば諦めていたので、本当に感謝ありがとうです。

手直しも直ぐにやっていただき助かりました。

142:デフォルトの名無しさん
07/10/25 00:51:09
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):
1:y=sin(x) x=0から4πまで、512分割して、yの値を求め、ファイルに書き込む。
2:y=sin(x-π/2) x=0から4πまで、512分割して、yの値を求め、ファイルに書き込む。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語:C
[4] 期限:なるべく早めに
[5] その他の制限: 特にないです。

よろしくお願いします。

143:デフォルトの名無しさん
07/10/25 01:00:46
#include<stdio.h>
#include<math.h>

main(){
int n;
FILE *fp=fopen("sin.txt", "w");
for(n=0;n<=512;n++)fprintf(fp,"sin(π×%d/512) = %f\n",n,sin(4*M_PI*(n+0.0)/512));
}

144:デフォルトの名無しさん
07/10/25 01:07:18
こっち訂正汁

for(n=0;n<=512;n++)fprintf(fp,"sin(4π×%d/512) = %f\n",n,sin(4*M_PI*(n+0.0)/512));
for(n=0;n<=512;n++)fprintf(fp,"sin(4π×%d/512 - π/2) = %f\n",n,sin(4*M_PI*(n+0.0)/512-M_PI/2));

145:デフォルトの名無しさん
07/10/25 01:13:41
#include<stdio.h>
#include<math.h>

main(){
FILE *fp=fopen("sin.txt", "w");
for(int n=0;n<=512;n++)fprintf(fp,"sin(4π×%d/512 - π/2) = %f\n",n,sin(4*M_PI*(n+0.0)/512-M_PI/2));
fclose(fp);
}

146:デフォルトの名無しさん
07/10/25 01:15:03
>>63
テンプレがおかしい。指示通りにやるとセグメントエラーを起こす。

147:デフォルトの名無しさん
07/10/25 01:17:10
>>111
まずはこんなので
URLリンク(kansai2channeler.hp.infoseek.co.jp)

148:デフォルトの名無しさん
07/10/25 01:32:23
>>147
ありがとうございます。
残念ながら、今はプログラミングができる環境じゃないので、明日試して見ます。

149:142
07/10/25 01:32:29
>>143>>144>>145
早速答えていただき、本当にありがとうございます!
助かりました!

150:デフォルトの名無しさん
07/10/25 01:47:38
>>146
一応、>>127のi++;の付け加えでちゃんと動いてくれるので、OKです。
コンパイル通って、動作も「,.」削除+空白削除+分割表示できてるので。

151:デフォルトの名無しさん
07/10/25 01:48:52
i++;じゃなくてstr1[i] != ' ' && str1[i] != '\0'の変更ですね。

152:147
07/10/25 02:07:00
>>111
念のため、

#define DAYS 10 // 販売期間
#define ITEMS 10 // 製品の種類数

の部分を

#define DAYS 1000 // 販売期間
#define ITEMS 100 // 製品の種類数

と書き換えると題意に沿った回答になる。
ただし、このとき、出力が最悪200000行になるので注意。

153:デフォルトの名無しさん
07/10/25 06:10:11
>>82
課題にはそのとおり書いてあったんですが・・。
自分には問題の①~③の意味がさっぱりで・・・。

>>83
それが答えってことになるのですか?

154:デフォルトの名無しさん
07/10/25 06:30:23
こたえだね。

155:デフォルトの名無しさん
07/10/25 07:17:13
答えかどうかもわからないって…

156:デフォルトの名無しさん
07/10/25 09:26:14
[1] 授業単元:情報システム基礎
[2] 問題文(含コード&リンク):このC言語で作られたプログラムをC++に変えて下さい
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: すいません、よくわかりません。
                     講義では「Microsoft Visual Studio .NET 2003」を使用しています
 [3.3] 言語: CからC++へ
[4] 期限: 明日が終わるまで
[5] その他の制限: 特になし

明日までと急なことで申し訳ありませんがお願いします。

157:デフォルトの名無しさん
07/10/25 09:59:01
>>156
本当にそんな問題が……?

158:デフォルトの名無しさん
07/10/25 10:04:20
>>156
すでにC++ですっていって提出しちゃえば?
問題が曖昧すぎ

159:デフォルトの名無しさん
07/10/25 10:18:09
プログラムは配布されたプリントから打ち込みましたが、
問題文は文章でなく口頭で出題されました。全くこの通りです。

すでにC++になっているんでしょうか?

160:156 ◆B5khfT.h4o
07/10/25 10:19:39
すいません、今更ですがトリップをつけるのを忘れていました

161:デフォルトの名無しさん
07/10/25 10:56:23
>>159
拡張子cppでコンパイルしてみな

162:デフォルトの名無しさん
07/10/25 11:03:08
class Helonを作ってコンストラクタで三辺の長さで初期化して
get()で返すとか、そういう風にすればどう?

あとprintfをcoutに無理矢理直すとそれらしく見える。別にprintfでも
C++の範囲内なのだが。

163:デフォルトの名無しさん
07/10/25 11:31:04
>>156
無理矢理C++にしてみた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

164:デフォルトの名無しさん
07/10/25 13:40:38
>>147
一つ目の製品はちゃんと発注するんですけど、二つ目以降は発注が行われないんですけど
どうすればいいんですか?

165:147
07/10/25 14:00:28
>>111 >>164

// 製品情報初期化
int ADD_NUM = (rand()%81)+FIRST_NUM;
int ADD_NUM_LOWER = (rand()%31)+50;
int ADD_DAYS = (rand()%5)+1;

の部分に

// 製品情報初期化
int ADD_NUM = (rand()%81)+FIRST_NUM;
int ADD_NUM_LOWER = (rand()%31)+50;
int ADD_DAYS = (rand()%5)+1;
inc_day = 0;

を書き足せばよかったみたい。

ということでソースは下記に。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

>>152も参考に。

166:デフォルトの名無しさん
07/10/25 14:06:31
>>165
できました。本当にありがとうございました。


167:65です
07/10/25 14:48:32
遅くなりました。すいません。
変数を州ごとに集計して平均を出す部分がよくわかりません。

>67
ファンクションについてはまだ授業で習っていないので、先生に避けたほうがいいと言われました。
でも、Voidとか変数のReferenceとか基本的なことは本で読んだので、使ってくださってもけっこうです。
提出するコードは、ファンクションを使わないように書き換えます。

>70
はい。州の略はその通りで大丈夫です。

168:デフォルトの名無しさん
07/10/25 15:30:40
>>147さん
URLリンク(kansai2channeler.hp.infoseek.co.jp)
っていう課題が新たに出されたので、やっていただけませんか?
以前のプログラムがとても見やすかったので、よろしくお願いします。

169:デフォルトの名無しさん
07/10/25 16:52:28
>>65 >>167
URLリンク(kansai2channeler.hp.infoseek.co.jp)

・しっかりとgetlineを使っている。
・line.substr(13, 2)とline.substr(23, 4)を使って読み込んでいるので、gasprices.txtの配置がずれたら限りなくアウト。

170:デフォルトの名無しさん
07/10/25 16:54:31
>>14
まだ、待っています。出来る方お願いします。

アドバイスはいくつか貰ったのですが、関数から関数への受け渡しがうまく行きません。

171:169
07/10/25 17:00:34
>>65 >>167 続き
・1行目にある #include <algorithm> は削除。
・出力は一応CSV のはず。
・アメリカの略号に誤入力があるかもしれない。
・アメリカの州って50だったっけ?

172:コンパイルは出来たがあってないぞ
07/10/25 17:06:21
#include<stdio.h>
#include<string.h>
void d_word(char st[], int pos, int len){
int l=strlen(st);
int i;
for(i=pos; i<=l-len; i++) {
st[i] = st[i+len]; }}

void search_del(char st1[], char st2[]){
int i, j;
int m1=strlen(st1);
int m2=strlen(st2);
for(i=0; i<=m1-m2; i++) {
for(j=0; j<m2; j++) {
if(st1[i+j] != st2[j])
break; }
if(j=m2) {
d_word(st1, i, m2);
m1 -= m2;
}}}

int main(){
char str1[256], str2[256];
printf("string? : ");
gets(str1);
printf("deleted word? : ");
gets(str2);
search_del(str1, str2);
puts(str1);
return 0;}

173:デフォルトの名無しさん
07/10/25 17:22:18
お願いします

問題【0からa-1までの整数の乱数をn個発生させ、発生した整数のヒストグラムを表示しなさい。
ただし。a<21とし、aとnはキーボードから入力する】
______________________________________________とりあえずいままで作成したコードです__________________________________
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
main(void)
{
int n,a,b,i,val;
int c[21];
printf("0からa-1までの整数の乱数をn個発生させ、\n");
printf("発生した整数のヒストグラムを表示させます\n");
printf("1から21までの任意の整数aを入力してください。\n");
scanf("%d",&a);
printf("任意の正の整数nを入力してください。\n");
scanf("%d",&n);
if(a<=0||a>=22)
{printf("aの値を入力しなおしてください。\n");}
else{
val=(double)rand()/(RAND_MAX+1)*a;
if(n<=0) {printf("nの値を入力しなおしてください。\n");}
else { for (i=0; i<=(a-1); i++)
{printf("aが%dのとき、%d回\n",i,c[val]);
c[val]=c[val]+1;}
}
}
}___________________________________________________________________________________________________________________________

174:173
07/10/25 17:24:12
結果表示はヒストグラムというか
~は~回という形式にします

volとかそのへんの扱いかたがよく分からずに参っております
よろしくお願いいたします。

175:156 ◆B5khfT.h4o
07/10/25 17:26:49
レスしてくれた方やプログラムを作ってくれた>>163さん、ありがとうございました。
とりあえず課題を出したうえで、C++にするのはどういうことか詳しく聞いてみます。

176:65です
07/10/25 17:31:19
>169さん
丁寧にありがとうございます。
はい、アメリカの州は50です。
ところで、私は途中まで以下のようにコードを組み立てたのですが、以下のようなやり方でも、プログラムを完成させることはできますか?

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main (int argc, char **argv)
{
char peek;
ifstream myFile;
string cityName,
stateName;
float gasPrice;
myFile.open("gasprice_file.txt");
while((peek = myFile.peek () ) ! = EOF) {
myFile >> cityName;
myFile >> stateName;
myFile >> gasPrice;
If(! myFile) {
myFile.clear();
cityName = cityName + " " + stateName;
myFile >> sateName;
myFile >> gasPrice;
{
myFile.close();
return 0;
}


177:デフォルトの名無しさん
07/10/25 17:53:30
>>173
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main(void)
{
int n=-1,a=0,b,i,val,c[21];
for(i=0;i<21;i++) c[i]=0;
srand((unsigned int)time(NULL));// 乱数の初期化
printf("0からa-1までの整数の乱数をn個発生させ\n");
printf("発生した整数のヒストグラムを表示します。\n");
printf("1から21までの任意の整数aを入力してください。\n");
while(!(a>0&&a<22)){
scanf("%d",&a);
if(a<1||a>21)
printf("aの値を入力しなおしてください。\n");
}
printf("任意の正の整数nを入力してください。\n");
while(n<0){
scanf("%d",&n);
if(n<0)
printf("nの値を入力しなおしてください。\n");
}
for(i=0;i<n;i++){
val=(double)rand()/(RAND_MAX+1)*a;
c[val]++;
}
for (i=0; i<=(a-1); i++)
printf("%d = %d回\n",i,c[i]);
}
表示はヒストグラムでなくてもいいのかな。

178:デフォルトの名無しさん
07/10/25 17:58:47
>>170
アドバイスって言うか>>20で回答もらってるじゃない。
・if(j=m2)をif(j==m2)
・printf("%d\n", st1);をprintf("%s\n", st1);
この2点の変更だけで動くはず。変更の仕方が間違ってるんだと思う。

179:デフォルトの名無しさん
07/10/25 18:06:46
>>177
whileの条件とループの中のifで2回判定するのはムダ

180:デフォルトの名無しさん
07/10/25 18:22:58
>>177の訂正。入力部分。

while(scanf("%d",&a),!(a>0&&a<22))
printf("aの値を入力しなおしてください。\n");
printf("任意の正の整数nを入力してください。\n");
while(scanf("%d",&n),n<0)
printf("nの値を入力しなおしてください。\n");

>>179の指摘したムダを省くと多分こうなると思います。

181:デフォルトの名無しさん
07/10/25 18:26:06
ってやっちまった。>>180だと文字入力したら無限ループしてしまう。
while(scanf("%d",&a),!(a>0&&a<22)){
printf("aの値を入力しなおしてください。\n");
fflush(stdin);
}
printf("任意の正の整数nを入力してください。\n");
while(scanf("%d",&n),n<0){
printf("nの値を入力しなおしてください。\n");
fflush(stdin);
}
こうでした。

182:デフォルトの名無しさん
07/10/25 18:34:53
>>178
この様にコード書いたけどコンパイラが通らないです。

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

183:デフォルトの名無しさん
07/10/25 18:38:11
>>182
見ずにコメント。1.改行コード 2.全角スペース
そろそろコンパイラが吐いたエラー貼ったらどうだ?

184:デフォルトの名無しさん
07/10/25 18:42:43
>>182
#include<string.h>を追加。もしかしてstr~の関数習ってない?

185:デフォルトの名無しさん
07/10/25 18:45:55
>>177
ありがとうございます

実行してみたところ、
0以外の数字が何度やっても0回になってしまいますが
これはどうすればよろしいのでしょうか?

186:デフォルトの名無しさん
07/10/25 18:50:01
>>183
エラーが無いので下に張りました。

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

>>184
追加しても効果なかったです。関数str~習ってます。

187:デフォルトの名無しさん
07/10/25 18:52:46
>>186
「エラーが無いので」×
「エラーが長いので」○



188:デフォルトの名無しさん
07/10/25 18:54:50
1] 授業単元:C言語
[2] 問題文:ファイルの内容を読み込んで、下記の例のように読み込んだ内容を
ディスプレイに表示させよ。

ファイルの内容
誕生年:2000
誕生月:1
誕生日:2
身長:120.0
体重:21.0
名字:Kouno
名前:Hiro

実行例
氏名 Kouno Hiroです。
生年月日は2000年1月2日です
身長120,0cm 体重21,0kgです
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007年10月26日
[5] その他の制限: ライブラリ関数は使っても大丈夫です。

読み込むことはできたのですが、fgetsを使うと「誕生年:2000」と読み込んで
しまって2000だけ表示させることができません。

よろしくお願いします。

189:デフォルトの名無しさん
07/10/25 18:57:41
>>185
valにちゃんと値が入ってないのかな。
val=(double)rand()/(RAND_MAX+1)*a;

val=rand()%a;
に変えてみてください。

>>186
インデントを全角スペースでやってない?

190:デフォルトの名無しさん
07/10/25 19:04:06
>>189
盲点、スペースを全角でやっていました。

スペースを全て消したらコンパイルが通って、ちょんと動きました。

全角スペースでエラー返されるんですね、勉強になりました。

次からはスペースの全角/半角に気をつけます。

191:デフォルトの名無しさん
07/10/25 19:09:39
>>189
ありがとうございます!ちゃんとできました
助かりました

192:デフォルトの名無しさん
07/10/25 19:57:16
>>188
URLリンク(kansai2channeler.hp.infoseek.co.jp)

193:169
07/10/25 20:16:30
>>176
できます。あなたらならできます。

194:デフォルトの名無しさん
07/10/25 20:39:32
[1] 授業単元:プログラミング実験
[2] 問題文(含コード&リンク):
URLリンク(case.f7.ems.okayama-u.ac.jp)
にならって以下のデータ平均分散を用いて確率を出せ。10次元です。
データ
-18.858 1.046 -1.616 4.023 1.857 4.207 6.451 0.989
-3.807 0.744
平均 
-6.388222e+00 -1.383500e+01 -1.249702e+01 -3.617623e+00 2.185494e-01
3.840833e+00 6.477101e+00 -1.552781e+01 4.537848e+00 -2.995257e+00  
分散
1.504899e+01 2.376009e+01 2.176429e+01 2.650845e+01 2.850247e+01
5.442906e+01 3.594814e+01 7.991224e+01 2.946554e+01 3.397208e+01
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007年10月26日まで
[5] その他の制限: なし


195:78&153
07/10/25 20:56:27
すいません、問題③に間違い&追加がありました。
実装仕様もあって、書いてたことが違ってました。
以下が訂正問題です。

[1] 授業単元:文字列操作プログラム
[2] 問題文(含コード&リンク):
配列とポインタを使用し、文字列操作を行うプログラムを作成せよ。
①独自のstrlen関数mystrlen関数を自作する。
  文字列のポインタを受け取り、文字列の長さを返す関数を作成する。

②独自のstrcpy関数mystrcpy関数を自作する。
  文字列のポインタ2つを受け取り、文字列のコピーを行う関数を作成する。

③独自のatoi関数myatoi関数を自作する。
  数値文字列のポインタを受け取り、数値を返す関数を作成する。

④独自のitoa関数myitoa関数を自作する。
  数値を受け取り、指定された基数で文字列変換を行う関数を作成する。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語:C言語
[4] 期限:2007年10月26日朝5:00まで

>>196に続く

196:78&153
07/10/25 20:56:58
>>195の続き

[5] その他の制限:実装仕様として、
①int mystrlen(const char*s)
第一引数:文字列のポインタ
 戻り値:文字列の長さを返す

②char*mystrcpy(char*s1,const char*s2);
第一引数:コピー先バッファのポインタ
 第二引数:コピー元文字列のポインタ
 戻り値:第一引数の文字列へのポインタを返す

③int myatoi(const char*nptr);
第一引数:変換元の数値文字列
 戻り値:変換された値を返す

④char*myioa(int value,char*buff,int radix);
第一引数:変換元の整数
 第二引数:変換後の数値文字列を格納するバッファのアドレス
 第三引数:基数(何進数で変換するか。2~36の範囲内で指定可能)
 戻り値:第二引数の文字列へのポインタを返す

と、なっております。
すいませんが回答の方をよろしくお願いします

197:デフォルトの名無しさん
07/10/25 21:03:26
>>66 = >>71 = >>93 = >>130 = >>194

198:デフォルトの名無しさん
07/10/25 21:28:40
>>195 >>196
いまさら?これから変更するの面倒だし
期限:2007年10月26日朝5:00
ってことは残り7時間、無理。
がんばれノシ

199:デフォルトの名無しさん
07/10/25 21:31:16
標準ライブラリ使っちゃダメって書いてないんだからそのまま引数渡せばいいだろ。

200:デフォルトの名無しさん
07/10/25 21:31:22
>>123
ありがとうございます!
感謝します!

201:デフォルトの名無しさん
07/10/25 21:36:03
よろしくお願いします。
[1] 授業単元:C++プログラミング
[2] 問題文(含コード&リンク):
次のクラス定義を参照して、関数 func 内の処理を記述してください。
関数 func 内では p が派生クラス MagazineMotorcycle のインスタンスを指すかどうかを調べて、
もしそうならメンバー関数 Reserve を呼び出してください。そうでなければ false を返してください。

class Magazine
{
public:
virtual bool Order(int amount = 1) = 0;
};
class MagazineMotorcycle : public Magazine
{
public:
bool Order(int amount = 1) {}
bool Reserve() {}
};
bool func(Magazine* p)
{
// 可能ならば MagazineMotorcycle::Reserve() を呼び出す処理
}

[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C++
[4] 期限: 10/26 12:00
[5] その他の制限:なし


202:78&153
07/10/25 21:45:03
>>198
昨日書き込んで、今日間違い気づいたんですよorz
できればお願いします。自分にとっては、これってホントに初級編!?って
いうぐらい難しい

203:デフォルトの名無しさん
07/10/25 21:46:42
>>201
bool func(Magazine* p)
{
    // 可能ならば MagazineMotorcycle::Reserve() を呼び出す処理
    if (MagazineMotorcycle* mm = dynamic_cast<MagazineMotorcycle*>(p))
        mm->Reserve();
    return false;
}

これでおk?

204:デフォルトの名無しさん
07/10/25 22:03:47
[1] 授業単元:データ構造とアルゴリズム1
[2] 問題文(含コード&リンク):stack.cpp 中のpushとpop関数を完成せよ。
stack.cpp:URLリンク(kansai2channeler.hp.infoseek.co.jp)

[3] 環境
 [3.1] OS:win xp
 [3.2] Microsoft Visual Studio .NET 2003
 [3.3] 言語:c++
[4] 期限:2007年10月26日9:30まで
[5] その他の制限:(どこまで習っているか)構造体、ファイル処理まで

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

205:デフォルトの名無しさん
07/10/25 22:10:08
>>203
ありがとうございます。
こちらを提出してみます。

206:デフォルトの名無しさん
07/10/25 22:12:28
>>201
bool func(Magazine* p)
{
    // 可能ならば MagazineMotorcycle::Reserve() を呼び出す処理
    if (MagazineMotorcycle* mm = dynamic_cast<MagazineMotorcycle*>(p))
        return mm->Reserve();
    return false;
}

こんどこそおk?

207:デフォルトの名無しさん
07/10/25 22:26:15
>>204

// データvalをスタック x に積む
void push(int *x,int val)
{
    // (1) スタックがオーバフローかどうかをチェック
    if (stack_pointer < stack_size) {
        // (2) オーバフローでなければデータ val をスタック x につむ
        x[stack_pointer++] = val;
    }
}

// データをスタック x からおろす
void pop(int *x)
{
    // (1) スタックがアンダーフローかどうかをチェック
    if (stack_pointer > 0) {
        // (2) アンダーフローでなければスタックxからデータをおろして、
        // スタックポインターを調整    
        stack_pointer--;
    }
}

これでおk?

208:デフォルトの名無しさん
07/10/25 22:41:25
>>207おkです。感謝です。
本当にありがとうございます。
助かりました。

209:57
07/10/25 22:54:44
>>60
レスありがとうございます。
今日の朝、main関数を作って動かしてみたのですが、
おかしいです。
例えば、連結リストのaの値を10、11、12とすると、
11、10、56787
と、一番最後が変な数値になってしまいます。
並び替える前に表示すると、10、11、12となってちゃんと動作するので、
表示する関数は間違ってないと思います。
一応補足として、自分が扱っている連結リストは一番最初に、aに値が
含まれていない要素があり、その後からaに値が含まれる要素が並びます。

210:デフォルトの名無しさん
07/10/25 23:10:52
>>202
#include<stdio.h>
int mystrlen(const char *s)
{
int len=0;
while(*s++!='\0') len++;
return len;
}
int myatoi(const char *nptr)
{
int i,n=0,sign=0,len=0;
const char *s=nptr;
while(*s++!='\0') len++;
if(*nptr=='-'){
sign++; len--; *nptr++;
}
for(i=0;i<len;i++)
n=10*n+*nptr++-'0';
return sign ? -n : n;
}
mystrcpy,myitoaは>>83のままで仕様満たしてるのでそれ以外を。

211:デフォルトの名無しさん
07/10/25 23:11:09
>>147さん
URLリンク(kansai2channeler.hp.infoseek.co.jp)
っていう課題が新たに出されたので、やっていただけませんか?
以前のプログラムがとても見やすかったので、よろしくお願いします。


212:デフォルトの名無しさん
07/10/25 23:19:38
>>168さん、この生産管理プログラムの期限はいつまででしょうか。

213:78&153
07/10/25 23:21:11
>>83>>210
遅い時間に本当にありがとうございます。
お手数おかけ致しました。(TT)

214:デフォルトの名無しさん
07/10/25 23:21:23
>>209
糞リストの仕様を書かなかったほうが悪い。

215:デフォルトの名無しさん
07/10/25 23:22:42
お願いします!!

[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
 1:int型整数をchar型配列の文字列に変換するitoa関数を作れ
 2:long型整数をchar型配列の文字列に変換するltoa関数を作れ
 3:float型小数をchar型配列の文字列に変換するftoa関数を作れ
[3] 環境
 [3.1] OS: XP sp2
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C
[4] 期限: 明日26日(金)の16時まで

216:デフォルトの名無しさん
07/10/25 23:33:35
>>215
1.
char* itoa(int n){static char c[16];sprintf(c,"%d",n);return c;}
2.
char* ltoa(long n){static char c[16];sprintf(c,"%ld",n);return c;}
3.
char* ftoa(float n){static char c[16];sprintf(c,"%f",n);return c;}

217:デフォルトの名無しさん
07/10/25 23:34:03
>>215
itoaは >>83 にあるよ。ltoaはitoaとほとんど変わらん。
ftoaも小数点以下あるだけであんま変わらないな。

218:57
07/10/25 23:37:20
>>214
申し訳ないです。

リストの仕様は以下の様になります。
・リストは連結リストで片方向リストです。
・次の要素がない場合(リストの一番最後)は、次の要素へのポインタをNULLとします。
・リストの一番最初には、aに値が含まれていない要素があります。

よろしくお願いします。

219:デフォルトの名無しさん
07/10/25 23:42:13
木曜日の15時までです。

220:デフォルトの名無しさん
07/10/25 23:45:52
>>218
static struct c *re_internal(struct c *l)
{
struct c *p;
if(l->n==NULL) return l;
p = re(l->n);
l->n->n = l;
l->n = NULL;
return p;
}
struct c *re(struct c *l)
{
if(l->n) l->n = re_internal(l->n);
return l;
}

221:デフォルトの名無しさん
07/10/25 23:49:08
再帰は?

222:215
07/10/26 00:03:01
>>216
さすがにsprintfは使うわけにはいかないかと・・・w

>>217
ありがとうございます。
>>83を参考にしてやってみようと思います。

223:57
07/10/26 00:03:47
>>219
減点はするけど、出さないよりは、ましだから今週の課題と一緒に来週に
出しなさいと言われました。

>>220
ありがとうございます。
リストの仕様は>>218に書いた通りですが、
問題自体は>>57に書いた通り、再帰を使わないと…

224:デフォルトの名無しさん
07/10/26 00:08:57
>>220
re_internalの中でre呼び出してる

225:57
07/10/26 00:23:54
>>224
再帰って自分自身の関数を呼び出すんじゃないですっけ?
これだと、他の関数を呼び出してるだけな気がするのですが…
一つの関数で作ることって出来ないのですかね?


226:デフォルトの名無しさん
07/10/26 00:24:24
>>218 直した
static struct c *re_internal(struct c *l)
{
struct c *p;
if(l->n==NULL) return l;
p = re_internal(l->n); // <- この行
l->n->n = l;
l->n = NULL;
return p;
}
struct c *re(struct c *l)
{
if(l->n) l->n = re_internal(l->n);
return l;
}

>>224 thx

227:57
07/10/26 00:50:35
>>226
ありがとうございます。

228:デフォルトの名無しさん
07/10/26 00:58:09
リストの先頭にデータを入れないことによってどんな利点があるの?

229:168
07/10/26 00:58:45
>>147・212
28日までにお願いしたいんですけど・・・
よろしくお願いします。

230:デフォルトの名無しさん
07/10/26 07:29:15
1] 授業単元: C言語
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 2007年10月26日
[5] その他の制限: ライブラリ関数は使ってもおkです

徹夜で考えたんですが分からなかったのでお願いします

URLリンク(kansai2channeler.hp.infoseek.co.jp)のよに書いたのですが
セグメントエラーが出てしまいます。
ダメなところとかがあったら直して教えてください。

231:デフォルトの名無しさん
07/10/26 07:51:19
>>230
比較用演算子 == を使うこと.
if(fop=NULL)
if(fout=NULL)

あと、終盤で下記不要
> heikin=goukei/NUM;
> fprintf(fout,"番号\t平均点との差\n");
> for(i=0;i<NUM;i++)
> {
> fscanf(fop,"%d%d",&gakusei[i].bangou,&gakusei[i].seiseki);
> goukei=+gakusei[i].seiseki;
> }

最後は goukeiもNUMも整数なのでgoukei/NUMは整数となるのを防ぐ
heikin=(double)goukei/NUM;

232:デフォルトの名無しさん
07/10/26 08:09:19
>>230
14~21行目: 使わない変数 (fairu, cp, sirusi1, sirusi2) の宣言は外しましょう

21行目: heikin は int 型でいいんじゃない?
double 型で行きたい場合、int型変数 (seiseki, goukei等) との計算をするときにキャストとか考えた方が良い

24,26行目: scanf("%s", &open); → scanf("%s", open);
ポインタを習っているかは知りませんが、配列名は単独で使用するとポインタ型になります

30,42行目: if (fop=NULL) → if (fop == NULL)
C言語での比較演算子は == です

56行目: goukei=+gakusei[i].seiseki; → goukei += gakusei[i].seiseki;
演算子を見直しましょう

63~70行目: 平均2回計算してるから消そう

74行目: "%d\t%dn" → "%d\t%d\n"
改行文字は "\n" で表します

233:デフォルトの名無しさん
07/10/26 08:16:51
>>231さん
>>231さん
朝早くだったのにレスありがとうございます。

おかげ様でセグメントエラーも出ないで実行できました
来週中間試験があるので
もっと勉強しなきゃいけないなと思いました。

ホントにお世話様でした

234:デフォルトの名無しさん
07/10/26 08:46:17
中間試験って紙にコード書くの?

235:課題お願いします
07/10/26 09:05:21
[1] 授業単元:プログラミング演習
[2] 問題文:n個からr個を選ぶ組み合わせは、nCr = n!/r!(n-r)! ただし、n! = 1*2*3*…*(n-1)*nで求められる。そこで、n!を求める関数functorial(n)を定義し、それを3度呼び出す形で、組み合わせnCrをもおめるプログラムを作成せよ。
[3] 環境
 [3.1] OS: (WindowsXP)
 [3.2] コンパイラ名とバージョン:Visual C++
 [3.3] 言語: C
[4] 期限: 今日の昼までに。
[5] その他の制限: 授業で配列とポインタは習いました。この問題は「関数」というセクションの問題です。大学の授業なのであまり難しくなり過ぎないようにお願いします。


236:235
07/10/26 09:07:30
書き間違いorz
[2] 問題文:n個からr個を選ぶ組み合わせは、nCr = n!/r!(n-r)! ただし、n! = 1*2*3*…*(n-1)*nで求められる。そこで、n!を求める関数functorial(n)を定義し、それを3度呼び出す形で、組み合わせnCr を求めるプログラムを作成せよ。

237:デフォルトの名無しさん
07/10/26 09:09:55
int function(int n)
{
return n<2 ? 1 : n * function(n-1);
}

int nCr(int n, int r)
{
return function(n) / function(r) / function(n-r);
}


238:デフォルトの名無しさん
07/10/26 09:11:28
一瞬で片付くというのもある意味爽快だ

239:デフォルトの名無しさん
07/10/26 09:20:03
>>234
中間試験は筆記と実技があって
実技は端末からサーバーにアクセスして書きます。

実技は今のままじゃ、受かる気がしません…
ファイル処理、ポインタがかなりヤバイです

240:デフォルトの名無しさん
07/10/26 09:23:34
関数名functorialだw
階乗ならfactorialだし、関数ならfunctionだからfuncだけみて間違っちまった。

241:デフォルトの名無しさん
07/10/26 10:59:15
1] 授業単元: プログラミング
[2] 問題文:3人の昼食代を入力し、その平均を関数aveにて計算し、
「割り勘で△円」と表示するプログラム
(定義例:double ave(double c1,double c2,double c3))
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: ([2007年10月26日まで] できれば早いほうがうれしいです。
[5] その他の制限:定義例を使ってください
if,while,switch,forは習いました

お願いします

242:デフォルトの名無しさん
07/10/26 11:01:22
なんで金額がdoubleなんだよ・・・

243:デフォルトの名無しさん
07/10/26 11:05:00
>>234
別人だけど、フロッピーでソース提出とか、メールで添付とかもあるけど、一番多いのは紙。

正直、このご時勢で紙でやるのは馬鹿だと思う。

244:デフォルトの名無しさん
07/10/26 11:14:18
>>242
小数点出てもいいらしいです。要はaveを使って計算したいのだと思います。

245:デフォルトの名無しさん
07/10/26 11:18:40
俺の高校は紙にVBA書かされたぜ

246:デフォルトの名無しさん
07/10/26 11:19:06
>>243
国がやってる情報処理系の資格試験は、全部紙だぞ?

247:デフォルトの名無しさん
07/10/26 11:24:49
先日はありがとうござました。

[1] 授業単元: C言語演習Ⅱ
[2] 問題文(含コード&リンク):
前回の授業で"姓/名"という形式の文字列を入力すると、これを姓と名を表す2つの文字列に分割するプログラムを作成した。

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

このプログラムを関数を用いた形に書き換えようと思い、次のプログラムを作成した。

このプログラムを実行すると、おかしな出力になってしまった。

問題1:このプログラムのどこが間違っているのか、その理由を答えよ。
    (ヒント:pt_s,pt_mはローカル変数)
問題2:プログラムを書き直せ。
    (配列を渡す方法、ポインタのアドレスを渡す方法などある)

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin gcc
 [3.3] 言語: C言語
[4] 期限:29日(月)

248:デフォルトの名無しさん
07/10/26 11:34:38
>>239
うちも紙~

さすがにプログラムを卓上で作りコード全部書けは無いけど、
5~6行くらいの穴埋めでプログラムを完成させよとか。

249:デフォルトの名無しさん
07/10/26 11:59:09
流石に資格試験でソース全部書けは無いだろ。
あったら死ねるけどw
普段書かない記号とか書かなきゃならんし、
インデント一つ追加しようと思ったらその間書き直しだし、
書いてる事がタイプ以上に考えてる事に追いつかないし、
変数名チェックも全部自分でしなけりゃならんから面倒だし。

250:デフォルトの名無しさん
07/10/26 12:01:52
>>239
うちは進んでるよ。
テストプログラムを当日教室で下してきて実行すると、P検みたいなプログラムが走って画面左半分が問題書いてあって、右半分の上がコマンドプロンプト?で下がテキストパッドになってる。

問題にある仕様のプログラムをテキストパッドで作って、「実行」ボタンがその下にあるから押すとコマンドプロンプトで自動的にコンパイル+実行してくれる。

作ってる途中のものを試しでコンパイルする度、実行はうざかった。

問題全部作ったら問題1番最後の回答終了を押すと自動で結果をサーバーに送信して、プログラム終了。

ファイヤーウォールに引っ掛かって提出できないとか、提出時に回線が込んでて提出できないとかで、良悪あるけどね。

251:デフォルトの名無しさん
07/10/26 13:04:09
>>250
なんだかすごい環境だな。

252:デフォルトの名無しさん
07/10/26 13:09:33
>>239
高専電気科の情報の授業では
ごく普通にPCでやってるぞ
しかも、授業で書いたコードを参照してもいいというオマケ付きで。

授業理解度を確かめるのならこういう方式でもよさげな気がする。

253:デフォルトの名無しさん
07/10/26 13:12:10
>>241
これは……一見するととても簡単そうなプログラムに見える……
そう見えるのはオレだけか……?

254:デフォルトの名無しさん
07/10/26 14:03:27
strcpyの使い方で質問があるんですが、
strcpy(a+(変数),b+(変数));
これはどういう意味でしょうか?+が特に分からないんですが…
a、bは配列です

255:デフォルトの名無しさん
07/10/26 14:06:41
>>250
せっかくプログラミングやってんだから、
講師の側でもそんな感じでテスト用プログラム作って欲しいもんだな

>>252
そういう方式もいいよなあ
実際のプログラミングだとソース参照し放題、ネットで調べ放題なわけで
それでもできない人がいるんだから、十分実力測れるだろう
プログラミングは暗記じゃない

256:デフォルトの名無しさん
07/10/26 14:38:19
>>254
その配列a, bの +変数分以降のみの文字列をコピーするという意味。
変数が 2 だったらaの先頭 2 文字は変化しない。

257:デフォルトの名無しさん
07/10/26 15:04:04
>>256
分かり易い解説ありがとうございました

258:235
07/10/26 15:23:52
>>237
ありがとうございました!!

259:デフォルトの名無しさん
07/10/26 16:17:50
>>247
元のプログラムではポインタ変数は仮引数なので呼び出し元に結果が反映されない
#include <stdio.h>

void namesplit(char [], char **, char **);

int main(void){
char full[200];
char *pt_sei, *pt_mei;

printf ("姓/名で入力せよ:");
scanf("%s", full);

namesplit(full, &pt_sei, &pt_mei);

printf("姓:%s\n 名:%s\n", pt_sei, pt_mei);
return 0;
}

void namesplit(char f[], char **pt_s, char **pt_m)
{
/*pt_sとpt_mをfの先頭アドレスにセット*/
*pt_s = f; *pt_m = f;
/*スラッシュまでpt_mを移動*/
while (**pt_m != '/')
(*pt_m)++;
**pt_m = '\0';
(*pt_m)++;

/*これで、pt_seiとpt_meiはそれぞれ姓と名を指す場所に移動した?*/
}

260:デフォルトの名無しさん
07/10/26 17:08:00
>>253
わかる人は簡単だよ
でも、習ったばっかりなんだろ
最初はみんなわからないもんだよ

261:デフォルトの名無しさん
07/10/26 17:32:12
一分で書けるけど書かない

262:デフォルトの名無しさん
07/10/26 18:04:04
なぜ書かない?

263:デフォルトの名無しさん
07/10/26 18:17:14
単純に3つの引数とって平均を求める関数て言えばいいのに、なんで割り勘とか余計な設定つけてんだよ。
一人一人の代金がわかってるなら、割り勘になんてしないだろ。

264:デフォルトの名無しさん
07/10/26 18:43:15
>>263
「相乗平均じゃなくて相加平均だよ^^ お前ら間違えんなよ^^」て言いたかったんだよ
気の回る良い先生じゃないか

265:デフォルトの名無しさん
07/10/26 19:40:50
宿題マダァ?(・∀・ )っ/凵⌒☆チンチン

266:デフォルトの名無しさん
07/10/26 22:09:36
ひつまぶしキボンヌ

267:デフォルトの名無しさん
07/10/26 22:12:45
質問テンプレ】
[1] プログラミング
[2] 自然対数の底eを求めるプログラムをSRT除算を用いて求めよ。
exp(x)=Σ(n=0,∞){1/n!}=1/0!+1/2!+1/3!+…+1/n!
   =1+(1+1/2(1+1/3(1+…+1/n)))
固定小数点で、整数部を16ビット、小数部を48ビットとする(n≧17)
[3] 環境
 [3.1] Vine Linux
 [3.2] gcc
 [3.3] C言語
[4] 2007年10月29日8:40まで でも早い方がいいです。
[5] ループを使用してお願いします。

268:デフォルトの名無しさん
07/10/26 22:12:55
全ディレクトリのファイルを調べてサイズが一致するファイルをプルパスで出力せよ

269:デフォルトの名無しさん
07/10/26 22:19:18
URLリンク(journal.mycom.co.jp)

270:デフォルトの名無しさん
07/10/26 22:22:06
>>265
自分で要求するほど、宿題を回答してやりたいのか。

この掲示板の鏡だな、解けない問題は無いってか?

271:デフォルトの名無しさん
07/10/26 22:25:20
SRT除算は簡単ではないな

272:デフォルトの名無しさん
07/10/26 22:43:03

[1] プログラミング
[2] URLリンク(doiob.net)
シンプソンの公式を用いて定積分を求めるプログラムを作成し、
以下2つの定積分を計算せよ。ただし刻み幅 h=0.1 とする。
[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] C言語
[4] 2007年10月29日

お願いします

273:デフォルトの名無しさん
07/10/26 22:46:03
>>269
これはむずい
もう少し前のページから見ないと単語がわからなすぎる

274:デフォルトの名無しさん
07/10/26 22:54:36
シンプソンは簡単 関数をf(x)とし、 区間(a,b)を一分割で積分するとする
m=(a+b)/2 、d=(b-a)とするとき積分値は d/6 * (f(a)+f(b)+4f(m))だ
N分割のときはこの値を使えばいい

275:デフォルトの名無しさん
07/10/26 22:57:47
>>274
なぜコードで示さないんだ

276:デフォルトの名無しさん
07/10/26 22:59:44
具体的には、区間(a,b)をN分割するならば、

F(s,t)= (t-s)/6 * (f(s)+f(t)+4f(s+t /2)) 、 d = (b-a)/Nとおくとき

n=0,・・・,N-1に対しF(a+nd, a+(n+1)d)の和を計算すればよい

277:デフォルトの名無しさん
07/10/26 23:02:42
>>276
擬似コードだけなら単位はやれないな

278:デフォルトの名無しさん
07/10/26 23:03:56
>>275
プログラム自体は計算と結果の出力だけの簡単なものだからチャレンジしてみなってことじゃない?

計算内容自体は>>274が解説してくれてるし。
もしくは作成中か。

279:デフォルトの名無しさん
07/10/26 23:08:01
>>259
ありがとうございます。ポインタ変数が問題だったんですね。

仮引数だったのをポインタのポインタで呼び出しが出来るようにしたと。

なるほど納得しました。

280:デフォルトの名無しさん
07/10/26 23:09:01
#include <stdio.h>
#include <math.h>

double f(double x){return exp(-x*x);}
double g(double x){return exp(1/sqrt(1+x*x*x*x));}

#define F(a,b) (f(a)+f(b)+4*f((a+b)/2))*(b-a)/6
#define G(a,b) (g(a)+g(b)+4*g((a+b)/2))*(b-a)/6


int main(){
double x,d=0.1,sum;
sum=0;
for(x=0;x<1;x+=d)sum+=F(x,x+d);
printf("%f\n",sum);

sum=0;
for(x=0;x<1;x+=d)sum+=G(x,x+d);
printf("%f\n",sum);
}

281:デフォルトの名無しさん
07/10/26 23:10:31
訂正
double g(double x){return 1/sqrt(1+x*x*x*x);}

282:デフォルトの名無しさん
07/10/26 23:12:03
値があっているか確認したいが数値計算ソフトだれか持っている?

283:デフォルトの名無しさん
07/10/26 23:12:09
何にせよ動作するリストを出すのがこのスレってもん

284:デフォルトの名無しさん
07/10/26 23:12:15
>>274 >>276
で組み込む計算式作ってくれてるから、もう課題出来てるも同然な気がする。

だって、その式を表示するだけで完成でしょ。

285:デフォルトの名無しさん
07/10/26 23:17:30
>>272 カウンタは整数のが良いと思うので便乗
#include <stdio.h>
#include <math.h>

double func1(double x)
{
    return sqrt(pow(x, 4) + 1);
}

double func2(double x)
{
    return exp(-pow(x, 2));
}

int main(void)
{
    double l = 0.0, r = 1.0, h = 0.1, s = 0;
    int i;

    for(i = 0; i < (r - l)/h; i += 2)
        s += h/3*(func1(l + i*h) + 4*func1(l + (i + 1)*h) + func1(l + (i + 2)*h));
    printf("%g\n", s);

    for(i = 0; i < (r - l)/h; i += 2)
        s += h/3*(func2(l + i*h) + 4*func2(l + (i + 1)*h) + func2(l + (i + 2)*h));
    printf("%g\n", s);

    return 0;
}

286:デフォルトの名無しさん
07/10/27 00:03:16
[1] 授業単元: コンピューター
[2] 問題文(含コード&リンク):整数演算と浮動小数点演算で自分のプロセッサのスピードをテストするプログラムと結果を示しなさい。 テストするのは整数、浮動小数点ともに、加減乗除の4つづ、計8つです。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:
[5] その他の制限: 結果はcygwinのtimeを使えってばっちゃが言ってました。
お願いします。


287:デフォルトの名無しさん
07/10/27 00:07:31
ふざけてんの

288:デフォルトの名無しさん
07/10/27 00:13:39
>>280
副作用乙

289:デフォルトの名無しさん
07/10/27 00:18:05
なんで6で割っているんだぜ?

290:デフォルトの名無しさん
07/10/27 00:34:16
>>289
#include <stdio.h>
#include <math.h>

double f(double x){return exp(-x*x);}
double g(double x){return exp(1/sqrt(1+x*x*x*x));}

#define F(a,b) (f(a)+f(b)+4*f((a+b)/2))*(b-a)/6
#define G(a,b) (g(a)+g(b)+4*g((a+b)/2))*(b-a)/6

int main(){
double x,d=0.001,sum;
sum=0;for(x=0;x<1;x+=d)sum+=F(x,x+d);
printf("%f\n",sum);

sum=0;for(x=0;x<1;x+=d)sum+=G(x,x+d);
printf("%f\n\n",sum);

//単純な定積分
int n,N=1/d;
sum=0;for(n=0;n<N;n++)sum+=d*g(n*d);
printf("%f\n",sum);}

291:デフォルトの名無しさん
07/10/27 00:47:03
Integral(f,a,b,d)って出来るの? 関数わたし

292:デフォルトの名無しさん
07/10/27 00:55:29
スマソ全然見てなかったわ

293:272
07/10/27 01:03:57
ありがとうございました
解説で分かってきたので色々と試してみます

294:291
07/10/27 01:09:38
できた
#include <stdio.h>
#include <math.h>

double f(double x){return exp(-x*x);}
double g(double x){return 1/sqrt(1+x*x*x*x);}
#define F(a,b) (f(a)+f(b)+4*f((a+b)/2))*(b-a)/6

typedef double (*func)(double);
double Integral(func f,int a,int b, double d){
int n,N=(int)1/d;double s=0;
for(n=0;n<N;n++)s+=F(n*d,n*d+d);
return s;}

int main(){
double d=0.001;
printf("%f\n",Integral(f,0,1,d));
printf("%f\n",Integral(g,0,1,d));}


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