Jump to content

Recommended Posts

Posted

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.

Posted

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.

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.