| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 980 人关注过本帖, 1 人收藏
标题:字符串排序出错(已解决)
只看楼主 加入收藏
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
结帖率:83.33%
收藏(1)
 问题点数:0 回复次数:8 
字符串排序出错(已解决)
#include <iostream>
using namespace std;
int main()
{
    void sort(char s[][]);
    char str[10][8];
    cout<<"输入字符串:";
    int i,j;
    for(i=0;i<10;i++)
    {cin>>str[i];
    }
    sort (str);
    for(i=0;i<10;i++)
    {
        cout<<str[i]<<endl;
    }
return 0;
}
void sort(char s[10][8])
{
    char *p,temp[10];
    p=temp;
    int i,j;
    for( i=0;i<9;i++)
        for( j=0;j<9-i;j++)
            if(strcmp(s[j],s[j+1])>0)
            {
                strcpy(p,s[j]);
                strcpy(s[j],s[j+1]);
                strcpy(s[j+1],p);
            }
    for(i=0;i<10;i++)
        cout<<s[i];

}
报错如下:E:\c++\字符串排序\主.cpp(5) : error C2087: '<Unknown>' : missing subscript
E:\c++\字符串排序\主.cpp(12) : error C2664: 'sort' : cannot convert parameter 1 from 'char [10][8]' to 'char [][1]'        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
执行 cl.exe 时出错(

[[it] 本帖最后由 yqiong 于 2008-3-28 12:01 编辑 [/it]]
搜索更多相关主题的帖子: 字符 
2008-03-22 16:27
Waiting159
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-11-7
收藏
得分:0 
程序代码:
#include <iostream>
using namespace std;
const int MAX = 3;
int main()
{
    void sort(char *s[MAX]);

    char *str[MAX]={"FUCK", "BITCH", "SHIT"};        //就不写输入函数了,直接举个例!

    //cout<<"输入字符串:";
    int i,j;
    //for(i=0;i<10;i++)
    //{cin>>str[i];
    //}

    sort (str);

    for(i=0;i<MAX;i++){
        cout << str[i] << endl;
    }

return 0;
}

void sort(char *s[MAX])
{
    char *p;
    int i,j;
    for( i=0;i<MAX;i++)
        for( j=0;j<MAX-i-1;j++)
            if(strcmp(s[j],s[j+1])>0)
            {
                p=s[j];
                s[j]=s[j+1];
                s[j+1]=p;
            }

}
2008-03-23 03:12
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
收藏
得分:0 
为什么上面的错了?用二维数组做实形参不行吗?
2008-03-23 22:56
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
template <class T>
class ARR
{
    int m;
    vector<T> vec ;
    vector<T>::iterator it;
public:
    ARR(T a[],int size)
    {
     vector<T> vec1(a,a+size);
     vec=vec1;
    }
    void delsame()
    {
        sort(vec.begin(),vec.end());
        it=unique(vec.begin(),vec.end());
        vec.erase(it,vec.end());
    }
    void show()
    {   
        for(vector<T>::iterator iter=vec.begin(); iter!=vec.end();iter++)
        {
            cout<<*iter<<"\t";            
        }
        cout<<endl;
    }
};

int main()
{
    string b[]={"sss","bbbbbb","gggggg"};
    ARR<string> v(b,3);
    v.show();
    v.delsame();
    v.show();
    return 0;
}

学习需要安静。。海盗要重新来过。。
2008-03-24 09:19
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
收藏
得分:0 
#include <iostream>
using namespace std;
int main()
{
    void sort(char **s);//[bo]原为s[][][/bo]
    char *str[10];//[bo]原为str[10][8][/bo]
    cout<<"输入字符串:";
    int i,j;
    for(i=0;i<10;i++)
    {   str[i]=new char[8];
       cin>>str[i];
    }
    sort (str);
    for(i=0;i<10;i++)
    {
        cout<<str[i]<<endl;
    }
return 0;
}
void sort(char **s)//[bo]原为s[][8][/bo]
{
    char *p,temp[10];
    p=temp;
    int i,j;
    for( i=0;i<9;i++)
        for( j=0;j<9-i;j++)
            if(strcmp(s[j],s[j+1])>0)
            {
                strcpy(p,s[j]);
                strcpy(s[j],s[j+1]);
                strcpy(s[j+1],p);
            }
  }
以上程序能正确运行,但为什么以前的不对呀,用数组形式作参数不可以吗?
2008-03-24 12:05
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
收藏
得分:0 
定义:char *s[10];
      char str[10][8];
除了三维的下界不一样外(s引用时二维下标无限制,而str引用下标只能为0-7),这两者在引用上有什么区别呀?
2008-03-24 12:30
handongxue
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-3-25
收藏
得分:0 
二维数组可以形参,是声明有错,修改后如下:
#include<iostream>
#include <cstring>
using namespace std;


int main()
{
         void sort(char s[][8]);//此处8必须写
    char str[10][8];
    cout<<"输入字符串:";
    int i,j;
    for(i=0;i<10;i++)
    {cin>>str[i];
    }
    sort (str);
    for(i=0;i<10;i++)
    {
        cout<<str[i]<<endl;
    }
    return 0;
}
void sort(char s[10][8])
{
    char *p,temp[10];
    p=temp;
    int i,j;
    for( i=0;i<9;i++)
        for( j=0;j<9-i;j++)
            if(strcmp(s[j],s[j+1])>0)
            {
                strcpy(p,s[j]);
                strcpy(s[j],s[j+1]);
                strcpy(s[j+1],p);
            }
    for(i=0;i<10;i++)
        cout<<s[i]<<ends;
    cout<<endl;

}
2008-03-25 15:54
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
收藏
得分:0 
按楼上改的运行时也出错呢
???
出错提示:[bo]E:\c++\字符串排序(未)\主.cpp(11) : error C2440: '=' : cannot convert from 'char *' to 'char [8]'[/bo]
2008-03-26 12:01
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
收藏
得分:0 
在C中用以下二维数组形式做参数为什么可以,而在上述程序中又行不通呢?我不明白,能否详细解释下,先谢谢了!
#include <stdio.h>
#include <string.h>
main()
{int i;
 char str[10][8];
  void sort(char s[][8]);
  printf("please enter the string");
    for(i=0;i<10;i++)
    {
       scanf("%s",&str[i]);
    }
    sort (str);
    for(i=0;i<10;i++)
    {
        printf("%s\n",str[i]);

    }
}
void sort(char s[][8])
{       int j,i;
    char  *p,temp[10];
    p=temp;
    for( i=0;i<9;i++)
        for( j=0;j<9-i;j++)
            if(strcmp(s[j],s[j+1])>0)
            {
                strcpy(p,s[j]);
                strcpy(s[j],s[j+1]);
                strcpy(s[j+1],p);
            }

}
2008-03-26 12:24
快速回复:字符串排序出错(已解决)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015751 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved