View Full Version : سوال: ایجاد ارجاع به متغیر، با متغیر عددی
sina27
چهارشنبه 24 مرداد 1397, 09:46 صبح
سلام دوستان عزيز يه سوال داشتم؛ ببينيد من مي خوام يه برنامه بنويسم به زبان سي
که براي ارجاع به متغير هاي متفاوت از يک سلسله متغير، از يه عدد داخل يه متغير استفاده کنم، خب همون طور که مي دونيد: ميشه اين کار رو با آرايه انجام داد،
int a;
char c=1,b=0;
char ch[2][3]={{c,d},{a,b}}; //create aray
a=ch[b][c] //d
اما مشکل آرايه اينه که فقط از يک نوع داده پشتيباني مي کنه،
ببينيد، مثلا من مي خوام يه ديتابيس داشته باشم، که براي هر عدد يک نام و براي هر نام چنتا مشخصه داشته باشم، اما مي خوام که بشه براي دسترسي به هر کدوم، تنها با يک متغير عددي و تغيير عدد داخل متغير به هر کدوم از زير مجموعه ها دسترسي داشته باشيم، ساختار و بعضي فرم هاي ديگه رو ديدم، اما بنظرم نميشه ارجاع با متغير عددي رو با ساختار و يا یونیون و... داشته باشيم، ممنون ميشم يه راه حل نشونم بدين.
يا علي
farhad_shiri_ex
چهارشنبه 24 مرداد 1397, 12:43 عصر
سلام دوستان عزيز يه سوال داشتم؛ ببينيد من مي خوام يه برنامه بنويسم به زبان سي
که براي ارجاع به متغير هاي متفاوت از يک سلسله متغير، از يه عدد داخل يه متغير استفاده کنم، خب همون طور که مي دونيد: ميشه اين کار رو با آرايه انجام داد،
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);
}
}
sina27
پنج شنبه 25 مرداد 1397, 04:22 صبح
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
یا علی
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.