c++ 초보 프로그래머 입니다. 질문 있어요

프로그래밍할려고 하는데 막히는 부분이 있어서 질문드립니다.
이해하기 쉽게 문제를 보여드릴게요.

 주의 사항 : STL 사용 금지
 표준 입출력 사용을 권장 (C 는 scanf / printf, C++ 은 cin / cout
문제
정수를 저장하는 단일 링크드 리스트를 생성하고, 다음의 명령어들을 처리하는 프로그램을 작성하시오.
명령어는 다음과 같이 총 4가지이다.
 addFront X: 정수 X를 리스트의 가장 앞에 삽입. 단 , 1 ≤ X ≤ 1 0 0, 000)
 removeFront: 리스트에서 가장 앞에 있는 정수를 삭제하고, 삭제된 수를 출력. 만약 리스트가 비어 있는 경우, -1을 출력.
 front: 리스트의 가장 앞에 저장된 정수를 출력. 만약 리스트가 비어 있는 경우, -1을 출력.
 empty: 리스트가 비어 있으면 1, 비어 있지 않으면 0을 출력.
입력
첫번째 줄에 명령어의 수 N (1 ≤ N ≤ 1 0 0, 000) 이 주어진다 두 번째 줄부터 N 개의 줄에는 명령어가 하
나씩 주어진다
출력
출력해야 하는 명령어가 주어질 때마다 그 결과를 한 줄씩 출력한다
예 addFront 10 을 입력하면 가장 앞에 10이 삽입 되고 10을 출력하는식

STL을 사용하지 말라고 하는데 검색해보니 표준 템플린 라이브러리라고 하더라고요.
막히는 부분이 addFront 10을 입력하는데 이부분에서 10이 문자열인데 정수로 바꿔야 하잖아요
문자열을 정수로 바꾸는 함수가 atoi라고 있는데 이 함수가 STL에 포함되는 건가요?
이 함수를 사용하지 않고 문자열을 정수로 바꾸는 방법이 있나요?
또 1부터 10000까지의 수를 입력해서 그 수만큼의 명령어를 입력하도록 하라는데
저 범위 외 숫자를 입력했을때 예외 처리를 어떤식으로 해야하는 건가요?
if else 문을 사용하면 else부분에 어떤식으로 입력하면 되나요?
진짜 초보적인 질문 죄송합니다.

각 char형 숫자에서 '0’을 빼게되면 숫자가 됩니다

안녕하세요 작성자님.

좀 더 자세히 찾아 보시려면 아스키코드를 찾아보세요.
컴퓨터가 문자를 표현하는 방식을 이해하셔야 할 것 같아요.

char형 숫자에서 '0’을 뺴면 숫자가 되는것 이해 했습니다.
근데 범위가 1부터 100000까지 인데 각 char형 숫자를 숫자로 바꿔서
다시 자릿수를 곱해서 숫자를 계산하면 되는건가요?

네 그렇습니다.

문자열 처음부터 끝까지 탐색하면서, 0-9인지 확인하고
이를 자릿수를 맞추어 숫자로 바꾸면 됩니다.

예) “123”
(“1” -> 1)
1 * 10 + (“2” -> 2)
12 * 10 + (“3” -> 3)
123

그런데 제 생각엔 atoi는 STL 함수가 아니니 사용하셔도 될것같습니다.
STL을 사용하지 말라는 것은 링크드리스트를 직접 구현하라고 하기 위해서인것 같습니다.

STL… 표준 C++ 라이브러리…

그냥 정수로 입력받으면 안됩니까? :thinking:

하긴 범위를 보면 그냥 숫자로 입력받아도 되겠네요.

정수로 따로 입력받는 방법도 있네요
진짜 바보였네요 답변 감사합니다.

1 Like

ㅎㅎㅎ 저는 문자로 입력해야하는 조건이 있는줄 알았네요
화이팅하세여 ^^