PDA

View Full Version : سوال: چطور می تونم یه خونه از آرایه ای از یک کلاس رو حذف کنم؟



vasilopita
یک شنبه 28 آذر 1389, 16:44 عصر
چطور می تونم یه خونه از آرایه از کلاس ها رو حذف کنم؟ من این کار رو با تابع delete_student سعی کردم انجام بدم. ولی به این طریق خونه ی آرایه بکلی خذف نمی شه؟ مثل رشته ها هم نمیشه از strcpy استفاده کرد. لطفا راهنمایی بفرمایید:
#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;
class student_info
{
public:
char name[10],family[20];
long int id;
float avg;
void get_info(int i)
{
cout<<"\n"<<i+1<<"::\n";
cout<<"Name >>> ";
cin>>name;
cout<<"Family >>> ";
cin>>family;
cout<<"ID >>> ";
cin>>id;
cout<<"Averege >>> ";
cin>>avg;
cout<<".................................................. ........";
}
};
void find_max(student_info *,int );
void search(student_info *,int);
void print_all(student_info *,int);
void delete_student(student_info*,int);
void main()
{
cout<<"Please Enter number of student ... \n";
int number =0;
cin>>number;
student_info *stu;
stu=new student_info[number];
for(int i=0;i<number;i++)
{
//cout<<"\a";
stu[i].get_info(i);
}
//find maximum averege
find_max(stu,number);
//serch a student
search(stu,number);
//delete a student
delete_student(stu,number);
//print all student
print_all(stu,number);
}
void find_max(student_info *stu,int number)
{
float max=0;
int j;
for(int i=0;i<number;i++)
{

if(stu[i].avg > max)
{
max=stu[i].avg;
j=i;
}
}
cout<<"\a\a\n\t\t The best Student is: \n";
cout<<stu[j].name;
cout<<" "<<stu[j].family<<"\n";
cout<<"ID :"<<stu[j].id<<"\n";
cout<<"Averege :"<<stu[j].avg<<"\n\n";
}
void search(student_info *stu,int number)
{
int flag=0;
int i;
long int ID;
cout<<"\n\aPlease Enter The student ID To Search...\n";
cin>>ID;
for(i=0;i<number;i++)
{
if(ID==stu[i].id)
{

flag=1;
break;
}
}
if(flag==1)
{
cout<<" The Studen Has found... \n";
cout<<stu[i].name<<" "<<stu[i].family<<endl;
cout<<"averege: "<<stu[i].avg<<endl;
cout<<"ID :"<<stu[i].id<<"\n";
}
else
{
cout<<"THE STUDENT HAS NOT FOUND...\n";
}
}
void print_all(student_info *stu,int number)
{
cout<<" ++++++++++++++++++++++STUDENT LIST++++++++++++++++++++++++++++++++ \n";
for(int i=0;i<number;i++)
{
cout<<"************************************************** ***********************\n";
cout<<stu[i].name<<" "<<stu[i].family<<" "<<"Averege: "<<stu[i].avg<<" "<<"ID: "<<stu[i].id<<"\n";
}

}
void delete_student(student_info *stu,int number)
{
int ID;
int i;
bool flag=0;
cout<<"Please Enter The Student ID To Delete... \n";
cin>>ID;
for(i=0;i<number;i++)
{
if(ID==stu[i].id)
{
flag=1;
ID=i;
break;
}
}
if(flag==0)
{
cout<<"\nThis Id is not valid ....";
}
else
{
//stu[ID].name[10]=NULL;
delete stu[ID];
//stu[ID].avg='\0';
//stu[ID].id='\0';
}
}

vasilopita
پنج شنبه 02 دی 1389, 17:01 عصر
یعنی هیچ کس هیچی نمی دونه ؟

Pouri_sb
پنج شنبه 02 دی 1389, 18:15 عصر
باید آرایت رو شیفت به چپ بدی با استفاده از یه حلقه به تعداد رکوردات از اون رکوردی که می خوای حذف کنی مقادیره تمامیه فیلدها رو تو خونه قبلی کپی کنی در آخرم از تعداد رکوردات یه واحد کم کنی، با معلوماته فعلیت راحتترین راه همینه. کار بافایل رو که بلد نیستین؟