2016-03-03 2 views
-8

Я пытаюсь написать программу c для подсчета количества вхождений гласных в строке. Он работает нормально, но результат неправильный. Это условие:C-код для подсчета последовательных вводов переменных в строке

if((check(str[i]==0)&&check(str[i+1]==0))) 
     { 

      count++; 

     }   
    } 
printf("%d",count); 

Проверить это функция, которая содержит корпус переключателя для всех гласных звуков. Он возвращает 0, если гласные присутствуют и по умолчанию. Выход, который я получаю, - это общее количество символов в строке вместо последовательных гласных.

int check(char c) 
{ 
    switch(c) 
    { 
     case 'a': 
     case 'A': 
     case 'e': 
     case 'E': 
     case 'i': 
     case 'u': 
     case 'I': 
     case 'o': 
     case 'O': 
     case 'U': 
      return 0; 
      break; 
     default: 
      return 1; 
    } 
} 

Это функция проверки.

+0

У вас есть ** 3 ** фигурные скобки для одного, если condtiion. Я сомневаюсь, что это действительно код – StoryTeller

+0

Пожалуйста, перечитайте вопрос; это очень противоречиво. Вы говорите о последовательных переменных; yu pobably средние значения. Затем вы говорите словосочетания. Куда входят гласные? Вы хотите подсчитать количество последовательных гласных. Если да, скажите об этом в вопросе. –

+2

Также, как вы думаете, 'str [i] == 0' тоже оценивает? – StoryTeller

ответ

1

Ваших круглые скобки неуместны:

if((check(str[i]==0)&&check(str[i+1]==0))) 

должен:

if (check(str[i])==0&&check(str[i+1])==0) 
+0

На самом деле это заставило меня работать с дополнительным i ++ внутри if, чтобы перепрыгнуть через гласную, которую он уже рассмотрел. Благодарю. –

+0

Извините за недопустимое недоразумение. Было слишком поздно отменять. – MikeCAT

2

Стоп делать бесполезное и вредное comparasion.

#include <stdio.h> 

int check(char c) 
{ 
    switch(c) 
    { 
     case 'a': 
     case 'A': 
     case 'e': 
     case 'E': 
     case 'i': 
     case 'u': 
     case 'I': 
     case 'o': 
     case 'O': 
     case 'U': 
      return 0; 
      break; 
     default: 
      return 1; 
    } 
} 

int main(void) 
{ 
    char str[] = "testaaOTAO"; 
    int count = 0; 
    int i; 
    for (i = 0; str[i+1] != '\0'; i++) 
    { 
     if((check(str[i])&&check(str[i+1]))) 
     { 

      count++; 

     } 
    } 
    printf("%d",count); 
    return 0; 
} 

Подсчитать количество гласных звуков, функция main() должна быть

int main(void) 
{ 
    char str[] = "testaaOTAO"; 
    int count = 0; 
    int i; 
    for (i = 0; str[i] != '\0'; i++) /* change str[i+1] to str[i] */ 
    { 
     if(!check(str[i])) /* change the condition */ 
     { 

      count++; 

     } 
    } 
    printf("%d",count); 
    return 0; 
} 
Смежные вопросы