ورود

View Full Version : سوال: به چند حالت میتوان باقی پول را پرداخت کرد



بانوی ایران
جمعه 29 آبان 1388, 20:31 عصر
سلام
قرار است مبلغN رو با سکه های 20 و2و1 تومانی ÷رداخت کنیم
تعداد حالات رو میخواد
این برنامه ای که من نوشت


#include <stdio.h>
#include <stdlib.h>
main(void)
{
int N;
int t;
int l;
int i;
printf ("enter N\n");
scanf ("%d", &N);
for (t=0; t<=N/20; t++)
{
for (l=0; l<=N/2; t++)
{
for (i=0; i<=N; t++)
{
if (N==20*t+2*l+i)
{
printf ("t=%d, l=%d, i=%d\n", t, l, i);
}
}
}
}
system ("pause");
return 0;
}

tdkhakpur
جمعه 29 آبان 1388, 21:00 عصر
اصولا براي اينگونه كار ها بايد ار روابط و توابع بازگشتي استفاده كنيد.


#include <iostream.h>
#include <conio.h>
#include <stdio.h>
int array[100], c=0;
void calculate(int rial, int item, int c)
{
if((rial-item)>0 ){
array[c] = item;
if( (rial-10)>0 )
calculate(rial-10, 10, c+1);
if( (rial-2)>0 )
calculate(rial-2, 2, c+1);
if( (rial-1)>0 )
calculate(rial-1, 1, c+1);
}else{
cout<<"\n{";
for( int i=0; i<c; i++ )
cout << array[i] << ",";
cout<<"}";
getch();
}
}
int main()
{
clrscr();
int n = 100;
calculate(n, 5, 0);
getch();
return 0;
}

بانوی ایران
جمعه 29 آبان 1388, 22:37 عصر
خیلی ممنون
ولی مشکل اینجاست که من با هدر iostream اشنا نیستم
از arrayهم نمیخوام استفاده کنم
کسی میتونه توی همین برنامه ای که نوشتم راهنمایی کنه؟
مشکل اینجاست که چیزی که چا÷ میکنه برای n=20


t=1,i=0,l=0
t=1073741825,i=0,t=0
t=-2147483647,i=0,l=0
t=-1073741823,i=0,l=0


÷شت سر هم اینو چا÷ میکنه

tdkhakpur
شنبه 30 آبان 1388, 12:55 عصر
متوجه الگوريتم كاري شما نشدم ولي ايراد اينكه چرا قفل ميكنه به حلقه ها مربوط ميشه.


main(void)
{
int N;
int t;
int l;
int i;
printf ("enter N\n");
scanf ("%d", &N);
for (t=0; t<=N/20; t++)
{
for (l=0; l<=N/2; l++) //for (l=0; l<=N/2; t++)
{
for (i=0; i<=N; i++) //for (i=0; i<=N; t++)

{
if (N==20*t+2*l+i)
{
printf ("t=%d, l=%d, i=%d\n", t, l, i);
}
}
}
}
system ("pause");
return 0;
}