PDA

View Full Version : سوال: مشکل در برنامه نویسی با C



unkownme
پنج شنبه 15 آبان 1393, 12:39 عصر
سلام من برایزیر رو نوشتم که خروجیش اعداد اول هستن اما میخوام بعد از آخرین عددی که چاپ میشه یا اولین عدد دیگه","نباشه مثلا:
2,3,5 باشه نه 2,3,5,
باید یه if بذارم بالای print f آخر احتمالا اما شرطشو نمی دونم
راهی دارید؟
ممنون

int a,b,i,j,z; scanf("%d%d",&a,&b);
if(a==1 )
a++;
if(a==0)
a+=2;

for (j=a;j<=b;j++)
{

z=0;
for (i=2;i<=j/2;i++)
{
if (j%i==0)
{
z=1;
}
}

if(z==0)
{

printf(",");
printf("%d",j);
}

}

parsafarabbas
پنج شنبه 15 آبان 1393, 12:56 عصر
سلام
ابتدای حلقه باید کاما رو چاپ کنی تا بعد از آخرین عدد که چاپ میشه کاما وجود نداشته باشه.
واسه اینکه بار اول هم چاپ نشه یه شرط بزار.

unkownme
پنج شنبه 15 آبان 1393, 13:46 عصر
نشد.
میشه تغییراتو توی برنامه انجام بدید یا واضح تر توضیح بدید؟
ممنون

sa1378
پنج شنبه 15 آبان 1393, 15:22 عصر
1-همیشه این مشکلاتو با یه شمارنده حل کن
2-همیشه بجای کاما از فاصله استفاده کن:لبخند:
int a,b,i,j,z,p=0;
scanf("%d%d",&a,&b);
if(a==1 )
a++;
if(a==0)
a+=2;

for (j=a;j<=b;j++)
{

z=0;
for (i=2;i<=j/2;i++)
{
if (j%i==0)
z=1;
}

if(z==0)
{
if(p!=0)
{
printf(",");
}
p=1;
printf("%d",j);
}

}

unkownme
جمعه 16 آبان 1393, 11:07 صبح
یک مشکل دیگه:
توی برنامه زیر میحوام اعداد رو تجزیه کنم و طوری نمایششون بدم که مثلا 2*2*2 بشه 3^2 مشکل دارم توش.
بی زحمت اگه راهی به ذهنتون میرسه بگید
ممنون

int n,i,m,p=0,j=0;
scanf("%d",&n);
m=n;
for(i=2 ; i<=m;i++)
{

if (n%i==0)
{
if(j<=1)
{
if(p==1)
printf("*");
printf("%d",i);
p=1;
}
if(j>0)
{
printf("(%d^%d)*",i,j);
}
n=n/i;
i--;
j++;
}
if(n%i!=0)
j=0;

گرچه کد الان مشکل داره و باید دیباگ بشه دیگه!

sa1378
جمعه 16 آبان 1393, 11:41 صبح
من خودم قبلا کدشو زدم برات میزارم اینجا
هرجا نفهمیدی بگو:
#include <cstdio>
int main() {

int a;
scanf("%d",&a);
for(int i=2;i*i<=a;i++)
{

if(a%i==0)
{
int p=0;
while(a%i==0)
{
p++;
a/=i;
}
printf("%d^%d ",i,p);
}
}

if(a!=1)
printf("%d^1",a);

return 0;
}

unkownme
جمعه 16 آبان 1393, 12:43 عصر
#include <stdio.h>int main() {

int i,a,c=0,j=0,p;
scanf("%d",&a);
for(i=2;i*i<=a;i++)
{
if(a%i==0)
{
p=0;
while(a%i==0)
{
p++;
a/=i;
}
if(p!=1)
{

printf("(%d ^ %d) * ",i,p);
}
if(p==1)
{
printf("%d * ",i);
}

}
}
if(a!=1)
{
if(c!=0)
printf(" ");
c=1;
printf("%d",a);
}


return 0;
}

من برای حالت کلی تغییرش دادم فقط یه ستاره آخر زیادی میزنه دیگه نمی دونم چکارش کنم!
عدد 155316 رو تست کن!

sa1378
جمعه 16 آبان 1393, 15:58 عصر
همونطور که قبلا گفتم همه اینا میتونن با یه شمارنده حل بشن
اینم کد اصلاح شده:
#include <stdio.h>
int main() {

int i,a,c=0,j=0,p,pointer=0;
scanf("%d",&a);
for(i=2;i*i<=a;i++)
{
if(a%i==0)
{
p=0;
while(a%i==0)
{
p++;
a/=i;
}
if(pointer!=0)
printf(" * ");
if(p!=1)
printf("(%d ^ %d)",i,p);
if(p==1)
printf("%d",i);

pointer++;
}
}
if(a!=1)
{
if(pointer!=0)
printf(" * ");

printf("%d",a);
}


return 0;
}