【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.19939

エラーが出ません
投稿者---ゆうま(2005/02/14 21:09:38)


#include <stdio.h>

int main (void)
{

int x, a, h;
int bk ,bs ;/*b=分割*/
int br1 = 105 ;
int br2 = 110 ;
int br3 = 115 ;

int rk, rh ;/*r=リボ*/
int k2 = 107 ;
int k3 = 112 ;
int k4 = 117 ;
int k5 = 122 ;

int ik;/*i=一括*/

do{
printf("\nお支払方法はどうなさいますか?\n");
printf("\n分割払い・・・1 リボ・・・2 一括・・・3\n");
scanf("%d", &x);

switch (x) {/*caseによって、支払方法への分岐*/

case 1 :/*分割払い*/

do{ do{ do{ do{ do{ do{

printf ( "\nいくら借りますか?:" );
scanf( "%d", &bk );/* bK = 貸付金額 */

if ( bk <= 1 )
printf( "\n1円以上の貸付しかできません\a\n" );

}while( bk <= 1 ); /* 貸付最低金額が1円以上でループを抜ける */

if ( bk > 1000000 )
printf( "\n貸付は百万円以内でお願いします。\n" );

}while( bk > 1000000 );/*百万円以下でループ抜ける*/

printf( "\n何ヶ月のローンを組みますか:\n" );
scanf("%d", &bs);/*S = 返済期限*/

if ( bs <= 0 )
printf( "\n冷やかしはごめんだよ\a\n" );

if ( bs > 36 )
printf( "\n学生なんだから長いローンは組ませないぜ\a\n" );

}while( 0 >= bs || bs > 36 );/*0ヶ月以下のローンは組めない.整数でループ抜ける*/ /*36ヶ月のローンは長すぎる。36回払い以下でループ抜ける*/

printf( "\n頭金はどうなされますか?:\n" );
scanf( "%d", &a );/*a = 頭金*/

if ( a < 0 )
printf( "\n冷やかしはごめんだよ\a\n" );

}while( a < 0 );/*0円以下の頭金は認めない*/

if ( a >= bk)
printf( "\n頭金が多すぎます。頭金を減らしてください。\a\n" );

else if ( bs > bk - a )
printf( "\n%d円を頭金%d円いただいて%dヶ月ローンでは返済できません\a\n" ,bk ,a ,bs );

}while( ( bk - a ) < 0 ); /*とりあえず支払いがあればループ抜けと一回払の支いが1円以上でループ抜け*/

printf( "\n%d円を頭金%d円いただいて%dヶ月ローンでのご返済でございますね?\n" ,bk ,a ,bs );
printf( "\n ***利息表***\n"
"期限 1〜12ヶ月 13〜24ヶ月 25〜36ヶ月\n"
"利息 5%    10% 15%\n" );
printf( "\n利息計算時の小数点は切り下げになりますがよろしいですか?\nYES・・・0  NO・・・9:\n");
scanf( "%d", &h );

}while( h == 9 );

int *r;/*ポインタ当ててみた*/

if ( 1 < bs && bs < 13) r = &br1; /*1〜12ヶ月ローンのときに利率が5%*/
else if ( 12 < bs && bs < 25) r = &br2;/*13〜25ヶ月ローンのときに利率が10%*/
else if ( 24 < bs && bs < 37 ) r = &br3;/*24〜36ヶ月ローンのときに利率が15%*/


if ( ( *r * ( bk - a ) / 100 ) % bs )
printf( "\n%d円を%dヶ月ローンでのご返済ですね。最初の1ヶ月の支払い額は%d円です。次の月からは%d円を%d回お支払いくださいませ。\n",*r * ( bk - a )/ 100 ,bs , (( *r * ( bk - a ) / 100 ) / bs ) + ( ( *r * ( bk - a ) / 100 ) % bs ),( *r * ( bk - a ) / 100) / bs, bs - 1 );

else
printf( "\n%d円を%dヶ月ローンでのご返済ですね。支払いは%d円を%d回でお願いします。\n",*r * ( bk - a ) / 100 ,bs ,( *r * ( bk - a ) / 100 ) / bs , bs );

break;
case 2 :/*リボ払い*/

do{ do{ do{ do{ do{ do{ do{

printf( "\nいくら借りますか?:\n" );
scanf( "%d", &rk );/* rk = 貸付金額 */

if ( rk <= 1 )
printf( "\n1円以上の貸付しかできません\a\n" );


}while( rk <= 1 ); /* 貸付最低金額が1円以上でループ抜け */

if ( rk > 1000000 )
printf( "\n貸付は百万円以内でお願いします。\n" );

}while( rk > 1000000 );/* 貸付最低金額が百万円以下でループ抜け */

printf("\n頭金はどうなされますか?:\n");
scanf("%d", &a);/*a = 頭金*/

if ( a < 0 )
printf( "\n冷やかしはごめんだよ\a\n" );

}while( a < 0 ); /*0円以下の頭金ではループをふけない*/

if ( rk <= a )
printf("\n頭金が多すぎます。頭金を減らしてください。\n");

}while( rk <= a);/*頭金で完済*/

printf( "\n一ヶ月の返済金額はどうなさいますか?\n" );
scanf( "%d", &rh );/*rh=1ヶ月の支払い*/
if ( rh <= 0 )
printf( "\n冷やかしはごめんだよ\n" );

}while( rh <= 0);/*1ヶ月の支払額がないとループ抜けれない*/

if ( rh >= ( rk - a ) )
printf("\n一括払いのほうがお得ですので、そちらをご利用ください。\n");
}while( rh >= ( rk - a ) );/*一回で完済*/

printf( "\n%d円を頭金%d円いただいて一月%d円のリボ払いでございますね?\n",rk ,a ,rh );
printf( "\n ***利息表***\n"
"一月の偏差金額 1〜5000円  5001〜20000円 20001〜50000円 50001円〜\n"
"     利息  22%    17%   12%     7%\n");
printf( "\n利息計算時の小数点は切り下げになりますがよろしいですか?\nYES・・・0  N・・・9:\n" );
scanf( "%d", &h );
}while(h == 9);

int *f;/*ポインタ当ててみた*/

if ( 0 < rk && rk <5001 ) f = &k5 ;
else if ( 5000 < rk && rk < 20001) f = &k4 ;
else if ( 20000 < rk && rk < 50001 ) f = &k3 ;
else if ( 50000 < rk ) f = &k2 ;

if( ( *f * ( rk - a ) / 100 ) % rh )

printf( "\n%d円を%d円支払いのご返済ですね。%d円を%d回。%d円を、最後に一回お願いします。\n", ( *f * ( rk - a ) ) / 100, rh , rh, ( *f * ( rk - a ) ) / ( 100 * rh ), ( ( ( *f * ( rk - a ) ) / 100 ) % rh ) );
else
printf( "\n%d円を%d円支払いのご返済ですね。%d円を%d回お支払いください。\n", (*f * ( rk - a ) ) / 100 , rh ,rh, ( *f * ( rk - a ) ) / ( 100 * rh ) );

break;
case 3 :/*一括払い*/
do{
printf( "\n一括払いですね。\n" );
printf( "\nいくら借りますか?\n" );
scanf( "%d", &ik );

if(ik < 1)
printf("\n借りる気ありますか?\n");

}while( ik < 1 );
printf( "\n金利は5%ですので、%d円を月末にお支払いください。\n", (br1 * ik) / 100 );


default : printf("\n借りる気ありますか?\n"); }

}while( x <= 0 || 4 <= x );/*支払い選択時に1 or 2 or 3 の入力があるとループ抜けない*/

return(0);
}




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:エラーが出ません 19940 ゆうま 2005/02/14 21:11:44
<子記事> Re:エラーが出ません 19954 ぽへぇ 2005/02/14 23:06:55


No.19940

Re:エラーが出ません
投稿者---ゆうま(2005/02/14 21:11:44)


このプログラムがコンパイラーによってエラーが出たるでなかったりします.どうか正しく動かせる方、お直しいただいて、教えてください。ちなみに、ポインタのところで不都合が発生しております。


この投稿にコメントする

削除パスワード

No.19942

Re:エラーが出ません
投稿者---もぐりん(2005/02/14 21:31:27)


質問する際は、【掲示板ご利用上の注意】を理解してますよね?
今回の場合は、エラーが出たコンパイル環境と出なかったコンパイル環境を
提示して、なおかつエラーが出た際のメッセージを詳細に提示する必要が
あります。
その辺は情報無しですか?




この投稿にコメントする

削除パスワード

No.19944

Re:エラーが出ません
投稿者---ゆうま(2005/02/14 21:37:08)


失礼いたしました。私はVBを使っていて、エラーが出ないです。ボーランドを使うと、エラーが出ます。これってどういうわけなんでしょうか?一応、VBのエラーメッセージはDebug\Cpp1.exe' はコード 0 (0x0) で終了しました。
です。どうか動かせるようになりたいんですがどのようにしたらいいでしょうか?
80行目と144行目の 「*f」「*r」というのが原因みたいなのですが、うまく直せないです。結構粘ったのですが・・・。どうか皆様お願いいたします。


この投稿にコメントする

削除パスワード

No.19945

Re:エラーが出ません
投稿者---Blue(2005/02/14 21:43:04)


<失礼いたしました。私はVBを使っていて、エラーが出ないです。

VCではないんですか?w
VCならバージョンも書いてください。
それとOS、開発環境(C言語オンリーかどうかSDK、MFC etc..)もかいてくださいね。



この投稿にコメントする

削除パスワード

No.19946

Re:エラーが出ません
投稿者---ゆうま(2005/02/14 21:47:37)


ごめんなさい。VC6++でした。
それとOSは、XPホームエディションです。開発環境はC言語オンリーです。
</pre>



この投稿にコメントする

削除パスワード

No.19948

Re:エラーが出ません
投稿者---南野骨茶(2005/02/14 21:52:14)


>開発環境はC言語オンリーです。

だとすると、80行目と144行目の変数定義の場所が正しくありません。
C言語の場合、"{"〜"}"のブロックの途中で変数を定義できません。



この投稿にコメントする

削除パスワード

No.19951

南野骨茶さんへ
投稿者---ゆうま(2005/02/14 21:59:10)


というのは、一番最初のdo{と、最後の}whileがいけないのでしょうか?
南野骨茶さんぐらいの達人さんだと私が何したいのかお分かりですよね?なんかいい方法ありますか?



この投稿にコメントする

削除パスワード

No.19953

Re:南野骨茶さんへ
投稿者---南野骨茶(2005/02/14 22:07:16)


>というのは、一番最初のdo{と、最後の}whileがいけないのでしょうか?
>南野骨茶さんぐらいの達人さんだと私が何したいのかお分かりですよね?なんかいい方法ありますか?

私は達人でも何でもありません。また、ソースを子細に追いかけたわけでは
ありませんので、何をなさりたいか正確に把握してはいません。

C言語の仕様上、ブロックの途中で変数定義はできません。
80行目と144目の変数定義を関数の先頭部分に移動すれば
コンパイルは通る、ということしかわかりません。


この投稿にコメントする

削除パスワード

No.19952

Re:エラーが出ません
投稿者---Blue(2005/02/14 22:01:22)


>ごめんなさい。VC6++でした。
VC++6.0なんだけど。。。

VCのほうのソースファイルの拡張子は .c ですか?
(.cppだとコンパイルとおると思う)

今度からソースを載せるときはHTML昆布をご利用ください。
インデントしていないソースを見ると、自分で見やすいように整形しないといけないですから。



この投稿にコメントする

削除パスワード

No.19949

Re:エラーが出ません
投稿者---Blue(2005/02/14 21:52:40)


><失礼いたしました。私はVBを使っていて、エラーが出ないです。
返信の引用の">" まちがえた。org

単に<pre>で囲いたいだけなんだけど、返信の引用があると
そのたびにHTML昆布つかうのメンドw

# HTMLタグ使えるのはいいんだけどね(他んとこ使えんから)




この投稿にコメントする

削除パスワード

No.19947

Re:エラーが出ません
投稿者---南野骨茶(2005/02/14 21:49:19)


>失礼いたしました。私はVBを使っていて、エラーが出ないです。
>ボーランドを使うと、エラーが出ます。これってどういうわけなんでしょうか?

VBですか? VC++か何かの間違いではありませんか?
Borland C++でエラーが出るのはコンパイル時ですか?実行時ですか?

各々のコンパイラーでコンパイルする際のソースファイルの
拡張子は何ですか?

なお、ソースコードをアップロードなさる際は、「HTML変換ツール」を
通してください。掲示板の先頭にある注意事項をご確認ください。



この投稿にコメントする

削除パスワード

No.19950

Re:エラーが出ません
投稿者---ゆうま(2005/02/14 21:52:54)


はい、VC++です。初心者なものでたびたびの失礼お許しください。


この投稿にコメントする

削除パスワード

No.19954

Re:エラーが出ません
投稿者---ぽへぇ(2005/02/14 23:06:55)


質問とは外れますが、気がついたことを。

1.
関数はまだご存知ないでしょうか?
関数を使うとすっきり書けると思います。

2.
>if ( 1 < bs && bs < 13) r = &br1; /*1〜12ヶ月ローンのときに利率が5%*/
>else if ( 12 < bs && bs < 25) r = &br2;/*13〜25ヶ月ローンのときに利率が10%*/
>else if ( 24 < bs && bs < 37 ) r = &br3;/*24〜36ヶ月ローンのときに利率が15%*/

条件は以下のような書き方もできますのでご参考まで。

if ( 1 <= bs && bs <= 12) r = &br1;
else if ( 13 <= bs && bs <= 24) r = &br2;
else if ( 25 <= bs && bs <= 36) r = &br3;

3.
>if ( ( *r * ( bk - a ) / 100 ) % bs )
(中略)
>if( ( *f * ( rk - a ) / 100 ) % rh )
(以下略)

似たような計算が何度も出てくるので、あらかじめ計算しておくと
何度も書かなくて済みます。




この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧