1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Solucoes para código C

Olá...

Me deparei com esse exercício que venho estudando em C, tentei solucionar mas não sei se tive o pensamento correto.

1) Foi pedido a um programador que escrevesse uma função em C int igual(char *s1, char *s2); para descobrir se as cadeias s1 e s2 são iguais. Abaixo encontram-se três alternativas de solução. Indique (e justifique) qual/quais delas não é/são aceitável/aceitáveis.

/* solução 1 */
int igual(char *s1, char *s2) {
return s1==s2;
}
/* solução 2 */
int igual(char *s1, char *s2) {
if (s1[0]=='\0')
return (s2[0]=='\0');
if (s2[0]=='\0')
return 0;
return (s1[0]==s2[0]) && igual(++s1,++s2);
}
/* solução 3 */
int igual(char *s1, char *s2) {
int i;
for(i=0; (s1[i]!='\0') && (s2[i]!='\0'); i++)
if (s1[i]!=s2[i])
return 0;
/* aqui um dos dois caracteres e' nulo! */
return s1[i]==s2[i];
}

Penso que a primeira não está nada correta. Ela só vai verificar se o endereço está correto. Já a segunda e a terceira solução, ao meu ver, estão corretas pois elas verificarão se os caracteres das duas cadeias tem o mesmo número e são iguais. Entretanto, fico em dúvida quanto ao que significa esse &amp que é descrito duas vezes. Cheguei a dar uma procurada na internet, e entendi que esse &amp descrito 2x seria o mesmo que &&. Se alguém puder complementar minhas respostas e me ajudar com essa dúvida, eu agradeceria mto :)

abçs

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags c ou faça a sua própria pergunta.