Pular para o conteúdo

ENTENDIMENTO CODIGO ABAIXO.

Responder tópico
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
  • Denunciar
  • Indicar

1. ENTENDIMENTO CODIGO ABAIXO.

Enviado em 04/09/2008 - 18:01h

#include <stdio.h>
int main() {
int i, j;
int m[6][2] = {1, 1, 2, 2, 3, 3, 0, 0, 5, 5, 6, 6};
for(i=0; i<6; i++) {
for(j=0; j<2; j++)
if (m[i][j] != 0) goto rejeita;
printf("Primeira linha so com zeros: %d \n", i+1);
break;
rejeita:;
}
}
GOSTARIA DE SABER COMO EU FARIA PARA REESCREVER ESSE CODIGO SEM UTILIZAR O COMANDO GOTO.

E SE E MAIS LEGIVEL, UTILIZAR GOTO, OU FICA MAIS FACIL DE ENTENDER SE NAO UTILIZAR O GOTO.

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

2. return;

Enviado em 04/09/2008 - 18:12h

Neste caso tu simplesmente manda a função retornar sem argumentos.






#include <stdio.h>
int main() {
int i, j;
int m[6][2] = {1, 1, 2, 2, 3, 3, 0, 0, 5, 5, 6, 6};
for(i=0; i<6; i++) {
for(j=0; j<2; j++)
if (m[i][j] != 0) return;
printf("Primeira linha so com zeros: %d \n", i+1);
break;
}
}

3. Re: ENTENDIMENTO CODIGO ABAIXO.

Enviado em 04/09/2008 - 18:37h

Eu prefiro sem goto. Sua código não volta a primira linha só com 0 ele volta em que linha está o primeiro zero. Seguindo a mesma lógica:

#include <stdio.h>
int main() {
int i, j;
int m[6][2] = {1, 1, 2, 2, 3, 3, 0, 0, 5, 5, 6, 6};
i=0;
j=0;
while (i<6 && m[i][j]!=0) {
j = 0;
while (j<2 && m[i][j]!=0 )
j++;
i++;
}
if (i<6)
printf("Primeira linha so com zeros: %d \n", i+1);
}


4. Re: ENTENDIMENTO CODIGO ABAIXO.

Enviado em 04/09/2008 - 18:57h

economize um laço for. nesse exemplo simples pode não fazer diferença em termos de execução e uso de recursos, mas em um laço indefinido ou longo fará diferença - ciclos de máquina são preciosos!
o gcc por si só fará essa jogada por você, porém quanto mais "mastigado" você der seu código a ele, melhor.

#include <stdio.h>
int main() {
int i, j;
int m[6][2] = {1, 1, 2, 2, 3, 3, 0, 0, 5, 5, 6, 6};
for(i=0; i<6; i++,j=0) {
if(m[i][j] == 0 && m[i][j+1] == 0)
{
printf("Primeira linha so com zeros: %d \n", i+1);
break;
}
}
}

5. Re: ENTENDIMENTO CODIGO ABAIXO.

Enviado em 04/09/2008 - 19:10h

Mslomp, não faltou iniciar o j?

6. Re: ENTENDIMENTO CODIGO ABAIXO.

Enviado em 04/09/2008 - 19:12h

é, corrigi agora... pitfall... :D

7. Re: ENTENDIMENTO CODIGO ABAIXO.

Enviado em 05/09/2008 - 13:59h

Tópico respondido... Mas só um detalhe: Jamais havia visto um goto na minha vida. Legal, e a solução sugerida foi muito boa.


Abraços

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Responder tópico

Entre na sua conta para responder.

Fazer login para responder