paradise_human
سه شنبه 17 آذر 1388, 17:18 عصر
سلا م دوستان ....
سوالا دقیقا اینان:
برنامه ای بنویسید که با گرفتن وررودی از کاربر (کارکتر عدد کارکتر عدد ) یعنی 4 تا ورودی از کاربر بگیره که یکیش تعداد شیفت ها به راست باشه و یکیش کارکتر نشان دهنده ی راست و یکیش تعداد شیفت ها به چپ باشه و کارکتر نشان دهنده ی چپ باشه و عملیات شیفت کردن رو روی یک آرایه ی 4 عنصری کارکتری مثل ABCD انجام دهد.(مثلا وارد کنیم 3 چپ 4 راست و بعد این عناصر رو به این صورت جابه جا کنه یعنی توی این حالت اینطوری برامون چاپ کنه DABC ) حالا من برنامه اش رو به این صورت نوشتم
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
char a[4]={'A','B','C','D'};
int i,m,k;
puts("Please enter left shift:");
scanf("%d",&m);
puts("Please enter right shift:");
scanf("%d",&k);
for(i=0;i<4;i++)
{
if(i+m-k+4>0)
printf("%c",a[(i+m-k+4)%4]);
else if(i+m-k<0)
printf("%c",a[(i+k-m+4)%4]);
}
}
فقط توی دوحالت مشکل داره یکی وقتی وارد میکنیم یکی به چپ 6 تا به راست و وقتی وارد میکنیم یکی به چپ 8 تا به راست
میتونید مشکلش رو برام رفع کیند ؟
البته استاد این برنامه رو ازم قبول کرد ولی گفت روش ساده ترشم هست ...
در مورد روش ساده ترش هم میونید یه توضیحی بدین؟
و اما در رابطه با سوال دوم.
سوال دوم اینه:
برنامه ای بنویسید که یک آرایه ی اعشاری و یک عدد صحیح از کاربر بگیرد و و در صورتی که عناصر
آرایه از عدد صحیح وارد شده کوچکتر بودند آن عناصر را حذف کرده و عناصر باقی مانده را چاپ کند
من این برنامه رو نوشتم و هیچ مشکلی هم نداره
فقط استادمون کلید کرده میگه از شیفت کردن توی این برنامه استفاده کنید
من منظور استاد رو متوجه نمیشم میتونید کمکم کنید ؟
اینم برنامم:
#include <stdio.h>
#include <string.h>
void main()
{
float a[100],b[100],c[200];
int i,n,m,j,t;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%f",&a[i]);
scanf("%d",&m);
i=j=t=0;
while(i<n)
{
if(a[i]<m)
{
c[t]=a[i];
i++;
t++;
}
else
{
b[j]=a[i];
i++;
j++;
}
}
for(j=0;j<i-t;j++)
printf("%f-",b[j]);
}
سوالا دقیقا اینان:
برنامه ای بنویسید که با گرفتن وررودی از کاربر (کارکتر عدد کارکتر عدد ) یعنی 4 تا ورودی از کاربر بگیره که یکیش تعداد شیفت ها به راست باشه و یکیش کارکتر نشان دهنده ی راست و یکیش تعداد شیفت ها به چپ باشه و کارکتر نشان دهنده ی چپ باشه و عملیات شیفت کردن رو روی یک آرایه ی 4 عنصری کارکتری مثل ABCD انجام دهد.(مثلا وارد کنیم 3 چپ 4 راست و بعد این عناصر رو به این صورت جابه جا کنه یعنی توی این حالت اینطوری برامون چاپ کنه DABC ) حالا من برنامه اش رو به این صورت نوشتم
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
char a[4]={'A','B','C','D'};
int i,m,k;
puts("Please enter left shift:");
scanf("%d",&m);
puts("Please enter right shift:");
scanf("%d",&k);
for(i=0;i<4;i++)
{
if(i+m-k+4>0)
printf("%c",a[(i+m-k+4)%4]);
else if(i+m-k<0)
printf("%c",a[(i+k-m+4)%4]);
}
}
فقط توی دوحالت مشکل داره یکی وقتی وارد میکنیم یکی به چپ 6 تا به راست و وقتی وارد میکنیم یکی به چپ 8 تا به راست
میتونید مشکلش رو برام رفع کیند ؟
البته استاد این برنامه رو ازم قبول کرد ولی گفت روش ساده ترشم هست ...
در مورد روش ساده ترش هم میونید یه توضیحی بدین؟
و اما در رابطه با سوال دوم.
سوال دوم اینه:
برنامه ای بنویسید که یک آرایه ی اعشاری و یک عدد صحیح از کاربر بگیرد و و در صورتی که عناصر
آرایه از عدد صحیح وارد شده کوچکتر بودند آن عناصر را حذف کرده و عناصر باقی مانده را چاپ کند
من این برنامه رو نوشتم و هیچ مشکلی هم نداره
فقط استادمون کلید کرده میگه از شیفت کردن توی این برنامه استفاده کنید
من منظور استاد رو متوجه نمیشم میتونید کمکم کنید ؟
اینم برنامم:
#include <stdio.h>
#include <string.h>
void main()
{
float a[100],b[100],c[200];
int i,n,m,j,t;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%f",&a[i]);
scanf("%d",&m);
i=j=t=0;
while(i<n)
{
if(a[i]<m)
{
c[t]=a[i];
i++;
t++;
}
else
{
b[j]=a[i];
i++;
j++;
}
}
for(j=0;j<i-t;j++)
printf("%f-",b[j]);
}