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

کمک و پشتیبانی => راهنماها، نکات و ترفندها => نویسنده: m.minoo در 28 مهر 1393، 07:45 ب‌ظ

عنوان: کمک در تحلیل این برنامه؟؟؟ { حل شد}
ارسال شده توسط: m.minoo در 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;
}















































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

a[i]
عنوان: پاسخ : ارور روی تابع sinf در اوبونتو!!!!
ارسال شده توسط: m.minoo در 28 مهر 1393، 08:50 ب‌ظ
اروری که از کد شما من گرفتم مربوط به آرایه بود :)
اونجایی که میخوای آرایه a رو مقدار دهی کنی باید ایندکس مشخص باشه.
به جای a خالی تو حلقه ها باید مثلا این رو بگذاری:

a[i]
نه از این نبود چک کردم درست نوشتم.
عنوان: پاسخ : ارور روی تابع sinf در اوبونتو!!!!
ارسال شده توسط: Ghost Shadow در 28 مهر 1393، 09:11 ب‌ظ
اروری که از کد شما من گرفتم مربوط به آرایه بود :)
اونجایی که میخوای آرایه a رو مقدار دهی کنی باید ایندکس مشخص باشه.
به جای a خالی تو حلقه ها باید مثلا این رو بگذاری:

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

الان من همین کد رو کپی میکنم تو کد بلاکس جواب میگیرم و اروری نمیده :)
عنوان: پاسخ : ارور روی تابع sinf در اوبونتو!!!!
ارسال شده توسط: احسان☺ در 28 مهر 1393، 09:29 ب‌ظ
سلام
کتابخانه math و بالطبع تابع سینوس رو نمیشناسه.باید زمان کامپایل به این صورت به کتابخانه  لینک کنید:
gcc source.c -lm
عنوان: پاسخ : ارور روی تابع sinf در اوبونتو!!!!
ارسال شده توسط: m.minoo در 29 مهر 1393، 08:34 ب‌ظ
سلام
کتابخانه math و بالطبع تابع سینوس رو نمیشناسه.باید زمان کامپایل به این صورت به کتابخانه  لینک کنید:
gcc source.c -lm
ممنونم دوست عزیز با این دستور درست شد.با تشکر :)