gotak Posted May 13, 2009 at 07:22 PM Report #263938 Posted May 13, 2009 at 07:22 PM Ola' não é costume meu postar muitas coisas aqui mas tou com grandes dúvidas num problemas em C ? /* 11º caso: */ /* char s[TAMANHO_MAXIMO]="012345678" ; char s_copy[TAMANHO_MAXIMO]; int i=0; while(s[i]!='\0') { s_copy[i]=s[i]; i++; } printf("%i\n\n",i); for(int j=0;j<i;j++) { s[j]=s_copy[i-1-j]; printf("%i: s_final: %c ; s_inicial: %c\n",j,s[j],s_copy[j]); } */ /* 12º caso: */ /* char s[TAMANHO_MAXIMO]="0123\05678" ; char s_copy[TAMANHO_MAXIMO]; int i=0; while(s[i]!='\0') { s_copy[i]=s[i]; i++; } printf("%i\n\n",i); for(int j=0;j<i;j++) { s[j]=s_copy[i-1-j]; printf("%i: s_final: %c ; s_inicial: %c\n",j,s[j],s_copy[j]); } */ /* 13º caso: */ /* char s[TAMANHO_MAXIMO]={'0','1','2','3','\0','5','6','7','8','\0'} ; char s_copy[TAMANHO_MAXIMO]; int i=0; while(s[i]!='\0') { s_copy[i]=s[i]; i++; } printf("%i\n\n",i); for(int j=0;j<i;j++) { s[j]=s_copy[i-1-j]; printf("%i: s_final: %c ; s_inicial: %c\n",j,s[j],s_copy[j]); } */ } Gostaria se pudessem explicar o que faz cada caso. Obrigado.
bruno1234 Posted May 13, 2009 at 08:48 PM Report #263960 Posted May 13, 2009 at 08:48 PM Já correste isso? Mostra tb o output para ser mais fácil de analisar. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
nunocanc Posted May 14, 2009 at 07:42 AM Report #264027 Posted May 14, 2009 at 07:42 AM Boas, Pelo que estive a analisar (de notar que não corri o código), Este pedaço de código int i=0; while(s[i]!='\0') { s_copy[i]=s[i]; i++; } printf("%i\n\n",i); está a copiar os caracteres das posições do array "s" para o array "s_copy". Por fim imprime para a consola o último indicie incrementado. Ele faz esta cópia começando da posição 0 (zero) até à posição definida pelo '\0', neste caso 9. no pedaço de código seguinte for(int j=0;j<i;j++) { s[j]=s_copy[i-1-j]; printf("%i: s_final: %c ; s_inicial: %c\n",j,s[j],s_copy[j]); } é importante aqui é saber fazer contas 😄 . o i=8, o j=0 e vai até i (8) então: i - 1 - j = 9 - 1 - 0 = 8 ... e por ai adiante, que concluindo vai invertendo as posições do array "s_copy" no array "s". os outros dois casos fazem a mesma coisa com duas alterações: 12º Caso Existe um '\0' no meio do array. isto significa que na memoria o array está partido em dois arrays consecutivos. Ele copia até ao 3 e depois inverte, 13º Caso é igual ao caso anterior, somente mostra outra maneira de inicializar um array de caracteres. Este exemplos de manipulação de memória são clássicos e importantes na aprendizagem. Espero que consigas os entender.
gotak Posted May 14, 2009 at 08:53 PM Author Report #264244 Posted May 14, 2009 at 08:53 PM bem, como podem ver eu ainda estou a aprender "C" ! Só que tenho muitas dúvidas nesta parte da matéria. Obrigado a todos ! 😄
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now