با سلام من می خوام یه برنامه بنویسم که اعداد لول کوچکتر از عدد ورودی را نمایش بده.این سورس رو نوشتم می خوام بدونم کجاش اشتباه هکه درستش کنم:
HTML:
#include<iostream.h>
#include<conio.h>
void main() {
clrscr();
int a;int c=0;int d;
cin>>a;
for(int i=a;i>0;i--){
for(int b=1;b<=i;i++){
d=i%b;
if(d==0)
c+=1;
b++;}
if(c==2)
cout<<i; }
getch(); return 0; }
خیلی ممنون
بــــدرود
1) تابعی main ای که با return 0 تموم میشه رو با () int main تعریف کنید، نه ()void main
2) شما تعداد مواردی که i بر b بخشپذیر است را در c می شمارید، اما صفر کردن c را فقط یکبار و قبل شروع حلقه ها
انجام داده اید، در نتیجه برای i های بعدی دیگر c با 0 شروع نمی شود و مقدار c همینطور تجمعی افزایش می یابد.
باید c = 0 را داخل حلقه i و پیش از شروع حلقه b قرار دهید :
3) حلقه b ارتباطی با افزایش مقدار i ندارد، بجای اون ++i می بایستی ++b را قرار می دادید :
و این را هم از انتهای حلقه بردارید :
4) وقتی اعداد نمایش داده می شوند چون چیزی بین شان چاپ نمی کنید می چسبند به هم، یک عبارتی مثل " " > را
هم اضافه کنید تا اعداد i متوالی با هم فاصله داشته باشند.
کد ویرایش شده :
کد:
#include <iostream.h>
#include <conio.h>
int main()
{
clrscr();
int a, c, d;
cin >> a;
for (int i = a; i > 0; i--)
{
c = 0;
for (int b = 1; b <= i; b++)
{
d = i % b;
if (d == 0)
c += 1;
}
if (c == 2)
cout << i << " ";
}
getch();
return 0;
}