|
전승호 님이 쓰신 글 :
:
: 요번에 제가 궁금한건 배열에 관한 것입니다.
: 문제의 정석에서는 분명 배열을 2차원 배열로 선언 해놓았
: 으나 for문등으로 제어를 할때는 이상하게 처음 배열첨자
: 만으로 제어를 하더군요.
: 즉 a[10][5]같이 선언 해놓구선
: for (i=1; i<=5; ++i) { a[i]=.....}
: 뭐 이런식으로 제어를 하더군요. 가능한건지요?
: 그리고 strcmp함수에는 배열만 가능한지요?
: 한번은 정석대로 길이가 선언된 배열을 넣었고 한번은 또
: 그냥단순 배열만 넣었습니다.
: 그랬더니 후자는 실행이 안되고 에러 메세지가 무지
: 길더군요.
: 두가지 질문좀 꼭 답해주세요.
: 그럼
:
:
:
: #include <iostream.h>
: #include <string.h>
: #include <process.h>
: void main()
: {
: const int M=10; // <-- 배열의 개수를 선언
: const int N=30; // <-- 배열의 길이를 선언
: char a[N][M],w[M]; // <---에서 그냥 a[N],W
: int i,n,j,s; //로만 선언 했을경우
: //입력
: cout << "n= "; cin >> n;
: for (i=0; i<n; ++i)
: {
: cout << "a[" << i << "]= ";
: cin >> a[i];
: }
:
: //소트
: for (s=n-2; s>=0; --s)
: {
: for (j=0; j<=s; ++j)
: {
: if (strcmp(a[j],a[j+1])>0)
: {
: strcpy(w,a[j]);
: strcpy(a[j],a[j+1]);
: strcpy(a[j+1],w);
: }
: // if (a[j]>a[j+1]) //<--위의 strcpy를 실행
: // { //시키면서 맨 위에서 요소인
: // w=a[j]; //a배열과 w를 길이 배열이 아
: // a[j]=a[j+1]; //닌 그냥 개수 배열로만 선언
: // a[j+1]=w; //하면 에러가 나더군요.
: // }
: }
: }
:
: //출력
: cout << "\n 정렬한 결과 \n";
: for (i=0; i<n; ++i)
: cout << "a[" << i << "]= " << a[i] << '\n';
: }
임펠리테리입니다.
C/C++에서 배열은 포인터라는 것과, 문자열은 char *라는 것을 아직 이해하지 못하신 것 같습니다. 이 두가지를 이해하셔야 보여주신 코드를 이해할 수 있을 거구요. 여기서 설명하기에는 너무 문법적인 기초개념이기 때문에 설명은 곤란하고, 제대로 된 C/C++문법서라면 어디에도 나오는 내용이므로 찾아서 보시기 바랍니다.
그럼 이만...
|