C/C++の宿題片付けます 137代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/06/18(金) 06:27:59【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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++の宿題片付けます 136代目
http://pc12.2ch.net/test/read.cgi/tech/1274827528/
0153デフォルトの名無しさん
2010/06/22(火) 23:04:32http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10734.txt
0154デフォルトの名無しさん
2010/06/22(火) 23:16:46出来ればクラスとメソッドをしっかりと分けてほしいです。
クラスの中にメソッドが入ってる感じなのでこう分けてくれると助かります。
class game{
public:
void init();
bool Player(int x, int y);
};
void Game::init()
{
・・・
}
他のメソッドもこんな感じに処理毎に分けてくれると助かります。あと○に座標だけでなく
×の座標も入力できるようにしてほしいです。
0155デフォルトの名無しさん
2010/06/22(火) 23:18:020156デフォルトの名無しさん
2010/06/22(火) 23:18:30ミス。「○に座標」じゃなくて「○の座標」でした。
入力した座標をポインタで受け取る感じにしてほしいです。
申し訳ありません。
0157デフォルトの名無しさん
2010/06/22(火) 23:31:38ってかドローゲーム忘れてたw
0158デフォルトの名無しさん
2010/06/22(火) 23:39:19自分の中のイメージとしてg.player(&width, &height)って感じでメソッド呼び出して
座標データを取得したいのですが。。。。。
すいません。なかなか上手く説明できないです。初心者なので。。。。。。
0159デフォルトの名無しさん
2010/06/22(火) 23:42:240160デフォルトの名無しさん
2010/06/22(火) 23:45:28クラスとメソッド分けるのちょっとやってみます。
挫折したらすみません。あと途中で解説欲しくなるかもしれないです。
0161デフォルトの名無しさん
2010/06/22(火) 23:48:40こんなんでどう?
get_posってヤツで座標を取るんで、これなら意味分かるわ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10735.txt
0162デフォルトの名無しさん
2010/06/22(火) 23:52:37おおおおおおおおおおお。けっこうスマートになってるwwww
助かります。ちょっとソースコード読んでみます。解説欲しくなったら言うので。
0163デフォルトの名無しさん
2010/06/22(火) 23:54:19ってかもうねる。
0164デフォルトの名無しさん
2010/06/23(水) 00:01:03乙。
釣りなのかと思っちゃうよね。
0165デフォルトの名無しさん
2010/06/23(水) 00:15:450166デフォルトの名無しさん
2010/06/23(水) 03:27:12[2] 問題文(含コード&リンク):
以下コピペ
表示例のように,名前,性別,身長,体重,腹囲(ウエスト)を3人分入力した後, 3名全員について入力データに加えてBMI値とメタボリック症候群の疑いの判定を 表示するプログラムを作成しなさい.
プログラムでは,名前,性別,身長,体重,腹囲をまとめて 個人データとして表すための構造体を定義して利用すること.
注意
" 体重はkg, 身長,腹囲はcmで入力する.
" 性別は 1 で男性,2で女性を表す.
" BMI値 = 体重(kg) / 身長(m)2
" 男性は腹囲85cm以上,女性は腹囲90cm以上でメタボリック症候群の疑い がある
表示例
データ1を入力してください
名前: Hanako
性別: 2
身長: 156.4
体重: 65.3
腹囲: 93.4
名前: Hanako, 性別: 女, 身長: 156.4, 体重: 65.3, 腹囲: 93.4, BMI: 26.7, メタボリック症候群の疑いがあります
コピペ終わり
本当はデータ3つです。改行制限で割愛
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: (cc 3.4)
[3.3] 言語: (どちらでも可)
[4] 期限: (6月23日15時まで)
[5] その他の制限: (構造体でデータを個々で格納してお願いします。)
よろしくお願いします。
0167デフォルトの名無しさん
2010/06/23(水) 10:51:24http://codepad.org/z3vbEcex
0168デフォルトの名無しさん
2010/06/23(水) 11:20:14http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10736.c
0169デフォルトの名無しさん
2010/06/23(水) 12:33:36>>168
ありがとうございました。参考にさせていただきます。
0170デフォルトの名無しさん
2010/06/23(水) 15:18:36[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):
1.関数sqrtを使って1〜10までの二乗根の和を求めなさい。
2.16進数ABC.DEを10進数にしなさい。
[3] 環境
[3.1] OS: Windows XP
[ [3.3] 言語: C言語
[4] 期限: 6月24日15時まで
よろしくお願いします。
0171デフォルトの名無しさん
2010/06/23(水) 15:33:07[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10737.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:6月28日まで
[5] その他の制限:なし
よろしくお願いします
0172デフォルトの名無しさん
2010/06/23(水) 15:55:30[1] 授業単元: プログラミングB
[2] 問題文(含コード&リンク):実行したい処理を選ぶことが可能なプログラムを作りなさい。このとき、実
行できる処理は以下の三つとする。
処理1:複数の2択問題への回答に応じた結果を表示する。(例:職種選択、旅行先選び
処理2:文字コード一覧表を出力する。(文字コード32~126を一行に8文字ずつ)
処理3:本のページ数を入力し、その本を読み切るために必要な日数を表示
する。このとき、初日は10ページ、2日目は20ページ,,,と読むページ
数は増加するものとする。
以下の仕様で作成すること
キーボードから入力された数に応じて、switch文で各処理に移動する。
処理1:if文を使って
処理2:for文を使って
処理3:while文またはdo・while文を使って。
[3] 環境
[3.1] OS: WindowsXP
[3.3] 言語: C言語
[4] 期限: 6月25日まで
よろしくお願いします。
0173デフォルトの名無しさん
2010/06/23(水) 16:03:04(1)j-1
(2)printf(" ");
0174デフォルトの名無しさん
2010/06/23(水) 16:07:111.
#include <stdio.h>
#include <math.h>
int main(void)
{
int i;
double sum = 0;
for(i = 1; i <= 10; i++) sum += sqrt(i);
printf("%f\n", sum);
return 0;
}
0175デフォルトの名無しさん
2010/06/23(水) 16:45:322.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10738.c
0176デフォルトの名無しさん
2010/06/23(水) 17:34:30自己解決しました。
0177デフォルトの名無しさん
2010/06/23(水) 21:05:54ありがとうございました、参考にさせていただきました。
それにしてもわずか10分でするとは…
0178デフォルトの名無しさん
2010/06/23(水) 21:17:16当方、エントロピー値の計算するプログラムをperlで作成したのですが
わけあってC++に書き直すことになりました
しかし、C++にはハッシュ(連想配列)などは自分で作らなければならなく
どうしてもうまく行きませんでした・・・
perlで作ったプログラムをここに張るのは良くない思うのですが
どうかC++動くようにご教授お願いします
0179デフォルトの名無しさん
2010/06/23(水) 21:20:11#! c:/perl/bin/perl
open(FILE,"IPsource.txt"); #ファイル読み込み
use strict;
use warnings;
use utf8;
print "Content-type: text/html\n\n";
my $count;
my $t;
my $key;
my $ref_freq;
my %ref_freq;
my @x;
my $v;
$count = 0; #全体IPカウント
while ($t = <FILE>){ #IPファイル展開
#IP集計
if($t) {
$count += 1; #全体IPカウント
++$ref_freq{$t};
}
}
0180デフォルトの名無しさん
2010/06/23(水) 21:21:17@x = values %ref_freq;
print"@x \n";
close(IN);
#my @x= map $_ ,$key;
#エントロピー計算
my $y=$count;
my $num;
my @pi = map $_ / $y, @x;
my $i;
print"@pi \n"; #テスト用プリント
#print"@x \n";
for($i=0;$i<=$#pi;$i++){
$num += -($pi[$i]*log($pi[$i]) / log(2));
}
#print"@pi\n\n";
print "-Σpi*log2(pi) = $num \n";
0181デフォルトの名無しさん
2010/06/23(水) 21:27:160182178
2010/06/23(水) 21:32:30>>179でtxtに入れられたIPアドレスの種類と数をカウントします
ここでハッシュ(連想配列)を用いています
ここを出力するとこのようになります
IP 数
202.・・・ 20
そして>>180でエントロピー計算を行います
エントロピーの計算方法はlog(対数)とΣ(for文)で
my $y=$count;
my $num;
my @pi = map $_ / $y, @x;
この部分に先ほどカウントしたIPが入り
for($i=0;$i<=$#pi;$i++){ ←カウントしたIP分だけループさせ
$num += -($pi[$i]*log($pi[$i]) / log(2)); ←エントロピーの計算をします
}
0183デフォルトの名無しさん
2010/06/23(水) 21:36:16もちろん、>>181の言うようにhash_mapでもいい。(あれば)
0184デフォルトの名無しさん
2010/06/23(水) 21:39:160185デフォルトの名無しさん
2010/06/23(水) 21:55:08元のコードにできるだけ合わせたつもり
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10740.cpp
0186デフォルトの名無しさん
2010/06/23(水) 22:17:250187デフォルトの名無しさん
2010/06/23(水) 22:18:450188185
2010/06/23(水) 22:54:11途中で @x 相当の変数使うの忘れてたw
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10741.cpp
0189178
2010/06/23(水) 23:11:42ご指摘ありがとうございます
その範囲を調べてみます。
>>185
わざわざコードを作っていただき
本当にありがとうございます
このコードを参考に勉強させていただきます。
0190デフォルトの名無しさん
2010/06/24(木) 00:22:32ネット調べてみるとモンテカルロ法と言えばπの近似に関するばかりで・・・
どなたか教えてくださいませ
0191デフォルトの名無しさん
2010/06/24(木) 00:33:170192デフォルトの名無しさん
2010/06/24(木) 00:37:45[2] 問題文(含コード&リンク):
問題1:char name[20], int english, int mathematicsをメンバとする構造体 score を定義せよ
問題2:以下の5人の情報をもつ配列 seito[5] を、問題1で作成した構造体 score 型を使って宣言せよ。なお、5人の情報は初期値として宣言することにする。
name english mathematics
"yamada" 50 70
"tanaka" 70 60
"suzuki" 80 70
"yamamoto" 40 60
"sakata" 90 80
問題3:問題2で初期値を代入した構造体 score 型の構造体配列 seito[5] を宣言し、各メンバ変数をソートする関数を作成せよ。
[3] 環境
[3.1] OS:Win Vista
[3.2] コンパイラ名とバージョン:VB 2008
[3.3] 言語:C
[4] 期限:2010年6月25日まで
[5] その他の制限:無し
よろしくお願いします
0193デフォルトの名無しさん
2010/06/24(木) 01:36:430194デフォルトの名無しさん
2010/06/24(木) 01:42:16#include <stdio.h>
#include <stdlib.h>
#define NN 10000
int
main(void)
{
int i, w, cnt = 0, n;
printf("input sample no(cf.1000)=");
scanf("%d", &n);
for (i = 0; i < n; i++) {
w = rand() % NN;
w *= w;
if (w < NN * NN / 2)
cnt++;
}
printf("PI neary equal = %f", (double) cnt * 2 / n);
return 0;
}
0195デフォルトの名無しさん
2010/06/24(木) 11:48:13[2] 問題文:ガウスの消去法のプログラムをピボット対応と
ピボット非対応の2つ作成し、連立方程式の解を求めよ。
(ただし解くべき連立方程式は5元1次方程式で、ピボットの
発生するものと発生しないものの2種類とする)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語: C++
お願いします。
0196デフォルトの名無しさん
2010/06/24(木) 13:44:31複数の文字列を読み込み,それらの文字列を空白を入れて繋ぎ合わせるプログラムを作成せよ.
【実行例】
何個の文字列を入力しますか?:3
入力文字列[1]:A
入力文字列[2]:B
入力文字列[3]:C
結果:A B C
演習6-3
入力したDNA塩基配列中にある塩基 t, c, a, gそれぞれの個数をカウントするプログラムを作成せよ.
【実行例】
% ./a.out
tataatccg ← 入力し,リターンを押して ^D
Thymine (t) : 3
Cytosine (c) : 2
Adenine (a) : 3
Guanine (g) : 1
%
よろしくお願いします!
0197デフォルトの名無しさん
2010/06/24(木) 15:07:11演習6-1
#include <stdio.h>
int main(void)
{
char buff[32], str[1024], *p, *q;
int i, n;
printf("何個の文字列を入力しますか?:");
scanf("%d", &n);
for(i = 1, p = str; i <= n; i++) {
printf("入力文字列[%d]:", i);
scanf("%s", buff);
for(q = buff; *q; q++, *p++) *p = *q;
*p++ = ' ';
}
*(p - 1) = '\0';
printf("\n結果:%s\n", str);
return 0;
}
0198デフォルトの名無しさん
2010/06/24(木) 17:15:46するプログラムを作成せよ。関数としてstrtol()を使用すれば問題ないが、同じ機能の関数を作成すること。
基数の設定に関する引数は必要なくデフォルト(先頭が0 なら8 進、それ以外は10 進、16 進は使用しな
い)とする
お願いします!
0199デフォルトの名無しさん
2010/06/24(木) 19:22:26助かりました!本当にありがとうございます!
>>196の演習6-3は無事、自己解決致しました。
ありがとうございました〜
0200デフォルトの名無しさん
2010/06/24(木) 20:10:46http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10743.c
0201デフォルトの名無しさん
2010/06/24(木) 21:08:03n-1回の走査をしなければならない. すなわち, n(n-1)/2回の比較が行われなければならない. そこで, 各回の走査の終わりに,
交換が行われたか否かをチェックするようにし, 交換が行われていなければそれ以上走査の必要はないのでソートを完了するようなプログラムを作成しなさい.
sizeofは使わない。
↓のような出力結果になるようにする。
初期状態: 10, 3, 1, 15, 2, 7
[1回目の走査]
1回目の交換: 3, 10, 1, 15, 2, 72回目の交換: 3, 1, 10, 15, 2, 73回目の交換: 3, 1, 10, 2, 15, 74回目の交換: 3, 1, 10, 2, 7, 15
[2回目の走査]
1回目の交換: 1, 3, 10, 2, 7, 15 2回目の交換: 1, 3, 2, 10, 7, 15 3回目の交換: 1, 3, 2, 7, 10, 15
[3回目の走査]
1回目の交換: 1, 2, 3, 7, 10, 15
[4回目の走査]
最終状態: 1, 2, 3, 7, 10, 15
0202デフォルトの名無しさん
2010/06/24(木) 21:09:51int main(void) {
int str[100]={0};
int i,j, temp,x;
x=0;
printf("値の上限を設定してください:");
scanf("%d",&x);
for(i=0;i<x;i++){
printf("%d番目の値を入力してください:",i+1);
scanf("%d", &str[i]);
}
printf("初期状態:");
for(i=0;i<x;i++){
if(i==x-1){
printf("%d\n ",str[i]);
}else{
printf("%d, ",str[i]);
}
}
0203デフォルトの名無しさん
2010/06/24(木) 21:11:02for(j=x-1; j>=i; j--){
if (str[i-1] > str[i]){
temp = str[i-1];
str[i-1] = str[i];
str[i] = temp;
}
}
}
for (i = 0; i < x; i++){
if(i==x-1){
printf("%d\n", str[i]);
}else{
printf("%d, ", str[i]);
}
}
return 0;
}
ここまで作りましたが出力結果が上のようになりません。
誰か助けてください!お願いします。
0204デフォルトの名無しさん
2010/06/24(木) 21:50:07int main(void) {
int i, j, temp, x=0, f;
printf("初期状態: %d", str[0]);
for(i=1;i<x;i++)
printf(", %d", str[i]);
printf("\n");
for (i = 1; i<x; i++) {
f = 1;
for(j=x-1; j>=i; j--){
if (str[j-1] > str[j]){
temp = str[j-1];
str[j-1] = str[j];
str[j] = temp;
f = 0;
}
}
if(f != 0) break;
printf("%d回目の走査: %d", i, str[0]);
for(j=1;j<x;j++)
printf(", %d", str[j]);
printf("\n");
}
printf("最終状態: %d", str[0]);
for(i=1;i<x;i++)
printf(", %d", str[i]);
printf("\n");
return 0;
}
0206デフォルトの名無しさん
2010/06/24(木) 22:05:490207デフォルトの名無しさん
2010/06/24(木) 22:08:25s/\&/\&/g
s/ /\ /g
s/"/\"/g
s/</\</g
s/>/\>/g
0208270
2010/06/24(木) 22:09:47s/\&/\&/g
s/ /\ /g
s/"/\"/g
s/</\</g
s/>/\>/g
0209208
2010/06/24(木) 22:11:50s/\&/\&/g
s/ /\ /g
s/"/\"/g
s/</\</g
s/>/\>/g
こうか?
0210sage
2010/06/24(木) 22:51:25[2] 問題文(含コード&リンク):
再帰呼び出しを使い、入力した値の階乗を求めるプログラムを書きなさい。
なお、出来る限り大きな値の計算を出来るように工夫しなさい。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:Borland C++ 5.5.1
[3.3] 言語: C言語
[4] 期限: 6月中
[5] その他の制限:指定なし
なんの工夫もしていません。
http://codepad.org/31sqsbvL
0212デフォルトの名無しさん
2010/06/25(金) 00:18:02[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10745.txt
ニュートン・ラフソン法についての問題です。教科書に例題として載っていたプログラミングに今回問題となっている方程式の当てはめ方がわかりません(おそらく初歩的な事だと思われます)
[3] 環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語:C
[4] 期限:2010年6月25日16:00まで
[5] その他の制限: 半年前に教養の授業として数時間C言語の授業があった程度の知識しかありません
周囲もそのような人ばかりなので深いC言語の知識が必要な問題ではないと思われます
どうかよろしくお願い致します
0213デフォルトの名無しさん
2010/06/25(金) 02:14:39[1] 授業単元:数値計算
[2] 問題文(含コード&リンク):
以下に示す2階の定係数線形同次微分方程式につ
いて,初期値y(0)=a, y’(0)=bをキーボードから入力し,
t=4における値を出力するプログラムを作成する.
y''(t)+2y'(t)+2y(t)=0
条件 y(0)=2 , y'(0)=-2
答え y(4)=-0.02394
[3] 環境
[3.1] OS: (Windows/Linux/等々) vista
[4] 期限:6月30日まで
0214デフォルトの名無しさん
2010/06/25(金) 10:25:17精度を考慮してルンゲ・クッタ法で解いた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10746.txt
0215デフォルトの名無しさん
2010/06/25(金) 11:43:42[2] 問題文(含コード&リンク):
入力した2値白黒画像をハフ変換して直線および円を検出し、結果を表示するプログラムを作成せよ。
直線の式はρ= xcosθ + ysinθを、円の式はr2= (x-a)2 + (y-b)2をそれぞれ使用する。
なお、直線について処理後のρθ平面を濃淡画像として出力せよ。
円については処理後のabrパラメータ空間をGnuplotを用いて、
1点のエッジに対する軌跡(円錐)と2点以上のエッジに対する軌跡(円錐)を出力せよ。
また、円と直線両方について、3種類以上に閾値を変化させた実験結果を逆変換し、
その結果を原画像に投影した画像も出力せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: [2010年06月25日23:50まで]
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
画像として出力というくだりについては、RGBそれぞれの値を
変数名[画像サイズ].r/.g/.bという要素を持つ構造体を使って格納してください。
0216デフォルトの名無しさん
2010/06/25(金) 14:26:22亀ですがありがとうございました!
0217デフォルトの名無しさん
2010/06/25(金) 14:32:43[2] 問題文(含コード&リンク):
午前四時から正午までは Good Morning! と、
正午から午後八時までは Good Afternoon! と、
午後八時から午前四時までは Good Evening! と、表示するプログラムを書け。ただし、境界の時刻は前の時間帯に含まれるものとする
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:2010年6月30日23:55
[5] その他の制限: 特になし
お願いします
0218デフォルトの名無しさん
2010/06/25(金) 16:58:06[2] 問題文(含コード&リンク): 番号 国語 数学 英語のメンバを持っている構造体を作って各教科の平均値と、全平均値を求めてください。(人数は4人とか5人で行ってください。あと番号っていうのは、番号は、4人なら1〜4までで5人なら1〜5までです)
[3] 環境
[3.1] OS: linux
[3.3] 言語: C++
[4] 期限: ([2010年6月26日まで]
[5] その他の制限:
#include <iostream>
using namespace std;
struct score {
で始めて、
return文で終わってください
0219デフォルトの名無しさん
2010/06/25(金) 17:13:52ありがとうございました^^
0220デフォルトの名無しさん
2010/06/25(金) 17:59:13http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10748.cpp
0221218
2010/06/25(金) 21:51:05あと配列を使います。
0222デフォルトの名無しさん
2010/06/26(土) 01:08:39#include <stdio.h>
#include <time.h>
int main()
{
time_t now = time(NULL);
struct tm* local_now = localtime( &now );
const int hour = local_now->tm_hour;
if ( hour>4 && hour<=12 )
printf( "Good Morning!" );
else if ( hour>12 && hour<=20 )
printf( "Good Afternoon!" );
else // ( hour>20 && hour<=4 )
printf( "Good Evening!" );
return 0;
}
0223デフォルトの名無しさん
2010/06/26(土) 02:27:00[1] 授業単元:画像処理
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10749.txt
[3] 環境
[3.1] OS: (指定なし)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C)
[4] 期限: ([2010年06月28日14:50まで] )
[5] その他の制限:ヘッダファイル"bmp.h"はこちらです
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10669.txt
よろしくお願いします。
0224 ◆C/HmxiIl0o
2010/06/26(土) 02:42:14[2] 問題文(含コード&リンク):
x=1.0, 1.1,...,3.9, 4.0が与えられた時のlogxの値をラグランジュ補間で求め、
その近似値とlogxの真値をそれぞれ出力せよ。
また、求めた値と真値との誤差(絶対値)も求め、一次多項式の誤差と2次多項式の誤差を
それぞれ出力せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 本日(26日)中にお願いします
宜しくお願いいたします。
0225デフォルトの名無しさん
2010/06/26(土) 02:59:03http://codepad.org/D3nsJwKm
簡単に試したけど多分こんなん。
0226デフォルトの名無しさん
2010/06/26(土) 03:40:45[2] 問題文(含コード&リンク):
構造体Triangleを下のように定義する。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10750.txt
この構造体により一つの三角形を表現する。
Triangle構造体の構成要素は、三つの頂点のx座標、y座標をメンバとして持つ構造体Pointである。
このTriangle構造体を用いて、以下の使用に従う関数を作成し、任意の三角形の面積、その三角形を適切な2×2行列で線形変換した結果の三角形の座標とその面積、および任意の二つの三角形が合同であるかどうかを表示するプログラムを実装しなさい。
・一つのTriangle構造体の変数を引数とし、その構造体が表す三角形の面積を返す関数。
・一つのTriangle構造体の変数と、double型の二次元配列(2×2行列Aとする)を引数とし、引数で与えた三角形を行列Aによって線形変換した後の三角形を返す関数。
・二つのTriangle構造体の変数を引数とし、その構造体が合同であれば1を、合同でなければ0を返す関数。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2010年6月28日まで
[5] その他の制限:特にありません。よろしくお願いします。
0227デフォルトの名無しさん
2010/06/26(土) 07:07:19return fabs((t.p2.x - t.p1.x) * (t.p3.y - t.p1.x) - (t.p2.y - t.p1.x) * (t.p3.x - t.p1.x));
}
Triangle linear(Triangle t, double a[2][2]) {
Triangle ret;
ret.p1.x = a[0][0] * t.p1.x + a[0][1] * t.p1.y;
ret.p1.y = a[1][0] * t.p1.x + a[1][1] * t.p1.y;
ret.p2.x = a[0][0] * t.p2.x + a[0][1] * t.p2.y;
ret.p2.y = a[1][0] * t.p2.x + a[1][1] * t.p2.y;
ret.p3.x = a[0][0] * t.p3.x + a[0][1] * t.p3.y;
ret.p3.y = a[1][0] * t.p3.x + a[1][1] * t.p3.y;
return ret;
}
int isCongruence(Triangle t1, Triangle t2) {
double l1[3], l2[3];
int i, j;
l1[0] = (t1.p1.x - t1.p2.x) * (t1.p1.x - t1.p2.x) - (t1.p1.y - t1.p2.y) * (t1.p1.y - t1.p2.y);
l1[1] = (t1.p2.x - t1.p3.x) * (t1.p2.x - t1.p3.x) - (t1.p2.y - t1.p3.y) * (t1.p2.y - t1.p3.y);
l1[2] = (t1.p3.x - t1.p1.x) * (t1.p3.x - t1.p1.x) - (t1.p3.y - t1.p1.y) * (t1.p3.y - t1.p1.y);
l2[0] = (t2.p1.x - t2.p2.x) * (t2.p1.x - t2.p2.x) - (t2.p1.y - t2.p2.y) * (t2.p1.y - t2.p2.y);
l2[1] = (t2.p2.x - t2.p3.x) * (t2.p2.x - t2.p3.x) - (t2.p2.y - t2.p3.y) * (t2.p2.y - t2.p3.y);
l2[2] = (t2.p3.x - t2.p1.x) * (t2.p3.x - t2.p1.x) - (t2.p3.y - t2.p1.y) * (t2.p3.y - t2.p1.y);
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) if(l1[i] == l2[j]) { l2[j] = 0; break;}
if(j == 3) return 0;}
return 1;
}
0228デフォルトの名無しさん
2010/06/26(土) 11:36:43問題にはそう書いてありました。
log2=0.6931,log3=1.0986 1次多項式で近似
log2=0.6931,log3=1.0986,log4=1.3863 2次多項式で近似
2点(2,0.6931)(3,1.0986)を用いてlog2.5を推定する
logxの1次多項式による補間では、x0=2,x1=3より、
L-zero(x)=(x-3)/(2-3)
L-one(x)=(x-2)/(3-2)
であるから、p1(x)=1.0986(x-2)-0.6931(x-3)
p1(2.5)=1.0986(2.5-2)-0.6931(2.5-3)=0.89585
3点(2,0.6931)(3,1.0986)(4,1.3863)を用いてlog2.5を推定する
logxの1次多項式による補間では、x0=2,x1=3より、
L-zero(x)=(x-3)(x-4) / (2-3)(2-4)
L-one(x)=(x-2)(x-4) / (3-2)(3-4)
L-two(x)=(x-2)(x-3) / (4-2)(4-3)
であるから、p2(x)=0.34655(x-3)(x-4)-1.0986(x-2)(x-4)-0.6931(x-2)(x-3)
p1(2.5)=0.919575
真値=0.91629
誤差を求める式は
e-k(x)=f(x) - p-k(x) = (f^(k+1)(クサイ) / (k+1)!)*(x-x0)・・・(x-xk)
だそうです。
宜しくお願いします。
0230デフォルトの名無しさん
2010/06/26(土) 12:17:47[2] 問題文(含コード&リンク):三目並べのプログラムにCPとの対戦をつけろ。
http://codepad.org/wfwkEbVP
[3] 環境
[3.1] OS:WinodwsVista
[3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
[3.3] 言語:C++
[4] 期限:6/27(水)8時半まで
[5] その他の制限:C++初心者です。インライン関数は使わない方向でお願いします。
実行結果としてはこんな感じにしてほしいです。
1Pと2Pとの交互に対戦しますか?
1Pとコンピュータとの対戦にしますか?
プレイヤ同士の対戦なら1を、コンピュータとの対戦なら2を入力してください:
こんな感じで選らばせて対戦できるようにしてほしいです。
※1Pのマスは○でコンピュータのマスは×でお願いします。
0231デフォルトの名無しさん
2010/06/26(土) 12:19:15ミス。
6/27(月)でした
0232デフォルトの名無しさん
2010/06/26(土) 12:20:03日曜でした。すいませんでした。
0233デフォルトの名無しさん
2010/06/26(土) 14:54:26> p1(2.5)=0.919575
であるから、p2(x)=0.34655(x-3)(x-4) - 1.0986(x-2)(x-4) + 0.6931(x-2)(x-3)
p1(2.5)=0.9105875
物理のかぎしっぽ:計算物理学:補間法:ラグランジュ補完
http://moondial0.net/archives/www12.plala.or.jp/ksp/computPhys/lag-hokan/index.html
0234デフォルトの名無しさん
2010/06/26(土) 15:11:16[2]課題:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10751.txt
[3] OS:Windows Vista コンパイラ:CygWin上のgcc 言語 C
[4] 7/1迄
[5] 授業は殆ど出ておらず単位を落としそうですんでよろしくお願いしまつ
0235デフォルトの名無しさん
2010/06/26(土) 21:49:42ラグランジュ補間は手持ちの本「科学技術計算ハンドブック」に
掲載されているので、一次補間も二次補間も意味はわかるけど、
logxの近似をしたかったら、x=1.0から4.0まで近似したいなら、
もっと数表x[], y[]の標本が必要だよ
というのは、ラグランジュ補間は極めて振動しやすいという欠点を
持っていて、その欠点を埋め合わせるには数表の取り方を工夫
しなければならない
少なくとも、[x,y]の組み合わせが多数欲しい
今1.0〜4.0の範囲で近似しようとしているのだから、xが0.0から5.0
の範囲で5点ほどは欲しい
0236デフォルトの名無しさん
2010/06/26(土) 21:58:22x=2.5 のだけで。
0237デフォルトの名無しさん
2010/06/26(土) 22:13:540238デフォルトの名無しさん
2010/06/26(土) 22:31:31http://ideone.com/6f9pM
0239デフォルトの名無しさん
2010/06/26(土) 22:39:35http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10752.txt
数表が与えられていないので勝手に作ったよ。
logxはx=1.0未満になるとぐっとマイナスの方へ振れてしまい
標本としてはあまり好ましくないので、x=1.0以下の部分は
標本間隔を詰めた。
0240デフォルトの名無しさん
2010/06/26(土) 22:40:49>>239の取り扱いは好きなようにしてください。
0241デフォルトの名無しさん
2010/06/26(土) 22:48:41>>218
http://codepad.org/3jK2ScYK
簡単というのがSTLを使いまくることだったらすまない。
ありがとうございます。>>236は偽者です。
問題文には数表は全く書かれていなかったのですが、授業で使うスライドを見ていったところ、
1枚だけ、端っこの方に小さくy=f(x)= 1/(1+25*x^2)と書かれていました。
宜しくお願いします。
0243デフォルトの名無しさん
2010/06/26(土) 23:55:230244デフォルトの名無しさん
2010/06/27(日) 00:37:41http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10753.txt
うーん標本の取り方がいまいちかな・・・
一次補間が振動しちゃってます
適当に数表をいじって誤差が少なくなるようにトライしてみてください
0245デフォルトの名無しさん
2010/06/27(日) 00:47:150246デフォルトの名無しさん
2010/06/27(日) 03:08:48[2] 問題文(含コード&リンク):数列と漸化式を表示できるように9行目からお願いします。http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10754.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C
[4] 期限: 2010年6月28日
[5] その他の制限:whileを使うと思います。
お願いします。
0247デフォルトの名無しさん
2010/06/27(日) 08:46:12#include <stdio.h>
main()
{
int n, m, an, sum;
m = 5;
printf("数列 an = n*n とその和を %d 項目まで表示します\n", m);
n = 1;
sum = 0;
while (n <= m)
{
an = n * n;
sum += an;
printf("a[%d] = %d, sum = %d\n", n, an, sum);
n++;
}
}
0248デフォルトの名無しさん
2010/06/27(日) 08:50:58#include <stdio.h>
main()
{
int n, m, an;
m = 5;
printf("漸化式 a(n) = 2*a(n-1), a1 = 2 で生成される数列を %d 項目まで表示します\n", m);
n = 1;
an = 2;
while (n <= m)
{
if (n == 1)
{
printf("a[%d] = %d\n", n, an);
n++;
continue;
}
an = 2 * an;
printf("a[%d] = %d\n", n, an);
n++;
}
}
0249デフォルトの名無しさん
2010/06/27(日) 10:35:20http://ideone.com/vVi7u
期限すぎてるけど、いいどらえもんがかけた。
http://codepad.org/2uVp97hy
100! まで確認しています。#define で指定している定数を増加させれば、もっと大きな数値にも対応できるかもしれません。
0251デフォルトの名無しさん
2010/06/27(日) 16:39:40[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): 入力した2つの整数の間 (入力した数も範囲に含める) にある
「2の倍数でない」かつ「3の倍数でない」かつ「5の倍数でない」
の条件を満たす整数を順に表示し,最後にその個数を表示するプログラムを作成せよ
[3] 環境
[3.1] OS:VineLinux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2010年7月4日
[5] その他の制限:なお,整数の入力には get_int() を用いること。
# define BUFFER_SIZE (256)//get_int()です
int get_int(void)
{
char buf[BUFFER_SIZE];
fgets(buf, BUFFER_SIZE, stdin);
return atoi(buf);
}
よろしくおねがいします
■ このスレッドは過去ログ倉庫に格納されています