Ir ao conteúdo

Posts recomendados

Postado

Olá, boa noite

 

Estou tentando resolver o seguinte exercício: 

Escreva um programa para contar o número de ocorrências de uma string s em uma string t.

 

Não estou conseguindo acertar exatamente a contagem quando executo, dá um valor muito maior:

Se alguém souber como posso resolver, agradeço desde já.

 

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <conio.h>
#include <string.h>

int main()
{
	setlocale(LC_ALL,"Portuguese");
	
	int i = 0, j = 0, contagem = 0;
	char Sstring[20];
	char Tstring[2000];
	
	printf("\n Digite uma palavra ou uma frase: ");
	gets(Sstring);
	
	printf("\n Digite um parágrafo: ");
	gets(Tstring);
	
	for (i = 0; Sstring[i] != '\0'; i++)
	{
		for (j = 0; Tstring[j] != '\0'; j++)
		{
			if (strcmp(Sstring,Tstring))
			{
				contagem++;
			}
		}
	}
	
	printf(" O número de vezes que a primeira frase aparece no parágrafo é igual a: %i \n", contagem);	
		
    printf("\n");
	system("pause");
	return 0;
}

 

  • Obrigado 1
Postado

@Liara K    com certeza existe muitos modos de fazer esse código ,  e um deles poderia ser assim  :

#define _CRT_SECURE_NO_WARNINGS  //  para usar certas funções no visual studio
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <conio.h>
#include <string.h>

int main()
{
	setlocale(LC_ALL, "Portuguese");

	int i = 0, j = 0, contagem = 0,k=0;
	char Sstring[20],auxiliar[20];                  // um espaço será usado para o finalizador de string \0
	char Tstring[2000];

	printf("\n Digite uma palavra ou uma frase: ");
	fgets(Sstring,19,stdin);                        // gets está ultrapassado e em desuso
	Sstring[strlen(Sstring) - 1] = '\0';            // remove newline pego pelo fgets
	printf("\n Digite um parágrafo: ");
	fgets(Tstring,1999,stdin);                      // gets está ultrapassado e em desuso

	for (i = 0; Tstring[i] != '\0'; i++)            // percorrer a frase toda
	{
		if (Tstring[i] != ' ' && Tstring[i] != '0') // verifica os espaços entre palavras e o final da frase
		{
			auxiliar[k] = Tstring[i];               //  uma string auxiliar receber os caracteres da frase
			k++;
		}
		else
		{
			auxiliar[k] = '\0';                     // finalizador de string para poder comparar
			k = 0;
			if (strcmp(auxiliar, Sstring) == 0 )
			{
				contagem++;
			}
		}
	}
	printf("\n\nO número de vezes que a palavra %s aparece no parágrafo é igual a: %d\n\n\n", Sstring,contagem);
	system("pause");
	return 0;
}

 

  • Curtir 1
  • Obrigado 1
Postado

Pode usar essa função para realizar a pesquisa:

  Mostrar conteúdo oculto

 

Daí é só ir chamando essa função dentro de um loop, incrementando o valor de inicio.

  • Curtir 1
  • Obrigado 2

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

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!