鱼C论坛

 找回密码
 立即注册
查看: 3982|回复: 9

c++ 求大神相求

[复制链接]
发表于 2013-9-24 16:29:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
写一个程序,输入一句话 ,计算这句话中原音和辅音分别有几个?
例如 programming is fun
原音 5  辅音 11个
这是我写的程序,求大神帮我修改

#include <iostream>
#include <time.h>
using namespace std;

int main()
{
    string s;
    int vowels=0,consonants=0,i;
    cout << "Enter a string : " ;
    getline(cin,s);
    for(i=0;s[i]!='\n';i++)
    {
        if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u')
                    vowels=vowels+1;
         else if(s[i]!=NULL)
             consonants=consonants+1;
    }
    cout<<"The number of vowels is "<<vowels<<endl;
    cout<<"The number of consonants is "<<consonants<<endl;
    cout<<'\n';
    time_t hold_time;
    hold_time=time(NULL);
    cout<<"The date is: "<<ctime(&hold_time);

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

使用道具 举报

 楼主| 发表于 2013-9-24 16:32:52 | 显示全部楼层
   赞赞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-24 17:18:13 | 显示全部楼层
你的程序是计算小写原音字母数和除了小写原音字母以外的所有其它字符数(包括大写原因,非原音字母,非字母,如空格)
而题目要你求的是辅音的个数,我觉得辅音和
除了小写原音字母以外的所有其它字符数(包括大写原因,非原音字母,非字母,如空格)
概念是有明显区别的,你觉得呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-24 17:28:29 | 显示全部楼层

这个我是有考虑到的,大写问题我能处理,但是我不知道要怎么处理计数问题 和空格 的问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-24 22:29:20 | 显示全部楼层
本帖最后由 liufei_vip 于 2013-9-24 22:31 编辑
zoe琦 发表于 2013-9-24 17:28
这个我是有考虑到的,大写问题我能处理,但是我不知道要怎么处理计数问题 和空格 的问题。

这个简单,首先判断每个字符是不是在65-90或者97-122之间,不在这两个区间就判断下一个字符,在区间里就分别和aeiou和AEIOU判断,相等就元音加1,不相等就辅音加1。。。
PS:先把整个字符串变成小写,可以减少一个判断条件,tolower。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-25 13:26:10 | 显示全部楼层
liufei_vip 发表于 2013-9-24 22:29
这个简单,首先判断每个字符是不是在65-90或者97-122之间,不在这两个区间就判断下一个字符,在区间里就分 ...

恩  这个我懂得   但是就是不知道怎样跳过空格和回车
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-25 13:46:37 | 显示全部楼层
仰望天上的光 发表于 2013-9-24 17:18
你的程序是计算小写原音字母数和除了小写原音字母以外的所有其它字符数(包括大写原因,非原音字母,非字母 ...

#include <iostream>
#include <time.h>
#include<ctype.h>
using namespace std;

int main()
{
    string s;
    int vowels=0,consonants=0,i;
    cout << "Enter a string : " ;
    getline(cin,s);

    for(i=0;s[i]!='\n';i++)
    {
        if(s[i]>='A'&&s[i]<='Z')
        {
            s[i]=s[i]+32;
        }
      switch(s[i])
        {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
                vowels++;
                break;
            default:
                if(isalpha(s[i]))
               consonants++;
                break;
        }
    }
    cout<<"The number of vowels is "<<vowels<<endl;
    cout<<"The number of consonants is "<<consonants<<endl;
    cout<<'\n';
    time_t hold_time;
    hold_time=time(NULL);
    cout<<"The date is: "<<ctime(&hold_time);

    return 0;
}



这是我改过的程序但是还是不行  能帮我看看  顺便看一下哪里错了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-25 15:10:12 | 显示全部楼层
zoe琦 发表于 2013-9-25 13:26
恩  这个我懂得   但是就是不知道怎样跳过空格和回车

istream& getline ( istream &is , string &str , char delim );
将输入流is中读到的字符存入str中,直到遇到终结符delim才结束。
你自己设置一个终结符。。。
空格和回车都可以判断的,s[i]==' '和s[i]=='\n'。。。或者你比较他们的ascii码都行。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-25 22:32:25 | 显示全部楼层
#include <iostream>
#include <time.h>
#include<ctype.h>
#include <cctype>
using namespace std;

int main()
{
    string s;
    int vowels=0,consonants=0;
    cout << "Enter a string : " ;
    getline(cin,s);

    for(int i=0;i < s.size();i++)
    {
        if(s[i]>='A' && s[i]<='Z')
        {
            s[i]=s[i]+32;
        }
      switch(s[i])
        {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
                vowels++;
                break;
            default:
                if(isalpha(s[i]))
                consonants++;
                break;
        }
    }
    cout<<"The number of vowels is "<<vowels<<endl;
    cout<<"The number of consonants is "<<consonants<<endl;
    cout<<'\n';
    time_t hold_time;
    hold_time=time(NULL);
    cout<<"The date is: "<<ctime(&hold_time);

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-27 14:14:15 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 19:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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