Ir ao conteúdo
  • Cadastre-se

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


Posts recomendados

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
Link para o comentário
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  .

Link para o comentário
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
Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!