字符串数组中单词中元音的最大数量

时间:2018-02-26 06:05:56

标签: c++

我编写了一个在字符串数组中输入2个字符串的程序。 然后打印列表中存储的最大元音。 我在哪里错了,并且有更优雅的方法。

#include<iostream.h>
#include<string.h>

int main()
int i,j,c=0,k=0,maxo=0,len1,maxo1=0,len3;
char vow[] = "AEIOUaeiou";
char list[100][100],vow[]={"AEIOUaeiou"};
for(i=0;i<2;i++)  {
    cout<<"Enter word:  ";
    gets(list[i]);

    for(i=0;i<2;i++) {
        len1=strlen(list[i]);
        for(k=0;k<len1;k++) {
            for(j=0;list[j][k]!='\0';j++)
                if(list[j][k]==vow[j])
                    c++;
        }

        if(c>maxo)
            maxo=c;
        c=0;
    }

    cout<<"Maximum Vowel count:"<<maxo<<endl; 
}
  fflush(stdin);
  getchar();
  return 0;
  }

我正在尝试合并此代码的更大程序。必要的评论在代码中。我真的不能承担我在最后一部分出错的地方。 我应该首先包含最后一位代码,以便程序有效吗?

#include<iostream.h>
#include<string.h>
int main()
{
 int i,n,len=0,sum=0,j,max,min,c=0,c2=0,k=0,maxo=0,len1,maxi=0,c1=0,len2;
float avg;
char list[100][100] = { 0 };
char vow[] = "AEIOUaeiou";
for(i=0;i<2;i++) 
{
  cout<<"Enter word:  ";
  gets(list[i]);

  len=strlen(list[i]);                                
  sum=sum+len;
  cout<<"Length of word:  "<<len<<endl;
  if(list[i][len-1]=='s')
  {cout<<"The Word "<<list[i]<<" ends with s"<<endl;
   c2++;
  }

  }
  //Word input by user.Prints word along with length.       
  min=strlen(list[0]);
  max=strlen(list[0]);
  //Initialising max and min.
  for(i=0;i<2;i++)
  {
    if(strlen(list[i])<min)
    {min=strlen(list[i]);}
    if(strlen(list[i])>max)
    {max=strlen(list[i]);}

  }
  for(i=0;i<2;i++)
  {
  if(max==strlen(list[i]))
  cout<<"The max value of the lengths stored:"<<list[i]<<endl<<"Word count:"<<max<<endl;               
  if(min==strlen(list[i]))
  cout<<"The min value of the lengths stored:"<<list[i]<<endl<<"Word count:"<<min<<endl;
  }
  //Max and Min value of string lengths are printed.
  avg=sum/2; 
  cout<<"Avg length:"<<avg<<endl;
  //Average value printed.
  cout<<"The number of words with s:"<<c2<<endl;
  //Word ending with s.


  {for (i = 0; i <2; i++) 

    len1 = strlen(list[i]);
    for (k = 0; k < len1; k++) 
    {
        for (j = 0; j < strlen(vow); j++)
            //if (list[j][k] == vow[j])
            if (list[i][k] == vow[j])
                c++;
    }
    cout << "Number of vowels in line " << i << ": " << c << '\n';
    if (c>maxo) maxo = c;
    c = 0;
    cout << "Maximum Vowel count so far:" << maxo << "\n\n";

     cout << "Maximum Vowel count:" << maxo << endl;
       }
for(i = 0 ;i < 2 ;i++)
{ len3 = strlen(list[i]);
letter = list[i][0];
{for(j=0;j<len3;j++)
if(list[i][j]==letter)
 counter++;

 }
 cout << "Number of identical letters as  first letter in line " << i << ": 
 " << counter << '\n';
 if (c>maxo1) maxo1 = counter;
 counter = 0;
 cout << "Maximum letter count so far:" << maxo1 << "\n\n";

 cout << "Maximum letter count:" << maxo1 << endl;
 }

PS:

我再次编辑了我的代码,以显示字母表,该字母表已作为列表中单词的起始字母的最大次数发生,以及发生的次数。 < / p>

2 个答案:

答案 0 :(得分:1)

这不会为我编译,原因有两个:

1)得到()

  

最新版本的C标准(2011年)已明确提出   从其规范中删除了此功能。功能是   在C ++中弃用(截至2011年标准,遵循C99 + TC3)。

因此我无法使用gets()函数。

2)你无法宣布

char list[100][100], char vow[] = {"AEIOUaeiou"};

两者都带有逗号分隔符。

您将第一行字符串的输入读入数组的第一行i = 0;然后你立即循环通过我,这是没有意义的。以下不是一个很好的解决方案,因为在C ++中你应该使用std :: vectors和std :: string,而不是通常混合使用C和C ++但是我试图使用我的心灵感应来保持它与你的版本接近有能力读懂你的想法。

#include <iostream>
#include <cstring>

using namespace std;

const int numLinesToGet = 10;
const int maxCharsPerLine = 100;

int main()
{
    int i, j, c = 0, k = 0, maxo = 0, len1;

    //char list[100][100], char vow[] = {"AEIOUaeiou"};
    char list[100][100] = { 0 };
    char vow[] = "AEIOUaeiou";

    //for (i = 0; i < 2; i++)
    for (i = 0; i < numLinesToGet; i++) 
    {
        cout << "Enter word:  ";
        std::cin.getline(list[i], maxCharsPerLine);
        //gets(list[i]);

        //for (i = 0; i < 2; i++) Get rid of this second loop entirely
        len1 = strlen(list[i]);
        for (k = 0; k < len1; k++) 
        {
            //for (j = 0; list[j][k] != '\0'; j++)
            for (j = 0; j < sizeof(vow); j++)
                //if (list[j][k] == vow[j])
                if (list[i][k] == vow[j])
                    c++;
        }
        cout << "Number of vowels in line " << i << ": " << c << '\n';
        if (c>maxo) maxo = c;
        c = 0;
        cout << "Maximum Vowel count so far:" << maxo << "\n\n";
    }
    cout << "Maximum Vowel count:" << maxo << endl;

    fflush(stdin);
    getchar();
    return 0;
}

在线示例here

答案 1 :(得分:0)

#include<stdio.h>

int main ()
{
    char a[] = "i love to code in education";
    int i, count = 0, vow = 0, mvow = 0;
    for (i = 0; a[i] != '\0'; i++)
      {
        if (a[i] == 'a' || a[i] == 'e' || a[i] == 'i' || a[i] == 'o'
            || a[i] == 'u')
          {
            vow++;
          }
        if (a[i]==' ')
        {
          count++;
          mvow = vow;
          vow = 0;
        }
     }

printf ("Total words: %d\n", count+1);
if(vow>mvow) printf ("Max Vowels in a word: %d", vow);
else printf("Max Vowels in a word: %d", mvow);
  return 0;
}