Ir ao conteúdo
  • Cadastre-se

C substituir uma string por dois strings de um vetor


Samario Oliveira

Posts recomendados

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

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

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

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...