Inverter Cadeia de Caracteres

1. Inverter Cadeia de Caracteres

JO Mota
jozinha.smota

(usa Ubuntu)

Enviado em 12/06/2008 - 11:10h

Amigos,
como faço para inverter a ordem dos caracteres de uma cadeia de caracteres em C?
tipo: TADS ficar> SDAT

se alguém puder me ajudar agradeço.


  


2. Re: Inverter Cadeia de Caracteres

Denis Doria
thuck

(usa Debian)

Enviado em 12/06/2008 - 14:19h

Bem... procure estudar a biblioteca para strings do C <string.h>:

http://br.geocities.com/sdiasneto/c_int/strings.htm

E neste caso específico olhe a função:

strrev( )


3. Re: Inverter Cadeia de Caracteres

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 12/06/2008 - 16:24h

Cara, eu sou contra ficar codando pra outras pessoas, pois acho que fazer seus proprios codigos é o melhor jeito de aprender.

Mas por experiencia propria, sei que se você realmente quiser ser programador, vai ler o codigo ate entende-lo, e nao simplesmente copia-lo. E o ato de ler um codigo facilita, e muito, o aprendizado. Boa programação :D


// reverse.c

#include <stdio.H>

char *inverter (char *str)
{
int len = strlen(str);
char *rev = (char*)malloc(len * sizeof(char));
register int i,j;

for (i = len-1, j=0; i >= 0; i--,j++) rev[j] = str[i];

return rev;
}

int main(void)
{
printf("%s\n", inverter("Viva o linux"));
return 0;
}



4. Re: Inverter Cadeia de Caracteres

Fagner Amaral de Souza Candido
f_Candido

(usa Ubuntu)

Enviado em 12/06/2008 - 22:56h

Concordo com o colega acima. Usar algo já feito é super legal. Não reiventar a roda.... Mas neste caso, é uma questão mais de aprendizado, logo se não fizer no braço, pelo menos um exemplo... Programador de copia e cola não vale.

Espero ter ajudado,

Abraços


5. Re: Inverter Cadeia de Caracteres

JO Mota
jozinha.smota

(usa Ubuntu)

Enviado em 13/06/2008 - 11:28h

IDEM

Amigos,
muitíssimo obrigada a todos.



6. Re: Inverter Cadeia de Caracteres

Geraldo José Ferreira Chagas Júnior
gjr_rj

(usa Debian)

Enviado em 17/06/2008 - 18:36h

O algorítmo do colega acima é muito bom aprender, é muito usado em comp. graf. para inversão de imagem.

Não sei se esse é o caso, mas o seu problema parece ser um clássico problema de pilha, para entender o conceito (first in, last out).

seira algo +- assim.

typedef struct stno {
char valor;
struct tno *ant;
}tno;

tno *topo;
tno *base;

char *inverter (char *str)
{
topo = base;

int len = strlen(str);
char *rev = (char*)malloc(len * sizeof(char));

int i;

for (i = 0; i <= len-1; i++) push (str[i]);
for (i = 0; i <= len-1; i++) pop (rev[i]);

return rev;
}

void push (char c)
{
tno *temp = (tno*)malloc(sizeof(tno));
temp->valor=c;
temp->ant=topo;
topo=temp;
}

void pop (char c)
{
tno *temp;
if (topo)
{
temp=topo;
c=topo->valor;
topo=topo->ant;
free (temp);
}
}

int main(void)
{
printf("%s\n", inverter("Viva o linux"));
return 0;
}

Obs.: Fiz rápido e não testei o código. Pode ter algum erro.


7. Erro no código

Carlos R.A.Ferraz
andradeferraz

(usa Ubuntu)

Enviado em 12/05/2012 - 13:26h

Eu sou iniciante, estava tentando entender o código, entretanto ele está dando erro. Não sei como acertá-lo, sou iniciante. Gostaria de ver este código correto para entender este assunto.
Atenciosamente
Carlos Ferraz