Как изменить гласные в строке на символ? - PullRequest
3 голосов
/ 22 ноября 2011

Мне нужно изменить гласные в строке на $, используя C. Я знаю, что мне нужно использовать цикл for, и я почти уверен, что я на правильном пути, но я не могу заставить его работать.

Вот мой код:

#include <stdio.h>
#include <string.h>

int main(void)
{
    char input[50];
    char i;
    int j = 0;

    printf("Please enter a sentence: ");
    fgets(input, 50 , stdin);

    for (j = 0; input[i] != '\0'; j++)      
        if (input[i]=='a'||input[i]=='e'||input[i]=='i'||input[i]=='o'||input[i]=='u')
        {
            input[i]= '$';
            printf("Your new sentence is: %s", input);
        }

    return 0;
}

Я знаю, что моя ошибка невелика, но я просто не вижу ее.Это домашнее задание, поэтому я не хочу, чтобы решение как таковое было просто советом, чтобы я мог на самом деле извлечь из этого уроки.

Редактировать:
Спасибо за то, что ребята, я избавился от 'j' и теперьработает, однако, когда я запускаю программу, она выводит новую строку для каждого изменяемого гласного.Как мне его кодировать, чтобы он выводил только последнюю строку, т. Е. Со всеми измененными гласными?

Ответы [ 7 ]

6 голосов
/ 22 ноября 2011

Вы допустили небольшую ошибку с индексом:

for (j = 0; input[i] != '\0'; j++)
     ^                        ^

должно быть

for (i = 0; input[i] != '\0'; i++)

На самом деле вы можете опустить j:

int main(void)
{
    char input[50];
    int i;

    printf("Please enter a sentence: ");
    fgets(input, 50 , stdin);

    for (i = 0; input[i] != '\0'; i++)
    {
        if (input[i]=='a'||input[i]=='e'||input[i]=='i'||input[i]=='o'||input[i]=='u')
        {
            input[i]= '$';
        }
    }
    printf("Your new sentence is: %s", input);
    return 0;
}
0 голосов
/ 19 января 2019

Вы также можете позаботиться о гласных в верхнем регистре.В уже распространенных примерах кода, пожалуйста, включите заглавные буквы также для полноты.Кстати, использование конструкции switch было бы более эффективным, чем последовательность логических ИЛИ

.
0 голосов
/ 19 января 2019
#include <stdio.h>
int main()
{

int z=1,i;
char arr[100];
printf("enter a word");
scanf("%[^\n]s",arr);
for(i=0;arr[i]!='\0';i++)
{

 switch(arr[i])
{
 case 'a':
 case 'e':
 case 'i':
 case 'o':
 case 'u':

    printf("%d",z);
    z++;
    break;
    default:
        printf("%c",arr[i]);
    }
   }
 }
0 голосов
/ 04 марта 2013
    String input = "My name is jitender rana"; // here give your input

    System.Text.StringBuilder sb = new System.Text.StringBuilder(); // taken to concatenate the string
    for( Int32 i = 0; i<input.Length; i++)
    {
        if ((input[i].ToString().ToLower() == "a") || (input[i].ToString().ToLower() == "e") || (input[i].ToString().ToLower() == "i") || (input[i].ToString().ToLower() == "o") || (input[i].ToString().ToLower() == "u"))
        {
            // output +=  input.Replace(input[i].ToString(), "_");
            sb.AppendLine(input[i].ToString().Replace(input[i].ToString(), "_"));
        }
        else
        {
            sb.AppendLine(input[i].ToString());
        }
    }
    Response.Write(sb.ToString());
0 голосов
/ 22 ноября 2011

Индексируйте свою входную базу по переменной из цикла for. Замените ваш цикл for следующим образом:

for (j = 0; input[j] != '\0'; j++)   
{  
        if (input[j]=='a'||input[j]=='e'||input[j]=='i'||input[j]=='o'||input[j]=='u')

        {
            input[j]= '$';
            //printf("Your new sentence is: %s", input); //move this outside the loop
        }  
}

Таким образом, весь код будет выглядеть так:

#include <stdio.h>  
#include <string.h>

int main(void) {
    char input[50];
    char i;
    int j = 0;
    printf("Please enter a sentence: ");
    fgets(input, 50 , stdin);
            printf ("\ninput: %s", input);

    for (j = 0; input[j] != '\0'; j++)       
    {    

        if (input[j]=='a'||input[j]=='e'||input[j]=='i'||input[j]=='o'||input[j]=='u')
        {
            input[j]= '$';

        }    
    }   
    printf("Your new sentence is: %s", input); 
    return 0; }
0 голосов
/ 22 ноября 2011

это проблема с i, j. Вы использовали i, но никогда не увеличивали его.

0 голосов
/ 22 ноября 2011

каждый раз, когда вы пишете input[i];, оно должно быть input[j]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...