1~50자리 사이 매우 큰 수 2개를 입력받아서 그 합을 출력하는 프로그램인데
제약조건으로 전역변수, 정적배열 사용 불가
Input으로 자릿수 2개랑 그 자릿수에 맞는 자연수 2개 입력
예시
Input:
3 5
123
12345
Output:
12468
별의 별 자료들 다 뒤져봤지만 여기서 막혀서 못 넘어가겠음; 배열 쓰면 간단할 것 같은데
오류가 나거나 컴파일이 안 되거나 값이 이상하게 나오거나 셋 중 하나임
아래는 짜다가 포기한 코드
--
#include <stdio.h>
#include <stdlib.h>
void main() {
char *A = NULL;
char *B = NULL;
int* C = NULL;
int p, q, r;
int *P = NULL;
int *Q = NULL;
int R;
int sum = 0;
int carry = 0;
scanf("%d %d", &p, &q);
r = (p > q) ? p : q;
R = (p > q) ? q : p;
A = (char*)calloc(10, p + 1);
B = (char*)calloc(10, q + 1);
C = (int *)malloc(sizeof(int)*(r + 1));
P = (int *)malloc(sizeof(int)*p);
Q = (int *)malloc(sizeof(int)*q);
scanf("%s", A);
scanf("%s", B);
for (int i = 0; i < p; i++) {
P[p - 1 - i] = A[i] - 48;
}
for (int i = 0; i < q; i++) {
Q[q - 1 - i] = B[i] - 48;
}
for (int i = 0; i < r; i++) {
sum = P[i] + Q[i] + carry;
carry = sum / 10;
C[i] = sum % 10;
}
if (carry) {
C[r] = carry;
}
for (int i = 0; i <= r; i++) {
printf("%d", C[r - i]);
}
}
어디가 잘못된 거임?
왜 나한텐 안달아주냐 - dc Cpp
검색 중이었음 ㅈㅅ
빅인티저 검색 - dc Cpp
빅 인티저인 것 까지는 알아냈는데 동적 할당에서 문제 생겨서 못 넘어가는 중임
하면 정적배열로는 구현할 수 있다 이말이제? 일단 정적배열로 해보고 나머지 로직 문제없으면 동적할당 해보든가. - dc Cpp
구체적으로는 문자열 받고 자릿수 변환하는 과정에서 메모리가 꼬였는지 뭔가가 씌였는지 몰라도 값이 이상하게 나옴
ㅇㅋ ㄱㅅㄱㅅ
bigint
ㄱㅅㄱㅅ
big int 사용하지 않고 캐릭터 배열로 아스키 코드 이용한 구현도 가능함