메모리공간을 동적으로 사용하여 데이터 관리하기

프로그램 실행 순서

  1. 입력할 정수의 개수를 사용자로부터 입력 받는다.
  2. 입력받은 정수의 개수만큼 정수를 입력받는다.
  3. 입력받은 정수의 합과 평균 값을 출력한다.
  4. 할당된 메모리공간을 비운다.

요구사항

  1. 메모리공간은 사용자의 입력 수의 따라 변동된다.
  2. 사용한 공간은 마지막에 비워야 한다.
  3. 배열을 사용하면 안된다.
list
너무 쉬워요. n = input ("Number of Integer? ") n_list = input ("Write Number(s): ").split(' ') sum = 0 for i in n_list: sum += int(i) avg = sum/int(n) print ("SUM: %d" %sum) print ("AVG: %d" %avg) del n_list - 마포네로, 2015/05/14 17:54 M D
+1 int(i) 구문이 배열 구조를 사용한거 아닌가요?? 제가 파이선은 잘 몰라서요...ㅠㅠ - JS.LIM, 2015/05/15 10:43 M D
이건 배열이 아니라 반복문입니다. - SungWook Jung, 2017/04/24 14:48 M D
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

32개의 풀이가 있습니다. 1 / 4 Page

 1 #include <iostream>
  2 #include <cstring>
  3 using namespace std;
  4 
  5 int main()
  6 {
  7     int *a;
  8     a = new int;
  9     cout << "메모리양을 정하시오. : ";
 10     cin >> *a;
 11     cout << endl << endl;
 12     
 13     int *num;
 14     num = new int(*a);
 15     cout << "입력받을 정수의 개수를 정하시오: ";
 16     cin >> *num;
 17     
 18     int *count;
 19     count = new int(*a);
 20     
 21     int *total;
 22     total = new int(*a);
 23     
 24     for (int i=0;i<*num;i++){
 25         cout << i+1 << " 번째 숫자 입력 : ";
 26         cin >> *count; 
 27         *total += *count;
 28     }
 29     cout << "입력된 정수의 합은 : " << *total - *a << endl;
 30     cout << "입력된 정수의 평균은 : " << double(*total - *a) / double(*num) << endl;
 31     
 32     delete a;
 33     delete num;
 34     delete count;
 35     delete total;
 36 }   

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
#메모리공간을 동적으로 사용하여 데이터 관리하기

갯수 = int(input("입력할 정수 갯수를 적으세요 > "))
sum = 0
for i in range(갯수):
    j = int(input(str(i)+"번정수 > "))
    sum += j
avg = sum/int(갯수)
print("sum =",sum)
print("avg =",avg)
del sum, avg, 갯수
간단한 풀이 감사합니다! - 님드락, 2016/11/24 11:18 M D
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
#include<stdio.h>
#include<stdlib.h>

int main(){
  int *data;
  int t;
  float average;
  printf("입력 할 계수 : ");
  scanf("%d",&t);
  data = (int *)malloc(sizeof(int)*t);
  int i;
  for(i = 0;i<t;i++){
    printf("%d번째 입력 : ", i+1);
    scanf("%d",data+i);
  }
  average = sum(data,t)/t;

  printf("평균은 %f.\n",average);
  free(data);
}

int sum(int *data,int t){
  int sdata;
  int i;
  for(i=0;i<t;i++)
    sdata += *(data+i);
  return sdata;
}

c의 동적 활당으로 메모리를 활당받고 정수 값 받고 평균을 구했습니다. 배열을 쓰지 않고 포인터를 사용했습니다.

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
void exce85()
{
    int *n;
    int *input,*sum;

    n = new int();
    input = new int();
    sum = new int();

    *sum = 0;

    scanf_s("%d", n);

    for (int i = 0; i < (*n); i++)
    {
        scanf_s("%d", input);
        (*sum) += (*input);
    }

    printf("합 : %d , 평균 : %f", *sum, ((float)(*sum )/ (*n)));

    free(n);
    free(input);
    free(sum);
}
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
#include <stdio.h>
#include <malloc.h>
int main(void)
{
    int num;
    int *input;
    int total = 0;
    printf("입력할 정수의 개수 : ");
    scanf("%d",&num);
    input = (int *)malloc(num * sizeof(int));
    for(int i=0;i<num;i++)
    {
        printf("%d번째 정수를 입력하세요 : ",i+1);
        scanf("%d",(input+i));
    }
    for(int i=0;i<num;i++)
    {
        total += *(input + i);
    }
    printf("정수 합 : %d , 평균 값 : %d\n",total,(total/num));
    free(input);

    return 0;

}

C입니다

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
#include "stdafx.h"
#include "stdlib.h"

int _tmain(int argc, _TCHAR* argv[])
{
    int numof_int;int input;
    float sumof_input=0; 
    float average; 
    printf("입력할 정수의 갯수를 입력하세요 :"); 
    scanf("%d",&numof_int); 
    int* p_input=(int*)malloc(sizeof(int)*numof_int); 

    for(int i=0;i<numof_int;i++){
        printf("정수를 입력하세요:\n");
        scanf("%d",p_input+i); 
        sumof_input+=*(p_input+i); 
    }
    average=sumof_input/numof_int;
    printf("입력한 값의 합:%lf \n",sumof_input); 
    printf("입력한 값의 평균:%lf \n",average);

    free(p_input); 
    return 0;   
    }

예상치 못한 형 변환때메 이것저것 공부했네요~ int형/int형 이렇게 나누면 소수점자리가 짤린다는 ㅠ 둘중 하나는 float로 해야 소수점자리가 나오네요. 언어는 C입니다

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
/*프로그램 실행 순서

입력할 정수의 개수를 사용자로부터 입력 받는다.
입력받은 정수의 개수만큼 정수를 입력받는다.
입력받은 정수의 합과 평균 값을 출력한다.
할당된 메모리공간을 비운다.
요구사항

메모리공간은 사용자의 입력 수의 따라 변동된다.
사용한 공간은 마지막에 비워야 한다.
배열을 사용하면 안된다.
*/


#include<iostream>
using namespace std;

//1.입력할정수의 갯수를 입력받는다
//2.입력받은 정수의 갯수만큼,동적할당하여 공간을 잡아준다
//3.평균값과, 합을 출력한다
//4.출력함과동시에 할당된 메모링공간을 동적할당해제한다.




int Sum(int*space, int length)
//주소값과 길이를 할당받아서 합을구함
{
    int tmp = 0;
    tmp = 0;

    for (int i = 0; i < length; i++)
    {
        tmp = tmp + space[i];
    }

    int Sum = tmp;

    return Sum;
}



void main()
{


    cout << "입력할 숫자의 갯수를 입력하시오:=";
    int number_of_input = 0;
    cin >> number_of_input;

    int *space = new int[number_of_input];//필요한공간만큼 동적할당을 이용,용량 할당할때 () 아니고 [ ] 임 

    cout << endl << endl << "입력갯수만큼 숫자를 입력하시요=";

    for (int i = 0; i < number_of_input; i++)
    {
        cin >> space[i];
    }
    cout << endl << "입력받은숫자는 ";

    for (int i = 0; i < number_of_input; i++)
    {
         cout<<"  "<<space[i];
    }

    float average = 0.0;
    average = (float)Sum(space, number_of_input) / number_of_input;

    cout <<endl<< "입력받은 숫자의 합은=" << Sum(space, number_of_input)<<endl;
    cout << endl << "입력받은 숫자의 평균은은=" <<average<< endl;

    delete(space);
    //동적할당 해제 
    int i = 0;
    cin >> i;

}


※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
num_of_n = int(input("입력할 정수 개수: "))

Sum = 0
for x in range(num_of_n):
    Sum += int(input("Enter num%d: " % (x+1)))

print("Sum: %d" % Sum)
print("Avg:  %.2f" % (Sum / num_of_n))

del num_of_n, Sum, x

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

num_of_n = int(input("입력할 정수 개수: "))

Sum = 0 for x in range(num_of_n): Sum += int(input("Enter num%d: " % (x+1)))

print("Sum: %d" % Sum) print("Avg: %.2f" % (Sum / num_of_n))

del num_of_n, Sum, x

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

문제의 뜻이 배열을 쓰지 않되, 입력값을 모두 메모리에 저장해서 합과 평균을 구하라는 것으로 이해했습니다.

엄하게 파이썬으로 링크드리스트를 구현했네요..

class N():
    def __init__(self):
        self.next = None
        self.n = 0
n_of_i = input('number of integers :')
print ('input itegers:')
L = N()
cur = L
for i in range(n_of_i):
    p = input()
    cur.n = p
    cur.next = N()
    cur = cur.next
sum = 0
cur = L
while 1:
    sum += cur.n
    if not cur.next : break
    cur = cur.next
del(L)
print 'sum ',sum
print 'average ',float(sum)/n_of_i
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

풀이 작성

※ 풀이작성 안내
  • 본문에 코드를 삽입할 경우 에디터 우측 상단의 "코드삽입" 버튼을 이용 해 주세요.
  • 마크다운 문법으로 본문을 작성 해 주세요.
  • 풀이를 읽는 사람들을 위하여 풀이에 대한 설명도 부탁드려요. (아이디어나 사용한 알고리즘 또는 참고한 자료등)
  • 작성한 풀이는 다른 사람(빨간띠 이상)에 의해서 내용이 개선될 수 있습니다.
목록으로
코딩도장

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.

list x 1

언어별 풀이 현황
전 체 x 32
cpp x 9
python x 16
기 타 x 3
java x 4