Ну, у меня проблемы с упражнениями. У меня есть задача, которая сообщает мне, что мне нужно изменить функцию ( skipWords () ), чтобы она вместо возврата указателя на первую букву в выбранном слове, он возвращает указатель на последнюю букву в том же слове. Похоже, я не могу ничего менять ни в одной другой функции, кроме skipWords() .

Вот ПРИМЕР ИСПОЛНЕНИЯ :

Напишите предложение: приветствую вас Какое слово вы хотите напечатать? 1 о

Мой код:

#include<stdio.h>
#include<strings.h> // We include this library to manipulate text strings.
#include<ctype.h>
#define SIZE 100
int printFirstWord(char *pointer)
{
    int i;
    int length=strlen(pointer);
    for(i=0; i<length; i++)
    {
        if(isalpha(pointer[i])!=0)
        {
            printf("%c",pointer[i]);
        }
        else if(isalpha(pointer[i])==0)
        {
            break;
        }
    }
return 0;
}
char *skipWords(char sentence[],int words)
{
    int count=0,x,i;
    int length=strlen(sentence);
    char *pointer;

    if(words==0)
    {
        pointer=&sentence[0];
    }
    else
    {
        for(i=0; i<length; i++)
        {
            if(isalpha(sentence[i])==0)
            {
                x=i+1;
                count=count+1;
                pointer=&sentence[x];
            }
            if(i==(length-1))
            {
                pointer=NULL;
                break;
            }
            if(count==words)
            {
                break;
            }
        }
    }
    return pointer;
}
void printWord(char sentence[], int wordNumber)
{
    char *pointer;
    int length;
    length=strlen(sentence);
    int i;
    pointer=skipWords(sentence,wordNumber);
    if(pointer==NULL)
    {
        printf("This word doesn't exist");
        return ;
    }
    printFirstWord(pointer);
}
int main()
{
    char sentence[SIZE];
    int length;
    int words;
    int check=1;

    while(check==1)
    {
        printf("Write a sentence; ");
        gets(sentence);
        length=strlen(sentence);
        printf("\nWhich word should be printed? ");
        scanf(" %d",&words);
        printWord(sentence, words);
        printf("\n Do you want to enter a new sentence (press 1 to say yes)?");
        scanf("%d",&check);
        getchar();
    }
return 0;
}

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

0
Antón Pombo Amarelle 11 Сен 2018 в 02:26

1 ответ

Лучший ответ

Вам не разрешается иметь число внутри предложения, потому что isalpha проверяет только буквы.

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

Все, что я сделал (я думаю), изменил printFirstWord fkt.

См. Код здесь: http://coliru.stacked-crooked.com/a/df75d62b5aa338f3

0
Muperman 11 Сен 2018 в 06:45