View Full Version : [C]exercicio basico


Ruanes
17-06-2008, 21:29
oi tenho aqui um exercicio para fazer:

Faça um programa que inverta uma string: leia a string com gets e armazene-a invertida noutra string. Use o comando for para varrer a string até ao seu final.

O que já fiz foi

#include <stdio.h>
int main()
{
char string[100];
char stringalt[100];
int i;
gets(string);
for (i=0;string[i]!='\0';i++)
{
}
}

arconada
17-06-2008, 21:34
Não era suposto colocares a duvida? do estilo: Não sei fazer isto podiam me ajudar... ou queres que coloquem o código?

Mr. Brightside
17-06-2008, 21:39
A forma mais simples é percorreres do fim para o início e ires colocando o que encontras na nova string. (Não te esqueceas de adicionar depois o NUL no fim.)

Mais simples que isto não estou a ver.

h4des
17-06-2008, 22:58
int i=strlen(string),x;

for(x=0; x<=strlen(string); x++) {
stringalt[x] = string[i];
i--;
}

Ruanes
18-06-2008, 21:10
o teu codigo nao funciona aparece-me isto:


Escreve uma frase: frase exemplo


A frase que escreves-te foi: frase exemplo
Frase alterada: f Æ|└õÿ|Á!Ç|◄ Ç| ▓

arconada
18-06-2008, 21:51
o teu codigo nao funciona aparece-me isto:


onde é que colocaste o codigo que ele te deu?

MPalhas
18-06-2008, 22:39
int i=strlen(string),x;

for(x=0; x<=strlen(string); x++) {
stringalt[x] = string[i];
i--;
}




duas correcções:
int x, i=strlen(string)-1; //se a string tiver 10 chars, vai de 9 a 0, senão começava logo por escrever o caracter nulo

for (x=0; x<strlen(string); x++) {
stringalt[x] = string[i];
i--;
}
stringalt[x]='\0'; //caracter nulo no final da nova string

Rui_Carlos
19-06-2008, 01:14
Meter um strlen no for não é lá muito inteligente, pois a cada iteração vai ter que calcular o tamanho da string...

MPalhas
19-06-2008, 10:07
nada que também não se corriga facilmente. isso também já são optimizações

Ruanes
19-06-2008, 11:30
Obrigado ja consegui e já percebi o que é que tinha mal:

No codigo do MPAlhas:
int x, i=strlen(string)-1; //se a string tiver 10 chars, vai de 9 a 0, senão começava logo por escrever o caracter nulo

for (x=0; x<strlen(string); x++) {
stringalt[x] = string[i];
i--;
}
stringalt[x]='\0'; //caracter nulo no final da nova string

tinha-mos que primeiro usar o gets e depois é declarava-mos a variavel i.