PDA

View Full Version : رشته صحیح یک عدد را پیدا کند



star462
پنج شنبه 29 فروردین 1387, 13:09 عصر
سلام,داخل کتاب ما یه تمرین داریم,که میخواد برنامه ای بنویسیم که رشته صحیح یک عدد داده شده را محاسبه کند(رشته ی صحیح بزرگ ترین عدد صحیحی است که مربع آن کوچکتر مساوی عدد داده شده باشد) من کد زیر را نوشتم ولی بعد اینکه عدد را گرفت هیچ عملیاتی انجام نمیدهد.اشکال کار کجاست؟ تشکر #include <iostream.h>
#include <conio.h>
#include <math.h>
int main()
{
int n ;
clrscr();
cout<<"Enter a number:";
cin>>n;
for (int i=1;i<sqrt(n);i++)
{
if(i*i>n)
cout<<i--;
}
getch();
return 0;

Accidentboy
پنج شنبه 29 فروردین 1387, 14:48 عصر
برنامت error میده یا جوات نمی ده
به نظر ما تو حلقه به جای sqrt(n)
lenght(n) بزاری

A.S.Roma
پنج شنبه 29 فروردین 1387, 19:04 عصر
سلام

برنامه ات رو اینطوری تغییر بده مشکلت حل میشه .




#include <iostream.h>
#include <conio.h>
#include <math.h>
int main()
{
int n;
clrscr();
cout<<"Enter a number:";
cin>>n;
for (int i=1;i<=sqrt(n)+1;i++)
{
if(pow(i,2)>n)
{
cout<<i-1;
break;
}
else if(pow(i,2)==n)
{
cout <<i;
break;
}
}
getch();
return 0;


}

star462
پنج شنبه 29 فروردین 1387, 22:45 عصر
یه دنیا تشکر :لبخندساده:
فقط میشه بگین چرا باید
sqrt(n) را با یک جمع کنیم؟انگار اشکال من اینجا بود که عملیاتو دیگه ادامه نمیداد

A.S.Roma
جمعه 30 فروردین 1387, 11:47 صبح
سلام

فرض کن عدد ورودی 29 باشه ، شما رادیکالش رو میگری میشه 5 . اگر حلقه ی For تا 5 فقط بره شرط


pow(i,2)>n

هیچ وقت درست در نمیاد ! چون همیشه میشه 25 و کوچکتر از 29 هست.
واسه همین یه دونه حلقه for رو بالا می بریم .