Ir ao conteúdo
  • Cadastre-se

C Enigma interessante sobre C


Pluto Thayph

Posts recomendados

13 horas atrás, arfneto disse:

é como aqueles exercícios bobinhos dos livros de criança: você tem que usar os 7 símbolos e colocar na ordem lá onde estão os pontos, de modo que o programa resultante faça o previsto, inverter a string de entrada.

mas, o problema é que eu não tenho noção de como fazer isso.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

agora, arfneto disse:

não sabe escrever uma função que inverte uma string?

 

O próprio enunciado é uma dica

 

 

Cara, tipo assim, o meu único contato com C foi por esse livro. '-'

adicionado 4 minutos depois
agora, arfneto disse:

não sabe escrever uma função que inverte uma string?

 

O próprio enunciado é uma dica

 

 

Mas, deixando a dúvida um pouca mais específica... o que que a variável len vai armazenar? Str len é para encontrar o valor da string, então vai armazenar o quê?? 

Link para o comentário
Compartilhar em outros sites

agora, herbertbahia disse:

cara a função strlen retorna o tamanho veja esse artigo que fala sobre quando e como usar o size_t eu nunca usei aprendir agora

https://pt.stackoverflow.com/questions/59369/quando-usar-size-t

"size_t é normalmente usado pra indexar arranjos (arrays) e fazer contagem em laços (loops)" Como assim indexar arrays?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderador

Caro usuário,

 

Seja bem-vindo ao Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Pluto Thayph disse:

Sobre o problema, que que a variável len vai armazenar? Str len é para encontrar o valor da string, então vai armazenar o quê?

strlen é uma função que retorna o tamanho da string. E a variável len vai armazenar esse valor.

 

Então se a string for "ABC", len vai armazenar o valor 3.

 

Link para o comentário
Compartilhar em outros sites

"size_t é normalmente usado pra indexar arranjos (arrays) e fazer contagem em laços (loops)" Como assim indexar arrays?

 

Se está aprendendo é bom --- muito bom --- usar um IDE. E moderno. E escrever seus programas nele. O que você usa?
 

image.png.cd4670269a1a6783f6965349c1cd8a96.png

 

veja esse caso: você declarar algo como size_t e põe o ponteiro do mouse sobre o size_t: alguns segundos depois o próprio IDE acende a definição para você: size_t é simplesmente um int sem sinal: unsigned int

 

Você deve usar size_t em casos em que é mais prático: se sabe que só vai usar números positivos o compilador controla pra você e não precisa ficar a vida toda testando se o cara digitou um valor negativo para  a idade, por exemplo.

 

Nesse caso aqui é o tamanho da string, que naturalmente não pode ser negativo.

 

Isso você podia ter feito:

 

void print_reverse(char* a)
{
    size_t len = strlen(s);

    char* t = [1] + [2] - 1;
  
    while ( [3] >= [4] )
    {
        printf("%c", *t);
        t = [5] [6] [7];
    {
    puts("");
}

[ ] s
[ ] t
[ ] len 
[ ] s
[ ] - 
[ ] 1
[ ] t

 

se não entende os códigos volte umas páginas do livro, porque os exercícios vem DEPOIS dos conceitos...

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • mês depois...
  • Membro VIP

@Pluto Thayph, pelo que eu entendi, você precisaria associar o número com a opção correspondente. Como citado por @arfneto.

 

Eu não manjo de C, mas acho que seria algo assim:

 

Em 12/06/2020 às 17:34, arfneto disse:

void print_reverse(char* s)
{
    size_t len = strlen(s);

    char* t = [1] + [2] - 1;
  
    while ( [3] >= [4] )
    {
        printf("%c", *t);
        t = [5] [6] [7];
    {
    puts("");
}

 


[ ] s
[ ] t
[ ] len 
[ ] s
[ ] - 
[ ] 1
[ ] t

 

 

Por exemplo, na primeira linha tem:

char* t = [1] + [2] - 1;

 

Acho que poderia preencher com algo como:

[1] s
[ ] t
[2] len 
[ ] s
[ ] - 
[ ] 1
[ ] t

Que seria equivalente a:

char* t = s + len - 1;

 

t seria um ponteiro auxiliar;

s é o ponteiro que apontaria para o início da string que quer inverter. Foi recebido lá no parâmetro da função. Então, creio que as posições da string ficam em sequência.. um após o outro, ou seja: em C, uma string seria como um "conjunto de caracteres".

len seria o tamanho (quantidade de caracteres) dessa string;

Daí, essa linha estaria fazendo t apontar para última posição da string. Já que ele pegaria o resultado da posição de "s somada de "len" posições - 1" para frente, resultando assim com a posição de memória que está apontando para o fim da string. Entende? 

 

Faltaria associar o que seria o 3, 4, 5, 6 e 7.. Cada número seria substituído por alguma coisa.

 

Creio que seja algo por aí. Se tiver dúvidas, sugiro dar uma pesquisa sobre algo como "gerenciamento de ponteiros em C". Veja aulas e exemplos de exercícios resolvidos.... Qualquer coisa posta o que já conseguiu fazer e onde está com dúvidas.

 

  • Curtir 1
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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!