前提・実現したいこと
C言語でお釣りの枚数が最も少なくなる支払方法を求める機能を実装中に以下のエラーメッセージが発生しました.
いろいろ試したのですが自分の力では解決できず...
お力,お借りできれば幸いです.
発生している問題・エラーメッセージ
以下のエラーが出ています
エラー E2188 rep1.c 66: 式の構文エラー(関数 main )
該当のソースコード
C
1#include<stdio.h> 2 3 4void maisuu(int zen,int sum,int en,int *mai,int *mai_sum){ 5 *mai=(zen-sum)/en; 6 *mai_sum=+*mai; 7} 8 9int main(void) 10{ 11 int en[9]={10000,5000,1000,500,100,50,10,5,1}; 12 int en_m[9]; 13 int p[9]; 14 int best_p[9]; 15 int no,i,i1,i2,i3,i4,i5,i6,i7,i8,i9,p1,enm,sum,mai,mai_sum,bestp,best_maisuu; 16 enm=0; 17 mai=0; 18 mai_sum=0; 19 best_maisuu=0; 20 21 do{ 22 printf("所持金を入力してください\n"); 23 for(i=0; i<9 ;i++){ 24 printf("%d:",en[i]); 25 scanf("%d",&en_m[i]); 26 enm=enm+en[i]*en_m[i]; 27 } 28 printf("所持金合計:%d\n",enm); 29 30 printf("会計の合計を入力してください:"); 31 scanf("%d",&sum); 32 33 if(enm-sum<0){ 34 puts("\aお金を下ろしてきてください"); 35 } 36 }while(enm-sum<0); 37 38 for(i=0; i<9 ;i++){ 39 best_maisuu=+en_m[i]; 40 } 41 42 for(i1=0;i1<en_m[0];i1++){ 43 for(i2=0;i2<en_m[1];i2++){ 44 for(i3=0;i3<en_m[2];i3++){ 45 for(i4=0;i4<en_m[3];i4++){ 46 for(i5=0;i5<en_m[4];i5++){ 47 for(i6=0;i6<en_m[5];i6++){ 48 for(i7=0;i7<en_m[6];i7++){ 49 for(i8=0;i8<en_m[7];i8++){ 50 for(i9=0;i9<en_m[8];i9++){ 51 p[0]=i1; 52 p[1]=i2; 53 p[2]=i3; 54 p[3]=i4; 55 p[4]=i5; 56 p[5]=i6; 57 p[6]=i7; 58 p[7]=i8; 59 p[8]=i9; 60 p1=en[0]*i1+en[1]*i2+en[2]*i3+en[3]*i4+en[4]*i5+en[5]*i6+en[6]*i7+en[7]*i8+en[8]*i9; 61 if(p1-sum>0){ 62 for(i=0;i<9;i++){ 63 maisuu(p1,sum,en[i],&mai,&mai_sum); 64 } 65 if(best_maisuu>mai_sum){ 66 best_p[]=p[]; 67 bestp=p1; 68 best_maisuu=mai_sum; 69 } 70 } 71 } 72 } 73 } 74 } 75 } 76 } 77 } 78 } 79 } 80 81 printf("以下を支払ってください\n"); 82 for(i=0; i<9 ;i++){ 83 printf("%d:%d\n",en[i],best_p[i]); 84 } 85 printf("支払金合計:%d\n",bestp); 86 printf("お釣り:%d\n",best_p-sum); 87 printf("お釣りの枚数:%d\n",best_maisuu); 88 89 return 0; 90}
試したこと
配列が関数に入っているのが悪いのかと,別にint変数を作って,それに入れてから,関数に入れたり,ポインタ関数側の変数も配列にしてみたりしてみましたが,改善されません.
補足情報(FW/ツールのバージョンなど)
習い始めたばかりで知識も浅いのですが,エラーが解決できないともだもだします...
ヒントやワードだけでもいただけたら,助かります.
あと,なんだかまだまだ改善できそうな汚いコードなので,何かアドバイスがあればお願いします.