Ir ao conteúdo
  • Cadastre-se
Samario Oliveira

C substituir uma string por dois strings de um vetor

Recommended Posts

ola, preciso de uma ajuda, to fazendo um trabalho e o professor pediu que se for substituir cada letra do meu nome em dois strings de um vetor, ou seja se a letra A tiver na posição 1 tem que ser substituido pelas letras da posição 1 e 2:

 

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


main(){
   int i=0,tamanho=0,tamanho_alfa=0,j=0,m,achei=0;
   char vetor_alfabeto[100]="abcdefghijklmnopqrstuvwxyz ";
   char   vetor_matriz[100]="bcdefghijklmnopqrstuvwxyza ";
  char vetor_analise[50]="samario oliveira feitosa";
   char vetor_resultado[100]="";
   tamanho_alfa=strlen(vetor_alfabeto);  
   tamanho=strlen(vetor_analise);
   for(m=0;m<tamanho;m++)  
      { achei=0; i=0;  
        while ((achei==0) && (i<tamanho_alfa))
           { if (vetor_analise[m] == vetor_alfabeto)
            {printf("\nlocalizei a letra==>%c",vetor_alfabeto);
            printf("\nVou substituir por==>%c\n",vetor_matriz);
            system("pause");
            vetor_resultado[m]=vetor_matriz; achei=1;};
             i=i+1;};};
   printf("%s\n",vetor_resultado);
   system("PAUSE");};

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código de exemplo, está confuso demais para mim.

Coloque o enunciado do problema completo para melhor ajudar o com a questão.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, dado um vetor ´nome_string´ cada letra do vetor deve ser substituída  por 2 caracteres de um vetor.

Sem mais?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uhumm. O.k.

Estava faltando a 2 letra da criptografia. Agora vejo que não falta mais, e você vê mais algo faltando?

int main(void){

    int i= 0,tamanho_analise= 0,tamanho_alfa= 0,tamanho_matriz= 0,m,achei= 0;
    char vetor_alfabeto[100]= "abcdefghijklmnopqrstuvwxyz ";
    char vetor_matriz[100]= "bcdefghijklmnopqrstuvwxyza ";
    char vetor_analise[50]= "samario oliveira feitosa";
    char vetor_resultado[100]= "";

    tamanho_alfa= strlen(vetor_alfabeto);  
    tamanho_analise= strlen(vetor_analise);
    tamanho_matriz= strlen(vetor_matriz);

    for(m= 0; m < tamanho_analise; m ++){

        achei= 0; i= 0;  
        while((achei == 0) && (i < tamanho_alfa)){

            if (vetor_analise[m] == vetor_alfabeto[i]){

                printf("\nLocalizei a letra  --> (%c)",vetor_alfabeto[i]);
                printf("\nVou substituir por --> (%c , %c)",vetor_matriz[m], 
                                                          vetor_matriz[(m + 1)
                                                                  % tamanho_matriz]);
        
                puts("\n");  system("pause");
                vetor_resultado[m] = vetor_matriz[i]; achei= 1;}
                ++ i;}}

    printf("Resultado --> %s\n\n",vetor_resultado);
    system("PAUSE");
    return 0;}

 

adicionado 4 minutos depois

Só não sei se é m ou i nos índices dos vetores ???

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 minutos atrás, AnsiC disse:

Uhumm. O.k.

Estava faltando a 2 letra da criptografia. Agora vejo que não falta mais, e você vê mais algo faltando?


int main(void){

    int i= 0,tamanho_analise= 0,tamanho_alfa= 0,tamanho_matriz= 0,m,achei= 0;
    char vetor_alfabeto[100]= "abcdefghijklmnopqrstuvwxyz ";
    char vetor_matriz[100]= "bcdefghijklmnopqrstuvwxyza ";
    char vetor_analise[50]= "samario oliveira feitosa";
    char vetor_resultado[100]= "";

    tamanho_alfa= strlen(vetor_alfabeto);  
    tamanho_analise= strlen(vetor_analise);
    tamanho_matriz= strlen(vetor_matriz);

    for(m= 0; m < tamanho_analise; m ++){

        achei= 0; i= 0;  
        while((achei == 0) && (i < tamanho_alfa)){

            if (vetor_analise[m] == vetor_alfabeto[i]){

                printf("\nLocalizei a letra  --> (%c)",vetor_alfabeto[i]);
                printf("\nVou substituir por --> (%c , %c)",vetor_matriz[m], 
                                                          vetor_matriz[(m + 1)
                                                                  % tamanho_matriz]);
        
                puts("\n");  system("pause");
                vetor_resultado[m] = vetor_matriz[i]; achei= 1;}
                ++ i;}}

    printf("Resultado --> %s\n\n",vetor_resultado);
    system("PAUSE");
    return 0;}

 

adicionado 4 minutos depois

Só não sei se é m ou i nos índices dos vetores ???

 

troquei o i pelo m deu certo....e as letras é este mesmo.....

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

o.k 👌

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
38 minutos atrás, AnsiC disse:

o.k 👌

parceiro ta legal mais tipo...se o meu nome e letra S tem q ser bc e se for A tem q ser de ....se o meu nome tem 20 letras tem q ser no total mais de 40 letras.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi,

A descrição do problema não nos deu muitos detalhes de como se deve ser realizar a criptografia, a proposito descobri sozinho que se trada de uma criptografia. Vejo que seu algoritmo faz uma busca linear pelas letras do alfabeto no nome; usando vetores etc. Sem detalhes não sei o que é certo, principalmente se a criptografia no final está certa, justamente pela falta de detalhes.

 

Será que você pode ser um pouco mais claro? Peço isso pelo fato de estamos conversando por mensagens que no geral já um feedback bem baixo.

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, AnsiC disse:

Não entendi,

A descrição do problema não nos deu muitos detalhes de como se deve ser realizar a criptografia, a proposito descobri sozinho que se trada de uma criptografia. Vejo que seu algoritmo faz uma busca linear pelas letras do alfabeto no nome; usando vetores etc. Sem detalhes não sei o que é certo, principalmente se a criptografia no final está certa, justamente pela falta de detalhes.

 

Será que você pode ser um pouco mais claro? Peço isso pelo fato de estamos conversando por mensagens que no geral já um feedback bem baixo.

Segue como deve fazer:

 

Uso de técnicas de criptografia 

 

Caros - desenvolvam um algoritmo que criptografe o nome completo de vocês  dentro da seguinte técnica:

 

cada letra deverá ser substituída por DUAS outras letras (ou caracteres gerais)  pré-definidas. 

 

O branco deverá ser convertido para DUAS OUTRAS Letras quaisquer (ou caracteres).

 

Portanto, o nome que tiver 20 letras - o resultado da criptografia deverá gerar algo com 40 letras. 

 

Enviar para meu email até domingo - 18 horas. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum...

Então ajudei com seguinte : adicionar % para codificar o espaço, e uma variável ´mm´ para auxiliar no índices do vetor que contém a codificação.

int main(void){

    int i= 0,tamanho_analise= 0,tamanho_alfa= 0,tamanho_matriz= 0,m,mm,achei= 0;
    char vetor_alfabeto[100]= "abcdefghijklmnopqrstuvwxyz ";
    char vetor_matriz[100]= "bcdefghijklmnopqrstuvwxyza%%";
    char vetor_analise[50]= "samario oliveira feitosa";
    char vetor_resultado[100]= "";

    tamanho_alfa= strlen(vetor_alfabeto);  
    tamanho_analise= strlen(vetor_analise);
    tamanho_matriz= strlen(vetor_matriz);

    for(m= mm= 0; m < tamanho_analise; ++ m){

        achei= 0; i= 0;  
        while((achei == 0) && (i < tamanho_alfa)){

            if (vetor_analise[m] == vetor_alfabeto[i]){

                printf("\nLocalizei a letra  --> (%c)",vetor_alfabeto[i]);
                printf("\nVou substituir por --> (%c , %c)",vetor_matriz[i],
                                                            vetor_matriz[i + 1]);
        
                puts("\n");  system("PAUSE");
                vetor_resultado[mm ++]= vetor_matriz[i];
                vetor_resultado[mm ++]= vetor_matriz[i + 1];
                achei= 1;}
                ++ i;}
                vetor_resultado[mm]= '\0';}

    printf("Antes  --> %s\n", vetor_analise);
    printf("Depois --> %s\n\n", vetor_resultado);
    system("PAUSE");
    return 0;}

Isso ajudou?

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

×