|
요번에 제가 궁금한건 배열에 관한 것입니다.
문제의 정석에서는 분명 배열을 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';
}
|