VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 683|回复: 7

第27课作业实在不行了,脑袋都晕了……

[复制链接]
69_avatar_middle
online_member awfymwvf 发表于 2018-4-20 16:09:52 | 显示全部楼层 |阅读模式
我的无知代码如下……

  1. // HelloWorld.cpp : 定义控制台应用程序的入口点。
  2. //

  3. #include "stdafx.h"
  4. #include <iostream>
  5. #include <string>
  6. using namespace std;

  7. char* get_same_string(char* p1, char* p2)
  8. {
  9.         char* p = new char[100];
  10.         int p1len = strlen(p1);
  11.         int p2len = strlen(p2);

  12.         char* m[100] = { 0 };

  13.         bool flag = 0;
  14.         int i = 0, j = 0, s = 0, k = 0, n = 0;

  15.         for (i = 0; i < p1len; ++i)
  16.         {
  17.                 for (j = 0; j < p2len; ++j)
  18.                 {
  19.                         while (p1[i] == p2[j] && i < p1len && j < p2len)
  20.                         {
  21.                                 m[k++] = &p1[i];
  22.                                 s += 1;
  23.                                 i++;
  24.                                 j++;
  25.                         }
  26.                         if (s > 1)
  27.                         {
  28.                                 p[n++] = &m[n++];
  29.                         }
  30.                 }
  31.         }
  32.         return p;
  33. }

  34. int _tmain(int argc, _TCHAR* argv[])
  35. {
  36.         char* p11 = "aabbcckbcy";
  37.         char* p22 = "kkbcyy";
  38.         cout << get_same_string(&p11, &p22) << endl;

  39.         return 0;

  40. }
复制代码

求大神指点迷津,万分感谢。





上一篇:第27课 new结构体类型出错了
下一篇:《实用C++》第34课 函数的重载与默认参数

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-4-20 17:22:51 | 显示全部楼层
这东西其实答案有很多种的。不同的人实现方式可能不一样。我这里也只是基于你现有的代码去改的,而且目前来说也只能找到一处相同的位置,楼主可以理解理解,对于你解决这道题目有帮助:

  1. void get_same_string(char* p1, char* p2)
  2. {
  3.         char* p = new char[100];
  4.         int p1len = strlen(p1);
  5.         int p2len = strlen(p2);

  6.         char m[100] = { 0 };
  7.         int i = 0, j = 0;

  8.         int same_begin_pos = -1;
  9.         int same_count = 0;

  10.         for (i = 0; i < p1len; ++i)
  11.         {
  12.                 for (j = 0; j < p2len; ++j)
  13.                 {
  14.                         while (p1[i] == p2[j] && i < p1len && j < p2len)
  15.                         {
  16.                                 if (same_begin_pos < 0) same_begin_pos = i;
  17.                                 ++same_count;
  18.                                 i++;
  19.                                 j++;
  20.                         }

  21.                         if (same_count > 1)
  22.                         {
  23.                                 for (int idx = 0; idx < same_count; ++idx)
  24.                                 {
  25.                                         m[idx] = p1[same_begin_pos + idx];
  26.                                 }

  27.                                 --i;
  28.                         }
  29.                         else if (same_count == 1)
  30.                         {
  31.                                 --i;
  32.                                 --j;
  33.                         }

  34.                         same_count = 0;
  35.                         same_begin_pos = -1;
  36.                 }
  37.         }

  38.         cout << "same string is : " << m << endl;
  39. }

  40. int _tmain(int argc, _TCHAR* argv[])
  41. {
  42.         char* p11 = "aabbcckbcy";
  43.         char* p22 = "kkbcyy";
  44.         get_same_string(p11, p22);

  45.         return 0;
  46. }
复制代码

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

69_avatar_middle
ico_lz  楼主| awfymwvf 发表于 2018-4-23 09:08:00 | 显示全部楼层
谢谢SYC大神,我要好好看一下,学习,生命在于学习啊。真心感谢SYC为我们这些新手所做的一切,万分感谢。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

69_avatar_middle
ico_lz  楼主| awfymwvf 发表于 2018-4-23 12:39:36 | 显示全部楼层
SYC大神,在你给的代码中,前面bc也是相同字串,但没有打印出来,只打印出来kbcy,正常吗?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-4-23 13:36:31 | 显示全部楼层
awfymwvf 发表于 2018-4-23 12:39
SYC大神,在你给的代码中,前面bc也是相同字串,但没有打印出来,只打印出来kbcy,正常吗?

kbcy 已经包含 bc 了啊

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

69_avatar_middle
ico_lz  楼主| awfymwvf 发表于 2018-4-23 14:47:43 | 显示全部楼层
本帖最后由 awfymwvf 于 2018-4-23 14:52 编辑
Syc 发表于 2018-4-23 13:36
kbcy 已经包含 bc 了啊


kbcy前面还有bc字符串呢啊,经测试发现,这个代码只能找出最后的一组相同字符串。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-4-23 14:49:36 | 显示全部楼层
awfymwvf 发表于 2018-4-23 14:47
kbcy前面还有bc字符串呢啊

楼主可以自己调试下试试,为什么那个没找到!
流程如果理清了答案自然就能做出来了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

69_avatar_middle
ico_lz  楼主| awfymwvf 发表于 2018-4-23 16:02:57 | 显示全部楼层
Syc 发表于 2018-4-23 14:49
楼主可以自己调试下试试,为什么那个没找到!
流程如果理清了答案自然就能做出来了

已解决打印多个相同字串的问题,谢谢SYC大神!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-7-18 16:40

Powered by Discuz! X3.4

© 2009-2018 cctry.com

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