본문 바로가기
C

동적 메모리 할당

by KWONE 2024. 6. 21.

배열의 크기를 변수로 입력받아 사용하고 싶을때마다 컴파일러 설정을 바꿔주는것이 귀찮다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main() {
    int N;
    scanf("%d", &N);

    // 동적 메모리 할당
    int* a = (int*)malloc(N * sizeof(int));
    float* b = (float*)malloc(N * sizeof(float));

    // 메모리 할당 실패 시 처리
    if (a == NULL || b == NULL) {
        printf("메모리 할당 실패\n");
        return 1;
    }

    int M = 0;  // 초기화를 0으로 수정
    float sum = 0;

    for (int i = 0; i < N; i++) {
        scanf("%d", &a[i]);
    }

    // 최대값 계산
    for (int i = 0; i < N; i++) {
        if (a[i] >= M) {
            M = a[i];
        }
    }

    // b 배열 계산
    for (int i = 0; i < N; i++) {
        b[i] =((float)a[i] * 100) / M; 
    }

    // 합계 계산
    for (int i = 0; i < N; i++) {
        sum += b[i];
    }

    printf("%f\n",(sum / N));

    // 동적 메모리 해제
    free(a);
    free(b);

    return 0;
}

'C' 카테고리의 다른 글

문자열 기본 개념 및 활용  (0) 2024.06.24
날짜 구현  (0) 2024.06.23
백준 10818번 최대,최소 문제에서의 VLA와 동적할당 이슈  (1) 2024.06.20
포인터 연습 예제2  (0) 2024.06.04
포인터 연습 예제1  (0) 2024.06.03