c++ 계산기 만드는 컴초보인데요....

YJbearman의 이미지

예를 들어 계산기 작업이 끝난뒤에 키보드 0 키를 누르면 계산기 작업을 다시 시작하려면 어떻게하나요?

익명 사용자의 이미지

어떻하긴요... 키보드 0 키를 누르면 계산기 작업을 다시 시작하게 하면 되죠

swish95의 이미지

(-.-)b

------------------------------------------------------------
ProgrammingHolic

YJbearman의 이미지

코드 말하는건데

익명 사용자의 이미지

코드에다가 키보드 0 키를 누르면 계산기 작업을 다시 시작하게 하면 되죠

YJbearman의 이미지

무시하셔도 돼는데 찾아봐도 안나와서요
코드를 정확히좀 알려주시면 안될까요?
지금 계산기 코드 보여드릴게요

#include

int main(void)
{
int val1;
std::cout<<"첫 번째 숫자입력: ";
std::cin>>val1;

int val2;
std::cout<<"두 번째 숫자입력: ";
std::cin>>val2;

int result=val1+val2;
std::cout<<"덧셈결과: "< return 0;
}

익명 사용자의 이미지

while 문에서 받고 0 값인지 체크하고 0 값이면 루플 처음으로 가면 되는데... 그런데 저렇게 하면 0 값을 덧셈할 때 사용을 못할텐데요

익명 사용자의 이미지

써놓고 보니 설명이 좀 이상하네요

익명 사용자의 이미지

아무튼 말이죠... loop 가 있어야 되고.. loop 탈출 조건이 있어야 합니다.

YJbearman의 이미지

탈출조건은 if문 사용하면 돼나요?

YJbearman의 이미지

계산끝나기 전에는 0값을 계산에 사용할수있게 하고
계산끝나고 나서부터 0을 다시 시작하는 키로 만들수는 없을까요?

익명 사용자의 이미지

사용자가 아무것도 안 누른다면? 뭔가 누를 때까지 기다리나요?

0 말고 다른 키를 누르면 무엇을 하나요?

YJbearman의 이미지

"이 키는 쓸수없습니다" 라는 말과 함께
다시 계산기 작업완료 화면으로 돌아가기
할겁니다

YJbearman의 이미지

아무키도 안 누르면 100초 정도 기다리고 나서
프로그램을 종료하고요

익명 사용자의 이미지

그러한 방식의 설계보다는, q 를 눌렀을 때 종료되도록 하는게 좋겠네요.
0 이라는 숫자(문자)보다는 s 를 누르면 처음으로 돌아가거나...(사실 이부분은 불필요합니다)
항시 2가지 숫자를 받도록 하고 while (TRUE) 해놓고,
scanf 로 받나요? 아무튼 그걸로 숫자(문자)를 받아서.. q 일 때 종료되도록 하면 됩니다.
'q' 라는 문자 코드가 있을거고, 아.. 그냥 문자로 받아서,
"q" 문자가 있으면 종료하고, atoi() 함수로 문자를 숫자로 바꿔주면 되겠네요.

익명 사용자의 이미지

그리고 위 코드는 숫자를 한번씩 받는데, 9 9 이렇게 입력하면 한번에 9와 9를 받을 수 있습니다.
9 + 9 이렇게 해서 연산자까지 받아서 + 연산을 시키거나 - 연산을 시키는 방법도 있겠죠.

익명 사용자의 이미지

공부하시라고 일부러 루비로 짰습니다. 님 원하시는게 스레드로 구현해야 합니다.
스레드로 안 하면 poll 이런걸로 입출력 다중화 기법을 이용해야 하고요.
c 초보자가 스레드/입출력다중화를 다루는 것은 무리가 따를 것 같네요.
타이머로 100초 체크하는것보다 q 눌렀을 때 바로 종료하는게 좋습니다.
h 누르면 설명 출력해주도록 하시는 게 좋겠습니다.

#!/usr/bin/ruby
 
require 'thread'
 
@exit = false
 
def timer_new
  timer = Thread.new {
    loop do
      exit if @exit
      @exit = true
      sleep 100
    end
  }
 
  return timer
end
 
loop do
  print "첫 번째 숫자입력: "
  val1 = STDIN.gets
  val1 = val1.to_i
 
  print "두 번째 숫자입력: "
  val2 = STDIN.gets
  val2 = val2.to_i
 
  result = val1 + val2
  puts "덧셈결과: " + result.to_s
 
  @timer = timer_new
 
  loop do
    if gets.chomp == "0"
      @timer.exit
      @exit = false
      break
    else
      @timer.exit
      @exit = false
      @timer = timer_new
      puts ("이 키는 쓸수없습니다.")
    end
  end
end
YJbearman의 이미지

그 코드로 한번 실행해보고
제 입맛대로 더 수정해보도록 하겟습니다

YJbearman의 이미지

루비 컴파일러 사용해서 하면 돼나요?

익명 사용자의 이미지

파일을 calc.rb 로 저장 후, 루비를 설치하시고

ruby calc.rb

하면 됩니다.
YJbearman의 이미지

감사합니다 ㅎㅎ

YJbearman의 이미지

루비 컴파일러를 압축 풀기하니까 폴더가 있는데
루비 파일 실행할때 컴파일이 안돼요

익명 사용자의 이미지

루비는 (컴파일러가 존재하기도 하지만요) 인터프리터 언어에요. 그렇게 말씀하시면 제가 초능력자도 아니고.... 어떻게 답변을 드려야할까요? ㅠㅠ

YJbearman의 이미지

제가 유튜브 찾아보도록 하겟습니다

Stephen Kyoungwon Kim@Google의 이미지

이렇게 낭비하는 시간이 공부 하는 시간 못지 않게 듭니다.

익명 사용자의 이미지

......

1. 좋은 C++언어 교본 하나 구해다가 조건문, 반복문 등등 차근차근 공부하는 게 정석적인 길입니다.

정석을 놔두고 쉬운 길을 찾으려다가 되려 더 어려운 길로 빠지게 되는 경우가 더러 있는데, 이 질문글의 경우도 바로 그런 경우가 아닌가 싶네요.

2. 질문자가 원하는 프로그램이 뭔가 굉장히 구체적인데, 그런 것 치고 이상한 방향으로 구체적이군요.

예컨대, 왜 하필 100초입니까? 그리고 0을 제외한 키는 왜 "사용이 불가능"하죠?

이런 종류의 요구 조건은 과제라고 봐도 이상하고, 개인적인 연습이라고 봐도 이상하고, 실용적인 목적이라고 봐도 이상합니다.

위 요구 조건이 프로그램을 공연히 복잡하게 만들고 있다는 걸 알아두셔야 됩니다. 프로그램이 사용자의 입력을 기다리면서 동시에 100초를 헤아리고 있게 만들기 위해서는 번거로운 방법을 동원해야 합니다. (여러 가지 방법이 있습니다.)

만약 이 요구조건이 과제의 일부로써 나온 문제라면, 출제자가 그 사실을 고려하고 출제를 한 것인지 의문이 드는데요.

YJbearman의 이미지

그냥 좋은책 하나 사서 공부하면서 하겟습니다

세벌의 이미지

0+1 계산하려고 0 눌렀는데 계산기 프로그램 끝나버리면 어쩌죠?
원하는 바가 무엇인지 잘 생각해보셔요.
어떻게 하느냐는 그 다음에 생각하시고요.

댓글 달기

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