ENTENDIMENTO CODIGO ABAIXO.

1. ENTENDIMENTO CODIGO ABAIXO.

ale
aoshi001

(usa Kurumin)

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.



  


2. return;

Pedro
javamizer

(usa Suse)

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.

Eduardo Pelizzari de Andrade
edupersoft

(usa Manjaro Linux)

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.

Marcelo A. B. Slomp
mslomp

(usa Slackware)

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.

Eduardo Pelizzari de Andrade
edupersoft

(usa Manjaro Linux)

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

Mslomp, não faltou iniciar o j?


6. Re: ENTENDIMENTO CODIGO ABAIXO.

Marcelo A. B. Slomp
mslomp

(usa Slackware)

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

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


7. Re: ENTENDIMENTO CODIGO ABAIXO.

Fagner Amaral de Souza Candido
f_Candido

(usa Ubuntu)

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






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts