اجرای برنامه c در محیط c++؟

ellisa

Member
با سلام
چه طور میشه برنامه نوشته شده به زبان c رو در محیط++ c اجرا کرد ؟
زمانیکه برنامه ای رو به زبان c دارم و برنامه ای اجرایی c رو ندارم یعنی روی سیستمی که میخوام اجرا کنم فقط برنامه c++ نصب باشه و بخوام برنامه رو اجرا کنم ... اجرا نمیشه خطا میده ؟ چه طوری میتونم تبدیلش کنم به c++؟ چه طوری میتونم اجراش کنم؟ اصلا راهی هست که بشه برنامه C رو در محیط C++ اجرا کرد؟

ممنون
 
آخرین ویرایش:

saalek110

Well-Known Member
من دقیقا متوجه منظور شما نشدم ولی چه برنامه سی با پسوند c و چه برنامه سی پلاس با پسوند cpp توسط کامپایلری مثل توربوسی 3 تبدیل به فایل اجرایی یعنی اگزه می شود.
 

ellisa

Member
ممنون دوستان
اما منظورم اینه که قطعه کدی که به زبان c هست رو در محیط c++ کپی کنیم و بعد اجرا کنیم.... اینجاست که از کد ایراد میگیره و اجرا نمیکنه برنامه رو ... راه حل این مشکل چیه؟
راستی کد c رو در برنامه borland c++ 5.02 اجرا میکنم و بازم اجرا نمیشه ... از توابع ایراد میگیره ... ایرادای عجیب غریب ....
 
خوب بررسی کن ببین ایراادش چیه؟ شاید اصلا اشتباه در نجوه تایپ برنامه داشته باشه. راستی از توابع گرافیکی استفاده نکردی؟ چون این توابع اصلا با هم جور در نمی آیند و توی سی با سی پلاس پلاس فرق دارن.
 

the_king

مدیرکل انجمن
در صورت امکان کل کد و در غیر اینصورت ساختار اصلی برنامه (بدون کدهای درون بدنه توابع) را قرار دهید تا مشکل
با نمونه برنامه بررسی گردد، چون کامپایلری که توانایی ترجمه کد ++c را داشته باشد، اصولا با زبان c نیز سازگار است.
 

ellisa

Member
با سلام
این کد الگوریتم زمانبندی سیستم عامل هست SJF=> Shortest Job First ممنون میشم کمکم کنید ....
و البته یه راهنمایی هم واسه نوشتن الگوریتم زمانبندی HRN کنید ....

#include<stdio.h>
main()
{
float avgwt,avgtt;
char pname[10][10],c[10][10];
int wt[10],tt[10],bt[10],at[10],t,q,i,n,sum=0,sbt=0,ttime,j,ss=0;
printf("\n\n Enter the number of processes:");
scanf("%d",&n);
printf("\n\n Enter the NAME,BURSTTIME and ARRIVALTIME of the processes");
for(i=0;i<n;i++)
{
printf("\n\n NAME :");
scanf("%s",&pname);
printf("\n\nBURST TIME :");
scanf("%d",&bt);
printf("\n\n ARRIVAL TIME :");
scanf("%d",&at);
}
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(at==at[j])
if(bt>bt[j])
{
t=at;
at=at[j];
at[j]=t;
q=bt;
bt=bt[j];
bt[j]=q;
strcpy(c,pname);
strcpy(pname,pname[j]);
strcpy(pname[j],c);
}
if(at!=at[j])
if(bt>bt[j])
{
t=at;
at=at[j];
at[j]=t;
q=bt;
bt=bt[j];
bt[j]=q;
strcpy(c,pname);
strcpy(pname,pname[j]);
strcpy(pname[j],c);
}
}
wt[0]=0;
for(i=0;i<n;i++)
{
wt[i+1]=wt+bt;
sum=sum+(wt-at);
sbt=sbt+(wt[i+1]-at);
tt=wt+bt;
ss=ss+bt;
}
printf("\n\n GANTT CHART");
printf("\n\n ------------------------------------------------------------------\n");
for(i=0;i<n;i++)
{
printf("|\t%s\t",pname);
sbt=sbt+wt[i+1];
tt=wt+bt;
ss=ss+bt;
}
printf("\n\nGANTT CHART");
printf("\n--------------------------------------------------------------------\n");
for(i=0;i<n;i++)
{
printf("|\t%s\t",pname);
}
printf("\n--------------------------------------------------------------------\n");
for(i=0;i<n;i++)
{
printf("%d\t\t",wt);
}
printf("%d\n",ss);
printf("\n--------------------------------------------------------------------\n");
printf("\n\n Total WAITING TIME of the process=%d",sum);
printf("\n\nTotal TURNAROUND TIME of the process=%d",sbt);
avgwt=(float)sum/n;
avgtt=(float)sbt/n;
printf("\n\nAverage WAITING TIME of the process=%f",avgwt);
printf("\n\nAverage TURNAROUND TIME of the process=%f",avgtt);
}

ممنون
 
آخرین ویرایش:
من همین الان با borland ران کردمش!
فقط کافیه #include <string.h> اضافه کنید
توی تابع کتابخانه ای stdio.h هم 1 فاصله بین #include و <stdio.h> بذارین! فکر نمی کنم چسبیده به همش درست کار کنه!‌اگر دقت کرده باشید جداش می کنید رنگش از سبز به آبی تغییر می کنه
 

the_king

مدیرکل انجمن
مورد اول
حتما هنگامی که کدی را در ویرایشگر متنی فروم قرار می دهید از دکمه
code.gif
استفاده نمایید تا متن تان در میان دو
تگ [CODE] و [CODE/] قرار گیرد. هم چپ به راست بودن کدها حفظ می شود و هم فرو رفتی سطرهای کد
به واسطه فاصله و Tab ها نمایش می یابد.

مورد دوم
زمانی که از توابعی مانند ()strcpy استفاده می کنید، include کردن <string.h> را فراموش نکنید.
چون <string.h> را معرفی نکردید، ()strcpy برای کامپایلر ناشناخته خواهد بود.

مورد سوم
تابع ()main یا خروجی اش باید void باشد یا int ، که در مثال شما با توجه به عدم کاربرد فرمان return می بایستی قبل از
()main از void استفاده می کردید.

مورد چهارم
در کدتان از متغیر ttime هیچ استفاده ای نکردید، پس تعریف کردن این متغیر اضافی بود.

مورد پنجم
برای آنکه پایان یافتن اجرای برنامه در برخی کامپایلر ها شامل یک pause جهت مشاهده خروجی برنامه نیست و بلافاصله
به محیط ویرایشگر باز می گردد، بهتر است که در پایان کد main یک تابع اضافی ()getch را قرار دهید.
با اضافه کردن این تابع که نیازمند include کردن <conio.h> می باشد، کاربر برای بازگشت به محیط ویرایشگر باید یک کلید
را فشار دهد و برای مشاهده خروجی های printf فرصت کافی خواهد داشت.

کد ویرایش شده که پنج مورد فوق در آن رعایت گردیده باشد، در کامپایلر های Turbo C++ 3.0 و کامپایلر Turbo C++ 4.5 و کامپایلر Microsoft Visual C++ 6.0 بدون مشکل کامپایل و اجرا می گردد.

کد:
#include <stdio.h>
#include <conio.h>
#include <string.h>

void main()
{
   float avgwt,avgtt;
   char pname[10][10],c[10][10];
   int wt[10],tt[10],bt[10],at[10],t,q,i,n,sum=0,sbt=0,j,ss=0;
   printf("\n\n Enter the number of processes:");
   scanf("%d",&n);
   printf("\n\n Enter the NAME,BURSTTIME and ARRIVALTIME of the processes");
   for(i=0;i<n;i++)
   {
      printf("\n\n NAME :");
      scanf("%s",&pname[i]);
      printf("\n\nBURST TIME :");
      scanf("%d",&bt[i]);
      printf("\n\n ARRIVAL TIME :");
      scanf("%d",&at[i]);
   }
   for(i=0;i<n;i++)
      for(j=i+1;j<n;j++)
      {
         if(at[i]==at[j])
            if(bt[i]>bt[j])
            {
               t=at[i];
               at[i]=at[j];
               at[j]=t;
               q=bt[i];
               bt[i]=bt[j];
               bt[j]=q;
               strcpy(c[i],pname[i]);
               strcpy(pname[i],pname[j]);
               strcpy(pname[j],c[i]);
            }
         if(at[i]!=at[j])
            if(bt[i]>bt[j])
            {
               t=at[i];
               at[i]=at[j];
               at[j]=t;
               q=bt[i];
               bt[i]=bt[j];
               bt[j]=q;
               strcpy(c[i],pname[i]);
               strcpy(pname[i],pname[j]);
               strcpy(pname[j],c[i]);
            }
      }
   wt[0]=0;
   for(i=0;i<n;i++)
   {
      wt[i+1]=wt[i]+bt[i];
      sum=sum+(wt[i]-at[i]);
      sbt=sbt+(wt[i+1]-at[i]);
      tt[i]=wt[i]+bt[i];
      ss=ss+bt[i];
   }
   printf("\n\n GANTT CHART");
   printf("\n\n ------------------------------------------------------------------\n");
   for(i=0;i<n;i++)
   {
      printf("|\t%s\t",pname[i]);
      sbt=sbt+wt[i+1];
      tt[i]=wt[i]+bt[i];
      ss=ss+bt[i];
   }
   printf("\n\nGANTT CHART");
   printf("\n--------------------------------------------------------------------\n");
   for(i=0;i<n;i++)
   {
      printf("|\t%s\t",pname[i]);
   }
   printf("\n--------------------------------------------------------------------\n");
   for(i=0;i<n;i++)
   {
      printf("%d\t\t",wt[i]);
   }
   printf("%d\n",ss);
   printf("\n--------------------------------------------------------------------\n");
   printf("\n\n Total WAITING TIME of the process=%d",sum);
   printf("\n\nTotal TURNAROUND TIME of the process=%d",sbt);
   avgwt=(float)sum/n;
   avgtt=(float)sbt/n;
   printf("\n\nAverage WAITING TIME of the process=%f",avgwt);
   printf("\n\nAverage TURNAROUND TIME of the process=%f",avgtt);
   getch();
}
 

ellisa

Member
ممنون مرسی راستی واسه یه راهنمایی هم واسه نوشتن الگوریتم زمانبندی hrn کنید ... ممنون
 

جدیدترین ارسال ها

بالا