鱼C论坛

 找回密码
 立即注册
查看: 2856|回复: 13

一个简单的问题

[复制链接]
发表于 2020-3-27 21:36:19 | 显示全部楼层 |阅读模式
5鱼币
指针的课后题

已知有一个文件,它的内容是

  1. 3
  2. 100001 100002 110001 100089
  3. 100001 100003 100005
  4. 110001 100089
复制代码
我们要把这个文件读取后,输出以下结果:
  1. 100001 110001 100089
复制代码
对,这个题目就是二维的字符串去重(返回重复的元素)!但题目要求不要定义一个二维数组去存储……




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-27 22:26:34 | 显示全部楼层
新手表示,C有集合这样的类型吗?若没有,是否可以用 Python 来转换下后处理?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-27 22:27:55 From FishC Mobile | 显示全部楼层
链表??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-28 10:26:32 | 显示全部楼层
虽然我不是很懂C,但是不是可以定义1维数组吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 14:27:18 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-3-28 10:26
虽然我不是很懂C,但是不是可以定义1维数组吗

可以自己定义一维数组,但是按照二维的方式索引,虽然有点专空子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 14:47:48 | 显示全部楼层
time1970 发表于 2020-3-29 14:27
可以自己定义一维数组,但是按照二维的方式索引,虽然有点专空子

为啥要按照二维的方式索引呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 15:00:11 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-3-29 14:47
为啥要按照二维的方式索引呢?

自然是方便啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 15:06:04 | 显示全部楼层

我还真看不出来哪方便
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 15:12:08 | 显示全部楼层
本帖最后由 time1970 于 2020-3-29 15:15 编辑


那你就按照你自己的想法写,写出来,测试答案,如果想优化,再考虑做一个做成一个通用的集合接口,比如用在检测一个文件中的有哪些单词
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 15:19:05 | 显示全部楼层
time1970 发表于 2020-3-29 15:12
那你就按照你自己的想法写,写出来,测试答案,如果想优化,再考虑做一个做成一个通用的集合接口,比如 ...

那你先讲讲怎么把一维数组按照二维方式索引喽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 15:25:15 | 显示全部楼层
本帖最后由 time1970 于 2020-3-29 15:27 编辑
永恒的蓝色梦想 发表于 2020-3-29 15:19
那你先讲讲怎么把一维数组按照二维方式索引喽


自行百度以行主序的数组内存地址计算公式
这里提供二维的 xd + L(C * i + j)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 15:31:26 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-3-29 15:19
那你先讲讲怎么把一维数组按照二维方式索引喽
  1. #include <iostream>

  2. int main()
  3. {
  4.         const int w = 5;
  5.         const int h = 4;
  6.         int *p = new int[4 * 5];
  7.         for(int y = 0; y < h; ++y) {
  8.                 for(int x = 0; x < w; ++x) {
  9.                         p[y * h + x] = y + x;
  10.                 }
  11.         }
  12.         for(int y = 0; y < h; ++y) {
  13.                 for(int x = 0; x < w; ++x) {
  14.                         std::cout << p[y * h + x] << " ";
  15.                 }
  16.                 std::cout << std::endl;
  17.         }
  18.         delete[] p;
  19.         return 0;
  20. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-8 11:10:16 | 显示全部楼层
有点没看懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-8 17:26:53 | 显示全部楼层
你可以定义一个结构体
typedef struct MyData
{
     long data;
     int count;
}MYDATA;

依次输入,每次输入遍历数组,查找对比,没有就新增,有相同的data就count+1;最后查看count,就知道哪些重复,哪些没重复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 05:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表