交换地址的问题
Issue with swapping addresses
我正在执行一项任务,在该任务中,我必须编写一个函数来执行以下操作-"您将分配一个空位数量大小的数组,并加载带有指向所有当前空位的指针的动态数组。首先使用最后一个空位构建数组。在同一个函数中,您将把所有传输移动到可用的房间(并将其标记为占用)使用指针的动态数组。您必须通过用空闲地址交换传输地址来完成此操作。从指针数组的后面开始,继续到前面执行这些操作,直到完成所有传输。不要重新处理指针数组。"这是我为了做到这一点而写的——
char** tranfers(char hospitalFloors[FLOOR_ARRAY_SIZE][ROOM_ARRAY_SIZE], int &num)
{
int x = 0;
char *temp;
for (int i = 0; i < FLOOR_ARRAY_SIZE; i++)
{
for (int k = 0; k < ROOM_ARRAY_SIZE; k++)
{
if(hospitalFloors[i][k] == 'V')
{
num++;
}
}
}
char **arr = new char*[num];
for (int i = (FLOOR_ARRAY_SIZE - 1); i >= 0; i--)
{
for (int k = (ROOM_ARRAY_SIZE - 1); k >= 0; k--)
{
if (hospitalFloors[i][k] == 'V')
{
arr[x] = &hospitalFloors[i][k];
x++;
}
}
}
for (int i = 0; i < FLOOR_ARRAY_SIZE; i++)
{
for (int k = 0; k < ROOM_ARRAY_SIZE; k++)
{
if (hospitalFloors[i][k] == 'T')
{
x--;
temp = arr[x];
arr[x] = &hospitalFloors[i][k]
&hospitalFloors[i][k] = temp;
}
}
}
return arr;
}
我毫不怀疑,试图设置&hospitalFloors[i][k]指向一个指针,但无论我尝试什么不同的方法,我似乎都无法想出解决方案。
我的问题是,考虑到任务的要求,我如何将房间的地址与转移到有病人的房间进行交换,确保指针数组保持其顺序,但不重新处理它?
非常感谢您的帮助。
因此,您所需要做的就是在最后一个if
块中采取适当的步骤。
*arr[x] = 'O'; // set vacant room as occupied.
hospitalFloors[i][j] = 'V'; // set transfer room as vacant
arr[x] = &hospitalFloors[i][j]; // make the vacancy element point at the now vacant room
当然保持x--
您确实需要处理类型为char
的指向数据。虽然任务上写着"交换",但也写着标记已入住的受让人房间,你可以直接这样做:
*arr[x] = 'O';
hospitalFloors[i][k] = 'V';
要做到这一点,首先使用"交换":
char temp = *arr[x]; // was vacant
*arr[x] = hospitalFloors[i][k]; // assign transfer
hostpitalFloors[i][k] = temp; // make vacant
*arr[x] = 'O'; // make occupied
数组确实表示。。。
您必须通过用空闲地址交换传输地址来完成此操作。
目前尚不清楚上面的地址是暗指[楼层][房间]方面,还是char*
方面。不过,修改arr
中的指针地址表面上没有意义,所以我假设是前者。
不过,您被要求按阵列的相反顺序执行此操作,但您当前再次在地板和房间上循环。我相信你可以自己解决。
相关文章:
- 从 C++ 中的函数返回数组地址问题
- 初学者问题:C++指针/地址 - 和变量之后不是以前?
- 如何解决地址问题
- 如何调试错误代码 77:cudaErrorIllegal地址当 cuda-memcheck 没有发现问题时
- 迷宫构造函数问题 [线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)]
- LPVOID 问题不接受内存地址
- 通过引用地址传递问题
- 交换地址的问题
- 将文件的常量字符* 地址传递给 ifstream 对象的问题
- 线程1:EXC_BAD_ACCESS(代码=1,地址=0x0)问题生成
- 关于取消引用和地址空间的基本C++指针问题
- 比较套接字地址的问题
- 通过池分配器中的内存地址访问可用列表节点时出现问题
- 提升 unix 上的 UDP 套接字问题 - 绑定:地址已在使用中
- libC++库的地址净化构建为什么会在libcxx类中出现不可复制的ASAN问题
- 关于内存地址的问题
- 修复了TinyWireS库的i2c地址问题
- 关于c++中地址空间的问题
- C++ 不接受对象字符串中的@符号吗?似乎是地址问题?
- 将三维指针的第一个地址转换成一维指针时出现问题