C++소스중 질문 사항입니다. 도와주세요 ..
나리
아래의 소스는 얼마 길지않은데 제가 궁금한점및 소스에 대해서 설명을 적어 봤습니다.
bool SetT::checkData(T value) 이 함수부분 이 실질적으로 질문하는 부분입니다.
쓰다보니 글이 길어졌는데.. 소스자체로만 보면 얼마 길지 않습니다.. 제 설명이 길어서 그렇지
읽어보시고 답변좀 해주시면 정말 감사하겠습니다^^..
정말 이것저것 해봤는데 머리로는 이해가 가도 소스작성을 못하겠네요.
궁금해서 이렇게까지 적어봤습니다 ..
//소스가 최적화 되어 있지 않기때문에 양해 부탁드리며 궁금한 부분을 위해 몇몇부분만
//소스를 추가하였음을 말씀드립니다.
template typename T
void SetT::Add(T value){
int te;
te = value;
if(checkData(te)){//chedkData의 값이 true 이면 아래를 행하라
data[count] = value;
count++;
}
else {
cout두개의 수는 같은 값입니다.endl;
cout다시 입력하세요:endl;
}//이함수는 넘어온 정수값을 checkData에 주어서 값이 true일때 data 배열에 값을 넣는 함수입니다.
}
template typename T
bool SetT::checkData(T value) //중요한건 이부분인데 아래의소스는 제가 임의로 이것저것
추가해서 작성했기때문에 안되네요..
{
int ju;
ju = value;
int ce= number; //여기의 넘버는 몇개의 값을 비교받을건지 그에 해당하는 숫자가 들어있습니다.
if(count==0) //count는 0으로 초기화 되어 있습니다. 여기서 비교하는 이유는 첫번째 받은 값은 비교할 대상이 없기때문에 true을 리턴해서 바로 값을 저장 할려고 썼습니다.
//그리고 만약 true을 리턴하면 위에서 add함수에 의해 값이 저장되고 count는 1씩 증가하게 됩니다.
return true;
else{ //이쪽부터가 너무 헷갈리는데 만약 count 가 1이라면 0번째배열에 값이 있으니 그것과 비교를
해서 값이 같지 않으면 true를 리턴해서 값을 추가하고 만약 값이 같으면 false 를 리턴해서 위의 문장
두개의 값이 같습니다를 출력하게 됩니다.
1번.여기서 가능하다면 다시 값을 받을수 있게하려면 어떻게 소스를 작성해야 하는지 위에서는 그저 출력문장이기 때문에 값을 다시 받을수 없습니다.
2번 아래의 for문에서 너무 답답해서 이렇게 질문을 올립니다.
밑의 for문은 0번째 배열에 들어온 값만 비교를 하고 리턴을 하게 됩니다. 결국 그말은
4개의 숫자를 입력받는다면
0번째 배열에 10
1번째 배열에 20
2번째 배열에 10 //두개의 수는 같은 값입니다 라고 출력
3번째 배열에 20 //이곳은 그냥 넘어가는 현상이 발상합니다.
이렇게 값을 넣었을 경우
결국 제가 원하는 소스는 넘어온 값 즉 10이라는 숫자가 왔다면 그걸 0번째 배열에서 3번째 배열까지
계속 비교를 하다가 없으면 true 값을 리턴하고 있다면 flase 를 리턴하거나 다시 값을 입력받게
했으면 하는 것입니다.
//아래의소스에서 제가 goto문 등 여러가지를 작업하다 결국 포기한소스라 처음 작성했던것으로 돌려놨습니다.그렇기때문에 사용되지 않는 변수가 있음을 말씀드립니다.
for(int i =0; icount; i++){ //count는 1부터 시작합니다 0일경우에는 위에서 바로 true를 리턴해서 값읗 넣기 때문에 count는 1씩 증가하게 됩니다.
if(data[i] != ju ){ if(data[i] != ju ){ //data[0]번째 값이 ju(넘어온 숫자값 즉,비교대상)과 같지 않으면 true값을 리턴해서 값을 배열에 넣고 아니면 false 값을 리턴해서 두개의 값이 같다고 출력
return true;
} //결국 이쪽이 문제인데 data[0]에서 값이 10이 들어있고 ju에 20이 들어있다면 data[1][2][3]은 비교도 하지 않고 return 을 해버리므로 결국 이 것을 실행했을경우 첫번째 배열에 들어있는 값만 비교를 하는 현상이 발생합니다.
else
return false;
}
}
}
int main(){
//메인에서는 몇개의 값을 비교할것인지 num값에 입력받습니다. num의 값만큼 값을 입력받아서 비교를 하게 됩니다.
Setint su;
int num;
int arr;
cout몇개의 값을 비교 하시겠습니까?:;
cinnum;
su.number = num;
cout당신은 num의 값을 입력하셨습니다.endl;
for(int i =0; inum; i++){
couti번째 값을 입력해주세요:;
cinarr;
su.Add(arr); //값을 추가 하기위하여 받은 값을 add함수의 인자로 주고 호출합니다.
}
return 0;
}
긴글 읽어 주시느라 정말 감사합니다 !!! 항상 행복하고 즐거운 일만 가득하시기를 바라겠습니다.
-
데빌의눈물
ㅎㅎ...!
-
늘다
앗 이거 해결 했어요! 에구 감사합니다^^ .
저 위에글에서 궁금한부분을 글로 설명하려니까 엄청길어졌었는데 막상 코드로 작성하니
얼마안되네요 ㅎ
신경써주셔서 감사합니다~!! -
이송이
모바일로 보니 격히 안읽히는군요
나중에 시험끝나고나면... 봐드릴께요