Ir ao conteúdo
  • Cadastre-se
André Luiz Feijó

C++ Erro em questão - C++

Recommended Posts

Questão: Fazer uma rotina que recebe um string como parâmetro e imprime quantas palavras (separadas por espaços em branco) o mesmo contém.

Fiz o seguinte: 

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <locale.h>
using namespace std;

void countStr(char Str[]);

int main(int nNumberofArgs, char* pszArgs[])
{
    setlocale(LC_ALL, "Portuguese");

    char Str[257];

    cout << "Digite uma String: ";
    cin.getline(Str, 257);

    countStr(Str);

    system("PAUSE");
    return 0;
}

void countStr(char Str[])
{
    int n = 0;

    if(isdigit(Str[0]))
    {
        n++;
    }

    for(int i = 1; Str[i] != '\0'; i++)
    {
        if(isspace(Str[i]))
        {
            if(isdigit(Str[i + 1]))
            {
                n++;
            }
        }
    }
    cout << n << endl;
}

Acontece que sempre dá um erro, alguém pode me ajudar a corrigir?!

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@André Luiz Feijó      o que você precisa fazer é na função countStr, dentro do loop verificar se encontrou um caractere espaço  na frase e se o próximo caractere da frase não é um espaço e nem o final da frase, passando por essas condições então soma o contador,  e depois que sair desse loop verifica se o primeiro caractere da frase não é um espaço e nesse caso incrementa o contador  .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado!

 

adicionado 25 minutos depois

@devair1010 Pensei um pouco e consegui fazer dessa forma a função (Funcionou):

void countStr(char Str[])
{
    int n = 0;
    for(int i = 0; i < strlen(Str); i++)
    {
        if(isspace(Str[i]))
        {
            if(i == 0)
            {
            }
            if(isspace(Str[i-1]))
            {
            }
            else
            {
                n++;
            }
        }
    }
    cout << n+1 << endl;
}

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
• Fazer uma rotina que recebe um string como parâmetro e imprime quantas 
 palavras (separadas por espaços em branco) o mesmo contém.

 

 

ENTRADAS

Hoje 25 de janeiro de 2018 as 23h:16 
Clube!

SAÍDAS

8
1

 

Tomarmos o enunciado ao pé da letra, as saídas corretas são respectivamente iguais ao quadro abaixo. Porque 25, 2018, 23h:16 não são palavras, entretanto fazem parte em qualquer string. Por último a palavra Clube que está sozinha logo nessa situação a resposta é sempre 0.

3
0

 

@André Luiz Feijó curti a simplicidade da resolução que foi direta.

 

 

~~ / ~~

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@André Luiz Feijó    seu código  não está mostrando o total de palavras certo não,  se você digitar uma só palavra e um espaço também , ou um espaço e depois uma palavra, então ele mostra que são duas palavras 

5ab8666e63509_telac_2.jpg.2b95710531220fa27f2b25e5f9c230f0.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

@André Luiz FeijóPrimariamente, Palavra no português é conjunto de letras. E o enunciado quer separadas por espaços em branco qualquer coisa diferente de espaço que separa duas palavras não satisfaz o problema.

Dicionário - Priberam : Palavra

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×