menu를 사용하는 구조에서 괸한 질문이요,

nidle의 이미지

아 그리고 다른 질문하나만 더하겠습니다.
만약 menu() 함수를 만들어서
main()
{
menu();
}
menu()
{ :
:
switch(x)
{ case 1:
add();
break;
case 2:
sub();
break;
:
:

add()
{ x=y+z;
menu();
}

대충 이런식으로 만든다면 처음 메뉴가 호출되고
거기서 1을 선택 해서 add()호출되고
그럼 다시 menu() 가또 호출이 될텐데
그럼 하나가 끝나면 어차피 계속끝나니까 상관없는데
이렇게 오래지속된다면 menu()라는 함수가
계속쌓이게 되나요?? 그리고 안좋은 일이 생길수가 있을까요,,,

이런 구조를 만들고 보니 괸한 걱정이 들어서요.

이전에 같이 질문한건데 제가 두가지를 물어봐서
이번에 질문을 따로 했습니다.^^

moonzoo의 이미지

제 생각에 얼핏 봐도 구조가 이상하네요 ^^

menu()에서 add()를 call하고 add()에서 다시 menu를 콜하는 구조는

구조적으로 문제가 있습니다. 제 생각엔 recursive의 문제점과 더불어

처리되지 않은 함수의 나머지 부분들이 계속 쌓이면서 논리적으로도

알아 보기 힘든 코드가 될것 같습니다.

소스의 내용을 정확히 알지 못하지만..

차라리 main()에서 while 루프등을 돌면서 menu()를 반복적으로 call하는

구조가 나아 보입니다.

세벌의 이미지

하고자 하는 것이 무엇입니까? 그 다음이 어떻게 하느냐 겠죠.
예를 들어 1부터 100까지 합을 구하려는 것이라든가.

우선 님께서 하고자 하는 게 무엇인지 정확히 말씀하시고 물어보셔야 원하는 답이 나올 듯.

nidle의 이미지

전에 간단한 슈퍼마켓 물품을 정리용 프로그램을 만드는데
삽입 ,삭제 ,출력 등으로 메뉴가 필요해서 이렇게 만들었는데
어는날 생각하니까 너무도 이상한 구조로 만들지않았나 싶어서
질문드렸습니다
어떤 프로그램이던지 메뉴가 필요한 프로그램이 있잔아요
다음에 만들때 참고 하려구,, ^^
위의 님처럼 차라리 while 문을로 호출하는게 더 낳은 방법같네요,,

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.