C/C++の宿題を片付けます 80代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/12/24(日) 23:17:00【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html
【過去ログ検索】
http://chomework.sakura.ne.jp/
【wiki】
http://www23.atwiki.jp/homework/
【前スレ】
C/C++の宿題を片付けます 79代目
http://pc8.2ch.net/test/read.cgi/tech/1165943509/
0002デフォルトの名無しさん
2006/12/24(日) 23:22:040003デフォルトの名無しさん
2006/12/24(日) 23:25:180004デフォルトの名無しさん
2006/12/25(月) 21:47:27http://pc8.2ch.net/test/read.cgi/tech/1165943509/987
誰だよ、srandにstdlib.hはCなら無くてもコンパイルできるはずだが。とか言っている
無知講師は?w
0005デフォルトの名無しさん
2006/12/25(月) 21:48:09[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3281.zip
※スキャナで取ってjpgにしたため、zipに圧縮したうえでろだにあげました。
[3] 環境
[3.1] OS:Linux RedHat9.0
[3.2] コンパイラ名とバージョン: gcc(バージョン不明...)
[3.3] 言語: C言語
[4] 期限:2006年12月31日23:00まで(2006年12月31日23:59までにメール提出となっています)
[5] その他の制限: ライブラリは#include<math.h>のみでお願いします。
よろしくお願いします。
00065
2006/12/25(月) 21:49:04乱数が必要なので、標準関数も必要です。
よろしくお願いします
0007デフォルトの名無しさん
2006/12/25(月) 22:18:55その無知講師とやらが誰だか知らんけど、コンパイルできるはずだよ。
Cではプロトタイプ宣言必須じゃないからね。C++では必須だけど。
0008デフォルトの名無しさん
2006/12/25(月) 22:33:53>はずだよ
はっきりしないね、出来るなら出来るってなぜ実演して確信をもって答えないんですか?
0009デフォルトの名無しさん
2006/12/25(月) 22:34:21そこに書かれているのは srand のプロトタイプが
stdlib.h に書かれている、ということだけ。
定義されていない関数であっても ISO 9899:1989 3.3.2.2、
implicit function declaration で定義されていない関数の
呼び出しは適当に解釈されることが保証されている。
# ISO 9899:1999 ではこの機能は撤廃されたので
# >>7 も必ずしも正しいとはいえない。
0010デフォルトの名無しさん
2006/12/25(月) 22:37:560011デフォルトの名無しさん
2006/12/25(月) 22:39:06現実問題としてC89を受け付けないCコンパイラは存在しないし
C99を受け付けないコンパイラも多い
未だに一番よく使われてるCはC89だよ
0012デフォルトの名無しさん
2006/12/25(月) 22:41:43srand使っているものはstdlib.hを入れているものばかりだ罠
0013デフォルトの名無しさん
2006/12/25(月) 22:43:00ではないからな。
んでも、コンパイルできるできないって話とは次元が違うよ。
0014デフォルトの名無しさん
2006/12/25(月) 22:45:510015デフォルトの名無しさん
2006/12/25(月) 22:46:36入れなくともコンパイルはできるけど。
そんだけの話。
0016デフォルトの名無しさん
2006/12/25(月) 23:07:04とりあえず一つ目の課題だけ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3282.txt
0017デフォルトの名無しさん
2006/12/26(火) 00:15:06課題Bです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3283.txt
但し、このプログラムの内容はホームページ
http://www.asahi-net.or.jp/~UC3K-YMD/Lesson/Section03/section03_09.html
の内容を参考にしました。
(参考にしました、と言うよりほとんど同じ(^^;))
0018922
2006/12/26(火) 03:53:17そのとおりだと思います。
問題事体が文章でなくて聞き取りみたいな感じなので難しい。
time[i] のときの値を data[i] とする。なんですが、このデータは昇順されてるとは言ってないので
初めにソートだけしています。その後がよくわかりません。
いろんなケースあると思うんですが、すべてに対応し切れてないのが現状です。
0019デフォルトの名無しさん
2006/12/26(火) 04:11:25・前スレ923の境界条件
・前スレ922の例の範囲時間110〜130で区切り10の場合で結果が3つとなる矛盾
を解決しないと話が進まないよ
0020デフォルトの名無しさん
2006/12/26(火) 04:23:02というのは問題の難しさではなく、あんたが問題を理解してないだけ。
そんな問題を又聞きでしか理解できない俺たちに解けるわけがない。
出題者に問題を正確に聞き、仕様をきっちり立ててからもう一度書き込みな。
0021デフォルトの名無しさん
2006/12/26(火) 10:17:22[2] 問題文(含コード&リンク):
yasuo 170.5 70.5
hideaki 176.5 65.8
nobu 166.5 58.2
yuichi 168.0 65.4
この上記の5人の平均の身長と体重、平均の標準体重と肥満率
を求めてください。標準体重は標準体重 = (身長 - 100) * 0.9
で求める。肥満率は(体重 - 標準体重) * 100.0 / 標準体重
で求める。なお、求めた平均身長、平均体重、平均標準体重、
平均肥満率を最後に printf で出力してください
nori 152.7 68.6
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C/)
[4] 期限: 今日中
[5] その他の制限:
0022デフォルトの名無しさん
2006/12/26(火) 10:54:43[2] 問題文(含コード&リンク):
yasuo 170.5 70.5
hideaki 176.5 65.8
nobu 166.5 58.2
yuichi 168.0 65.4
nori 152.7 68.6
この上記の5人の平均の身長と体重、平均の標準体重と肥満率
を求めてください。標準体重は標準体重 = (身長 - 100) * 0.9
で求める。肥満率は(体重 - 標準体重) * 100.0 / 標準体重
で求める。なお、求めた平均身長、平均体重、平均標準体重、
平均肥満率を最後に printf で出力してください
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: 今日中
[5] その他の制限:
0023デフォルトの名無しさん
2006/12/26(火) 11:12:26[2] 問題文(含コード&リンク): ttp://www.geocities.jp/c_prog2011/file_4.txt
[3] 環境
[3.1] OS: Windows XP Home Edition
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: Cのみ
[4] 期限: 2006年12月31日23:59
[5] その他の制限:
よろしくおねがいします。
0024デフォルトの名無しさん
2006/12/26(火) 11:12:34{
struct status {
char name[ 20 ];
double height;
double weight;
double standard;
double obese;
};
struct status average = { "", 0.0, 0.0, 0.0, 0.0 }, data[ 5 ] = {
{ "yasuo", 170.5, 70.5 },
{ "hideaki", 176.5, 65.8 },
{ "nobu", 166.5, 58.2 },
{ "yuichi", 168.0, 65.4 },
{ "nori", 152.7, 68.6 }
};
int i;
for ( i = 0; i < 5; i++ ) {
average.height += data[ i ].height;
average.weight += data[ i ].weight;
average.standard += data[ i ].standard = ( data[ i ].height - 100.0 ) * 0.9;
average.obese += data[ i ].obese = ( data[ i ].weight - data[ i ].standard ) * 100.0 / data[ i ].standard;
}
average.height /= 5.0;
average.weight /= 5.0;
average.standard /= 5.0;
average.obese /= 5.0;
printf( "average height = %f\n", average.height );
printf( "average weight = %f\n", average.weight );
printf( "average standard = %f\n", average.standard );
printf( "average obese = %f\n", average.obese );
}
0025デフォルトの名無しさん
2006/12/26(火) 11:57:04つまんねぇ事聞くけど、なんで片方txtなん?
0026デフォルトの名無しさん
2006/12/26(火) 12:18:26[2] 問題文:
(1)文字列のリストをファイルから文字列の2次元配列に読み込み、
キーボードから読み込んだ文字列を逐次探索するプログラムを作成する。
(2)2次元の配列とポインタの配列を使って文字列のソートを行う
プログラムを作成する。ただしデータはファイルから入力し結果は
ファイルに出力するものとする。またアルゴリズムは単純選択法を
使うこと。2次元配列に読み込んだ文字列は移動せず、ポインタを
付け替えることによりソートを行うこと。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年1月5日15:00まで
[5] その他の制限: ポインタの章での問題です
0028デフォルトの名無しさん
2006/12/26(火) 14:01:51超適当に書いた。
#include<stdio.h>
#include<string.h>
int main(void){
char word[80][80],*table[80],*tmp;
int i,j,size;
for(i=0;i<80 && scanf("%79s",word[i])==1;++i)table[i]=word[i];
for(size=i,i=0;i<size;++i)
for(j=i+1;j<size;++j)
if(strcmp(table[i],table[j]) > 0)tmp = table[i],table[i]=table[j],table[j]=tmp;
for(i=0;i<size;++i)printf("%s ",table[i]);
return 0;
}
0029デフォルトの名無しさん
2006/12/26(火) 14:42:37[2] 問題文(含コード&リンク):下記
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VS2005 C++
[3.3] 言語: C++
[4] 期限: 明日まで
サブ関数で周りの画素を配列d[8]に入れたいんですが、どうやればいいでしょうか?returnを使うのではなくポインタを使って直にデータを入れたいんです。
配列ddは画像のピクセルデータがすべて入っている配列です。
void Get8(int i, int j, int dd[], int *d[]) //ポインタで8近傍を返す
{
*(d)=*dd[i+1][j];
*(d+1)=dd[i+1][j-1];
*(d+2)=dd[i][j-1];
*(d+3)=dd[i-1][j-1];
*(d+4)=dd[i-1][j];
*(d+5)=dd[i-1][j+1];
*(d+6)=dd[i][j+1];
*(d+7)=dd[i+1][j+1];
}
void main()
{
int d[8];
Get8(i,j,dd,d)
}
イメージとしてはこんな感じなんですが書き方がわかりません>< お願いします。
0030デフォルトの名無しさん
2006/12/26(火) 14:55:32こう?
void getNear8(int x, int y, int image[][], int dst[][]){
int dx, dy;
for(dx=-1;dx<=1;dx++)
for(dy=-1;dy<=1;dy++)
dst[dx+1][dy+1]=image[x+dx][y+dy]; //[x][y]なのか[y][x]なのかわかんねーけどいいや
}
最近のコンパイラならコレくらいのforループは展開してくれる・・・はず
0031デフォルトの名無しさん
2006/12/26(火) 15:09:230032デフォルトの名無しさん
2006/12/26(火) 15:12:08#define SIZE 3
void Get8(int i, int j, int dd[][SIZE], int d[]) //ポインタで8近傍を返す
{
*(d)=dd[i+1][j];
*(d+1)=dd[i+1][j-1];
*(d+2)=dd[i][j-1];
*(d+3)=dd[i-1][j-1];
*(d+4)=dd[i-1][j];
*(d+5)=dd[i-1][j+1];
*(d+6)=dd[i][j+1];
*(d+7)=dd[i+1][j+1];
}
void main()
{
int d[8];
int dd[SIZE][SIZE]={{1,2,3},{4,5,6},{7,8,9}};
Get8(1,1,dd,d);
for(int i=0;i<8;i++){
cout<<d[i]<<endl;
}
}
0033デフォルトの名無しさん
2006/12/26(火) 15:43:22ありがとうございました!説明がへたくそですいませんでした。
先生方のを参考にしてやったところうまくできました><
0034デフォルトの名無しさん
2006/12/26(火) 18:36:17[2] 【問題文】
文字列を2つ入力し、それを結合して表示するプログラムを作成せよ。
入力文字列(2つ)および結合文字列を格納する変数(配列)はmain()関数内で
各々別個に用意する。
結合文字列を作成する関数str_cat()を自作すること。
→strcat()など文字列操作のライブラリ関数を使わないこと。
2つの文字列は20バイト以内を前提とするが、拡張できるようにすること。
str_cat()の仕様は以下の通り。
----- str_cat() ----------------------------------------------------
void str_cat(char *文字列1へのポインタ,
char *文字列2へのポインタ
char *格納先へのポインタ);
引数 :文字列1へのポインタ:結合対象文字列1(先頭)の先頭アドレス
文字列2へのポインタ:結合対象文字列2(後方)の先頭アドレス
格納先へのポインタ :結合文字列格納先の先頭アドレス
返却値:なし
-------------------------------------------------------------------
※「void str_cat(const char*, const char*, char*);」でもよい
【実行例】
Enter String(1) : abcdef
Enter String(2) : XYZ
Result : abcdefXYZ
[3] 環境
[3.1] OS: Windowsxp
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:2006年12月27日
[5] その他の制限:文字列操作のライブラリ関数は使ってはいけないそうです。
0035デフォルトの名無しさん
2006/12/26(火) 18:49:490036デフォルトの名無しさん
2006/12/26(火) 18:54:160037デフォルトの名無しさん
2006/12/26(火) 20:49:14#include <stdio.h>
void str_cat(char *str1, char *str2, char* dest)
{
int i=0,j=0;
while(str1[i]){
dest[j] = str1[i];
i++;j++;
}
i=0;
while(str2[i]){
dest[j] = str2[i];
i++;j++;
}
dest[j] = '\0';
}
int main(int c,char **v){
char *str1="やらないか",*str2="アッー!",dest[16]="";
str_cat(str1,str2,dest);
printf(dest);
return 0;
}
0038デフォルトの名無しさん
2006/12/26(火) 21:57:00ありがとうございます。
[1] 授業単元: C言語
[2] 問題文: 2問あります
(1)文字列のリストをファイルから文字列の2次元配列に読み込み、
キーボードから読み込んだ文字列を逐次探索するプログラムを作成する。
(2)2次元の配列とポインタの配列を使って文字列のソートを行う
プログラムを作成する。ただしデータはファイルから入力し結果は
ファイルに出力するものとする。またアルゴリズムは単純選択法を
使うこと。2次元配列に読み込んだ文字列は移動せず、ポインタを
付け替えることによりソートを行うこと。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年1月5日15:00まで
[5] その他の制限: ポインタの章での問題です
0039デフォルトの名無しさん
2006/12/26(火) 21:57:07[1] 授業単元:Cプログラミング演習
[2] 問題文:学籍番号(5桁の英数文字列)、英、数、国の得点(各100点満点)を
次々に読み込んで、各人の総得点を計算の上、�@読み込んだ順に
各人のデータを、�A各人の平均と標準偏差を次の形に出力する
cプログラムを作成せよ。
但し、プログラム作成においては
・学生の人数は100人以下で不定とする。(100人以下なら何人でも、
プログラムを修正せずにうまく対処しなければならない)
・学生一人のデータは構造体としてまとめて、それにStudentという
データ型名をつけること。
・Student型を要素とする配列を用意してプログラムを組むこと。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: Cのみ
[4] 期限: 2007年1月10日12:00まで
その他:得点データはファイルから読み込みます。./a.out<ファイル名 といった風に
前もありましたが複数の回答を比較したいのです
よろしくお願いします
0040デフォルトの名無しさん
2006/12/26(火) 21:58:09以下のような形で出力してください
Id-No Eng Math Jap Total
----- --- ---- --- -----
G0342 44 65 51 160
G0343 83 100 84 267
G0344 58 30 57 145
.
.
.
G3621 85 80 90 255
G3622 74 100 65 239
------------------------------
Ave 72.5 75.8 68.1 216.4
Dev 15.3 19.6 12.4 33.3
ずれてますが解釈を良心的にお願いします
0041デフォルトの名無しさん
2006/12/26(火) 21:59:41解答者の判断に任せます
0042デフォルトの名無しさん
2006/12/26(火) 22:00:140043デフォルトの名無しさん
2006/12/26(火) 22:17:58[2] 問題文(含コード&リンク):
10個の整数をキーボードから入力し,入力されたデータの平均値を求めなさい.
さらに,平均値から最も離れているデータと最も近いデータが,それぞれ何番目に入力したか
とデータの値を求めて(複数の場合はすべて)表示するプログラムを作成し,提出しなさい.
なお,10個のデータをすべて入力し終わってから,平均値などを求めること.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2006年12月28日まで
[5] その他の制限:配列まで習いました。
自分でがんばってみましたが、どうしてもできませんでした。
誰かこんな自分を助けてください。
0044デフォルトの名無しさん
2006/12/26(火) 22:18:530045デフォルトの名無しさん
2006/12/26(火) 22:20:11がんばったところまで見せてもらおうか
004643
2006/12/26(火) 22:28:30int main(void)
{
int i,sum,ave,min,max,samax,samin;
int a[10];
for(i=0;i<10;i++){
printf("%d番:",i+1);
scanf("%d",a[i]);
sum+=a[i];
}
ave=sum/10;
min=max=a[i];
for(i=0;i<10;i++){
if(a[i]>max) max=a[i];
if(a[i]<max) min=a[i];
}
if(max-ave>ave-min)
max=samax;
こんな感じでやってみたのですが、
途中でわけがわからなくなって断念しました。
0047デフォルトの名無しさん
2006/12/26(火) 22:35:46min=max=a[0];
aveは浮動少数じゃなくていいのかな
問題文からするとsumは入力ループよりも下で
maxやminの判定の時に位置も決定
もうすこし頑張ってみては?
0048デフォルトの名無しさん
2006/12/26(火) 23:45:45侮辱なんてとんでもない
まだコンパイルすらしていません 学校開いてないので
0049デフォルトの名無しさん
2006/12/27(水) 01:18:33こんな感じで。侮ってかかったら3時間かかってしもーた。まだバグがあるかも。
俺も混乱してるから、デバッグはご自分で!
#include <stdio.h>
#define N 10
#define Abs(x) (x>0) ? x:-x
#define Max(a,b) (a>b) ? a:b
#define Min(a,b) (a<b) ? a:b
int Length(int ave,int x){int A,B,Ans;A= Max(ave,x);B= Min(ave,x);Ans = A-B;return Abs(Ans);}
int main(){
int val[N],Len[N],LenMax=0,LenMin=0,Ave,all=0,i;
for(i=0;i<N;i++){printf("Input data[%d/%d]:",i,N);scanf("%d",&val[i]);}
for(i=0;i<N;i++) all += val[i];
Ave = all/N;
for(i=0;i<N;i++) Len[i] = Length(Ave,val[i]);
LenMax=LenMin=Len[0];
for(i=0;i<N;i++){LenMax = Max(Len[i],LenMax);LenMin = Min(Len[i],LenMin);}
printf("Ave=%d",Ave);
printf("\nMin=%d\n",LenMin);
for(i=0;i<N;i++) if(Len[i] == LenMin){printf("[%d:%d:%d]",i,Len[i],val[i]);}
printf("\nMax=%d\n",LenMax);
for(i=0;i<N;i++) if(Len[i] == LenMax){printf("[%d:%d:%d]",i,Len[i],val[i]);}
return 0;
}
0050デフォルトの名無しさん
2006/12/27(水) 01:47:42#include <stdio.h>
#include <math.h>
int main()
{
int num[10]={0};
char buff[256] = {'\0'};
int average;
int max =0,min=0;
int temp=0;
int i=9,j=0,k=0;
while(i >= 0){
fgets(buff,sizeof(buff),stdin);
sscanf(buff,"%d",&num[i]);
i--;
}
i=9;while(i >= 0){temp +=num[i];i--;}
i= 9;average = temp/10;temp = max = min = abs(average - num[i]);
while(i>=0){temp = abs(average - num[i]);if(temp >= max){max = temp;
j=i;}if(temp <= min){min = temp;k = i;}i--;}for(i=0; i< 10; i++)
printf("num[%d] = %d ",i,num[i]);putchar('\n');
printf("Max num[%d]= %d Min num[%d]= %d Average = %d \n",j,num[j],k,num[k], average);
return 0;
}
0051デフォルトの名無しさん
2006/12/27(水) 10:34:540052デフォルトの名無しさん
2006/12/27(水) 10:50:01次の問題を解きなさい。
1+1=
0053デフォルトの名無しさん
2006/12/27(水) 10:50:170054デフォルトの名無しさん
2006/12/27(水) 11:11:41[1] 授業単元:年忘れプログラミング
[2] 問題文(含コード&リンク):
C言語のソースファイルを読み込み、ifとelseを使わないソースファイルに変換するプログラムを作成せよ。
(但し変換されたソースは元のプログラムと同等の処理を行えるものとする)
[3] 環境
[3.1] OS: なんでもOK
[3.2] コンパイラ名とバージョン: なんでもOK
[3.3] 言語: C/C++
[4] 期限: 12月31日23時59分
[5] その他の制限: 特になし
0055デフォルトの名無しさん
2006/12/27(水) 11:32:16ソースが肥大化するのでパス
0056デフォルトの名無しさん
2006/12/27(水) 11:49:44EXPRESSION_A
} else {
EXPRESSION_B
}
↑これを、↓こうする感じ?
for (BOOL b = TRUE; b && CONDITION; b = FALSE)
{
EXPRESSION_A
}
for (BOOL b = TRUE; b && !CONDITION; b = FALSE)
{
EXPRESSION_B
}
よく考えたら三項演算子のほうが早いか……orz
0057デフォルトの名無しさん
2006/12/27(水) 12:11:56下のような、コンパイラがやってるっぽいことをすればいいと思う
(CONDITION)?goto LABEL_IF_TRUE001:goto LABEL_IF_FALSE001;
LABEL_IF_TRUE001:
...
goto LABEL_IF_END001
LABEL_IF_FALSE001:
...
LABEL_IF_END001:
0058デフォルトの名無しさん
2006/12/27(水) 12:23:36gotoは文であって式ではないから三項演算子の被演算子にならない。
0059デフォルトの名無しさん
2006/12/27(水) 13:21:070060デフォルトの名無しさん
2006/12/27(水) 14:21:39for(i=0;i<sizeof(buff)/sizeof(buff[0]);++i)
if(!buff[i] || buff[i]=='\n') break;
>>57のやり方がいいのかも
{
switch((!buff[i] || buff[i]=='\n') != 0){
case 0: goto LABEL_IF_FALSE001;
}
break;
goto LABEL_IF_END001;
LABEL_IF_FALSE001:
LABEL_IF_END001:;
}
00615
2006/12/27(水) 22:06:04ありがとうございます。参考にさせていただきます!!
実は、冬季課題Cというのが冬季課題Bの下にありまして、
それは「冬季課題Aを複合台形公式を用いた自動積分法のプログラムを作成せよ」に
なっております。
もしよろしければ、引き続きお願いできないでしょうか?
テンプレは以下の通りになります。
[1] 数値解析応用
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3286.zip
※>>5のAの問題をCに書き換えました。実際のスキャナ画像ではありませんが、内容は全く同じです。
[3] 環境
[3.1] OS:Linux RedHat9.0
[3.2] コンパイラ名とバージョン: gcc(バージョン不明...)
[3.3] 言語: C言語
[4] 期限:2006年12月31日23:00まで(2006年12月31日23:59までにメール提出となっています)
[5] その他の制限:特にありません。
よろしくお願いします。
0062デフォルトの名無しさん
2006/12/27(水) 23:14:37http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3289.txt
なお、前回うpした複合シンプソン則のプログラムは後から確かめて
みたら1e-8の精度が出ていなかったので、収束条件を変更した。
複合台形則は、関数の形によっては複合シンプソン則に比べて収束が
極めて悪くなり、今回も1e-8の精度を得るためには収束条件をかなり
厳しくする必要があった。
もしかしたら収束条件を前回の値との差で求める方法は正しくないの
かもしれないが、真値が判明していない以上、このような方法を摂らざる
を得ないのでご承知下さい。
0063デフォルトの名無しさん
2006/12/27(水) 23:18:37http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3290.txt
スマソ。複合台形則のプログラムは間違った方をうpしてしまった。
こちらを使用して下さい。
収束にはこちらの環境では4791回のループを必要としたので、問題が
ある場合は33行目のprintf()をコメントアウトしてセミコロンだけにして下さい。
0064デフォルトの名無しさん
2006/12/27(水) 23:29:35[2] 問題文(含コード&リンク): こちらの画像をご覧ください。。。http://up.kabubu.net/cgi/img2/19186.jpg
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VC2005
[3.3] 言語: C/C++
[4] 期限: 2006.12.28
[5] その他の制限: for文を使用してください。
よろしくおねがいします。。。。
0066デフォルトの名無しさん
2006/12/28(木) 00:49:00#include <stdio.h>
#include <math.h>
#define N 50
int main() {
int i;
double x[N], ave=0.0, ss=0.0, var, std, err;
FILE *fp = fopen("kadai4.dat", "r");
if (fp == NULL) return 1;
for (i=0; i<N; i++) {
fscanf(fp, "%lf", &x[i]);
printf("%6.3f", x[i]); if ((i+1)%10 == 0) printf("\n");
}
fclose(fp);
for (i=0; i<N; i++) ave += x[i]; ave /= N;
for (i=0; i<N; i++) ss += pow(x[i]-ave,2);
var = ss/N; std = sqrt(var); err = 3.0 * std;
printf("平均値 : Xm = %f\n", ave);
printf("分散値 : Var = %f\n", var);
printf("標準偏差 : std = %f\n", std);
printf("誤差範囲 : Err = ±%f\n", err);
return 0;
}
006723
2006/12/28(木) 19:04:250069デフォルトの名無しさん
2006/12/28(木) 23:41:48* 実際の板厚が知りたいのなら標準偏差ではなく標準誤差では?
* 母集団は無限なんだから不偏分散を使うべきでは?
と先生に聞いといて下さい。
0070デフォルトの名無しさん
2006/12/29(金) 22:02:06もう一度お答え頂けるとありがたいです。
[1] 授業単元: C言語
[2] 問題文: 2問あります
(1)文字列のリストをファイルから文字列の2次元配列に読み込み、
キーボードから読み込んだ文字列を逐次探索するプログラムを作成する。
(2)2次元の配列とポインタの配列を使って文字列のソートを行う
プログラムを作成する。ただしデータはファイルから入力し結果は
ファイルに出力するものとする。またアルゴリズムは単純選択法を
使うこと。2次元配列に読み込んだ文字列は移動せず、ポインタを
付け替えることによりソートを行うこと。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年1月5日15:00まで
[5] その他の制限: ポインタの章での問題です
0071デフォルトの名無しさん
2006/12/29(金) 22:26:410072デフォルトの名無しさん
2006/12/29(金) 22:29:19>>28に書いてあるじゃん
0073デフォルトの名無しさん
2006/12/30(土) 08:46:31[2]問題文:
数列 a = [a_1, ..., a_n] が与えられる。
これをバブルソートするときの要素の交換回数を効率よく求めよ。
[3]環境
[3.1]OS、コンパイラ問わず。
[3.2]言語:どちらでも可。
[4]期限:一月三日。
[5]その他の制限:特になし。
0074デフォルトの名無しさん
2006/12/30(土) 09:05:06http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3294.c
効率が良いかは分からんが、交換すると分かったときカウントするかと・・・
0075デフォルトの名無しさん
2006/12/30(土) 09:45:130076デフォルトの名無しさん
2006/12/30(土) 22:49:14[2] 問題文(含コード&リンク): こちらの画像をご覧ください・・・・・ttp://up.kabubu.net/cgi/img2/19360.jpg
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VS2005
[3.3] 言語: C/C++
[4] 期限: 06.12.31
[5] その他の制限:for文でお願いします
お世話になってます。よろしくお願いします。
0077デフォルトの名無しさん
2006/12/31(日) 00:31:34エクセルでグラフ化は自分でやってね
0078デフォルトの名無しさん
2006/12/31(日) 00:32:060079デフォルトの名無しさん
2006/12/31(日) 00:38:39008077
2006/12/31(日) 00:55:12まあ暇だからグラフ化したよ
0081デフォルトの名無しさん
2006/12/31(日) 02:12:130082デフォルトの名無しさん
2006/12/31(日) 07:39:01オラでも年明けまでに余裕で解ける宿題を出してくれ!
0083デフォルトの名無しさん
2006/12/31(日) 15:14:360084デフォルトの名無しさん
2006/12/31(日) 15:35:000085デフォルトの名無しさん
2006/12/31(日) 19:17:20[2] 問題文(含コード&リンク):
1. 入力の行数を数えるプログラムを作れ。
2. 入力中に現れる「NG」という単語を全て「OK」に置き換えて出力するプログラムを作れ。
3. 関数pop とpush を定義し、スタックを実装せよ。
4. スタックを用いて、逆ポーランド記法で四則演算を行うことのできるプログラムを作れ。
5. クイックソートを実装せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:borland
[3.3] 言語: C/C++
[4] 期限:
[5] その他の制限:
よろしくお願いします。
0086デフォルトの名無しさん
2006/12/31(日) 21:33:24ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3299.c
0087デフォルトの名無しさん
2006/12/31(日) 21:39:40[2] 1)
N×Nマス目のフロアを前後左右に移動することができるロボットがある。
スタート地点は常に左上(x,y)=(0,0)であり、全マス目を一度だけ通り、通った順序を表示するプログラムを作りなさい。
フロアには障害物を置けるようにする。
条件を満たすものがない場合、できませんでした。と表示したい。
[3] 環境
[3.1] Linux
[3.2] gcc 4.0
[3.3] 言語:C
[4] 期限:
[5] その他の制限: 特になし。
0088@part1
2007/01/01(月) 00:47:41どうしていいのかわかりません。
申し訳ありませんが、お助けください!
[1] コンピュータプログラミング
[2] 問題文
------------------------------------------------------------------------
サッカーのリーグ戦の順位表を記述した(添付されたファイル)CSVファイルをD&Dで入力することで、
�@誤りがある場合、質問形式で修正でき、・・・・・※
�A1試合分の結果を反映でき、
�B結果を新しいファイル(形式はCSV & html)として出力できる、
コンソールアプリケーションを作成しなさい。
(チーム数は、入力したCSVによって決定されるものとする)
0089デフォルトの名無しさん
2007/01/01(月) 00:48:21・勝ち点によって決定する。
・勝ち点が同じ場合は、得失点差によって決定する。
・得失点差が同じ場合は、得点のよって決定する。
・得点も同じ場合は、同じ順位とする。
勝ち点は、次のようになる。
・“勝ち”→ 勝ち点が 3増える。
・“引分”→ 勝ち点が 1増える。
・“負け”→ 勝ち点は増えない。
※ 順位の付け方、勝ち点の計算等、矛盾がある場合は、
順位,勝ちの数,引分の数,負けの数,得点,失点,得失点,勝点
のいずれに問題があるかを質問形式で修正できるようにする。
試合は、○回戦総当りときまってはいない。
------------------------------------------------------------------------
0090@part3
2007/01/01(月) 00:49:31[3] 環境
[3.1] OS: Windows XP
[3.2] Visual C++ 2005 Express Edition
[3.3] C言語
[4] (早いと嬉しいですが)今週中です。
[5] 標準ライブラリは使用不可
↓に、完成例(昔の生徒が作ったEXE)と、入力ファイル(JLeagueテスト.csv)
出力結果(JLeagueテスト_Result.csv、JLeagueテスト_Result.html)
をアップします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=3300
3300.zip (ファイルサイズが大きいので、圧縮しました。)
よろしくお願いします。
0091デフォルトの名無しさん
2007/01/01(月) 02:19:124.のみ。ここで解凍 http://www.geocities.jp/c_cpp_cs/code/code.html
dZLBTsMwDIbPRdo7mHJYOqAwJi7d2A2uPEOWZGu0LqkSl62gvTtu2sJGmVS1jv35t+v4RhtRVFLBQgi
sS7UcXd38uLT16BTfnTn9fz7kYksebRB2XBuWwNfoKkJXh2/kUWZZgBbSVqtCLcHPTwJOm00rC96zeJ
o+w1M6g1uYpY8wiZNfVtgKYbEgLKUEqtPYTUAZWQRM5NyBCGZbC2Q47HNNNmMCXprsjUKWJHD9Aq/vb
227UaTXwIKa9lJvNDKR9KGIcsoKV/QP5J33PlguO306EeBzJrvoEVThVZ/e9XK4g7rD66aRFG3JkjkZ
ZTDa0OFyyO81ihyoh15ZcKoyvh1n7bFv40Djqyl9RWPdzk/R+yF6fwGdDNHJBfRhiD4MUKnWvCqwJzF
3dg+xNh+80BJsqRxH667jDj+2gwzv/s5CKLjCbaVefyoWLnKawB9BdSid8l5b00me7VDMjd8rl8Vhib
pxN5RTWDkDj82hqSR4O3JrPEKzXxNQziUnu91LknuwkaRAzzc=
0092デフォルトの名無しさん
2007/01/01(月) 02:24:031.
#include <iostream>
#include <string>
int main() {
std::string str;
int n = 0;
while (std::getline(std::cin, str)) ++n;
std::cout << n << " lines" << std::endl;
return 0;
}
0093デフォルトの名無しさん
2007/01/01(月) 02:27:363. ここで解凍 http://www.geocities.jp/c_cpp_cs/code/code.html
jVRNb+IwED0Hif8w2wNyIFSlR772ttLew2lVRSEYEW0aR44DYiv623c8dhInQOmhJZ5582bmzdiKvxd
ZrDgs1bngefzOIZwF0B5e18PBUaQ7SEReKlklioWzMRSBMSBgBMc4q7gPH8OBl/MTsMJHEmasi+HgMh
yo6zSbmnjHkVec2QZZDUkxXX9u2P3QX0KeYrn7rbiMlZB9op4b9qksVdCPgiwulcl3OqQZB0Y4+LFyP
F7NORqTV9fkeZMJHfT35WF75Sku2GYEcQD4f2t4N6BDWOwvIIYVbBewxR9tu9t0iIQJVlZCqeLkb5Qi
QnMV1TZLkzmStnZWpv94pED/IO+Lr6uewzFiiFFpEiXY4TIcr5lBIAR+4t8cRGHVwUGSU+xZ6MOYqHz
fDzQTwJESEKAxVSXfRYxyfWAL3qdTT0/NYxRgMRMbY0RtMu94xhVHjG8F9lodW8oRCHXg0gd1kOJUJ5
jPCab5yf1sWRoH1d046dQFUEUNoK1P1xGOsWp9sPKaeNdAeDQUMj3i+HpTMTfG6YGYOz1ZEVa3sZfFd
1bjxlbcWQhNbKdYT83Aney10G6EUYe+a410vIbYu+T6YAk3AszAvPZZsd4IJuACg25w9Md1vpnh4Y10
rWS72KHVTdxStlkiqsWIRxfTmInHENNyaJepw7gkV5XMYawOaVnviBU6EVWucCtNsg8H3S+0WfCiKg+
2uHAE9QOU7nti4mW1Z7O9VkeneNeNN/cVBZ1Znex0qJG6xCV050JOKqaR3MXXkrcw+yp+pdQFeFby74
9cPZ6r1kgU7AuZXuzjAE9cSiHnoOdkrwh+YInq/Py0uJ5Nd8dgCrO37qQe5TUCdXJTNps8ifNcKE1j0
zviTKdXHTfP5h25fFeXmy/PMlybCHpD/gM=
0094デフォルトの名無しさん
2007/01/01(月) 02:39:542.
#include <iostream>
#include <string>
std::string replace_all(const std::string& source, const std::string& pattern, const std::string& placement) {
std::string result;
std::string::size_type pos_before = 0, pos = 0, len = pattern.size();
while((pos = source.find(pattern, pos)) != std::string::npos) {
result.append(source, pos_before, pos - pos_before);
result.append(placement);
pos += len ;
pos_before = pos ;
}
result.append(source, pos_before, source.size() - pos_before) ;
return result;
}
int main() {
std::string str;
while (std::getline(std::cin, str)) std::cout << replace_all(str, std::string("NG"), std::string("OK")) << std::endl;
return 0;
}
0095デフォルトの名無しさん
2007/01/01(月) 11:21:25それをマージソートしながら数えてやる.計算量 O(n log n).
#include <iostream>
#include <vector>
using namespace std;
int bubble_count(const vector<int> &a) {
int count = 0;
int n = a.size() / 2;
if (n > 1) {
vector<int> b(a.begin(), a.begin() + n/2);
vector<int> c(a.begin() + n/2, a.end);
count += bubble_count(b);
count += bubble_count(c);
for (int i = 0, j = 0, k = 0; i < n; ++i) {
if (k == c.size()) a[i] = b[j++];
else if (j == b.size()) a[i] = c[k++];
else if (b[j] <= c[k]) a[i] = b[j++];
else { a[i] = c[k++]; count += n/2 - j; }
}
}
return count;
}
0096デフォルトの名無しさん
2007/01/01(月) 11:40:150097デフォルトの名無しさん
2007/01/01(月) 12:20:02方針は間違ってないはずなのでしばし待たれ.
009895
2007/01/01(月) 12:32:45そんなに大きくは間違ってなかった.
const, int n = a.size()/2, a.end をそれぞれ適当に修正すれば
正しく動くはず.やっぱりコンパイルくらい通さないと駄目だな.
>>96
で,俺何か勘違いしてる?
このアルゴリズムの正当性は容易に証明できるし,
for (int i = 0; i < n; ++i)
for (int j = 0; j+1 < n; ++j)
if (a[j] > a[j+1]) { swap(a[j], a[j+1]); ++count; }
の結果と比較しても厳密に一致するけど.
0099デフォルトの名無しさん
2007/01/01(月) 13:46:130100デフォルトの名無しさん
2007/01/01(月) 13:48:42> 俺何か勘違いしてる?
ヒント:main関数がない
0101デフォルトの名無しさん
2007/01/01(月) 14:35:24申し訳ない、よくわからないので、もっとはっきりと言って貰えないかな?
>>100
入力がどう与えられるか書かれていないので省略したのだけど、駄目?
■ このスレッドは過去ログ倉庫に格納されています