PDA

View Full Version : PLEASE HELP ME



pc_math
دوشنبه 05 آذر 1386, 21:51 عصر
مشکل این برنامه چیه:
برنامه ای که عبارتی ریاضی را گرفته و بین عملگر و عملوند ها فاصله ایجاد و چاپ نماید:(از دستور break هم استفاده کردیم).
#include <mem.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>
int main()
{
char s1[51];
int n;
char s2[10]={'=','-','+','*','/','(',')','^','\0'};
cout<<"Enter your string:";
cin.get(s1,50);
n=strlen(s1);
for(int i=0; i<= n; i++)
for(int j=0; j< 9; j++){
if(s1[i] == s2[j]){
cout<<" ";
cout<<s2[j];
cout<<" ";
}//end of if
else
cout<<s1[i];
}// end of second for
getch();
return 0;
}
:خجالت::خجالت::متفکر:

Nima_NF
دوشنبه 05 آذر 1386, 23:34 عصر
1- وقتی روی گزینه گفتگوی مفید کلیک کنید که به جواب رسیده باشید. نه همون اول !!!
2- اسم مناسب برای پست خود انتخاب کنید نه please help me
3- با کمی فاصله و tab می توانید برنامه خودتان را به همین راحتی خوانا کنید. در فروم هم داخل tag کد قرار دهید.

اشکالات:
- برنامه شما نیاز به یکسری تغییرات داشت ، مثلا if دوم برای چاپ باید خارج حلقه for دوم باشد. و نیاز به یک متغیر boolean دارد تا بی خودی چاپ نکند.
- رشته را به شکلی که نوشتم تعریف می کنند و دیگر نیازی به مشخص کردن تعداد و انتهای رشته ندارد.

برنامه شما به این شکل درست می شود :




#include <iostream.h> // for windows <iostream>
#include <conio.h>
#include <string.h>

// using namespace std; // for windows
int main()
{
char s1[51];
int n;
bool isOperator ; // true when it is an operator
char s2[] = "=-+*/()^";

cout<<"Enter your string:";
cin.get(s1,50);
n=strlen(s1);

for(int i=0; i<= n; i++)
{
isOperator = false ;

for(int j=0; j< 8; j++)
{
if(s1[i] == s2[j])
{
cout<<" ";
cout<<s2[j];
cout<<" ";

isOperator = true;
break;
}
}

if (!isOperator)
cout<<s1[i];
}
getch();
return 0;
}