#include <iostream>
using namespace std;
struct student{
char name[20];
int year;
float GPA; //학점
};
int max(int array[], int *size);
float max(float array[], int *size);
struct student max(struct student *s, int *size);
void print(int array[], int *size, int index1);
void print(float array[], int *size, float index2);
void print(struct student *s, int *size, struct student index3);
int main()
{
int i=1, select;
int size1,size2,size3;
int *array1=NULL,index1;
float *array2=NULL,index2;
struct student S,index3;
do{
cout<<"원하시는 메뉴를 입력하세요."<<endl;
cout<<"1. 데이터 입력"<<endl;
cout<<"2. max 출력"<<endl;
cout<<"3. 종료"<<endl;
cin>>select;
switch(select)
{
case 1:index1=max(array1,&size1);index2=max(array2,&size2);index3=max(&S,&size3); break;
case 2:print(array1,&size1,index1);print(array2,&size2,index2);print(&S,&size3,index3); break;
case 3:i=0; break;
}
}while(i);
return 0;
}
int max(int array[], int *size)
{
int i,index=0;
cout<<"입력하실 수의 개수를 입력하세요"<<endl;
cin>>*size;
array=(int *)malloc(sizeof(int)*(*size));
cout<<"수를 입력해주세요"<<endl;
for(i=0;i<(*size);i++)
cin>>array[i];
for(i=1;i<(*size);i++)
{
if(array[i]>array[index])
index=i;
}
return array[index];
}
void print(int array[], int *size, int index1)
{
int i;
for(i=0;i<(*size);i++)
{
cout<<array[i]<<" ";
}
cout<<": "<<index1<<endl;
}
함수 max에서 입력을 받고 그 수 중에서 최대값을 리턴한 후 함수 print에서 출력하는 프로그램인데 함수 오버로딩을 응용하려하거든
그런데 max에서 입력을 받은 후에 max함수를 빠져나오고 main함수에 돌아오면 저장했었던 배열의
값이 출력이 안된다... 포인터를 썻는데 왜 이런문제가 발생하는지 모르겠음
댓글 0