[급질]배열 포인터를 이용한 교,차,합 집합 구하는 소스입니다.
키클
질문 제목 : 배열과 포인터에 관한 질문입니다.
아래 소스에서 메인문에 배열 b가있습니다.
근데 배열 b에 자료가 7개이므로 배열의 크기도 7로해주면
마지막 공간에는 자료값이 입력이 안되어 있으므로 0이 들어가야 하는거 아닌가요??
분명 배열 b의 공간인데 자꾸 배열 a의 첫번째 값이 들어가지네요..ㅠㅠ
그래서 배열의 크기를 8로 하니까 7번째에 0이들어가지네요.
빠른답변 부탁드립니다.
질문 내용 :
#include stdio.h
void cross_prt(int *aa, int *bb, int *cc);//교집합 출력부
void differ_prt(int *aa, int *cc, int *dd);//차집합 출력부
void total_prt(int *bb, int *dd, int *ee);//합집합 출력부
int cross(int *aa, int *bb);//교집합 연산부
int differ(int *aa, int *bb);//차집합 연산부
int total(int *bb, int *dd );//합집합 연산부
int i=0;
/*******************************************************************************/
//main함수
int main()
{
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int b[8] = {2, 4, 6, 8, 10, 12, 14};
int c[20];//교집합값 저장
int d[20];//차집합값 저장
int e[20];//합집합값 저장
int *aa = a;
int *bb = b;
int *cc = c;
int *dd = d;
int *ee = e;
cross_prt(aa, bb, cc);
differ_prt(aa, cc, dd);
total_prt(bb, dd, ee);
//printf(%p %p, aa, b+8);
return 0;
}
/*******************************************************************************/
//교집합(출력부)
void cross_prt(int *aa, int *bb, int *cc)
{
for(i=0; i=9; i++)//배열 c에 입력
{
*(cc+i)=cross(aa+i, bb);
}printf(**a와 b의 교집합**\n);//출력
for(i=0; i=9; i++)
{
if(*(cc+i)!=0)
{
printf(%d , *(cc+i));
}
}
printf(\n\n);
}
////////////////////////////////////////////////////////
//차집합(출력부)
void differ_prt(int *aa, int *cc, int *dd)
{
for(i=0; i=9; i++)//배열 d에 입력
{
*(dd+i)=differ(aa+i, cc);
}
printf(**a와 b의 차집합**\n);//출력
for(i=0; i=9; i++)
{
if(*(dd+i)!=0)
{
printf(%d , *(dd+i));
}
}
printf(\n\n);
}
////////////////////////////////////////////////////////
//합집합(출력부)
void total_prt(int *bb, int *dd, int *ee)
{
int j=0, k=0;
for(i=0; i=6; i++)//배열 e에 입력
{
*(ee+i)=total(bb+i, dd);
}
for(i=0; i=10; i++)
{
*(ee+(7+i))=total(bb+7, dd+i);
}
printf(**a와 b의 합집합**\n);//오름차순 정렬
for(i=0; i=16; i++)
{
for(j=i+1; j=16; j++)
{
if(*(ee+i) *(ee+j))
{
k=*(ee+i);
*(ee+i)=*(ee+j);
*(ee+j)=k;
}
}
}for(i=0; i=16; i++)//출력
{
if(*(ee+i)!=0)
{
printf(%d , *(ee+i));
}
}
printf(\n\n);
}
/*******************************************************************************/
//교집합(연산부)
int cross(int *aa, int *bb)
{
int j;
for(j=0; j7; j++)
{
if(*aa == *(bb+j)) break;
}
return *(bb+j);
}
//////////////////////////////////////////////////
//차집합(연산부)
int differ(int *aa, int *cc)
{
int j;
for(j=0; j10; j++)
{
if(*aa == *(cc+j))
{
return 0;
}
}
return *aa;
}
//////////////////////////////////////////////////
//합집합(연산부)
int total(int *bb, int*dd)
{
if(*bb!=0)
{
return *bb;
}
return *dd;
}
-
중독된
아~그동안 제가 너무 기본적인걸 착각하고 있었네요..ㅋㅋ
감사합니다...ㅋㅋ -
대나무
배열 b에 자료가 7개이므로 배열의 크기도 7로해주면
마지막 공간에는 자료값이 입력이 안되어 있으므로 0이 들어가야 하는거 아닌가요??
-- 배열크기 7, 자료가 7개면 소위 남는공간이 없죠..
분명 배열 b의 공간인데 자꾸 배열 a의 첫번쨰 값이 들어가지네요..ㅠㅠ
그래서 배열의 크기를 8로 하니까 7번째에 0이 들어가지네요.
-- 배열의 인덱스값은 7번째 = 인덱스 6 이죠 ^^ ..
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2697401 | 열혈강의 문제오류 (1) | 꿈 | 2025-06-07 |
2697374 | 기초적인 C언어 프로그래밍 입니다. | 얼 | 2025-06-07 |
2697341 | 좌우대칭 문제인데 Q가 입력되면 종료가 되야하는데 되지않습니다 | 무지개 | 2025-06-07 |
2697314 | fprintf와 fscanf 로 파일 입출력 할떄 | 밝음이 | 2025-06-06 |
2697293 | 툴 소스 뽑아내는법 | 도움 | 2025-06-06 |
2697264 | 소소한거 두어가지 질문할께요~ (8) | 별솔 | 2025-06-06 |
2697235 | scanf로 인풋 받을 때?! | 보담 | 2025-06-06 |
2697207 | 열혈강의 연습문제 질문이요~ (2) | 맥적다 | 2025-06-05 |
2697182 | strcmp, strtok - 어떤 기능을 하는지... | 루다 | 2025-06-05 |
2697129 | [질문] 아래 저축액을 계산하는 프로그램 ㅠ 추가 질문 (7) | 찬늘 | 2025-06-05 |
2697072 | 쌩초보 질문! (1) | 얀 | 2025-06-04 |
2697050 | 도움부탁드립니다.. | 화이트 | 2025-06-04 |
2697023 | gotoxy함수, 어떻게 사용하죠? (3) | 적송 | 2025-06-04 |
2696994 | c언어를 막 시작한 초보인데 질문이 있어용 ㅠㅠ (2) | 귀1여운렩 | 2025-06-03 |
2696944 | 윈도우 콘솔프로그램 질문드립니다 (2) | 꽃님이 | 2025-06-03 |
2696882 | c언어 입력받기 질문 입니다 (2) | 흰추위 | 2025-06-02 |
2696853 | 문자열은 정적메모리에 할당된다고 하는데 정적메모리가 뭡니까?? (6) | 다온 | 2025-06-02 |
2696799 | c c++언어입문전에 파이톤이나 자바스크립트배워두면.. (2) | 앨런 | 2025-06-02 |
2696747 | size of 연산자에 대해 질문이 있습니다. (3) | 유진공주 | 2025-06-01 |
2696721 | Char 타입의 2D array 기초에 대해 질문드립니다. | 벚꽃 | 2025-06-01 |