انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: کمک در تحلیل این برنامه؟؟؟ { حل شد}  (دفعات بازدید: 3405 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین m.minoo

  • Newbie
  • *
  • ارسال: 11
  • جنسیت : دختر
کمک در تحلیل این برنامه؟؟؟ { حل شد}
« : 28 مهر 1393، 07:45 ب‌ظ »
سلام دوستان من یه برنامه به c دارم توش از fork  استفاده کردم برنامه جواب میده اما من تحلیلش برام سخته و نمیفهممش چون به سیستم عامل ربط داره.این که کجای برنامه مشخص میشه و چطوری که فرایندها همروند اجرا میشن؟؟؟؟چطوری exit وwait با هم کار میکنن؟؟؟ لطفا راهنماییم کنید.
این برنامس:
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
#include <math.h>//baraye estefade az tabee sinus
float tabee(int x)
{

float y= 10 * sinf(0.25 * x);
if(y<0)
return -y;
return y;
}
float antegral(int form,int to)
{
return(tabee(form)+tabee(to))/2;
}
int main(){
int i;
float result=0;
float step;
float a[10];
printf("parent starts to creat child processes:\n");
for(i=0;i<10;i++)
{
int pid;
pid=fork();
if(pid==0)
{
printf("i am child %d \n",i);
step=antegral(i,i+1);
a[i]=step;
printf("child start:%d & result:%f \n",i,step);
exit(step);
}// end of if
}// end of for
for(i=0;i<10;i++)
{
int status;
wait(&status);
if(WIFEXITED(status))
{
result +=a[i];
printf("\n total sum is now:%f \n",result);
}
}
printf("antegral is:%f \r\n",result);
return 0;
}















































« آخرین ویرایش: 07 آبان 1393، 10:40 ب‌ظ توسط m.minoo »

آفلاین Ghost Shadow

  • High Hero Member
  • *
  • ارسال: 1803
  • جنسیت : پسر
  • Linux is Secured By Design
پاسخ : ارور روی تابع sinf در اوبونتو!!!!
« پاسخ #1 : 28 مهر 1393، 08:11 ب‌ظ »
اروری که از کد شما من گرفتم مربوط به آرایه بود :)
اونجایی که میخوای آرایه a رو مقدار دهی کنی باید ایندکس مشخص باشه.
به جای a خالی تو حلقه ها باید مثلا این رو بگذاری:

a[i]

آفلاین m.minoo

  • Newbie
  • *
  • ارسال: 11
  • جنسیت : دختر
پاسخ : ارور روی تابع sinf در اوبونتو!!!!
« پاسخ #2 : 28 مهر 1393، 08:50 ب‌ظ »
اروری که از کد شما من گرفتم مربوط به آرایه بود :)
اونجایی که میخوای آرایه a رو مقدار دهی کنی باید ایندکس مشخص باشه.
به جای a خالی تو حلقه ها باید مثلا این رو بگذاری:

a[i]
نه از این نبود چک کردم درست نوشتم.

آفلاین Ghost Shadow

  • High Hero Member
  • *
  • ارسال: 1803
  • جنسیت : پسر
  • Linux is Secured By Design
پاسخ : ارور روی تابع sinf در اوبونتو!!!!
« پاسخ #3 : 28 مهر 1393، 09:11 ب‌ظ »
اروری که از کد شما من گرفتم مربوط به آرایه بود :)
اونجایی که میخوای آرایه a رو مقدار دهی کنی باید ایندکس مشخص باشه.
به جای a خالی تو حلقه ها باید مثلا این رو بگذاری:

a[i]
نه از این نبود چک کردم درست نوشتم.
قبل از ویرایش پستتون ایندکس نداشت :D

الان من همین کد رو کپی میکنم تو کد بلاکس جواب میگیرم و اروری نمیده :)

آفلاین احسان☺

  • Full Member
  • *
  • ارسال: 220
  • جنسیت : پسر
پاسخ : ارور روی تابع sinf در اوبونتو!!!!
« پاسخ #4 : 28 مهر 1393، 09:29 ب‌ظ »
سلام
کتابخانه math و بالطبع تابع سینوس رو نمیشناسه.باید زمان کامپایل به این صورت به کتابخانه  لینک کنید:
gcc source.c -lm

آفلاین m.minoo

  • Newbie
  • *
  • ارسال: 11
  • جنسیت : دختر
پاسخ : ارور روی تابع sinf در اوبونتو!!!!
« پاسخ #5 : 29 مهر 1393، 08:34 ب‌ظ »
سلام
کتابخانه math و بالطبع تابع سینوس رو نمیشناسه.باید زمان کامپایل به این صورت به کتابخانه  لینک کنید:
gcc source.c -lm
ممنونم دوست عزیز با این دستور درست شد.با تشکر :)