2012-10-06 4 views
0

나는 아직도 초보자이며, C++이다. 내가 찾고있는 이름을 모르겠다. 그러나 나는 많은 것을 찾고 있었지만 다음 질문에 대한 답을 찾지 못하고있다. 변수가 요구되는 프로그램을 작성하고 싶다. . 예 :변수를 자체적으로 선언하는 프로그램

int a; 
cin>>a; 

이제 경우 "a"는, 내가, 이름이 문제가 아니라 ...의 말을하지 않는 프로그램은 5 개 변수를 선언 할 N1, N2, N3 원하는 (또는 다른 번호) 5, n4, n5. array 및 for 루프를 사용해 보았지만 작동시키지 못했습니다. 나는 크로아티아어 포럼 (forum.hr)에 답을 가지고 있지만 포럼은 현재 오프라인 상태입니다, 그래서 그것은 사전에 대신 스택 들으 힙 사용에 대한했다 ... 그것을 밖으로 시도 할 시간이 없었다

+0

사용자가 정의한 번호입니까, 일정합니까? – user1708860

답변

1

당신에게 배열에 저장할 수 있습니다 :

int a; 
cin >> a; 

int *number = new int[a]; // allocate an array of size a 

for (int i = 0; i < a; i++) { 
    number[i] = 5 + i;  // set your numbers to anything here 
} 

delete[] number;    // otherwise you have memory leak 

또는 더 나은 사용을 vector :

vector<int> number(a); 

// iterate with a normal for loop 
for (int i = 0; i < number.size(); i++) { 
    number[i] = 5 + i; 
} 

.. 

// or use iterators 
for (vector<int>::iterator it = number.begin(); it != number.end(); ++it) { 
    cout << *it << endl; 
} 

그래서 당신은 메모리를 관리 할 필요가 없습니다.

+2

-1 이것은 내 마음이 피가 흘리는 그런 나쁜 C++ 코드입니다. C++에서'malloc'을 다시 사용하지 마십시오. 이 상황에서 수동 메모리 관리를 전혀 사용하지 마십시오. –

+0

죄송합니다. 처음에는 C 질문이라고 생각했습니다. 이제 포인터 캐스트를 수정했습니다. – none

+0

첫 번째 것은 GCC의 비표준 C++ 확장이며 다른 컴파일러에서는 작동하지 않습니다. 다른 두 가지 경우에는 메모리를 해제해야하며'malloc'의 경우'sizeof (int)'를 사용하지 말고'sizeof * number'를 사용하십시오 (유형의 반복을 제거함) –

1

이것이 C++ 인 경우 가장 좋은 방법은 std::vector을 사용하여 메모리를 관리하는 것입니다.

+1

+1 : 누가 * * 오는 것을 보지 못했습니까? – WhozCraig

2

C++ has container classes이 목적으로. 특히, 당신은 vector 원하는 :

std::vector<int> a(size); 
for (int i = 0; i < a.size(); ++i) 
    std::cin >> a[i]; 

어떤 크기의 정수의 벡터 a를 선언하고 그 요소 하나 하나를 읽습니다.

+0

벡터가 새로운 것입니다 ... 벡터의 요소를 변수로 사용할 수 있습니까? 추가 코드의 값에 대한 일부 수학 연산을 수행하려고합니다. 벡터를 사용하여이를 수행 할 수 있습니까? – Kula