C언어 소스 분석(플로차트 및 수행 순서) 좀 부탁합니다.

redfoxkiller의 이미지

#include
#include
#include
#include
#include
#include

int sum;

main()
{

int i,x,n,*ptr1,*ptr2,lock,unlocked;
int nproc.id.temp.process-fork();
char *sshared();
scanf("%d %d", &x,&n);
sum=0;
temp=1;
ptr1=(int *)sshared(4,&sum);
ptr2=(int *)sshared(4,&lock);
nproc=n+1;
spin=lock-init(ptr2,&unlocked);
id=process-for(&nproc);
if(id!=0)
for(i=1; i<=id; i++)
temp=temp*x;
else temp=1;
printf("\n\n\n ID NUMBER : %2d PARTIAL RESULT : %7d\n",id,temp);
spin-lock(ptr2);
printf(" ID NUMBER : %2d PARTIAL SUM : %7d\n",id,*ptr1);
spin-lock(ptr2);
process-join(&nproc,&id);
cleanup-memory(&sum);
cleanup-memory(&lock);
printf("\n\n\n n n-1 n-2 2\n");
printf(" F(X) = X + X +X +...+X +X +1\n\n\n");
printf("\n\n\n **** THE RESULT ****\n\n");
printf(" X = %d n = %d\n\n",x,n);
printf(" f(x) = %d\n",*ptr1");
}

int process-fork(cproc)
int *nproc;
{
int j;
for(j=1; j<=(*nproc)-1; j++)
if(fork()==0)
return(j);
return(0);
}

process-join(nproc,id)
int *nproc, *id;
{
int i;
if(*id==0)
for(i=1; i<=(*nproc)-1; i++)
wait(0);
else exit(0);
}
char *sshared(size,shmid)
int size,*shmid;
{
char *shmat(), *ptr;
*shmid=shmget(IPC_PRIVATE,size,0666|IPC_CHEAT);
ptr=shmat(*shmid,0,0);
return(ptr);
}

cleanup-memory(shmid)
int *shmid
{
struct shmid_ds *buf;
shmctl(*shmid,IPC_RMID,buf);
}

spin-lock(lok)
int *lok;
{
struct sembuf operation;
operation.sem-sum=0;
operation.sem-op=(-1);
operation.sem-flg=0;
semop(*lok,operations,1);
}

spin-unlock(lok)
int *lok;
{
struct sembuf operation;
operation.sem-sum=0;
operation.sem-op=1;
operation.sem-sum-flg=0;
semop(*lok,operations,1);
}

다항식 계산하는거 같은데 이걸 플로 차트로 만든다면 어떤 게 해야 하나요? 그러니깐 이 프로그램이 어떻게 돌아가는지를 알고 싶습니다.

snowall의 이미지

뭐하는 소스인가요?

아무 목적없이 일단 분석이 필요하신 건지...?

--------------------------
snowall의 블로그입니다.
http://snowall.tistory.com

피할 수 있을때 즐겨라! http://melotopia.net/b

madman93의 이미지

---------------------------------------------
svn + trac + my project --> success ???
---------------------------------------------

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------

qubick의 이미지

완(전)소(용없는)녀

호출하는 함수 구현부가 몇 개 없는 것 빼고는
특별히 어려운 코드도 없고만 별것도 아닌 걸 주석이나 달아달라는 말씀이신건지;;;;;

완(전)소(용없는)녀

whitelazy의 이미지

남잔지 여잔지 모르니
완(전)소(용없는)녀(석) 이 될지도?? 아닌가.. =33

qubick의 이미지

완(전)소(용없는)녀

공대생 중에 남,녀가 어디있으며 개발자 중에 남,녀가 어디있겠습니까.
염색체는 XX인 것 같고 이력서에도 M보다는 F에 항상 동그라미를 치지만 저는 그냥 공대생일 따름입니다

근데 완(전)소(용없는)녀(석)이 어감이 더 좋은데요 으흐흐

완(전)소(용없는)녀

bluelenz의 이미지

아무래도 과제를 해 달라는 거겠죠

검색해서 소스는 찾았는데 주석이 없어서 달아야겠다 정도?

오호라의 이미지

얻어걸리길 바라는 건지...

너무 뜬금없는 부탁인듯...

Hello World.

snowall의 이미지

아무튼...

플로 차트로 만들고 싶으시면 main()의 첫 줄부터 하나씩 해석하면서 뭔 명령을 수행하는지 보면 되겠죠.
뜬금없는 함수가 나오면 밑에 구현된 데서 찾아서 해석하고 오면 됩니다.

--------------------------
snowall의 블로그입니다.
http://snowall.tistory.com

피할 수 있을때 즐겨라! http://melotopia.net/b

redfoxkiller의 이미지

답변 잘~~~~~~~~~~~~들었습니다.
모두들 감~~~~~~~~~~~~~~~사합니다. ^^
땡큐

imyejin의 이미지

http://www.gnu.org/software/cflow/

OK?

임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

shockyhan의 이미지

얼핏 보기에 병렬처리를 구현한 것 같습니다.

플로우 차트로 파악하긴 힘들겠네요.
===========================================================================
Shocky Han
BIM Consultant, Certified Information Systems Auditor
Seoul, Korea.
===========================================================================

===========================================================================
Shocky Han
BIM Consultant, Certified Information Systems Auditor
Seoul, Korea.
===========================================================================

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.