ایجاد ارجاع به متغیر، با متغیر عددی
سلام دوستان عزيز يه سوال داشتم؛ ببينيد من مي خوام يه برنامه بنويسم به زبان سي
که براي ارجاع به متغير هاي متفاوت از يک سلسله متغير، از يه عدد داخل يه متغير استفاده کنم، خب همون طور که مي دونيد: ميشه اين کار رو با آرايه انجام داد،
int a;
char c=1,b=0;
char ch[2][3]={{c,d},{a,b}}; //create aray
a=ch[b][c] //d
اما مشکل آرايه اينه که فقط از يک نوع داده پشتيباني مي کنه،
ببينيد، مثلا من مي خوام يه ديتابيس داشته باشم، که براي هر عدد يک نام و براي هر نام چنتا مشخصه داشته باشم، اما مي خوام که بشه براي دسترسي به هر کدوم، تنها با يک متغير عددي و تغيير عدد داخل متغير به هر کدوم از زير مجموعه ها دسترسي داشته باشيم، ساختار و بعضي فرم هاي ديگه رو ديدم، اما بنظرم نميشه ارجاع با متغير عددي رو با ساختار و يا یونیون و... داشته باشيم، ممنون ميشم يه راه حل نشونم بدين.
يا علي
نقل قول: ایجاد ارجاع به متغیر، با متغیر عددی
نقل قول:
نوشته شده توسط
sina27
سلام دوستان عزيز يه سوال داشتم؛ ببينيد من مي خوام يه برنامه بنويسم به زبان سي
که براي ارجاع به متغير هاي متفاوت از يک سلسله متغير، از يه عدد داخل يه متغير استفاده کنم، خب همون طور که مي دونيد: ميشه اين کار رو با آرايه انجام داد،
int a;
char c=1,b=0;
char ch[2][3]={{c,d},{a,b}}; //create aray
a=ch[b][c] //d
اما مشکل آرايه اينه که فقط از يک نوع داده پشتيباني مي کنه،
ببينيد، مثلا من مي خوام يه ديتابيس داشته باشم، که براي هر عدد يک نام و براي هر نام چنتا مشخصه داشته باشم، اما مي خوام که بشه براي دسترسي به هر کدوم، تنها با يک متغير عددي و تغيير عدد داخل متغير به هر کدوم از زير مجموعه ها دسترسي داشته باشيم، ساختار و بعضي فرم هاي ديگه رو ديدم، اما بنظرم نميشه ارجاع با متغير عددي رو با ساختار و يا یونیون و... داشته باشيم، ممنون ميشم يه راه حل نشونم بدين.
يا علي
struct Table {
char* name;
int id;
}
struct Map{
int key =-1;
Table value;
}
int key_s = 0;
Map map[10];
Table& push(table& tStruct){
Map lmap;
lmap.key = tsruct.id;
lmap.value = tsruct;
bool flag=false;
for(int i; i < 11 ; i++){
if(tsruct.id == map[i].key ){
flag = true;
break;
}
}
if(flag){
map[key_s] = lmap;
return pop(key_s++);
}else
return pop(tStruct.id);
}
Table& pop(int key){
Table tValue;
tValue = map[key].value;
return tValue;
}
int main{
Table table;
table.name = "test";
table.id = 1001;
if( push(table).id == table.id){
printf("record has exist! %i" , table.id);
}else{
Table t = pop(table.id);
printf("new record save to map! %c , %i" , t.name , t.id);
}
}
نقل قول: ایجاد ارجاع به متغیر، با متغیر عددی
نقل قول:
نوشته شده توسط
farhad_shiri_ex
struct Table {
char* name;
int id;
}
struct Map{
int key =-1;
Table value;
}
int key_s = 0;
Map map[10];
Table& push(table& tStruct){
Map lmap;
lmap.key = tsruct.id;
lmap.value = tsruct;
bool flag=false;
for(int i; i < 11 ; i++){
if(tsruct.id == map[i].key ){
flag = true;
break;
}
}
if(flag){
map[key_s] = lmap;
return pop(key_s++);
}else
return pop(tStruct.id);
}
Table& pop(int key){
Table tValue;
tValue = map[key].value;
return tValue;
}
int main{
Table table;
table.name = "test";
table.id = 1001;
if( push(table).id == table.id){
printf("record has exist! %i" , table.id);
}else{
Table t = pop(table.id);
printf("new record save to map! %c , %i" , t.name , t.id);
}
}
بسیار بسیار ممنونم، من تازه وارد این انجمن شدم، نتونستم لینک تشکر رو پیدا کنم. یه دوست دیگه روش شما رو کمی خلاصه کرد،، بهر حال ممنونم، لطف بزرگی کردین
اینم روش اون دوستمون
struct Point
{
int x, y;
};
int main()
{
// Create an array of structures
struct Point arr[10];
// Access array members
arr[0].x = 10;
arr[0].y = 20;
printf("%d %d", arr[0].x, arr[0].y);
return 0;
منبع
https://www.eca.ir/forums/members/kazem1010.html
یا علی