Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
MatheusINF

C Como fazer esse algoritmo

Recommended Posts

Fala galera meu professor passou uns exercicios parecidos porém não sei fazer sem ter um como molde, eu até peguei parte mais o resto eu não sei mesmo alguem me ajuda?

O exercicio é o seguinte: Dado um conjunto de N frases, faça um algoritmo para imprimir cada frase juntamente com o número de vezes que aparece a palavra DE na frase.

#include <stdio.h>

int main()
{
    // VARIAVEIS
    int n,i,de;
    char frase[150];


    // INICIO
    printf("Digite quantas frases tera: ");
    scanf("%i",&n);

    for(i=0; i<n; i++){
        printf("Digite a frase:\n");
        gets(frase);

    }
    
    printf("Na(s) frase(s) %c aparecem a palavra DE %i vezes",frase,de);


    return 0;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia @MatheusINF

 

Uma ideia de como resolver o seu problema é criar um loop que corra por toda sua string verificando se a letra em questão é a "D" e se for verifica se a próxima letra é a "E" se for você soma +1 no contador.

 

Espero ter ajudado :D

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá ... @MatheusINF !

Quando penso no problema, a primeira ideia que vem é implementar um algoritmo de busca genérico, porque futuramente você poderá reutilizar tanto essa implementação quanto o seu conceito.

 

 

 

  • Curtir 4

Compartilhar este post


Link para o post
Compartilhar em outros sites

@MatheusINF  Vou arriscar passar um algoritmo q fiz agora apenas para ver se ajuda um pouco, ok?

 

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

int main()
{
    char frase[200], ch;
    int i, k, qtde, n;

    printf("Digite a quantidade de frases: ");
    scanf("%d", &n);
    fflush(stdin);


    for (k = 0; k < n; k++)
    {
        qtde = 0;

        printf("Digite uma frase: ");
        fgets(frase, 200, stdin);
        strtok(frase, "\n");
        if (strlen(frase) == 200 - 1)
        {
            while ((ch = getchar()) != '\n' && ch != EOF);
        }

        for (i = 0; i < strlen(frase); i++)
        {
            if (frase[i] == 'd' && frase[i + 1] == 'e')
            {
                qtde++;
            }
        }

        printf("\nFrase #%d: %s, encontrado: %d vez(es)\n\n", k + 1, frase, qtde);
    }
    return 0;
}

Se deu para pelo menos passar uma ideia de como fazer esse exercício ok!

adicionado 41 minutos depois

Fazer uso de um struct seria melhor para imprimir as frases depois de todas lidas com a quantidade de ocorrências correspodentes

adicionado 56 minutos depois

@MatheusINF  Já q ninguém postou nada, vou postar quase o mesmo código mas dessa vez usando um struct e imprimindo o resultado no final. Se der para ajudar ok!

 

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

struct frases
{
    char phrase[200];
    int qtde;
} item[20];

int main()
{
    char frase[200], ch;
    int i, k, n, vezes;

    printf("Digite a quantidade de frases: ");
    scanf("%d", &n);
    fflush(stdin);


    for (k = 0; k < n; k++)
    {
        item[k].qtde = 0;
        vezes = 0;

        printf("\nDigite uma frase: ");
        fgets(item[k].phrase, 200, stdin);
        strtok(item[k].phrase, "\n");
        if (strlen(item[k].phrase) == 200 - 1)
        {
            while ((ch = getchar()) != '\n' && ch != EOF);
        }

        fflush(stdin);

        for (i = 0; i < strlen(item[k].phrase); i++)
        {
            if ((item[k].phrase[i] == 'd') && (item[k].phrase[i + 1] == 'e'))
            {
                vezes++;
            }
        }

        item[k].qtde = vezes;
    }

    printf("\n");

    for (i = 0; i < n; i++)
    {
        printf("Frase #%d: %s, ocorrencias: %d vez(es)\n", i + 1, item[i].phrase, item[i].qtde);
    }
    return 0;
}

Pelos testes q fiz aqui tudo ok. Não sei dizer ao certo se é algo assim q queria fazer! 

  • Obrigado 1
  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@giu_d Então mnw eu estava tentando fazer algo perto disso, o problema é que seu eu colocar a palavra "Deus" ele vai ler esse o "De", e o professor disse que quer apenas as palavras "DE" saca?, então não pode ser dentro de uma palavra e sim apenas ela : /

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
5 minutos atrás, MatheusINF disse:

@giu_d Então mnw eu estava tentando fazer algo perto disso, o problema é que seu eu colocar a palavra "Deus" ele vai ler esse o "De", e o professor disse que quer apenas as palavras "DE" saca?, então não pode ser dentro de uma palavra e sim apenas ela : /

Coloca no algorítimo para ler um espaço antes e depois do "DE", ai você garante que ele leia o "DE" isolado. 

  • Obrigado 1
  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

Olá ... !

Por exemplo:

Ou seja, o que buscamos não é somente o DE, mais sim, DE com espaços.

 

                     " DE " << esse é o elemento da busca assim como idealizado.

" Estou de volta pro meu aconchego ... " << esse é o conjunto onde faremos a busca pelo elemento.

1 resultado!

:thumbsup:

Editado por AnsiC
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@MatheusINF  Corrigindo meu if ficaria assim:

 

for (i = 0; i < strlen(item[k].phrase); i++)
{
   if ((item[k].phrase[i - 1] == ' ') && (item[k].phrase[i] == 'd') && (item[k].phrase[i + 1] == 'e') && (item[k].phrase[i + 2] == ' '))
   {
       vezes++;
   }
}

Com essa mudança é possível diferenciar entre um "de" que está isolado de uma de de "cidade" por exemplo

adicionado 1 minuto depois

Pode não funcionar se a "De" está no começo da frase, mas aí entra a questão de diferenciar maiúsculos e minúsculos tbém

adicionado 3 minutos depois

Caso alguém tiver alguma sugestão agradeço. Creio q é possível melhorar essa validação

adicionado 5 minutos depois

@AnsiC E para casos como "De acordo com a lei tal..."???

adicionado 6 minutos depois

Aí tbém entra a questão de diferenciar maiúsculas e minúsculas tbém, não sei se é essa a questão

adicionado 8 minutos depois

Para uma frase como "Desde o dia 18 de janeiro de 2018 ..." funciona de acordo como o esperado, no caso, 2 ocorrências 

adicionado 11 minutos depois
4 horas atrás, MatheusINF disse:

Então mnw eu estava tentando fazer algo perto disso, o problema é que seu eu colocar a palavra "Deus" ele vai ler esse o "De", e o professor disse que quer apenas as palavras "DE" saca?, então não pode ser dentro de uma palavra e sim apenas ela : /

 Passei o if corrigido. Para o exemplo como você deu não seria contado pois a letra 'D" é maiúscula e o algoritmo só procura pela letra "d" minúscula

adicionado 13 minutos depois

Mas antes de corrigir se digitasse na frase a palavra "cidade" aí seria considerado como encontrado, agora, corrigido, não acontece mais isso

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)
2 horas atrás, giu_d disse:

E para casos como "De acordo com a lei tal..."???

é caso especial, então testemos fora o loop e deixa dentro do loop o caso geral da maneira correta como já feito.

 

   if ((item[k].phrase[0] == 'd') && (item[k].phrase[1] == 'e') 
       			&& (item[k].phrase[2] == ' ')
   {
     vezes++;
   }

for (i = 0; i < strlen(item[k].phrase); i++)
{
   if ((item[k].phrase[i - 1] == ' ') && (item[k].phrase[i] == 'd') 
       			&& (item[k].phrase[i + 1] == 'e') && (item[k].phrase[i + 2] == ' '))
   {
       vezes++;
   }
}

 

2 horas atrás, giu_d disse:

Aí tbém entra a questão de diferenciar maiúsculas e minúsculas tbém, não sei se é essa a questão

deixa essa parte para auto do tópico ter alguma coisa para fazer kkk, é muito folga dele se tu responder tudo kkkk.

Editado por AnsiC
  • Haha 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@AnsiC

6 horas atrás, AnsiC disse:

deixa essa parte para auto do tópico ter alguma coisa para fazer kkk, é muito folga dele se tu responder tudo kkkk.

 

Falei com o professor hoje e ele deu umas dica HASUASHUAHASAUSHASUI mais valeu galera

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 horas atrás, AnsiC disse:
8 horas atrás, giu_d disse:

Aí tbém entra a questão de diferenciar maiúsculas e minúsculas tbém, não sei se é essa a questão

deixa essa parte para auto do tópico ter alguma coisa para fazer kkk, é muito folga dele se tu responder tudo kkkk.

Essa foi boa! kkkkkkkkk

  • 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






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

×