نمونه برنامه های حل شده برنامه نویسی ++c برای درس محاسبات عددی


C نمونه مسائل حل شده برنامه نویسی
( گنجی )
١
مثالهای معمولی
*** علامتهای ستاره میزان سختی سوال را نشان می دهند.
1 ) * برنامه ای را بنویسید که اعداد فرد سه رقمی را از بزرگ به کوچک چاپ کند.


#include
void main()
{ int i=999;
while ( i>100 )
{
printf("%d,",i);
i-=2;
}
}
این برنامه یک برنامه خودکار است یعنی به محض اجرا خود کار خواسته شده را تحویل می دهد.
--------------------------------------------------------------------------
2. * برنامه ای را بنویسید که دو عدد صحیح را بگیرد و تمام اعداد زوج بین آنها را چاپ کند.
در واقع کلماتی مثل : بگیرد یا دریافت کند نشان دهنده باز بودن مساله است یعنی اینکه حداقل باید کامپ ایلر چیزی را یا
ازطریق صفحه کلید یا هر چیز ورودی دیگرکه بوسیله کاربر وارد می شود را بخواند یا دریافت کند.
#include
void main()
{ int a, b, c;
printf("Enter 2 numbers :");
scanf("%d%d", &a, &b);
if (a>b)
{ c=a;
a=b;
b=c;
}
if (a%2 !=0)
a--;
while (b>a+2)
{ a+=2;
printf("%d ",a);
}
}
٢
بزرگی و کوچکی هر یک از اعداد را چک نموده ایم بدین صورت که if در این برنامه ابتدا ما با استفاده از یک دستور
فرض بر آن است که کاربر اعداد را به ترتیب وارد نکند یعنی مثلاً کابری ابتدا عدد بزرگتر و سپس کوچکتر را تایپ کند
y و عدد بزرگتر را در ظرف a و کاربری دیگر برعکس . لذا این برنامه با استفاده از قسمت یک عدد کوچکتر را در ظرف
است کار های قسمت دو را aبه شرح ذیل انجام دهد:
عددی زوج است پس از بعد از آن را چاپ کن ( با استفاده a بر 2 بخش پذیر باشد (شرط برقرار باشد)یعنی a اگر
کم کن تا زوج شود و به همین شکل a والا یک واحد از ، b می افزاید ) تا x هر بار 2 تا به مقدار a+= از دستور 2
ادامه بده.
--------------------------------------------------------------------------
3) * برنامه ای بنویسید که ابتدا تعداد دانش آموزان و سپس نمرات آنها را دریافت کند و در
نهایت میانگین کل کلاس را چاپ کند.
#include
void main()
{
int i,n;
double sum=0, avg, mark;
printf("enter n of students:");
scanf("%d", &n);
for (i=1; i<=n; i++)
{
printf("enter a mark :");
scanf("%lf", &mark);
sum+=mark;
}
avg=sum/n;
printf("\naverage=%5.2lf", avg);
}
--------------------------------------------------------------------------
-4 ** برنامه ای بنویسید که صد عدد را دریافت کند و در پایان کوچکترین و بزرگترین آنها
را چاپ کند.
برای حل این برنامه کافی است شما ظرفی مجازی برای اولین عدد وارد شده در نظر بگیرید ونیز دو ظرف
دیگر یکی برای بزرگترین عدد و دیگری کوچکترین عدد در نظر بگیرید. سپس دیگر اعداد که از طریق یک
که دارای دو شرط یکی شرط بزرگتر بودن و دیگری کوچتر بودن است را مورد ارزیابی نسبت به for حلقه
عدد اولی که کاربر وارد کرده می کند بدین صورت که در شرط اول پس از وار د نمودن هر عدد آن را نسبت به
عدد اول مقایسه می کند اگر بزرگتر بود آن را در محل ظرف اول می ریزد و به همین صورت تا اینکه بزرگترین
قرار می گیرد. ولی برای شرط دوم موجود در حلقه عکس این عمل تکرار می شود یعنی m عدد در ظرف
کافی است شما اعداد را نسبت عدد اول از لحاظ کوچکی مورد مقایسه قرار دهید.
٣
#include
void main()
{
int max=-32767, min=32767, a, i;
for (i=1; i<=100; i++)
{
printf("enter a number :");
scanf("%d", &a);
if(amin=a;
if(a>max)
max=a;
}
printf("max is:%d \n min is:%d ", max, min);
}
نکته:
است. min و دیگری max در این برنامه برای عدد اول دو ظرف تعریف شده یکی
--------------------------------------------------------------------------
-5 ** برنامه ای بنویسید که دو عدد را بگیرد و (ب م م) و (ک م م) آنها را چاپ کند.
#include
void main()
{
int i, a, b, bmm, kmm;
printf("enter 2 numbers:");
scanf("%d%d", &a, &b);
for (i=a;i>=1;i--)
if(a%i==0 && b%i==0)
{ bmm=i;
break;
}
kmm=a*b/bmm;
printf("bmm=%d, kmm=%d" ,bmm, kmm);
}
برای محاسبه ک.م.م. از تعریف ریاضی آن ( ک م م = حاصلضرب دو عدد تقسیم بر ب م م) استفاده شده است.
--------------------------------------------------------------------------
-6 ** برنامه ای بنویسید که جدول ضرب 10 در 10 را چاپ کند.
#include
void main()
{
int i, j;
for (i=1; i<=10; i++)
{
printf("\n");
۴
for(j=1; j<=10; j++)
printf("%3d ", i*j);
}
}
یعنی 10 بار اجرا می شود و بعد n=j , i نکته ای که حائز اهمیت است اینست که ابتدا حلقه داخلی به ازای هر
اضافه می کند و دوباره ... i مقداری به
--------------------------------------------------------------------------
-7 ** برنامه ای بنویسید که حاصل عبارت زیر را حساب کند:
1 - + - + - + ...
برای حل این گونه مسائل چه در برنامه نویسی و چه در ریاضیات باید ابتدا معادله کلی عبارت را بیابیم که با
کمی دقت می توان جمله عمومی زیر را برای آن در نظر گرفت:
) n ( -1
n + 1
عبارت برای تک تک جملات برقرار است. حال کافی است این جمله برای کلیه جملات مورد n= به ازای 0
محاسبه قرار گیرد و در ظرفی هر بار حاصل جمله جدید با جملات قبل جمع شود.
انجام می دهیم. for که این عمل را با استفاده از یک حلقه
n البته هر چند در این جا مطرح نشده که این عبارت را تا چه مقداری محاسبه کنیم لذا با تعریف کردن متغیر
دست کاربر را برای محاسبه عبارت باز نموده ایم.
البته برنامه طوری نوشته شده است که عدد وارد شده باید بزرگتر از 1 باشد. البته اگر عدد 1 را وارد کند
باز برنامه جواب صحیح را به ما می دهد. علامت جمله مورد محاسبه را (که در واقع صورت کسر آن نیز هست)
قرارداده ایم که با رسیدن به هر جمله جدید قرینه می شود. alamat در متغیر
#include
void main()
{
Int i, n;
double alamat=1, sum=0;
printf("enter a number:");
scanf("%d", &n);
for (i=1 ;i<=n-1; i++)
{
sum+=alamat/i;
alamat=-alamat;
}
printf("sum=%.2f", sum);
}
--------------------------------------------------------------------------
-8 ** برنامه ای بنویسید که حاصل عبارت زیر را حساب کنید:
1
2
1
3
1
4
1
5
1
6
2×4×6×8×...×100
1×3×5×7×...×99
۵
#include
void main()
{ int i=2;
double hasel=1;
while ( i<=100 )
{
hasel*=(1.0*i)/(i-1);
i+=2;
}
printf("hasel=%6.2f", hasel);
}
--------------------------------------------------------------------------
-9 * برنامه ای بنویسید که عددی را بگیرد و جزء صحیحش را چاپ کند.
#include
void main()
{ int i=0;
double x;
printf("enter a number:");
scanf("%lf", &x);
for(i=0; i<=x; i++)
;
printf("[%g]=%d", x, i-1);
}
--------------------------------------------------------------------------
10 – ** برنامه بنویسید که عدد صحیحی را بگیرد و با کمترین تعداد دفعات تکرار اول بودن یا
نبودن آن را مشخص کند.
توضیح: عدد اول عددی است که اولین مقسوم علیه بزرگتر از یکش از خود عدد کوچکتر باشد. ضمنا بررسی
مقسوم علیه ها تا جذر عدد مورد نظر کافی است(شرط حلقه را ببینید).
#include
#include
void main()
{
int a, k, i;
printf("enter a number:");
scanf("%d",&a);
k=0;
for (i=2; i<=sqrt(a); i++)
if(a%i==0)
{
printf("%d avval nist", a);
k=1;
break;
}
۶
if (k==0)
printf("%d avval ast", a);
else
printf("%d avval nist", a);
}
--------------------------------------------------------------------------
11 - ** برنامه ای بنویسید که تم ام اعداد دو رقمی که بر مجموع ارقامش بخشپذیرند را چاپ
کند.
برای انجام این کار باید کارها ی زیر در یک حلقه ای ک ه از اولین عدد دو رقمی شرو ع و به آخری ن رقم دو رقمی
ختم می شود را انجام دهد.
تقسیم صحیح عدد بر 10 =( d ) - رقم دهگان
باقیمانده عدد بر 10 =( y) - رقم یکان
- سپس عدد را بر مجموع مقدار 1 و 2 تقسیم می کند اگر باقیمانده صفر شد یعنی عدد بر مجموع ارقامش
کار خود را تا آخرین عددش i بخشپذیر است وآن را چاپ کند وگرنه حلقه بار دیگر با اضافه کردن یکی بر مقدار
ادامه می دهد.
#include
void main()
{
int a, b, i;
for (i=10; i<=99; i++)
{
a=i/10;
b=i%10;
if(i%(a+b)==0)
printf("%2d,", i);
}
}
--------------------------------------------------------------------------
-12 * یک عدد حقیقی و یک عدد صحیح مثبت را بگیرد و اولی را به توان دومی برساند یعنی:
hasel = X n
#include
void main()
{
int i, n;
double x, hasel=1;
printf("enter a double number:");
scanf("%lf", &x);
printf("enter an integer number:");
scanf("%d",&n);
٧
for (i=1;i<=n;i++)
hasel*=x;
printf("%.2f^%d=%.2f", x, n, hasel);
}
--------------------------------------------------------------------------
-13 *** برنامه ای بنویسید که عددی را بگیرد و عاملهای اولش را چاپ کند.
کافی است با یافتن هر مقسوم علیه آنقدر عدد مورد نظر را بر آن تقسیم کنیم تا دیگر بر آن بخشپذیر نباشد.
#include
void main()
{
int x, i=2;
printf("enter a number:");
scanf("%d",&x);
do
{
if(x%i==0)
{ printf("%d ", i);
while(x%i==0)
x/=i;
}
i++;
}
while(x>1);
}
--------------------------------------------------------------------------
-14 ** برنامه ای بنویسید که روی مانیتور شکلهای زیر چاپ شود. (باکاراکتر ٭)
بدلیل اینکه برنامه بهتر قابل فهم گردد هر شکل در برنامه ای جدا نوشته شده است.
الف:
این قسمت از برنامه کار خاصی ندارد فقط با کمی آشنایی از صفحه مانیتور که چند سطر و چند ستون دارد
می توان شکل الف را برروی مانیتور چاپ کرد. j و i براحتی با استفاده از دو متغیر
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* * * * * * * * * *
* * * * * * * * *
** * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
٨
در برنامه از دو حلقه که هر دو حلقه تودرتو می باشند استفاده شده که حلقه تودرتوی اول کار چاپ نصف شکل را می
کند یعنی در واقع هر بار ستاره های به تعداد ستاره های سطر بعد می کند ولی حلقه تودرتو ی دو م عکس این کار را
انجام می دهد.
#include
void main()
{ int i, j;
for(i=1; i<=13; i++)
{ for(j=1; j<=i; j++)
printf("*");
printf("\n");
}
for(i=1;i<=12;i++)
{ for( j=12; j>=i; j--)
printf("*");
printf("\n");
}
}
ب)
#include
void main()
{ int a, b, c=25 ;
for(a=1; a<=25; a++)
{ for(b=1; b<=25; b++)
{ if((b=a))
printf("*");
else
printf(" ");
}
printf("\n");
}
}
* * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * ** * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * *
* * * * * * * *
* * * * * *
* * *
* *
*
٩
به تریس برنامه توجه فرمایید:
--------------------------------------------------------------------------
15 - *** برنامه ای بنویسید که به روش تنصیف معادله زیر را تا چهار رقم اعشار حل کند.
x +ex=5
حل: هدف بدست آوردن ریشه معادله زیر است:
F(x)= x + ex - 5 = 0
و دیگری که مقدار منفی ( Xp) دو تخمین اولیه مورد نیاز است، یکی عددی که به ازای آن مقدار معادله مثبت باشد
میانگین دو تخمین قبل است. ( Xm) تخمین جدید در هر مرحله .( Xn) به معادله بدهد
#include
#include
void main()
{ double xp, xn, xm;
xn=0;
xp=3;
do
{
xm=(xp+xn)/2;
if(xm+ exp(xm) -5>0)
xp=xm;
else
xn=xm;
}
while((xp-xn)>1E-5);
printf("answer is : %.5f", xm);
}
در اینجا وقتی شرط برقرار نیست
شرط برقرار است لذا بجای ستاره else
کاراکتر خالی می گذارد.
a b c b=a
1>=1
2>=1
3>=1
.
.
1>=2
2>=2
.
.
.
.
1<25-1
2<25-1
3<25-1
.
.
1<25-2
2<25-2
.
.
.
.
25
12
3
.
.
1
2
.
.
.
.
1
.
.
.
2
2
.
.
.
.
ها ١٠ مثالهای آرایه
-16 ** برنامه ای بنویسید که یک لیست (آرایه یک بعدی) از اعداد و سپس یک عدد را بگیرد و
تعداد دفعات تکرار آن عدد را در لیست معین کند .
#include
void main()
{ int i, n=0, num[100], x;
printf("enter 100 numbers:");
for(i=0; i<100; i++)
scanf("%d",&num[i]);
printf("enter a number:");
scanf("%d",&x);
for(i=0; i<100; i++)
if(x==num[i])
n++;
printf("\ntedad=%d",n);
}
این برنامه با برای یک آرایه صدتایی نوشته شده است و برای تعداد اعداد بیشتر می توان هر کجا مقدار 100 در
برنامه تایپ شده را عدد مورد نظر خود را بگذارید.
به طوری استفاده شده است که پس وارد شدن اعداد توسط کاربر عملیات for در این برنامه از یک حلقه
جستجو را بر روی عددی که کاربر جهت جستجو وارد می کند را برروی کلیه اعداد بررسی می کند بدین صورت
یکی به آن اضافه می شود. و در نهایت s که هرگاه عددی از آرایه ها برابر عددی که کاربر داده است بود ظرف
را اعلام می دارد. در این جستجو حتی اگر کاربر عددی وارد کند که در آرایه ها نباشد s پس از پایان حلقه مقدار
درست عمل کرده و مقدار آن را صفر اعلام می دارد.
--------------------------------------------------------------------------
-17 ** برنامه ای بنویسید که یک لیست از اعداد را بگیرد و به ترتیب صعودی مرتب کند.
#include
void main()
{ int i, j, num[10], tmpnum ;
printf("enter 10 numbers:");
for(i=0; i<10; i++)
scanf("%d",&num[i]);
for(j=0; j<9; j++)
for(i=0; i<10-j; i++)
if(num[i]>num[i+1])
{ tmpnum=num[i];
num[i]=num[i+1];
num[i+1]=tmpnum;
}
١١
printf("\n adad moratab shode be tartibe soudi\n");
for(i=0; i<10; i++)
printf("%d ",num[i]);
}
در این برنامه از روش حبابی که در زیر توضیح می دهیم استفاده شده است .
(bubble sort) : روش حبابی
در این روش دو عنصر متوالی با یکدیگر مقایسه می شوند, چنانچه اولی از دومی بزرگتر باشد, جای آنها در آرایه عوض
می شود. وقتی یک بار تمام عناصر, دو به دو باهم مقایسه شدند, بزرگترین عنصر به انتهای آرایه می رود. دفعه بعد که
عناصر آرایه دو به دو با هم مقایسه می شوند, دومین عدد از نظر بزرگی قبل از بزرگترین عنصر, در انتهای آرایه می
رود. این روند تا مرتب سازی نهایی ادامه می یابد.
مثال:
9 6 3 عناصر اولیه: 4
6 3 4 مرحله اول: 9
3 4 6 مرحله دوم: 9
--------------------------------------------------------------------------
-18 ** برنامه ای بنویسید که اعداد اول کوچکتر از 1000 را در آرایه ای به ترتیب ذخیره کند.
#include
void main()
{ int q[1000], i, j, z=0, n;
for(i=1; i<1000; i++)
{ n=0;
for(j=1;j<=i;j++)
if(i%j==0)
n++;
if(n==2)
{ q[z]=i;
z++;
}
}
for(i=0;iprintf("%3d ",q[i]);
}
--------------------------------------------------------------------------
-19 ** برنامه ای بنویسید که لیستی را بگیرد، بزرگترین، مقدار، کوچکترین مقدار، متوسط لیست
و و اریانس آنرا حساب کند.
#include
void main()
{ int i;
double x[100], max, min, avg, v=0, sum=0;
max=-32767;
min=32767;
printf("enter 100 numbers:");
for(i=0; i<100; i++)
١٢
{ scanf("%lf",&x[i]);
if(maxmax=x[i];
if(min>x[i])
min=x[i];
sum+=x[i];
}
avg=sum/100;
for(i=0;i<100;i++)
v+=((x[i]-avg)*(x[i]-avg))/100;
printf("\n max=%.2f, min=%.2f", max, min);
printf("\n average=%.2f, variance=%.2f", avg ,v);
}
--------------------------------------------------------------------------
20 - ** برنامه ای بنویسید که لیستی صدتایی از اعداد را بگیرد و سپس اعداد مثبت آن را و
اعداد منفی آن را در آرایه های دیگری ذخیره و جداگانه چاپ کند.
#include
void main()
{ int i, npos=0, nneg=0;
double x, neg[100], pos[100];
printf("\n Enter 100 numbers:");
for(i=0; i<100; i++)
{ scanf("%lf", &x);
if(x>=0)
{ pos[npos]=x;
npos++;
}
else
{ neg[nneg]=x;
nneg++;
}
}
printf("\nThere are the positive numbers:");
for(i=0; iprintf("\n%g", pos[i]);
printf("\nThere are the negative numbers:");
for(i=0; iprintf("\n%g", neg[i]);
}
--------------------------------------------------------------------------
3 را بگیرد و دترمینان آن را محاسبه کند. * -21 ** برنامه ای بنویسید که یک ماتریس 3
١٣
3 یک آرایه 9 تایی برای ذخیره مقدار نه عضو ماتریس کافیس ت. سپس * برای محاسبه دترمینان یک م اتریس 3
فرمول دترمینان را به صورت زبان برنامه نوشته و از برنامه می خواهیم مقدار عبارت ریاضی که محاسبه دترمینان
ماتریس داده شده توسط کاربر است را برایمان چاپ کند.
X1 X2 X3
X4 X5 X دترمینان <= 6 = X1 - X2 + X3
X7 X8 X9
#include
void main()
{
int i, j, x1, x2, x3, det, m[3][3];
for(i=0; i<3; i++)
for(j=0; j<3; j++)
scanf("%d", &m[i][j]);
det = (m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1]))-
(m[0][1] * m[1][0] m[2][2] - m[1][2] * m[2][0]))+
(m[0][2] * (m[1][0] * m[2][1] - m[2][0] * m[1][1]));
printf("determinan=%5.2d", det);
}
--------------------------------------------------------------------------
را بگیرد، مجموع n × n و سپس عناصر یک ماتریس n 22 - ** برنامه ای بنویسید که ابتدا
تمام عناصر و نیز حاصلضرب عناصر قطر اصلیش را حساب و چاپ کند.
#include
void main()
{ int i, j, n;
double sum=0, haqa=1, m[20][20];
scanf("%d", &n);
for(i=0; ifor(j=0; j{ scanf("%lf",&m[i][j]);
sum+=m[i][j];
}
for(i=0; ihaqa*= m[i][i];
printf("majmooe hame=%g, haselezarbe anasere qotre asli=%g",
sum, haqa);
}
--------------------------------------------------------------------------
X5 X6
X8 X9
X4 X6
X7 X9
X4 X5
X7 X8
١۴
23 - *** برنامه ای بنویسید که دو لیست از اعداد صحیح را بگیرد ( هر کدام 100 عضو ) و تعداد
اعضای مشترکشان را چاپ کند.
جداگانه ابتدا for برنامه با استفاده از حلقه های تودر تو و یک شرط براحتی انجام پذ یر است.کافی است با دو حلقه
مقادیر لیست اول و سپس دوم را در دو آرایه ذخیره کنیم سپس به بررسی تک تک آنها بپردازیم که این عمل به این
با 100 درایه از لیست دوم مقایسه می ( i= مقدار اولین عدد از لیست اول 0 ) x[ صورت انجام می شود که ابتدا [ 0
است یا خیر به محض برقرار بودن شرط یک عدد به ظرف کنتور ما y[i] شود که آیا مقدار آن برابر با درایه های
ادامه می یابد. i= اضافه میشود و این روند تا 99
#include
void main()
{ int i, j, n=0, x[100], y[100];
printf("enter numbers of first list:");
for(i=0;i<100;i++)
scanf("%d", &x[i]);
printf("enter numbers of second list:");
for(i=0;i<100;i++)
scanf("%d", &y[i]);
for(i=0; i<100; i++)
for(j=0; j<100; j++)
if(x[i] == y[j])
n++;
printf("\n eshterak=% d", n);
}
--------------------------------------------------------------------------
-24 *** برنامه ای بنویسید که مثلث خیام را تا 10 مرحله چاپ کند.
#include
void main()
{ int i, j, kh[10][10];
for(i=1; i<=10; i++)
{ kh[i][1]=1;
kh[i][i]=1;
for(j=1;j<=i-2;j++)
kh[i][j+1]=kh[i-1][j]+kh[i-1][j+1];
}
for(i=1; i<=10; i++)
{ printf("\n");
for(j=1; j<=i; j++)
printf("%5d", kh[i][j]);
}
}
--------------------------------------------------------------------------
١۵
-25 ** برنامه ای بنویسید که رشته ای را بگیرد و معکوس آن را چاپ کند.
#include
void main()
{ char s[50], i;
scanf("%s", s);
for(i=0; s[i]!=NULL; i++) /* /* جستجو به دنبال اندیس آخر رشته
;
for( ; i>0; --i) /* /* به عملگر یک واحد کاهش پیشوندی توجه کنید
printf("%c", s[i]);
}
--------------------------------------------------------------------------
-26 * *برنامه ای بنویسید که دو رشته را بگیرد و آنها را از حیث الفبا مقایسه و نتیجه را چاپ کند
(بدون استفاده از تابع کتابخانه ای).
#include
void main()
{
char s[60], t[60];
int i, flag=0;
printf("\n enter s, t :");
scanf("%s %s", s, t);
for(i=0; s[i]!=NULL && t[i]!=NULL; i++)
if(s[i]!=t[i])
break;
if(s[i]>t[i])
printf(" s moqaddam ast ");
else
if(s[i]printf(" t moqaddam ast ");
else
printf(" s , t yeksan hastand ");
}
--------------------------------------------------------------------------
-27 ** برنامه ای بنویسید که رشته ای را از کاربر بگیرد و آن رشته را به استثنای حروف صدا دارش
در رشته دیگری ذخیره نموده و چاپ کند.
#include
void main()
{
char s1[60], s2[60];
int i, j=0;
printf("\nEnter a string\n");
١۶
scanf("%s", s1);
gets(s1);
for(i=0; s1[i]!=NULL; i++)
if(s1[i]!='a' && s1[i]!='e' && s1[i]!='u' && s1[i]!='y'
&& s1[i]!='o' && s1[i]!='i')
{ s2[j]=s1[i];
j++;
}
s2[j]=NULL;
printf("\n %s", s2);
}
--------------------------------------------------------------------------
-28 **** برنامه ای بنویسید که عددی را در مبنای 16 ا ز کاربر دریافت کرده و مبنای 10 آن را
حساب کرده و در خروجی چاپ کند.
عدد م بنای 16 ورودی را باید بناچار به شکل رشته ای دریافت کرد چون ممکن است ارقام حرفی نیز داشته باش د. این
ارقام حرفی را بعد از دریافت به شکل الفبای بزرگ تبدیل می کنیم .
#include
void main()
{ char snum[30];
int i, j, digit;
long int hasel=0;
printf("\nEneter a Hexadecimal number:");
scanf("%s", snum);
for(i=0; snum[i]!=NULL; i++)
{ if(snum[i]>='a' && snum[i]<='z') /* if char is a small letter */
snum[i] -= ('a'-'A'); /* convert char to uppercase */
if(snum[i]>='0' && snum[i]<='9') /* convert ascii code to value */
digit=snum[i]-'0';
else
digit=snum[i]-'A'+10;
hasel *= 16; /* converting from hex to decimal */
hasel += digit;
}
printf("\n%d", hasel);
}
--------------------------------------------------------------------------
-29 **** برنامه ای بنویسید که دو ماتریس را از کاربر گرفته و حاصل ضرب آنها را در ماتریس
سوم ذخیره کرده و چاپ کند.
#include
void main()
{
١٧
double a[10][10], b[10][10], c[10][10], t; /* a × b ---> c */
int i, j, k, m, n, p;
/* a is m x n , b is n x p , c will be m x p */
printf("\n Enter dimensions: m, n, p:");
scanf("%d %d %d", &m, &n, &p);
printf("\n Enter elements of matrix a: ");
for(i=0; ifor(j=0; j{ scanf("%lf", &t);
a[i][j]=t;
}
printf("\n Now enter elements of matrix b: ");
for(i=0; ifor(j=0; j{ scanf("%lf", &t);
b[i][j]=t;
}
/* calculating a × b at c ... */
for(i=0; ifor(j=0; j{ c[i][j]=0;
for(k=0; kc[i][j] += a[i][k] * b[k][j];
}
/* printing c... */
printf("\n a x b = \n");
for(i=0; i{ printf("\n");
for(j=0; jprintf(" %8.3f", c[i][j]);
}
}
--------------------------------------------------------------------------
"finish" -30 *** برنامه ای بنویسید که تعدادی اسم (حداکثر 50 حرفی) را تا رسیدن کلمه
دریافت کند و آنها را به ترتیب الفبایی زیر هم چاپ کند و کوتاهترین اسم را نیز مشخص کند.
#include
#include
void main()
{ char names[200][50], shortest[40], stmp[40];
int n, i, j, minlength=40;
١٨
for(n=0; ; n++)
{ printf("\nEnter next name:");
scanf("%s", &names[n]);
if(strcmp(names[n], "finish"))
break;
if(strlen(names[n]){ strcpy(shortest, names[n]);
minlength=strlen(names[n]);
}
}
printf("\nThe shortest name is %s ", shortest);
for(j=0; jfor(i=1; iif(strcmp(names[i], names[i-1])>0)
{ strcpy(stmp, names[i]);
strcpy(names[i], names[i-1]);
strcpy(names[i-1], stmp);
}
printf("\n Sorted names are below: ");
for(i=0; iprintf("\n%s", names[i]);
}
١٩
مثالهای متفرقه
مثبت است) از ورودی خوانده، سینوس آن را از x) را بر حسب رادیان x -31 ** برنامه ای که مقدار
بسط محاسبه کند (تا 5 رقم اعشار):
Sin(x)= x - x3/3! + x5/5! – x7/7! + ...
از رابطه هرجمله با جمله قبل استفاده می کنیم:
جمله فعلی = -x*x/(n*(n- جمله قبلی * (( 1
#include
void main()
{ int n=3;
double x, t, s, abst;
printf("enter a number:");
scanf("%lf", &x);
s=x;
t=x;
do
{ t*=-x*x/(n*(n-1));
s+=t;
n+=2;
if (t<0)
abst=-t;
else
abst=t;
}
while( abst > 1e-5 );
printf("sin(%g=%.5f", x, s);
}
----------------------------------------------------------------------------------
3 را از ورودی خوانده، ترانهاده آن را پیدا می کند و آن را به × -32 * برنامه ای که عناصرماتریس 5
خروجی می برد. ترانهاده ماتریس، ماتریسی است که سطرهای آن، ستونهای ماتریس اولیه اند.
#include
void main()
{ int i, j, a[3][5], b[5][3];
for(i=0; i<3; i++)
for(j=0; j<5; j++)
{ scanf("%d",&a[i][j]);
b[j][i]=a[i][j];
}
٢٠
for(i=0; i<5; i++)
{ printf("\n");
for(j=0; j<3; j++)
printf("%6d", b[i][j]);
}
}
----------------------------------------------------------------------------------
Crn را بخواند و مقدار r و n -33 ** برنامه ای بنویسید که دو عدد
محاسبه و چاپ کند:
#include
void main()
{ int i, n, r, surat=1, makh=1;
double hasel;
scanf("%d%d",&n, &r);
for(i=n;i>=r+1;i--)
surat*=i;
for(i=n-r;i>=1;i--)
makh*=i;
hasel=surat/makh;
printf("hasel=%.0lf",hasel);
}
----------------------------------------------------------------------------------
-34 *** برنامه ای بنویسید که دو عدد صحیح را از ورودی بخواند و عدد اول را به مبنای عدد دوم
تبدیل کند آنگاه نتیجه را با پیغام مناسب در خروجی چاپ نماید. (مبنا کمتر از ده باشد)
#include
void main()
{ int i=0, j, n, n2, mabna, r, x[50];
printf("enter a number and base:");
scanf("%d%d", &n, &mabna);
n2=n;
do
{ r=n% mabna;
n/=mabna;
x[i]=r;
i++;
}
while(n>= mabna);
n!
r! (n - r)!
Crn =
٢١
x[i]=n;
printf("%d in base %d = ", n2, mabna);
for(j=i; j>=0; j--)
printf("%1d", x[j]);
}
نمونه ای از خروجی حاصل از اجرای این برنامه به صورت زیر است:
Enter A Number And Base : 521 4
521 in base 4 = 20021
----------------------------------------------------------------------------------


مطالب مشابه :


روشهای محاسبه دترمینان

( 3 ) = 3 t( 2 ) + 1 دستگاههای بزرگ معادلات رو حل می برنامه محاسبه دترمینان به روش سوم رو




راهنمایی درمورد برنامه محاسبه دترمینان ماتریس (به درخواست محمد رضا)

راهنمایی درمورد برنامه محاسبه دترمینان مرتبه n رو به روش معادلات رو حل




نمونه برنامه های حل شده برنامه نویسی ++c برای درس محاسبات عددی

نمونه برنامه های حل شده برنامه فرمول دترمینان را به صورت زبان برنامه det, m[3][3]; for(i=0; i3




سرفصل درس ریاضی کنکور ارشد شهرسازی

پیوسته ، قضایای اساسی حساب دیفرانسیل و انتگرال ، تابع اولیه ، روش 3*3 ، دستگاه




نمونه سوالات وجزوه ریاضی عمومی

= x² + 5x باشد مشتق fog = ؟روش حل (3×3) 100 – 36 = 64 استبرای روش کرامر ابتدا دترمینان ماتریس A را




برچسب :