5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2006/12/24(日) 23:17:00
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
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/

2 :デフォルトの名無しさん:2006/12/24(日) 23:22:04
2げとずさー

3 :デフォルトの名無しさん:2006/12/24(日) 23:25:18
3げと

4 :デフォルトの名無しさん:2006/12/25(月) 21:47:27
ttp://www.bohyoh.com/CandCPP/C/Library/srand.html
http://pc8.2ch.net/test/read.cgi/tech/1165943509/987
誰だよ、srandにstdlib.hはCなら無くてもコンパイルできるはずだが。とか言っている
無知講師は?w

5 :デフォルトの名無しさん:2006/12/25(月) 21:48:09
[1] 数値解析応用
[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>のみでお願いします。


よろしくお願いします。

6 :5:2006/12/25(月) 21:49:04
スマソ
乱数が必要なので、標準関数も必要です。
よろしくお願いします

7 :デフォルトの名無しさん:2006/12/25(月) 22:18:55
>>4
その無知講師とやらが誰だか知らんけど、コンパイルできるはずだよ。
Cではプロトタイプ宣言必須じゃないからね。C++では必須だけど。

8 :デフォルトの名無しさん:2006/12/25(月) 22:33:53
>>7
>はずだよ
はっきりしないね、出来るなら出来るってなぜ実演して確信をもって答えないんですか?

9 :デフォルトの名無しさん:2006/12/25(月) 22:34:21
>>4
そこに書かれているのは srand のプロトタイプが
stdlib.h に書かれている、ということだけ。

定義されていない関数であっても ISO 9899:1989 3.3.2.2、
implicit function declaration で定義されていない関数の
呼び出しは適当に解釈されることが保証されている。

# ISO 9899:1999 ではこの機能は撤廃されたので
# >>7 も必ずしも正しいとはいえない。

10 :デフォルトの名無しさん:2006/12/25(月) 22:37:56
昔はできたってだけの話だろ

11 :デフォルトの名無しさん:2006/12/25(月) 22:39:06
>>10
現実問題としてC89を受け付けないCコンパイラは存在しないし
C99を受け付けないコンパイラも多い

未だに一番よく使われてるCはC89だよ

12 :デフォルトの名無しさん:2006/12/25(月) 22:41:43
http://search.yahoo.co.jp/search?p=srand+stdlib.h&ei=UTF-8&fr=moz2&rls=org.mozilla:ja-JP:official
srand使っているものはstdlib.hを入れているものばかりだ罠

13 :デフォルトの名無しさん:2006/12/25(月) 22:43:00
そりゃ、C89でプロトタイプ宣言取り込まないのは決して「良いスタイル」
ではないからな。
んでも、コンパイルできるできないって話とは次元が違うよ。

14 :デフォルトの名無しさん:2006/12/25(月) 22:45:51
UNIXでgcc使ってたときはstdlib.hを入れたけどなぁ。

15 :デフォルトの名無しさん:2006/12/25(月) 22:46:36
普通は入れる。それが良いスタイル。
入れなくともコンパイルはできるけど。
そんだけの話。

16 :デフォルトの名無しさん:2006/12/25(月) 23:07:04
>>5
とりあえず一つ目の課題だけ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3282.txt

17 :デフォルトの名無しさん:2006/12/26(火) 00:15:06
>>5
課題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
の内容を参考にしました。
(参考にしました、と言うよりほとんど同じ(^^;))

18 :922:2006/12/26(火) 03:53:17
>>前スレ972さん
そのとおりだと思います。
問題事体が文章でなくて聞き取りみたいな感じなので難しい。

time[i] のときの値を data[i] とする。なんですが、このデータは昇順されてるとは言ってないので
初めにソートだけしています。その後がよくわかりません。
いろんなケースあると思うんですが、すべてに対応し切れてないのが現状です。

19 :デフォルトの名無しさん:2006/12/26(火) 04:11:25
>>18
・前スレ923の境界条件
・前スレ922の例の範囲時間110〜130で区切り10の場合で結果が3つとなる矛盾
を解決しないと話が進まないよ

20 :デフォルトの名無しさん:2006/12/26(火) 04:23:02
> 問題事体が文章でなくて聞き取りみたいな感じなので難しい。
というのは問題の難しさではなく、あんたが問題を理解してないだけ。
そんな問題を又聞きでしか理解できない俺たちに解けるわけがない。

出題者に問題を正確に聞き、仕様をきっちり立ててからもう一度書き込みな。

21 :デフォルトの名無しさん:2006/12/26(火) 10:17:22
[1] 授業単元:c言語
[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] その他の制限:


22 :デフォルトの名無しさん:2006/12/26(火) 10:54:43
1] 授業単元:c言語
[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] その他の制限:


23 :デフォルトの名無しさん:2006/12/26(火) 11:12:26
[1] 授業単元: Cプログラミング
[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] その他の制限:

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

24 :デフォルトの名無しさん:2006/12/26(火) 11:12:34
void main( void )
{
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 );
}

25 :デフォルトの名無しさん:2006/12/26(火) 11:57:04
>>23
つまんねぇ事聞くけど、なんで片方txtなん?

26 :デフォルトの名無しさん:2006/12/26(火) 12:18:26
[1] 授業単元: C言語
[2] 問題文:
(1)文字列のリストをファイルから文字列の2次元配列に読み込み、
キーボードから読み込んだ文字列を逐次探索するプログラムを作成する。

(2)2次元の配列とポインタの配列を使って文字列のソートを行う
プログラムを作成する。ただしデータはファイルから入力し結果は
ファイルに出力するものとする。またアルゴリズムは単純選択法を
使うこと。2次元配列に読み込んだ文字列は移動せず、ポインタを
付け替えることによりソートを行うこと。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007年1月5日15:00まで
[5] その他の制限: ポインタの章での問題です

27 :23:2006/12/26(火) 13:45:50
>>25
問題文を載せただけなんです

28 :デフォルトの名無しさん:2006/12/26(火) 14:01:51
>>26
超適当に書いた。
#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;
}


29 :デフォルトの名無しさん:2006/12/26(火) 14:42:37
[1] 授業単元:プログラミング
[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)
}

イメージとしてはこんな感じなんですが書き方がわかりません>< お願いします。

30 :デフォルトの名無しさん:2006/12/26(火) 14:55:32
>>29
こう?
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ループは展開してくれる・・・はず

31 :デフォルトの名無しさん:2006/12/26(火) 15:09:23
展開するってどういう事?

32 :デフォルトの名無しさん:2006/12/26(火) 15:12:08
#include <iostream.h>
#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;
}
}


33 :デフォルトの名無しさん:2006/12/26(火) 15:43:22
>>30 >>32
ありがとうございました!説明がへたくそですいませんでした。
先生方のを参考にしてやったところうまくできました><


34 :デフォルトの名無しさん:2006/12/26(火) 18:36:17
[1] 授業単元:プログラミング
[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] その他の制限:文字列操作のライブラリ関数は使ってはいけないそうです。

35 :デフォルトの名無しさん:2006/12/26(火) 18:49:49
見たことある問題だと思ったが見つからない

36 :デフォルトの名無しさん:2006/12/26(火) 18:54:16
void str_cat(const char*a, const char*b, char*c){while(*a)*c=*a,c++,a++;while(*b)*c=*b,c++,b++;}

37 :デフォルトの名無しさん:2006/12/26(火) 20:49:14
>>34
#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;
}


38 :デフォルトの名無しさん:2006/12/26(火) 21:57:00
>>28
ありがとうございます。

[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] その他の制限: ポインタの章での問題です

39 :デフォルトの名無しさん: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<ファイル名 といった風に
 
前もありましたが複数の回答を比較したいのです 
よろしくお願いします




40 :デフォルトの名無しさん:2006/12/26(火) 21:58:09
>>39
以下のような形で出力してください
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

ずれてますが解釈を良心的にお願いします

41 :デフォルトの名無しさん:2006/12/26(火) 21:59:41
標準偏差については前スレでも物議をかました(そこまでいってない?)ようですので
解答者の判断に任せます 

42 :デフォルトの名無しさん:2006/12/26(火) 22:00:14
前に作った人を侮辱したいのか

43 :デフォルトの名無しさん:2006/12/26(火) 22:17:58
[1] 授業単元:情報技術U
[2] 問題文(含コード&リンク):
10個の整数をキーボードから入力し,入力されたデータの平均値を求めなさい.
さらに,平均値から最も離れているデータと最も近いデータが,それぞれ何番目に入力したか
とデータの値を求めて(複数の場合はすべて)表示するプログラムを作成し,提出しなさい.
なお,10個のデータをすべて入力し終わってから,平均値などを求めること.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006年12月28日まで
[5] その他の制限:配列まで習いました。

自分でがんばってみましたが、どうしてもできませんでした。
誰かこんな自分を助けてください。

44 :デフォルトの名無しさん:2006/12/26(火) 22:18:53
物議ってかますものなのか

45 :デフォルトの名無しさん:2006/12/26(火) 22:20:11
>>43
がんばったところまで見せてもらおうか

46 :43:2006/12/26(火) 22:28:30
#include<stdio.h>

int 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;

こんな感じでやってみたのですが、
途中でわけがわからなくなって断念しました。

47 :デフォルトの名無しさん:2006/12/26(火) 22:35:46
scanf &
min=max=a[0];
aveは浮動少数じゃなくていいのかな
問題文からするとsumは入力ループよりも下で
maxやminの判定の時に位置も決定
もうすこし頑張ってみては?

48 :デフォルトの名無しさん:2006/12/26(火) 23:45:45
>>42
侮辱なんてとんでもない
まだコンパイルすらしていません 学校開いてないので


49 :デフォルトの名無しさん:2006/12/27(水) 01:18:33
>>43
こんな感じで。侮ってかかったら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;
}

50 :デフォルトの名無しさん:2006/12/27(水) 01:47:42
>>43
#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;
}

51 :デフォルトの名無しさん:2006/12/27(水) 10:34:54
オッス!オラ悟空!オラにも簡単に答えられる宿題を出してくれ!

52 :デフォルトの名無しさん:2006/12/27(水) 10:50:01
>>51
次の問題を解きなさい。
1+1=


53 :デフォルトの名無しさん:2006/12/27(水) 10:50:17
>>52 田

54 :デフォルトの名無しさん:2006/12/27(水) 11:11:41
>>51
[1] 授業単元:年忘れプログラミング
[2] 問題文(含コード&リンク):
C言語のソースファイルを読み込み、ifとelseを使わないソースファイルに変換するプログラムを作成せよ。
(但し変換されたソースは元のプログラムと同等の処理を行えるものとする)
[3] 環境
 [3.1] OS: なんでもOK
 [3.2] コンパイラ名とバージョン: なんでもOK
 [3.3] 言語: C/C++
[4] 期限: 12月31日23時59分
[5] その他の制限: 特になし

55 :デフォルトの名無しさん:2006/12/27(水) 11:32:16
>>54
ソースが肥大化するのでパス

56 :デフォルトの名無しさん:2006/12/27(水) 11:49:44
if (CONDITION){
EXPRESSION_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

57 :デフォルトの名無しさん:2006/12/27(水) 12:11:56
CONDITION が複数回評価されると等価にならなくなる可能性がでてくるので、
下のような、コンパイラがやってるっぽいことをすればいいと思う

(CONDITION)?goto LABEL_IF_TRUE001:goto LABEL_IF_FALSE001;
LABEL_IF_TRUE001:
...
goto LABEL_IF_END001
LABEL_IF_FALSE001:
...
LABEL_IF_END001:

58 :デフォルトの名無しさん:2006/12/27(水) 12:23:36
>>57
gotoは文であって式ではないから三項演算子の被演算子にならない。

59 :デフォルトの名無しさん:2006/12/27(水) 13:21:07
三項演算子を使うには関数にしないといけない?

60 :デフォルトの名無しさん:2006/12/27(水) 14:21:39
↓みたいな時に困らないか?
for(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:;
}

61 :5:2006/12/27(水) 22:06:04
>>16様、>>17
ありがとうございます。参考にさせていただきます!!
実は、冬季課題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] その他の制限:特にありません。


よろしくお願いします。

62 :デフォルトの名無しさん:2006/12/27(水) 23:14:37
>>61
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3289.txt

なお、前回うpした複合シンプソン則のプログラムは後から確かめて
みたら1e-8の精度が出ていなかったので、収束条件を変更した。

複合台形則は、関数の形によっては複合シンプソン則に比べて収束が
極めて悪くなり、今回も1e-8の精度を得るためには収束条件をかなり
厳しくする必要があった。

もしかしたら収束条件を前回の値との差で求める方法は正しくないの
かもしれないが、真値が判明していない以上、このような方法を摂らざる
を得ないのでご承知下さい。

63 :デフォルトの名無しさん:2006/12/27(水) 23:18:37
>>61
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3290.txt

スマソ。複合台形則のプログラムは間違った方をうpしてしまった。
こちらを使用して下さい。

収束にはこちらの環境では4791回のループを必要としたので、問題が
ある場合は33行目のprintf()をコメントアウトしてセミコロンだけにして下さい。

64 :デフォルトの名無しさん:2006/12/27(水) 23:29:35
[1] 授業単元: 基礎プログラミング
[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文を使用してください。

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


65 :43:2006/12/28(木) 00:15:51
>>49>>50
遅ればせながら、本当にありがとうございます。

66 :デフォルトの名無しさん:2006/12/28(木) 00:49:00
>>64
#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;
}


67 :23:2006/12/28(木) 19:04:25
すいません、問題文間違えていました。

68 :64:2006/12/28(木) 23:40:29
>>66
ありがとうございます!
おかげさまで助かりました。。。

69 :デフォルトの名無しさん:2006/12/28(木) 23:41:48
>>68
* 実際の板厚が知りたいのなら標準偏差ではなく標準誤差では?
* 母集団は無限なんだから不偏分散を使うべきでは?

と先生に聞いといて下さい。

70 :デフォルトの名無しさん: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] その他の制限: ポインタの章での問題です

71 :デフォルトの名無しさん:2006/12/29(金) 22:26:41
なぜ?

72 :デフォルトの名無しさん:2006/12/29(金) 22:29:19
>>70
>>28に書いてあるじゃん

33 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)