Solução 1:
#include <stdio.h> int main(){ int n,i,prod; printf("Digite o valor de n: "); scanf("%d",&n); prod = 1; i = 1; while(prod < n){ prod = i*(i+1)*(i+2); i = i + 1; } i = i - 1; if(prod == n) printf("Triangular: %d = %d * %d * %d\n", n,i,i+1,i+2); else printf("Não é triangular\n"); return 0; }
Solução 2:
Solução usando o teste de parada dentro do
laço com o comando break
,
de modo a evitar o comando i = i - 1;
após o laço.
#include <stdio.h> int main(){ int n,i,prod; printf("Digite o valor de n: "); scanf("%d",&n); i = 1; while(1){ prod = i*(i+1)*(i+2); if(prod >= n) break; i = i + 1; } if(prod == n) printf("Triangular: %d = %d * %d * %d\n", n,i,i+1,i+2); else printf("Não é triangular\n"); return 0; }
Solução 3:
Solução praticamente idêntica a Solução 1.
Apenas foram mudadas a ordem de alguns comandos e a
inicialização de i, de modo a evitar
o comando i = i - 1;
após o laço.
Essa solução também evita o comando break
usado na solução anterior.
#include <stdio.h> int main(){ int n,i,prod = 1; printf("Digite o valor de n: "); scanf("%d",&n); i = 0; while(prod < n){ i = i + 1; prod = i*(i+1)*(i+2); } if(prod == n) printf("Triangular: %d = %d * %d * %d\n", n,i,i+1,i+2); else printf("Não é triangular\n"); return 0; }
Solução 4:
Solução mais compacta.
#include <stdio.h> int main(){ int n,i; printf("Digite o valor de n: "); scanf("%d",&n); i = 1; while(i*(i+1)*(i+2) < n){ i = i + 1; } if( i*(i+1)*(i+2) == n) printf("Triangular: %d = %d * %d * %d\n", n,i,i+1,i+2); else printf("Não é triangular\n"); return 0; }
Solução:
#include <stdio.h> int main(){ int n,i,num,maior; printf("Digite o tam da seq: "); scanf("%d",&n); printf("Digite um num da seq: "); scanf("%d",&maior); i = 2; while(i <= n){ printf("Digite um num da seq: "); scanf("%d",&num); if(num > maior) maior = num; i = i + 1; } printf("Maior inteiro: %d\n",maior); return 0; }
Solução 1:
#include <stdio.h> int main(){ int n,i,num,ant,crescente = 1; printf("Digite o tam da seq: "); scanf("%d",&n); printf("Digite um num da seq: "); scanf("%d",&ant); i = 2; while(i <= n){ printf("Digite um num da seq: "); scanf("%d",&num); if(num <= ant) crescente = 0; ant = num; i = i + 1; } if(crescente) printf("Crescente\n"); else printf("Não crescente\n"); return 0; }
Solução 2:
Quando crescente
recebe 0 (Falso), seu valor não
é mais alterado, logo já sabemos qual será a resposta final
nesse caso e, portanto, não há necessidade de continuar
o laço.
O laço pode ser interrompido com o comando break
.
Note, porém, que a sequência de números
não será lida completamente. No entanto,
no caso desse programa, isso não é um problema.
#include <stdio.h> int main(){ int n,i,num,ant,crescente = 1; printf("Digite o tam da seq: "); scanf("%d",&n); printf("Digite um num da seq: "); scanf("%d",&ant); i = 2; while(i <= n){ printf("Digite um num da seq: "); scanf("%d",&num); if(num <= ant){ crescente = 0; break; } ant = num; i = i + 1; } if(crescente) printf("Crescente\n"); else printf("Não crescente\n"); return 0; }
Solução 3:
Uma terceira solução usando uma
condição extra de parada do laço, ao invés de usar o
comando break
.
Quando crescente
recebe 0 (Falso), seu valor não
é mais alterado, logo não há necessidade de continuar
o laço nesse caso:
#include <stdio.h> int main(){ int n,i,num,ant,crescente = 1; printf("Digite o tam da seq: "); scanf("%d",&n); printf("Digite um num da seq: "); scanf("%d",&ant); i = 2; while(i <= n && crescente){ printf("Digite um num da seq: "); scanf("%d",&num); if(num <= ant) crescente = 0; ant = num; i = i + 1; } if(crescente) printf("Crescente\n"); else printf("Não crescente\n"); return 0; }