• 0
Sign in to follow this  
AlexandreJesus

Como resolver este exercicio de Strings em C++

Question

Olá gente, gostava que ajudassem com isto... o meu professor meteu este código... e ele perguntou quem é que sabe o que isto faz e nós não sabemos, nós somos alunos de 10 ano e ainda não percebemos bem isto, agradecia a vossa ajuda. (Digam-me o que faz e expliquem os passos)

 

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

int main(void) {

char *Codifica(char *strOut, char *strIn) {
strcpy(strOut, strIn);
char *strAux = strOut;
while(*strAux){
*strAux = (*strAux)+1;
*strAux++;
}
return strOut;
}
}

Edited by AlexandreJesus

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Pega uma frase ou palavra como "lobo", para este exemplo, e incrementa cada uma das letras conforme a tabela asc2 deixando "lobo" como "mpcp".
cada uma das letras incrementadas em 1 valor fica como na ilustração abaixo:

l+1 = m
o+1 = p
b+1 = c
o+1 = p

Para provar o anteriormente dito, aqui tem um exemplo:

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

char *Codifica(char *strOut, char *strIn) {
    strcpy(strOut, strIn); //Copia o que está em strIn em strOut
    char *strAux = strOut; //Faz strAux apontar a strOut (copia o ponteiro strOut)
    while( *strAux ) { //Por enquanto não encontrar o nulo no final da string continua rolando
        *strAux = (*strAux)+1; //copia a seguinte letra para a anterior. Tipo se tenho farinha pega a e copia na f, algo assim f<-arinha ficando aarinha
        *strAux++;
    }
    return strOut;
}

int main() {
    char in[100] = "lobo"; //Troque lobo por outras frases, ou palavras, para comprovar. Não ultrapasse 99 letras.

    char out[100] = "";

    //fazendo uso da função
    printf("%s", Codifica( out, in));

    return 0;
}

Se tiver alguma duvida pergunte.
 

Edited by vangodp

Share this post


Link to post
Share on other sites
  • 0

Muito obrigado! Tenho ainda duas outras questões... poderia me ajudar? São as seguintes... O meu professor mandou mais estas 2 questões:

Exercício 2:

Desenvolve uma função em C que retire os espaços do início de uma string.

Considera o seguinte prototype:

char *LTrim((char *strOut, char *strIn);

Explica devidamente to teu código.

Exercício 3:

Desenvolve uma função em C que retire os espaços no fim de uma string.

Considera o seguinte prototype:

char *RTrim((char *strOut, char *strIn);

Explica devidamente to teu código.

 

(Se você me pudesse ajudar agradeceria muito)!

Share this post


Link to post
Share on other sites
  • 0

 

Respostas Q2 e 3 -cara você pode definir o tamanho lido da string, você pode armazenar a string digito por digito e na impressão não salvar o espaço (não dar print nele)

Estudo c por contra própria e mal faço idéia do que seja prototype

Share this post


Link to post
Share on other sites
  • 0
Em 08/01/2018 at 07:48, AlexandreJesus disse:

Olá gente, gostava que ajudassem com isto... o meu professor meteu este código... e ele perguntou quem é que sabe o que isto faz e nós não sabemos, nós somos alunos de 10 ano e ainda não percebemos bem isto, agradecia a vossa ajuda. (Digam-me o que faz e expliquem os passos)

 

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

int main(void) {

char *Codifica(char *strOut, char *strIn) {
strcpy(strOut, strIn);
char *strAux = strOut;
while(*strAux){
*strAux = (*strAux)+1;
*strAux++;
}
return strOut;
}
}

pelo que entendi ele copia as strings e fica escrevendo uma concatenação em um loop infinito;

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this