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








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts