Zorba_97 0 Denunciar post Postado Dezembro 4, 2013 Eu não consigo terminar o problema proposto pelo meu professor do link a seguir: http://dojopuzzles.com/problemas/exibe/lampadas-no-corredor/ Segue o código: #include <stdio.h> main() { int i,j,numLamp,vet[50]; printf("Digite, respectivamente, o numero de lampadas e voltas a ser dadas:\n"); scanf("%d",&numLamp); scanf("%d",&j); for(i=1;i<=j;i++) { for(j=1;j<=numLamp;j++) { if(j%i==0) vet[j]=vet[j]?0:1; } } for(i=1;i<=numLamp;i++) { if(vet[j]==1) printf("On\n"); else printf("Off\n"); } getch(); } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Dezembro 4, 2013 Não entendi isso aqui: vet[j]=vet[j]?0:1; for(i=1; i<=len; i++) { for(j=0; j<len; j++) { if (j+1 % i == 0) vet[j] = !vet[j]; } } Compartilhar este post Link para o post Compartilhar em outros sites
Zorba_97 0 Denunciar post Postado Dezembro 5, 2013 O professor disse que os operadores "?" e ":" juntos funcionam como os operadores "if" e "else" respectivamente para alguns casos e eu poderia usá-los. E atribuo valor 0 para desligar os interruptores e 1 para ligá-los. Minhas dúvidas são: estou certo fazendo certo em atribuir dessa forma e como imprimo na tela o output como o site do dojo diz? E Isis, eu não entendi como funciona isso: vet[j] = !vet[j]; Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Dezembro 5, 2013 O teu ternário à primeira vista da a entender que vc errou no sinal (o clássico '=' no lugar do '=='). O '!' é operador de negação (NOT). Como os valores do array se comportam como booleanos é mais simples que usar ternário. P/ imprimir: printf("["); for (int i = 0; i<len; i++) printf("%s", (vet[i]?"on":"off")); if (i < len-1) printf(", "); printf("]"); Compartilhar este post Link para o post Compartilhar em outros sites
Zorba_97 0 Denunciar post Postado Dezembro 8, 2013 Eu acho que consegui terminar aqui o código. Eu coloco 3 como dado de entrada e imprime "on, off off" conforme o site do dojo mostra.Obrigado.O código:#include <stdio.h>main(){ int i,j,len,vet[50]; printf("Input: "); scanf("%d",&len); system("cls"); printf("Output:\n\n"); for(i=1;i<=len;i++) { for(j=1;j<len;j++) { if(j+1%i==0) vet[j]=!vet[j]; } } printf("["); for(i=0;i<len;i++) { printf("%s",(vet?" ON ":" OFF ")); if(i<len-1) printf(" "); } printf("]\n\n"); system("pause");} Compartilhar este post Link para o post Compartilhar em outros sites