Ir para conteúdo
Fórum Script Brasil
  • 0

Strings e ponteiros


milah.luks

Pergunta

NÃO CONSEGUI FAZER NADA!

Implemente funções que façam o mesmo que as funções do C:

a. strlen( ) - retorna o tamanho da string

b. strcmp( ) - diz se as duas strings são iguais ou não

c. strcnpy( ) - copia os n primeiros caracteres para a string destino

d. strcat( ) - concatena duas strings

e. strfind( ) - procura todas as ocorrência de uma string dentro de outra.

Deve informar todas as posições iniciais onde ela encontrou.

2. Função que recebe uma string e imprime o valor ASCII de cada elemento.

3. Escreva uma função que converte todas as letras de uma cadeia para

maiúsculas.

4. O protótipo pode ser void converte(char *s); Um código extremamente simples

substitui cada letra pela letra seguinte, circularmente (Z é codificado como A). Por

exemplo, “Estruturas de Dados” se transformaria em “Ftusvuvsbt ef Ebept”. Escreva

funções para codificar e para decodificar cadeias segundo este código.

5. Escreva um programa que lê uma frase (várias palavras) do teclado, e escreve as

palavras uma por linha. Por exemplo, se a entrada fosse

Estruturas de Dados

Saída seria:

Estruturas

de

Dados

Editado por Jonathan Queiroz
Remover caixa alta do título (Jonathan)
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Utilizando ponteiros faça:

1. Implemente funções que façam o mesmo que as funções do C:

a. strlen( ) - retorna o tamanho da string.

b. strcmp( ) - diz se as duas strings são iguais ou não

c. strcpy( ) - copia os n primeiros caracteres para a string destino

d. strcat( ) - concatena duas strings

e. strfind( ) - procura todas as ocorrência de uma string dentro de outra.

Deve informar todas as posições iniciais onde ela encontrou.

LETRA C.

#include <cstdlib>

#include <iostream>

#include <stdio.h>

using namespace std;

void strcnpy(char *vet1, char *vet2, int *n)

{

int i;

for( i=0; i<*n; i++)

vet2=vet1;

vet2='';

}

int main ()

{

char *vet1, *vet2;

int *n;

cout<<"Digite o primeiro nome: \n";

gets(vet1);

cout<<"Digite o segundo nome: \n";

gets(vet2);

cout<<"\n"<<strcpy(vet1, vet2);

system("PAUSE");

return EXIT_SUCCESS;

}

Link para o comentário
Compartilhar em outros sites

  • 0

Olá amigo!

Pra mim, a chave principal para entender e implementar essas funções de tratamento de strings é lembrar que uma string nada mais é do que um vetor de caracteres e, o mais importante, terminado com o caractere '\ 0'.

Tendo isso em mente, fica fácil pelo menos começar a pensar em algo.

Vou começar pela mais fácil e te dar as dicas para as outras.

int guimeira_strlen(char * frase)
{
    int i = 0;
    
    while(frase[i] != '\ 0')
    {
        i++;
    }
    
    return i;
}

Observe o que eu fiz nessa função: comecei a olhar primeiro caractere da string, se não for o \ 0, significa que a string não acabou, então somo 1 no meu contador. Depois olho o próximo, e o próximo, até chegar ao final.

Por fim, retorno esse valor.

As outras ficam por sua conta, vou só dar umas idéias:

strcmp(): Você vai receber duas strings e vai olhar as duas caracter por caracter. Se você encontrar um caractere diferente, retorna dizendo que são diferentes. Se chegar no \ 0 das duas, então são iguais.

strncpy(): Também vai receber duas strings. Faz um loop de 1 até o número de caracteres a serem copiados e vai copiando de uma string pra outra.

strcat(): Vai olhando caracter por caracter da primeira string até encontrar o \ 0. Chegando no \ 0, começa a copiar a segunda string a partir dai.

strfind(): Nessa aqui você pode usar um loop dentro de outro. No loop de fora você vai varrendo a primeira string em busca de uma letra que seja igual à primeira letra da segunda string. Quando encontrar, você entra em outro loop para comparar as próximas letras e ver se é de fato uma ocorrência da segunda string.

2: Você pode usar um loop para ver cada caractere da string e simplesmente usar printf("%d",c); onde c é o caractere. Como você ta usando %d, que é para inteiros, o C já faz a conversão para o valor ASCII pra você.

3: Baseado na tabela ASCII você pode subtrair um determinado valor de cada caractere para torná-lo maiúsculo. Também é válido usar uns ifs e tal pra ver se o caracter é maiúsculo ou minúsculo e tal... mas tudo baseado na posição deles na tabela ASCII.

4: Como diz o enunciado da questão, é extremamente simples. É só olhar cada caractere da string e verificar se ele é diferente do Z. Se for diferente, soma 1, se for o próprio Z, faz ele passar a ser o A.

5: Faz um loop pra ler a string e ir imprimindo todos os caracteres, exceto o espaço. Quando encontrar um espaço, imprime o \n.

Perceba que tratamento de strings está ligado muito intimamente com loops de repetição. Em quase todas as situações você terá que analisar caractere por caractere e fazer alguma coisa com eles.

Tente implementar alguma coisa e qualquer dúvida, estamos ai!

Boa sorte!

Espero ter ajudado!

Editado por Gui Meira
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...