C/C++の宿題を片付けます 54代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 2.9 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
【前スレ】
C/C++の宿題を片付けます 53代目
http://pc8.2ch.net/test/read.cgi/tech/1132102992/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0153デフォルトの名無しさん
2005/12/02(金) 22:37:25tsvかcsvに出力して、それをExcelで読み込んでグラフに出すんでもいいのかな。
0154デフォルトの名無しさん
2005/12/02(金) 22:40:060155デフォルトの名無しさん
2005/12/02(金) 22:43:06#include <iostream>
#include <cmath>
using namespace std;
const double PI = 3.141592;
double f(double x) {
const double u = 110.9, sigma = 4.7;
return 1.0/sqrt(2*PI)/sigma * exp(-(x-u)*(x-u)/2/sigma/sigma);
}
double F(double a, double b) { // F = integrate[f, {x, a, b}]
const double h = 1e-4;
double S = 0;
for (double x = a; x <= b; x += h)
S += (f(x)+f(x+h))*h/2; // trapezoid integration method:
return S;
}
int main() {
double a, b; cin >> a >> b;
cout << F(a,b) << endl;
}
0157デフォルトの名無しさん
2005/12/02(金) 23:10:31改行は\n
tabは\t
ではスペースは?
0158デフォルトの名無しさん
2005/12/02(金) 23:20:220159デフォルトの名無しさん
2005/12/02(金) 23:32:16ホント?
0160デフォルトの名無しさん
2005/12/02(金) 23:33:10ホント
0162デフォルトの名無しさん
2005/12/03(土) 00:01:39下のプログラムを改良すればいいらしいのですが…
#include <stdlib.h>
#include <unistd.h>
main(){
charbuf[1024], buf1[1024], *p;
ssize_tlen, len1, len2;
charc, s = '\n',n;
size_ti,j;
while ((len = read(STDIN_FILENO, buf, sizeof(buf))) > 0) {
len1 = 0;
for (i = 0; i < len; i ++) {
c = buf[i];
if (!(s == '\n' && c == '\n')) {
buf1[len1] = c;
len1 ++;}
s = c;
printf("%c",s);}
p = buf1;
while ((len2 = write(STDOUT_FILENO, p, len1)) >= 0 && len1 > len2) {
len1 -= len2;
p += len2;}
if (len2 == -1) {
exit(1);}}
if (len == -1) {
exit(1);}
return 0;}
よろしくお願いします。
0163デフォルトの名無しさん
2005/12/03(土) 01:58:230164デフォルトの名無しさん
2005/12/03(土) 02:03:38{
int baka;
int aho;
int kitigai;
}
0166デフォルトの名無しさん
2005/12/03(土) 02:51:56[1] 授業単元: 計算機科学
[2] 問題文(含コード&リンク):
NxNの正方形状に並んだ点からなる地図があり、各点は陸か水のどちらかを表している。
地図の周囲を海と見なし、海から縦方向または横方向に水を表す点で結合している点を
海を表す点に置き換えるプログラムを作成せよ。
具体的には陸を0、水を1、海を2で表すと左から右に書き換えるようなプログラムです。
1100 2200
0100 ⇒ 0200
0010 0010
0001 0002
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2005年12月16日
[5] その他の制限: 基本的な命令語、文字列、配列(2次元含む)、関数、ポインタ、構造体まで
自力では2次元配列で地図データを入力したところで躓いてしまいました。
どなたかご教示お願いします。
0167デフォルトの名無しさん
2005/12/03(土) 03:02:25出来たようなものでは?
0168デフォルトの名無しさん
2005/12/03(土) 03:03:49描画系APIで塗り潰して再び
2次元配列に戻すとあら不思議
0169デフォルトの名無しさん
2005/12/03(土) 06:36:15構造体なのに;がないあたりの完成度高めですね。
0170デフォルトの名無しさん
2005/12/03(土) 07:04:29ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1186.txt
0171デフォルトの名無しさん
2005/12/03(土) 07:36:37ちょっとNを大きくして市松模様(4アイテム毎の)みたいなパターンにするとスタックオーバーフロー
0172デフォルトの名無しさん
2005/12/03(土) 07:54:57宿題だから気にしないw
で、Nがどれくらいでスタックオーバーフローがでた?
0173デフォルトの名無しさん
2005/12/03(土) 08:05:480174デフォルトの名無しさん
2005/12/03(土) 08:08:250175デフォルトの名無しさん
2005/12/03(土) 08:26:50全部 1 で埋まってる時が一番スタックが深くなりそうなので、
for(y = 0; y < N; y++){
for(x = 0; x < N; x++){
map[y][x] = 1;
}
}
のパターンを作って実験。
N = 192 まで OK
N = 193 だと関数から main に戻ってこないw
Windows XP
VC++ 6.0
リンクオプションは特に書かずデフォルトのままです。
0176172
2005/12/03(土) 08:29:45スキャンラインシードフィルアルゴリズムを使ってみるかwww
0177デフォルトの名無しさん
2005/12/03(土) 08:31:11垂直方向へ行く時だけスタックする
関数再帰呼び出しはせずにデータ専用のスタックを用意する
等の対処が必要ですね
0178172
2005/12/03(土) 09:28:44ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1187.txt
N=300では正常動作してるっぽい。N=400でだめっぽいがw
mallocの限界?
0179デフォルトの名無しさん
2005/12/03(土) 09:39:31#include<stdio.h>
#define vip 3/*要素数*/
void num_input(int *i){
while(1){
scanf("%d%*[^\n]%*c",i);
if(((*i-99)<0)&&((*i-9)>0)) break;
}
}
void intary_rcpy(int v1[],const int v2[],int no){
int i;
for(i=0;i<no;i++) v1[i]=v2[no-i-1];
}
int main(void){
int num,i,v1[vip];
const int v2[vip];
num_input(&num);
printf("問題1:%d,%d\n",num,(num/10)*(num-(num/10)*10));
puts("\n問題2:");
for(i=0;i<vip;i++){
printf("v2[%d]=",i);
scanf("%d%*[^\n]%*c",&v2[i]);
}
intary_rcpy(v1,v2,vip);
for(i=0;i<vip;i++){
printf("v1[%d]=%d\n",i,v1[i]);
}
return 0;
}
0180172
2005/12/03(土) 09:42:36ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1188.txt
0181デフォルトの名無しさん
2005/12/03(土) 09:59:23ローカル変数で
struct point2d{
int x,y;
}stack[N*N];
ってやっぱりスタックが・・・
0182デフォルトの名無しさん
2005/12/03(土) 10:07:19int x,y;
}stack[N*N];
グローバルに持っていったらN=800でもOKのようです。
ここの部分もmallocで確保してもよさそうです。
0183172
2005/12/03(土) 10:13:07あとこのサイズってN*Nが最適値じゃないし、、、まあ動くからいっかw
だれか数学的に求められる人居たらヘルプ。
0184デフォルトの名無しさん
2005/12/03(土) 11:04:39とりあえずその実装だと N^2 はかなりギリギリで、実際全て 1 の入力に対して N^2 使ってる.
……って,これ実装おかしいだろ.次のスタック積んだ後の for(;cx<=rx && map[my-1][cx]!=src;cx++); は,
どうせスキャンラインで消えるところの読み飛ばしを意図してんじゃないの?
まあそれを訂正した後だとしても,少なくとも N^2/2 は必要( map[y][x] = (y % 2 ? 1 : x % 2); ) .
平均の意味でメモリ使用量をケチるなら,多分連結リストがベター.
0185184
2005/12/03(土) 11:06:230186デフォルトの名無しさん
2005/12/03(土) 11:34:100187デフォルトの名無しさん
2005/12/03(土) 13:05:40[2] 問題文(含コード&リンク):次のプログラムを作成せよ。ただし各関数は
指定された書式に従って呼び出されるものとし、それにあわせて関数の戻り値および
引数を設定すること
・半径rの円の円周の長さlおよび面積sを算出する関数circle()を定義し、半径10cmの
円についてそれぞれの値を求める。(πは3.1415926536)
書式:void circle(double r , double *l , double *s)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:12月4日昼12時
ようやくポインタを習い始めました・・・。よろしくです。
0188デフォルトの名無しさん
2005/12/03(土) 13:14:02#define PI 3.1415926535
void circle(double r, double *l, double *s) { *l=(2.0*PI*r);*s=(PI*r*r); }
main() { double l, s; circle(10,&l,&s); printf("%lf %lf\n", l, s); }
0189デフォルトの名無しさん
2005/12/03(土) 13:15:01*l=2*r*3.1415926536;
*s=r*r*3.1415926536;
}
int main(){
double r,l,s;
r=10;
circle(r,&l,&s);
printf("%fの円の長さは%f, 面積は%f",r,l,s);
return 0;
}
0190デフォルトの名無しさん
2005/12/03(土) 13:15:05出力はどうなればいいんだ?
0191172
2005/12/03(土) 13:19:08for(;cx<=rx && map[my-1][cx]!=src;cx++){printf("#");};
ってやったら、確かに全く意味がなかったですねw
for(;cx<=rx && map[my-1][cx]==src;cx++);
サンクスです。
0192187
2005/12/03(土) 13:22:04標準出力にlとsを出力させていただきたいです
0193デフォルトの名無しさん
2005/12/03(土) 13:22:44[2] 問題文(含コード&リンク):ファイルから連立方程式を読み込み、行列の計算を利用して解を求めるプログラムを作成する。
[3] 環境
[3.1] OS:標準環境はソラリス8
[3.2] コンパイラ名とバージョン:gcc バージョンは申し訳ないですが判りません。
[3.3] 言語:C言語です。
[4] 期限:2006年1月11日まで
[5] その他の制限:解はLU分解法とガウスザイデル法でそれぞれ求める。読み込むファイルはax1+bx2+…=y1のa,b…をすべて一行に記入し、スペースで区切る。
二次元配列を動的確保するサブ関数とファイルからstrtok関数などを用いた一行の要素を二次元配列の行要素にそれぞれ格納するサブ関数がわかりません。
よろしくお願いします。
0194デフォルトの名無しさん
2005/12/03(土) 13:39:52このcreateMatrixみてくれ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1180.txt
0195デフォルトの名無しさん
2005/12/03(土) 13:44:37>>189のr=10の部分を変えるだけだから頑張れ
0196デフォルトの名無しさん
2005/12/03(土) 14:15:54助かりました。あろがとうございます。
0197デフォルトの名無しさん
2005/12/03(土) 15:31:48[2] 問題文:
二分検索を使った英文和訳プログラムを作成せよ
問題文は長いので以下にアップしました。
http://www.geocities.jp/ryo_haruka2002/kadai9_mondai.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:cygwin
[3.3] 言語: /C++
[4] 期限: [2005年12月6日9:00まで]
[5] その他の制限: 書き出しは#include<iostream>から始めてください。
0198197
2005/12/03(土) 15:42:05#include<iostream >
#include<fstream>
using namespace std;
int search_dic(string a[][3],int last,string word){
int first=0,ans=-1;
while(first<=last){
int middle=(first+last)/2;
if(a[middle][0]==word){
ans=middle;
break;}
if(a[middle][0]<word)
first=middle+1;
else
last=middle-1;}
return ans;}
0199デフォルトの名無しさん
2005/12/03(土) 15:43:290200デフォルトの名無しさん
2005/12/03(土) 16:30:32なんちゅうか縛りが多すぎんだよな
その結果出すだけなら簡単なんだが
0201151
2005/12/03(土) 16:39:09[1] 授業単元: コンピュータ基礎
[2] 問題文:問題1 2桁の数を入力する関数
2桁の数を入力する関数(もし、2桁以外の整数を入力したら
再入力となる)を作成し、main関数では得られた2桁の値の
1の位と10の位の値を掛け算した値を表示するプログラム
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 12月4日20時
[5] その他の制限: 関数を使い、動作を確認するための適切なmain関数も作成する
0202151
2005/12/03(土) 16:40:51[1] 授業単元: コンピュータ基礎
[2] 問題文: 問題2 配列を逆順に格納する関数
要素数がnoであるint型の配列v2の並びを逆順にしたものを
配列v1に格納する関数
void intary_rcpy(int v1[],const int v2[],int no)
を作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 12月4日20時
[5] その他の制限: 関数を使い、動作を確認するための適切なmain関数も作成する
書き方が悪かった模様。
それぞれ別のプログラムとして作ってください。
0203デフォルトの名無しさん
2005/12/03(土) 16:56:26>>201
int f(int a){
int a10,a1;
if(a<10||99<a)return -1;
a10=a/10;a1=a%10;return a10*1;
}
>>202
void intary_rcpy(int v1[],const int v2[],int no){
int i;
for(i=0;i<no;i++)v1[i]=v2[no-i-1];
}
自分でmainを作ってくれ。
それから「書き方が悪かった模様」なんて他人事みたいにいうのはイク(・д・)ナイ
0204デフォルトの名無しさん
2005/12/03(土) 16:57:39おいおい、201にバグがあるよ...まあいい。それは>>201への宿題ということで。
両方とも脳内コンパイルにつき動作保障しません。
0205デフォルトの名無しさん
2005/12/03(土) 16:58:25それくらい自分でやれ
#include<stdio.h>
void num_input(int *i){
while(1){ scanf("%d%*[^\n]%*c",i);
if(((*i-99)<0)&&((*i-9)>0)) break; }
}
int main(void){
int num;
num_input(&num);
printf("2桁数字入力:%d,%d\n",num,(num/10)*(num-(num/10)*10));
return 0;
}
#include<stdio.h>
#define vip 3//要素数
void intary_rcpy(int v1[],const int v2[],int no){
int i;
for(i=0;i<no;i++) v1[i]=v2[no-i-1];
}
int main(void){
int num,i,v1[vip]; const int v2[vip];
for(i=0;i<vip;i++){
printf("v2[%d]=",i);
scanf("%d%*[^\n]%*c",&v2[i]);
}
intary_rcpy(v1,v2,vip);
for(i=0;i<vip;i++){
printf("v1[%d]=%d\n",i,v1[i]);
}
return 0;
}
0206デフォルトの名無しさん
2005/12/03(土) 17:02:34こうかな…。
#include<stdio.h>
int get2(void) { int v;
do{ scanf("%d", &v); } while(1 != (int)(log(v) / log(10)));
return v;
}
int main(void) {
int r = get2();
printf("結果: %d", r%10 + r/10);
return 0;
}
0207デフォルトの名無しさん
2005/12/03(土) 17:05:320208デフォルトの名無しさん
2005/12/03(土) 17:37:07こういう問題見ると、「イギリスでは、こうです」てCM思い出すな。
日本の教育ってのは、大学に至ってまで小学生と同じなのかね。
教育者が間違った親切心を持っているのか、単に答えあわせを
簡単にしたいだけなのか。
0209デフォルトの名無しさん
2005/12/03(土) 17:55:47http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1189.cpp
0210166
2005/12/03(土) 18:40:032次元配列からビットマップを作成する方法は習っていないのでちょっと分かりませんでした。
リア厨のときに習ってたBASIC使えばその方法で解けそうなんですけど、C言語は
つい最近大学で習い始めたばっかりなので…。
>>172,185
ありがとうございます。助かりました。
0211デフォルトの名無しさん
2005/12/03(土) 22:09:22[2] 問題文:7文字程度の文字列の集合を対象としたクイックソートのプログラムを作成せよ
入力は data.txt ファイルを使用し、ソート結果は出力せず 要素の交換回数と実行時間を出力するようにせよ
また、同様の操作を実装したシェルソートのプログラムを作成せよ
入力ファイル(data.txt):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1190.txt
↑このファイルはデータ数が100個程度ですが、1万〜50万程の数を扱えるようにして下さい。
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] 言語:c
[4] 期限: 月曜まで
お願いしますm(__)m 何か質問がありましたら仰ってください。
0212デフォルトの名無しさん
2005/12/03(土) 22:41:33グーグルって知ってるか?
0213杏
2005/12/03(土) 23:00:28[2] 問題文:補間のプログラムを作りなさい
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C++
[4] 期限:2006年12月05日12:00まで
[5] その他の制限:ラグランジェ補間、スプライン補間を使わず、
初心者でも理解できるようなのをお願いします
0214杏
2005/12/03(土) 23:10:49『2005年の12月05日』までにお願いします。
0215デフォルトの名無しさん
2005/12/03(土) 23:12:37入力はどんな形式なんだよ
0216デフォルトの名無しさん
2005/12/03(土) 23:15:28>ラグランジェ補間、スプライン補間を使わず、
>初心者でも理解できるようなのをお願いします
直線補完はで決まり!
0217デフォルトの名無しさん
2005/12/04(日) 01:09:49[2] 英単語が入力されたデータをアルファベット順に並べ替えよ。
[3] 環境
[3.1] Windows
[3.2] VC++6.0
[3.3] C++
[4] 月曜提出ですが出来れば明日の朝までにお願いします。
[5] バブルソートしか習ってないのでそれを使うのだと思います。
データは
apple
table
diff
directory
みたいに並んでいて制限は100単語です。
よろしくお願いします。
0218デフォルトの名無しさん
2005/12/04(日) 01:13:431,000,000円を年利 r %で預金し、そのまま預けぱなしにしておいたら何年で2倍になるか知るためのプログラムを書け。年利が何%か はキーボードから読み込むものとする。
もぅ何がなんだか。。。
0219デフォルトの名無しさん
2005/12/04(日) 01:16:521単語あたりの制限とかない?
酔っ払ってて動的メモリ確保やりたくない
>>218
計算方法は?
単純にr%分かけてきゃいいの?
0221デフォルトの名無しさん
2005/12/04(日) 01:23:22で、入力方法は?
って思ったけど俺C++使えないやwww
ダメじゃん
0222デフォルトの名無しさん
2005/12/04(日) 01:36:50#include<stdio.h>
int main(void){
double kane=1000000.0,n,hon;
long nen=0;
hon = kane*2;
printf("で?金利何%?:");
scanf("%lf",&n);
while(hon>kane){
kane = kane*(1+n/100.0);
nen++;}
printf("%d年で2倍ですが何か?",nen);
return 0;}
うんこ
0223217
2005/12/04(日) 01:47:12あと本当はこれはあるプログラムの一部で、本来は英単語の後ろにスペース空けて
訳もついていますが、並べ替える部分がわからなかったので省略してしまいました。
もし関係あったらすみません。
0224デフォルトの名無しさん
2005/12/04(日) 01:49:30二次元配列100個用意して
for文でまわすか
疲れててネムス
>>218
#include <stdio.h>
#define MONEY 1000000
int main(void){
int year;
double buff,interest;
scanf("%lf",&interest);
buff=MONEY;
for(year=0;;year++){
buff= buff*(1+interest/100);
if(buff>MONEY*2){
break;
}
}
printf("%d",year);
return(0);
}
0225デフォルトの名無しさん
2005/12/04(日) 01:56:47元金いくら預けるかは関係ないぞ
0226デフォルトの名無しさん
2005/12/04(日) 01:58:11普通バイナリーツリー使うだろ
0227デフォルトの名無しさん
2005/12/04(日) 02:43:17http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1191.txt
VisualStudio.net2003で作成しましたがVC++6.0でも動くと思います。
あとstlを使っていますが書いている内容的にはC言語です…。
オブジェクト指向を意識しないとダメですよね?
大変申し訳ございません。
0228デフォルトの名無しさん
2005/12/04(日) 02:47:48質問者のレスみても分かるように、どう考えてもCのレベル。
0229217
2005/12/04(日) 02:53:39自分の環境では動きませんでした…
コンパイルは出来ますが実行不可になります。
オブジェクト指向とか難しいことはちょっとわからなくて…こちらこそすみません。
よく配列で言われるアドレスやらポインタやらも未習でして。
普段大学ではcygwinを使用しているのですが、それと関係あるのでしょうか。
0230218
2005/12/04(日) 03:36:39あまり難しいことはやらないと思うのですが簡単なのがありませんか?
0231デフォルトの名無しさん
2005/12/04(日) 04:17:170232227
2005/12/04(日) 04:21:47http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1192.txt
これで勘弁してください。
途中ダメダメな関数がありますので自分で修正なさってください。
0233デフォルトの名無しさん
2005/12/04(日) 04:50:37int main( void ){
double yokin = 1000000;// 預金。
double r;// 年利r。あとでキーボードから入力してもらう。
int year = 0;// 何年経過したかを数えるためのカウンタ。
printf("年利を入力してください。\n");// 入力を促す。
scanf("%lf", &r);// 年利をキーボードから入力してもらう。
while( yokin < 2000000 ){// yokin が 2000000 より少ない間(while)、 { } 内部を繰り返す。
yokin = yokin * ( 1 + r/100 );// yokin に「yokin * 年利」(1+〜云々は、年利をそのままかけたら減るってことわかるだろ?)を代入する。
year++;// 年数のカウンタを一年増やす。
}
printf( "預金が2倍になるまでに %d 年かかります。\n", year);// 結果を表示する。
return 0;
}
これなら猿でもわかるだろ
0234デフォルトの名無しさん
2005/12/04(日) 04:53:060235218
2005/12/04(日) 05:21:49さっきよりわかった気が・・・します。
最初からこんなに難しそうなの課題に出すなんてOTL
0236デフォルトの名無しさん
2005/12/04(日) 05:27:46本を読むとか、解説サイトを見るとかして自分で調べとけ。
0237デフォルトの名無しさん
2005/12/04(日) 05:28:270238デフォルトの名無しさん
2005/12/04(日) 07:13:36r = 100 のとき 1 年で 2 倍
r != 100 のとき n 年で
(1 - (r/100)^(n+1)) / (1 - (r/100)) 倍
つまり r が与えられたとき
2 <= (1 - (r/100)^(n+1)) / (1 - (r/100))
となる n を求めればいい
ここで
2 == (1 - (r/100)^(n+1)) / (1 - (r/100))
の場合の n について解くと
n' == (log((2r/100) - 1) / log(r/100)) - 1
(解は整数とは限らないのでとりあえず実数で計算して n' とする)
が得られる
与えられた r から n' を求めて n' を超える最小の整数 n を求める場合
n == (int)(n' + 1);
つまり
n == (int)(log((2r/100) - 1) / log(r/100));
で一回の計算で求まるじゃないか
0239デフォルトの名無しさん
2005/12/04(日) 07:47:50めどい
0240デフォルトの名無しさん
2005/12/04(日) 07:48:35>>238
常識的に考えたら毎年の利子は小数切捨てだと思うんだけど、
それだと小数の出てくる預金が出ることになりませんか?
0241デフォルトの名無しさん
2005/12/04(日) 07:53:06ビルドまではうまくいくのですが、実行時に
"問題が発生したためa.exeを終了します。ご不便をおかけして申し訳ありません"
という、エラー報告送信を聞くエラーがでます。
これはコード自体(単にプログラムの記述のミス)の問題なのでしょうか?
それともメモリ不足などの問題なのでしょうか?
初歩的な質問で申し訳ありません。
ちなみにWindowsのMicrosoft C++です。
よろしくお願いします。
0242デフォルトの名無しさん
2005/12/04(日) 07:56:250243デフォルトの名無しさん
2005/12/04(日) 07:57:310244デフォルトの名無しさん
2005/12/04(日) 07:58:05ついでに、ソースを晒さないと具体的にはわからん。
多分>>241が全面的に悪い。
0245デフォルトの名無しさん
2005/12/04(日) 07:58:250246デフォルトの名無しさん
2005/12/04(日) 07:59:59OSに謝らせるなんて可哀想とは思わないか?
0247241
2005/12/04(日) 08:02:36ビルドできるけど、実行できないようなプログラムのミスというのはどのようなものがありますか?
一概には言えないと思いますが、例でいいのでなにかあれば教えてください。
0248デフォルトの名無しさん
2005/12/04(日) 08:05:390249デフォルトの名無しさん
2005/12/04(日) 08:21:57ぬるぽ
0250デフォルトの名無しさん
2005/12/04(日) 08:29:390251デフォルトの名無しさん
2005/12/04(日) 08:33:25なにそのツッコミどころ満載のコード片は?
0252デフォルトの名無しさん
2005/12/04(日) 08:33:48>グローバルに持っていったらN=800でもOKのようです。
おまいらそんな安直なことすんなよ
void fillitem(int **map, int mx, int my, int src, int dst)
{
static struct point2d{
int x,y;
}stack[N*N];
・・・以下略
の方がいいだろ?
まあ俺もmalloc/連結リストに賛成だが。
スタック気にするくらいならmallocの戻り値チェックもしろよな。
■ このスレッドは過去ログ倉庫に格納されています