[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 03/18 16:48 / Filesize : 222 KB / Number-of Response : 573
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++の宿題を片付けます 99代目



1 名前:デフォルトの名無しさん [2007/11/05(月) 20:38:18 ]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 97代目
pc11.2ch.net/test/read.cgi/tech/1193150915/

75 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 13:02:11 ]
>>68
ありがとうございました^^

76 名前:デフォルトの名無しさん [2007/11/07(水) 13:45:49 ]
このスレも遂に99代目、次100代目ですね。
[1] 授業単元: C言語演習V
[2] 問題文(含コード&リンク):
前回の講義にてプログラム実行時の引数を表示するプログラムを作成した。
(実行例)
>ensyu1 file1
argv[0]:ensyu1
argv[1]:file1

>ensyu1 file1 file2
argv[0]:ensyu1
argv[1]:file1
argv[2]:file2

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5223.txt
今回はプログラムが実行時にファイルを1つだけ引数として取るような
プログラムを作成したい。
そこで引数が違う場合には「Usagi: ./ensyu1 filename」と出力させ、
プログラムを終了するように修正せよ。
(実行例)
>ensyu1 file1
argv[0]:ensyu1
argv[1]:file1

>ensyu1 file1 file2
Usagi: ensyu1 filename
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin gcc
 [3.3] 言語: C言語
[4] 期限: 11月8日(木)PM12時までにお願いします。
[5] その他の制限: ファイルの標準入出力まで習いました。

77 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 13:49:02 ]
兎じゃなくて、普通はUsageですよ。

78 名前:デフォルトの名無しさん [2007/11/07(水) 13:50:40 ]
>>76
×「そこで引数が違う場合には「Usagi: ./ensyu1 filename」と出力させ、 」

○「そこで引数が2つ以上の場合には「Usagi: ensyu1 filename」と出力させ、」

でした./で実行はLinuxですね。(汗)

79 名前:デフォルトの名無しさん [2007/11/07(水) 14:03:53 ]
>>77
Usageです。兎だと思ってた。orz

80 名前:デフォルトの名無しさん [2007/11/07(水) 15:27:01 ]
すみませんが、お願いします。
[1] 授業単元: 音響工学
[2] 問題文(含コード&リンク):
 正弦波に対してガウス窓を掛け、テキストファイルに出力せよ。窓間は任意。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C++
[4] 期限:2007年11月8日まで
[5] その他の制限:特にありません。

よろしくお願いします!

81 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 16:21:26 ]
>>80
>>1 をきちんと読んだかい?

82 名前:80 [2007/11/07(水) 16:57:10 ]
一応読みましたけど、至らない点ありましたか?

83 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 16:59:55 ]
ガウス窓の説明とその描画方法を書くように



84 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 17:07:45 ]
>>83
知らないんなら無視すればいいんじゃないかなー
やる気あるならググれば一発だしー
描画しろなんてどこにも書いてないしー

85 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 17:13:22 ]
同意。それは兎も角、テキストファイルへの出力形式については質問させてくれ。
1行1データでずらっとならべればいいのか?

86 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 19:44:02 ]
>>80
gnuplot使えば簡単にできるってことでいいのか

87 名前:80 [2007/11/07(水) 19:46:33 ]
はい。
1行1データです。
ガウス窓でぐぐってもよくわからなかったので、お願いしに来た次第なのです。

すみませんが、できればお願いします。


88 名前:80 [2007/11/07(水) 19:47:48 ]
>>86
gnuplotでできるんですか?

89 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 20:07:16 ]
// >>80 ガウス窓
// gnuplot でやるには plot sin(x)*exp(-x*x/0.03*0.03)
#include <iostream>
#include <math>
#include <fstream>
#define pi 3.141592

int main (void) // window function - Gauss window
{
double x, sigma=0.03;
std::ofstream window("window.csv");

for (x=-pi; x<pi; x+=0.01){
window << x << ", " << sin(x) * exp(-x*x/sigma*sigma) << std::endl;
}
return 0;
}


90 名前:80 [2007/11/07(水) 20:15:28 ]
ありがとうございます!
これでなんとかなるかもです!

ご迷惑おかけしました。

91 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 20:58:38 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
cat コマンドの作成
fgetc()とfputc() 関数の使用
標準出力とすること。ファイル名を指定しない場合は標準入力
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc 3.4
 [3.3] C
[4] 期限:無期限
[5] その他の:ポインタあたりからあやふやです
よろしくお願いします。

92 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 21:25:02 ]
>[5] その他の:ポインタあたりからあやふやです
自己紹介はしなくておk

93 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 21:26:25 ]
[1] プログラミング
[2] y=ax*x+b*x+cをfor文を使って計算しなさい。係数a b cは自分で入力
xの始めの値、終わりの値、増やす値も自分で入力できるようにしなさい。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: gcc3.4
 [3.3] 言語: Cでおねがいします。
[4] 期限: 明日(11月8日まで)
[5] その他
#include<stdio.h>

main()
{
int i, x, y, a, b, c, d, e, f;

printf("y=x*x*a+b*x+cを計算します。\n");
printf("aとbとcを入力して下さい。 --->");
scanf("%f %f %f",&a, &b,&c);
printf("Xの始めの値を入力して下さい。 --->");
scanf("%f",&d);
printf("Xの終わりの値を入力して下さい。--->");
scanf("%f",&e);
printf("Xを増やす値を入力してください。 --->");
scanf("%f",&f);
for(x=d; x<=e; x+f){
y=(x*x*a)+(b*x)+c;
ここまでは自力でやったんですけどその先がまったく分かりません。
よろしくおねがいします。



94 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 21:58:32 ]
>>93
完成間近じゃねえかよw

95 名前:デフォルトの名無しさん [2007/11/07(水) 22:02:18 ]
>>53
コードありがとうございます。

所で・・・
答えとして
入力された分数が 1 / 2 と 2 / 3 のとき
1 / 2 + 2 / 3 = 7 / 6
1 / 2 − 2 / 3 = - 1 / 6
1 / 2 × 2 / 3 = 1 / 3
1 / 2 ÷ 2 / 3 = 3 / 4
こうなるんですが、マイナスの所だけ違うんですがどこを修正すれば
↑のようになりますか?

96 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 22:14:20 ]
>>95
int gcd(int a,int b)
{
int c,tmp;
if(a<0) a=-a;
if(b<0) b=-b;
if(b>a){
tmp = b;
b = a;
a = tmp;
}
/* ユークリッドの互除法で最大公約数を計算 */
while(a%b!=0){
c = a % b;
a = b;
b = c;
}
return b;
}
符号をチェックしてなかった。gcdをこれに入れ替えてください。
あと、無意味な比較があったのでそれも外してます。

97 名前:93 mailto:sage [2007/11/07(水) 23:17:20 ]
>>94いくらひねっても分からない・・・orz

98 名前:デフォルトの名無しさん [2007/11/07(水) 23:57:15 ]
[1] 授業単元: 応用プログラミング
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5224.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: g++
 [3.3] 言語: C++ (Cは全くわからないです)
[4] 期限: 11月8日21:00
[5] その他の制限: 条件は問題文と一緒にあります。
どうかよろしくおねがいいたします

99 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 00:05:27 ]
>>93
基本的にはあと y の値と、必要なら x の値を表示するだけだろう
それに加えて x,y,a〜f の型と、for のカッコの中身を修正するんだ

100 名前:デフォルトの名無しさん [2007/11/08(木) 00:11:29 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 画像を上下反転させる
[3] 環境
 [3.1] OS: Mac
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: Cです
[4] 期限: かなり急いでます、一時ぐらいまで・・・
[5] その他の制限: とりあえず基本的なこと(ポインタ、構造体等)はやりました。
簡単な解説とかあれば嬉しいです。よろしくお願いします。


101 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 00:18:05 ]
二次元配列の上下の要素を入れ替えるやり方でいいんじゃないの?

102 名前:デフォルトの名無しさん [2007/11/08(木) 00:28:09 ]
それがわからないんです・・・。
ネットで探してみましたが、プログラムの内容がさっぱりわかりません。

103 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 00:36:08 ]
単純な二重ループじゃない?



104 名前:デフォルトの名無しさん [2007/11/08(木) 00:51:16 ]
>>76
まだ待ってます。よろしくお願いします。

105 名前:デフォルトの名無しさん [2007/11/08(木) 01:01:06 ]
文字列の配列変数とか使いますか?


106 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:04:50 ]
[1] 授業単元: プログラミング技術
[2] 問題文(含コード&リンク):
行列Aとベクトルxの積y=Axを求めるプログラムを作成したい。
・行列nと列数mを入力させる。
・n×x(nかけるx)の行列Aのメモリを動的に確保する。
・ベクトルx,yのメモリを動的に確保する。
・A[0][0]からA[n-1][m-1]までの数値を1つずつ入力させる。
・ベクトルxの要素x[0]からx[m-1]の数値を入力させる。
・計算結果yの要素y[0]からy[n-1]を出力する。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin
 [3.3] 言語: C
[4] 期限:11/11(日)

107 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:06:09 ]
>>
106ーーー実行結果ーーー
./ensyu3
行(n)の数は?2
列(m)の数は?3
------
A[0][0]=1
A[0][1]=2
A[0][2]=3
A[1][0]=4
A[1][1]=5
A[1][2]=6
------
x[0]=1
x[1]=2
x[2]=3
------
y[0]=14
y[1]=32
$

108 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:07:27 ]
>>105
どれ宛の安価?

109 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:10:00 ]
そこまで書いてあるなら順番どおりにやるだけじゃん。

110 名前:デフォルトの名無しさん [2007/11/08(木) 01:10:18 ]
すみません、自分は100です。
色々定義しないとダメですよね・・・。
呼び出し関数を使わなくてもforを使えばいいのでしょうか?

111 名前:デフォルトの名無しさん [2007/11/08(木) 01:30:02 ]
>[4] 期限: かなり急いでます、一時ぐらいまで・・・

1時くらいまでといってる割には、ノンビリしてるな。
「1時くらいまでには、私は寝たい」から急いでるだけだろ?

こんなやつに、教える必要ないぞ。

112 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:56:26 ]
>>110
#define SWAP(type, a, b) {type c;c=a;a=b;b=c;}

for(y=0;y<height/2;y++)
{
for(x=0;x<width;x++)
{
SWAP(data_t, data[y][x], data[height-1-y][x]);
}
}

113 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:59:36 ]
期限近いヤツの先にやってやれよ。
>>76
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5225.txt



114 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 02:02:29 ]
>>113
ありがとうございます。
もう出来ないのかと思ってました。ほんとにありがとうございます。

115 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 02:12:31 ]
>>91
#include<stdio.h>

void file_output(FILE *fp_in, FILE *fp_out){
int moji;

while((moji=fgetc(fp_in))!=EOF) fputc(moji, fp_out);
}

int main(int argc, char *argv[]){
FILE *fp=stdin;
int i;

if(argc==1) file_output(fp, stdout);
for(i=1;i<argc;i++){
fp=fopen(argv[i], "r");
if(fp==NULL) continue;
file_output(fp, stdout);
fclose(fp);
}

return 0;
}

116 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 11:40:25 ]
【質問テンプレ】
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):
入力した文字列(行単位)n個をソートして
昇順に表示するプログラムを作成してください。
ただし同じ文字列は1回だけ表示します。
また、nは1024以下とし、文字列は1024文字までします。
<補足>
>以下を加えてください。
#include<stdio.h>
#include<string.h>


[3] 環境
 [3.1] OS:Linux
 [3.2] わかりません
 [3.3] C言語
[4] 期限: 11月10日
[5] その他の制限:
文字列の関数
strlen(s):sの長さを数える
strcmp(s1,s2):2つの文字列s1,s2を比較し、辞書的に大きい、等しい、小さいに対して
正数、0、負数を返す。
strcpy(s1,s2):文字列s2をs1にコピーし、s1のアドレスを返す。
strcat(s1,s2):文字列s2をs1の後に付け、s1のアドレスを返す。


117 名前:デフォルトの名無しさん [2007/11/08(木) 11:52:35 ]
【質問テンプレ】
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
整数除算 a/b (a,b は正または負の整数)を計算する関数
int fdivide(int a, int b )を作成せよ。 a と b とを入力、
fdivide(a,b )を計算して出力するmain 関数を作成し、
プログラムと実行結果を提出せよ。

a/b は a がb未満になるまでaから b を繰り返し
引き続け、その回数を記憶することで実現させる。

[3] 環境
 [3.1] OS: (WindowsXP)
 [3.2] コンパイラ名とバージョン: (bcc)
 [3.3] 言語: (C++)
[4] 期限: ([11月10日]まで)
[5] その他の制限:C++ の割り算演算子の利用は禁止
よろしくお願いします

118 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 14:43:16 ]
#include <stdio.h>
#include <stdlib.h>

unsigned fdivide(unsigned a, unsigned b)
{
unsigned sum = 0;
for (unsigned ic = 1; ic < a; ++ic) {
sum += b;
if (sum > a) return ic - 1;
}
return a;
}

int main(int argc, char ** argv)
{
printf("%d\n", fdivide(atoi(argv[1]), atoi(argv[2])));
return 0;
}

119 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 15:00:38 ]
>>116
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define WORD_LEN_MAX 1024

int cmp(char **a, char **b){
return strcmp(*a, *b);
}

int main(int argc, char *argv[]){
char buf[WORD_LEN_MAX+1+1], **word=NULL;
int len, wordnum=0L, i;

while(fgets(buf, sizeof(buf), stdin)!=NULL){
len=strlen(buf);
if(len>0 && buf[len-1]=='\n') buf[len-1]='\0';
word=realloc(word, sizeof(*word)*(wordnum+1));
word[wordnum++]=strdup(buf);
}
qsort(word, wordnum, sizeof(*word), cmp);

for(i=0;i<wordnum;i++) printf("%s\n", word[i]);
for(i=0;i<wordnum;i++) free(word[i]);
free(word);

return 0;
}

120 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 16:20:55 ]
[1] 授業単元:
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5226.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11月9日10:00まで]
[5] その他の制限: 特にありません
どうぞよろしくお願いします

121 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 16:24:14 ]
>>120
マルチ乙
pc11.2ch.net/test/read.cgi/tech/1180856695/546

122 名前:デフォルトの名無しさん [2007/11/08(木) 16:40:29 ]
>>91
学校特定しました。

123 名前:デフォルトの名無しさん [2007/11/08(木) 17:18:56 ]
>>117
#include <stdio.h>

int fdivide(const int a, const int b )
{
int numerator = a;
int denominator = b;
int result = 0;
int flg;
if(numerator < 0)
numerator *= -1;
if(denominator < 0)
denominator *= -1;
while(numerator >= denominator){
numerator -= denominator;
result++;
};
if((a > 0 && b > 0) ||(a < 0 && b < 0))
flg = +1;
else
flg = -1;
return result*flg;
}
int main()
{
printf("fdivide(6,2) = %d \nfdivide(1,3) = %d \nfdivide(6,-2) = %d \nfdivide(-6,2) = %d \n"
"fdivide(-7,2) = %d \nfdivide(7,-3) = %d \nfdivide(10,1) = %d \n"
,fdivide(6,2),fdivide(1,3),fdivide(6,-2),fdivide(-6,2),fdivide(-7,2),fdivide(7,-3),fdivide(10,1));
return 0;
}



124 名前:デフォルトの名無しさん [2007/11/08(木) 18:21:56 ]
[1] 授業単元: データ構造(アルゴリズム)
[2] 問題文:下記
[3] 環境
 [3.1] OS: LINUX
 [3.2] 言語: C
[4] 期限: 11月14日まで]
[5] その他の制限: 特にありません
どうぞよろしくお願いします



125 名前:デフォルトの名無しさん [2007/11/08(木) 18:24:49 ]
>>124
問題文書け

126 名前:デフォルトの名無しさん [2007/11/08(木) 18:25:10 ]
124続き
#include <stdio.h>
#include <malloc.h>
struct tfield {
int num[20];
struct tfield *pointer;
} ;
struct tfield *talloc(void);
int main(void)
{
struct tfield *head, *p;
head = NULL;
while (p = talloc(), scanf("%d", p -> num)!= EOF){
p -> pointer = head;
head = p; }
p = head;  while(p != NULL){
printf("%d\n", p -> num);
p = p -> pointer; } }
struct tfield *talloc(void)
{return((struct tfield *)malloc(sizeof(struct tfield)));
}
上記を、二つのリストをソートした新たなリストを表示するように改変せよ。です


127 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 19:31:55 ]
[1] 授業単元:データ構造とアルゴリズム1
[2] 問題文(含コード&リンク):待ち行列シミュレーションするプログラムを作成せよ
完成する関数:    
void enqueue(char *x)
void dequeue()
void queue_print()

CPPファイル:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5227.txt
作成するプログラムについて:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5228.txt
実行例:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5229.txt
ヒント:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5230.txt
[3] 環境
 [3.1] OS:win xp
 [3.2] Microsoft Visual Studio .NET 2003
 [3.3] 言語:c++
[4] 期限:2007年11月09日9:30まで
[5] その他の制限:(どこまで習っているか)構造体、ファイル処理あたりまで

よろしくおねがいします。

128 名前:デフォルトの名無しさん [2007/11/08(木) 19:51:08 ]
【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):

n変数の連立1次方程式をガウスの消去法で解くプログラムを作成せよ。


[3] 環境
 [3.1] OS: Windows
 [3.2] gcc 3.4
 [3.3] 言語: C)
[4] 期限: 明日
[5] その他の制限:配列まで習いました。

129 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 20:28:33 ]
[1] 授業単元:プログラミング練習
[2] 問題文(含コード&リンク):
あるテキストファイル「memo.txt」にexampleとかかれているとして
そのファイルを読み込み、その書かれている単語の1文字ずつ見ていき
母音なら1と、子音なら0と表示するプログラムをつくれ。
exampleなら1010001と表示するように
[3] 環境
 [3.1] OS:Linux
 [3.2]GCC
 [3.3] C言語
[4] 期限: 11月10日

130 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 20:42:05 ]
>>129
#include <stdio.h>
#include <ctype.h>
main()
{
int c;
FILE *fp;

if((fp=fopen("memo.txt","r"))==NULL){
printf("file can't open.\n");
return;
}
while((c=fgetc(fp))!=EOF){
switch(c){
case 'a': case 'A': case 'i': case 'I': case 'u':
case 'U': case 'e': case 'E': case 'o': case 'O':
putchar('1');
break;
default:
/* 何がきても0を出力するのならputchar('0');break;だけでいい */
if(isalpha(c))
putchar('0');
else
putchar(' ');
break;
}
}
putchar('\n');
fclose(fp);
}


131 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 23:21:29 ]
>>124-126
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5231.c


132 名前:131 mailto:sage [2007/11/08(木) 23:39:48 ]
配列使って書き直し。こっちのほうが安全。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5232.c

133 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 23:40:24 ]
[1] 授業単元:
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5233.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11月9日10:00まで
[5] その他の制限: 期限まであまり時間がありませんが、どうぞよろしくお願いします



134 名前:デフォルトの名無しさん [2007/11/09(金) 00:17:40 ]
どなたか>>127よろしくお願いします。どうもすみません

135 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 00:27:56 ]
>>133
int binarysearch(int v){
/* ここにプログラムを追加 */
int l = 0, r = N-1,x;
while( l<=r )
{
x = (l + r) / 2;
printf("%d %d %d \n",l,x,r);
if( v == a[x] ) return 0; /* 見つかった */
if( v > a[x] ) l = x + 1;
if( v < a[x] ) r = x - 1;
}
return -1;
}

int interpolationsearch(int v){
/* ここにプログラムを追加 */
int l = 0, r = N-1,x;
while( l<=r )
{
x = l + (v - a[l]) * (r - l) / (a[r]-a[l]);
if(x < 0) return -1;
if(x >= N) return -1;
printf("%d %d %d \n",l,x,r);
if( v == a[x] ) return 0; /* 見つかった */
if( v > a[x] ) l = x + 1;
if( v < a[x] ) r = x - 1;
}
return -1;
}

136 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 00:32:17 ]
>>135
一応な……

v>a[x]の場合、xの位置のデータは答えよりも小さいから、それよりも右に位置する(x+1)を新しいlにする。
v<a[x]の場合、xの位置のデータは答えよりも大きいから、それよりも左に位置する(x-1)を新しいlにする。


137 名前:デフォルトの名無しさん [2007/11/09(金) 00:59:36 ]
int binarysearch(int v){

/* ここにプログラムを追加 */
int mid;
int left = 0;
int right = 9;

while(left < right){
mid = (left + right)/2;
if(a[mid] < v)
left = mid + 1;
else
right = mid;
};
if(a[left] == v)
return left;

return -1;
}

138 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 01:41:38 ]
>>134
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5234.txt

この問題、やらしいな。

front = 0 , rear = 0; /* 空 */
front = 0 , rear = 1; /* 1つめ追加 */
front = 0 , rear = 2; /* 2つめ追加 */
front = 0 , rear = 3; /* 3つめ追加 */
front = 0 , rear = 4; /* 4つめ追加 */
front = 0 , rear = 0; /* 5つめ追加 */

ってなるので、空の場合と満杯の場合でfrontとrearの関係が同じなる。ということでflagたてて逃げてみた。

139 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 02:24:06 ]
>>128
行列におけるガウスの消去法(掃き出し法)はサンプルコードが至る場所にあります。

ttp://www.mit.msn.to/matrix/determinant.html

140 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 02:32:14 ]
>>127
しかしC++でやるんならコンテナがあるんだからqueueの実装なんかやるだけ無駄、
空いた時間で、queueを使った応用をしたほうが宿題として合格だな
queueの応用問題を考えられないのは教師に欠陥があるからだ

141 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 09:32:28 ]
>>138どうもありがとうございました。
助かりました

142 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 10:49:56 ]
[1] 授業単元:C言語入門(第7週ファイルの入出力)
[2] 問題文(含コード&リンク):
簡単なファイル暗号化・復号化のプログラムを作成せよ。
今回の暗号化は、改行以外の文字のアスキーコードに1を足し、復号化はその逆を行うこととする。
最初の引数が暗号化(c)と復号化(d)のどちらかを決定し、次が入力ファイル名、最後が出力ファイル名を示す。
引数が間違っている場合は"error"を表示する。
(実行例)
$ cat input.txt(読み込むファイルの中身確認)
Hello!
Good bye...
$ ./q2-3 c input.txt output.txt
$ cat output.txt
Ifmmp"
Hppe!czf///
$ ./q2-3 d output.txt newinput.txt
$ cat newinput.txt
Hello!
Good bye...
ヒント:ファイルからfgetcで1文字づつ読み込み、int型の変数に入れる。
アスキーコードに1足し、fputcでファイルに書き出す。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: GCC
 [3.3] 言語: C
[4] 期限: 11/11(日)
[5] その他の制限: 暗号化(c)、復号化(d)の判別には「!strcmp」を使ってください。

143 名前:デフォルトの名無しさん [2007/11/09(金) 11:06:18 ]
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
正規分布に従って、乱数を発生させるプログラムを作成しなさい。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland C++ Compiler5.5

 [3.3] 言語: C++
[4] 期限: 11/9 18時
[5] その他の制限:

よろしくお願いします





144 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 11:08:42 ]
#include <stdio.h>
#include <string.h>
void encodeDecode(int codeOffset, FILE * fpIn, FILE * fpOut)
{
int ch;
while ((ch = fgetc(fpIn)) != EOF) {
fputc(ch == '\n' ? ch : ch + codeOffset, fpOut);
}
}
int main(int argc, char ** argv)
{
int codeOffset;
FILE * fpIn;
FILE * fpOut;
if (argc > 3) goto error;
if (strcmp(argv[1], "c") == 0) {
codeOffset = 1;
} else if (strcmp(argv[1], "d") == 0) {
codeOffset = -1;
} else {
goto error;
}
fpIn = fopen(argv[2], "r");
if (fpIn == NULL) goto error;
fpOut = fopen(argv[3], "w");
if (fpOut == NULL) goto error;
encodeDecode(codeOffset, fpIn, fpOut);
return 0;
error:
fprintf(stderr, "error\n");
return 1;
}

145 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 11:13:04 ]
>>144
×argc > 3
○argc <= 3

146 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 12:13:53 ]
>>143
上限と下限は指定しないのか?
あと、出力方法は?

147 名前:デフォルトの名無しさん [2007/11/09(金) 12:23:52 ]
>>146
>上限と下限は指定しないのか?
とりあえず、指定されてないので後から変えられるようにしてもらえますか?
あと、マイナスが出ないようにしてもらえると助かります。

>出力方法は?
数字が表示されればいいと思います。




148 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 12:25:30 ]
やろうと思ったらC++かよ('A`)

149 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 12:55:18 ]
>>144-145
期限まで待つつもりでしたが、お早い回答ありがとうございます。
変数名なども分かりやすく書いてもらったみたいで感謝しております。

150 名前:129 mailto:sage [2007/11/09(金) 14:47:59 ]
[1] 授業単元:プログラミング練習
[2] 問題文(含コード&リンク):
129とほとんど同じなんですけど、
main(){
char str1[10]=”four”;

/*char型の配列”four”に母音が含まれれば1、子音が含まれれば0と表示する*/

}

を作れ。
3] 環境
 [3.1] OS:Linux
 [3.2]GCC
 [3.3] C言語
[4] 期限: 11月10日


151 名前:イトキン ◆lq89E2SwMI [2007/11/09(金) 15:09:16 ]
[1] 授業単元: オペレーティングシステム
[2] 問題文(含コード&リンク):
コマンドufsinfoを実装し、ソースコードとレポートを提出せよ。

ufsinfoの概要
ufsinfoは、ファイルシステムから次の情報を取り出す。
○マジック番号(fs_majic)
○ディレクトリ中のファイル名一覧
  ◆ディレクトリを引数に指定した場合
○データブロックの番号の一覧
  ◆そのファイルの中身を格納するブロック


ufsinfoの書式

○ufsinfo パス名 スペシャルファイル名
  ◆パス名
   ファイルシステム中のファイルへの絶対パス
  ◆スペシャルファイル名
   ファイルシステム全体を表すファイル名

152 名前:イトキン ◆lq89E2SwMI [2007/11/09(金) 15:10:24 ]









[3] 環境
 [3.1] OS: mac OS
 [3.2] わかりません
 [3.3] 言語: C言語のみ
[4] 期限: 12月5日
[5] その他の制限: mmapは使用禁止 
         スペシャルファイルでなく、イメージファイル上の動作でok
         二重間接まで動作チェックせよ。

Cのみで350行程度でかけるみたいです。

問題文、が長過ぎて、何をここに書けばいいのかまよってしまいました。
問題について聞きたいことがあれば、レスお願いします。



153 名前:デフォルトの名無しさん [2007/11/09(金) 15:40:01 ]
期限過ぎてもいいんで、誰か143お願いします。



154 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 16:16:37 ]
>>143
//ボックス=ミューラー法で100個の正規乱数を生成するテスト
#include<iostream>
#include<math.h>
#include<stdio.h>
#include<time.h>

int main()
{
    int i;
    double u1,u2,n1,n2;
    srand(time(NULL));
    for(i=0;i<50;i++){
        u1=(double)(rand())/RAND_MAX;
        u2=(double)(rand())/RAND_MAX;
        n1=sqrt(-2*log(u1))*sin(2*M_PI*u2);
        n2=sqrt(-2*log(u1))*cos(2*M_PI*u2);
        std::cout <<n1<<" "<<n2<<std::endl;
    }
    return 0;
}

155 名前: ◆a3LMU3qR26 [2007/11/09(金) 16:36:08 ]
1] 授業単元:アルゴリズム
[2] 問題文:巡回セールスマン問題を解くプログラムを作成しなさい。
今回は、あらゆる場合を全通り調べる方法で解を求めるプログラムでかまいません。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: (gcc
 [3.3] 言語: Cのみ
[4] 期限: できるだけ早く
[5] その他の制限: たいていあり




156 名前: ◆a3LMU3qR26 [2007/11/09(金) 16:38:30 ]
>>155ですけど
for(i = 0; i < n; i++) used[i]=NO;
perm(0);
return(0);
}
void perm(int d)
{
int i,j;
int b[MAXN];
int s = adj[a[0]][a[n-1]];

if(d == n){
for(i = 0; i < n-1; i++){
s+=adj[a[i]][a[i+1]];
}
}

else {
for (i = 0; i < n; i++) {
if (used[i] == NO) {
a[d] = i;
used[i] = YES;
perm(d + 1);
used[i] = NO;
}
}
}
}
このプログラムを利用したいのですが
これだけだとただの列挙になってしまいます
最小値だけをだすにはどうしたらいいでしょうか?

157 名前:153 [2007/11/09(金) 18:46:49 ]
>>154
ありがとうございます。
できれば、マイナスの値が出ないようにしていただきたいんですけど、無理ですか?

158 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 18:54:49 ]
でてきた正規分布を正軸に好きなだけ平行移動させりゃいいじゃん
分散は変わらないから形は変わらないだろ

159 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 18:56:06 ]
形っていうのは乱数の母集団分布な

160 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 19:25:13 ]
何故マイナスの値を出さないようにしたいのか?その理由気になる。

161 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 19:30:40 ]
>>106-107
順番がきましたら、こちらもよろしくお願いします。
期限は日曜日までありますので、土曜日が期限の人を優先していただいて構いません。
正確な期限は11/11(日) PM5時までです。
よろしくお願いします。

162 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 20:50:23 ]
>>106>>161
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5236.c
期限や順番なんて関係無いよ。答える奴は自分がやりたい問題をやるだけ

163 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 21:33:34 ]
[1] データ構造
[2] 問題文(含コード&リンク):
n個の頂点からなるグラフを、辺の両端の頂点に同じ色を塗らないようにし、すべての頂点を彩色するのに必要な色数を最小化する。
また、頂点iに接続する辺の数を頂点iの次数とよぶ。以下のアルゴリズムで作るように。
(1)
@頂点の次数を降順にソートする。
A頂点1に色1を割り当てる
B頂点i=2、...nについて、隣接する頂点に割り当てられていない最小の色番号を頂点iに割り当てる。

(2)頂点iの隣接頂点に彩色された異なる色数を頂点iの飽和次数とする。
@最大次数の頂点に色1を割り当てる
A飽和次数が最大の頂点を選ぶ。そのような頂点が複数ある場合は、
未彩色の部分グラフにおいて最大次数の頂点を選ぶ。
B選んだ頂点に彩色可能な最小の色番号を割り当てる
C全頂点が彩色済みならば終了。そうでないならAにもどる。
[3] 環境
 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C
[4] 期限: 2007年11月10日24:00まで(出来れば21:00
[5] その他の制限:
関数と変数の定義
#include <stdio.h>

#define TRUE 1
#define FALSE 0
#define MAX_N 2000
/*変数*/
int n; /*頂点数*/  int m; /*辺数*/
double x[MAX_N],y[MAX_N]; /*各頂点の座標*/
int a[MAX_N][MAX_N]; /*隣接行列*/
int color[MAX_N]; /*色*/
int max_color; /*最大の色番号*/



164 名前:163 mailto:sage [2007/11/09(金) 21:34:07 ]
問題例データの読み込み
input_fire = fopen(argv[1],"r");
fscanf(input_fire,"%d %d\n",&n,&m); /*頂点数と辺陬の読み込み*/
for(i = 0;i < n;i++){
fscanf(input_file,"%1f %1f\n"&(x[1]),&(y[i])); /*頂点データの読み込み*/
}
for(i = 0;i < n;i++){ /*隣接行列の初期化*/
for(j = 0;j < n;j++){
a[i][j] = 0;
}
}
for(i = 0;i < m;i++){
fscanf(input_file,"%d %d\n",&k1,&k2); /*辺データの読み込み*/
a[k1][k2] = a[k2][k1] = 1; /*隣接行列の生成*/
}
for(i = 0;i < n;i++){
color[i] = -1; /*解の初期化*/
}

説明文に意味がわからないところがあったらご指摘ください。お願いします。

165 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 21:52:39 ]
>>164
でーんつーだーい

166 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 22:25:47 ]
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5237.txt

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11/12
[5] その他の制限:

よろしくお願いします

167 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 22:35:03 ]
>>163
それだと彩色数は最小化されないが

168 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 22:44:59 ]
>>167
これ、近似アルゴリズムだから。


169 名前:デフォルトの名無しさん [2007/11/09(金) 22:46:25 ]
#include <stdio.h>
#include <math.h>

double f(double x){
return 1/sqrt(1+pow(x,4)); /*求める定積分*/
}


int main(void){
double x,sum=0,h;
printf("h:"); scanf("%lf",&h);

for(x=2*h;x<1;x+=2*h){ /*範囲指定*/
sum+=(f(x) + 4*f(x-h) + f(x-2*h)) * h/3; /*シンプソンの公式*/
printf("%f %f\n",sum,x);

}
}

170 名前:デフォルトの名無しさん [2007/11/09(金) 22:47:19 ]
for(x=0;x<1-2*h;x+=2*h){ /*範囲指定*/
sum+=(f(x) + 4*f(x+h) + f(x+2*h)) * h/3; /*シンプソンの公式*/
printf("%f %f\n",sum,x);

171 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 23:07:34 ]
>>162
>>答える奴は自分がやりたい問題をやるだけ
と言いつつプログラム作ってくれた>>162さんに感謝。自分の課題解いてくれてありがとうございます。
わざわざプログラムコード中に説明文まで入れてもらって本当に感謝しています。
m(_ _)m

172 名前:aho mailto:sage [2007/11/10(土) 01:06:59 ]
>>142
これ以外に何かあればいってちょ!
encrypt()内がちょっと汚いから書き直してね。
void encrypt(char** argv){
int tmp; //文字読み込みバッファ
FILE* fp = fopen(argv[2], "rb");
if(!fp){
printf("file open error!\n");
return;
}
FILE* fout = fopen(argv[3], "wb");

if(!strcmp(argv[1], "c")){ //暗号化
while((tmp = fgetc(fp)) != EOF){
if(tmp == 0x0A){ //改行コード
fputc(tmp, fout);
continue;
}
tmp += 0x01;
fputc(tmp, fout);
}
}
else if(!strcmp(argv[1], "d")){
while((tmp = fgetc(fp)) != EOF){
if(tmp == 0x0A){
fputc(tmp, fout);
continue;
}
tmp -= 0x01;
fputc(tmp, fout);
}


173 名前:aho mailto:sage [2007/11/10(土) 01:09:33 ]
>>172
}
fclose(fout);
fclose(fp);
}

int main(int argc, char** argv){
if(!strcmp(argv[1],"c") && !strcmp(argv[1],"d")){
printf("argument error!\n");
return 0;
}
encrypt(argv);

return 0;
}

もっと細かい引数のチェック(argcでも判断, 拡張子判断etc)もした方がいいかもね。
疲れたので寝ます



174 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:14:06 ]
>>172-173

つ「>>144-145
まあ、作りが少し違う参考になるでしょ。

175 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:23:30 ]
[1] 授業単元: 確率論
[2] 問題文:
www.uploda.org/uporg1104561.txt
ここに書きました。
図はこんな感じです。
www.uploda.org/uporg1104531.jpg

[3] 環境
 [3.1] OS: LINUX
 [3.2] 言語: C
[4] 期限: 11月10日
[5] その他の制限: 特にありません
わかりにくいかもしれませんがお願いします。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<222KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef