2016-07-03 3 views
-2

Программа должна указать количество гласных, которые появляются в предложении, введенном пользователем. Вы должны закончиться точкой. Проблема в том, что при объявлении массива существует некорректный оператор.Скажите количество гласных, которые появляются в предложении

#include <stdio.h> 
#include <stdlib.h> 
#include <ctype.h> 
#include <conio.h> 

/*Program EJ004*/ 

const char vowels[11] = {'A','E','I','O','U',' ','‚','¡','ó','£',''}; 
char letgoods[93]= {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9', 
    ' ','.',',',':',';','(',')','-','¿',' ','‚','¡','ó','£', 
    ' ','?',"",'!','"','%','/','<','>'}; 

//then the program is correct 

char letter; 
char phrase[80]; 
int n, t; 

int main(){ 
    int index, numvowels; 
    printf("Write your phrase, and ends with a point."); 
    index = 0; 
    numvowels = 0; 
    do{ 
     letter = getchar(); 
     for (t=0; t<93;t++){ 
      if (letter == letgoods[t]) 
      { 
//to not save special characters. 

index++; 
       printf("%c",letter); 

       phrase[index] = letter; 
       for (n=0; n<11;n++){ 
        if (toupper(letter) == vowels[n]) { numvowels++; 
        } 
       } 
      } 
     } 
    }while ((index < 80) || (letter != '.')); 
    printf("\n\n"); 
    printf("The phrase has %d vowels.",numvowels); 
    getch(); 
    return 0; 
} 

ответ

2

Есть эти проблемы с кодом.

const char vowels[11] = {'A','E','I','O','U',' ','‚','¡','ó','£',''}; 

Вы не можете использовать '' - это пустое, и вы не можете использовать пустой инициализацию обугленного значение. Вы можете использовать 0, чтобы указать, что не ты нет символов здесь:

const char vowels[11] = {'A','E','I','O','U',' ','‚','¡','ó','£',0}; 

Этот массив имеет две двойные кавычки

char letgoods[93]= {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9', 
    ' ','.',',',':',';','(',')','-','¿',' ','‚','¡','ó','£', 
    ' ','?', 
//What was intended here? 
"", 
//"" 
'!','"','%','/','<','>'}; 

При перебрать массивов полукокса, вы используете <= вместо <, который рассмотрим массив, потому что массивы в C индексируются начиная с 0. Вам нужно сделать

for (t=0; t<93;t++) 
.... 
while ((index < 80) || (letter != '.'))