Há dois cangurus sobre um eixo-x, prontos para saltar na direção positiva (isto é, em direção ao infinito positivo). O primeiro canguru começa na posição x1 e se move a uma velocidade de v1 metros por salto. A segunda canguru começa na posição x2 e se move a uma velocidade de v2 metros por salto. Tendo em conta os locais de partida e taxas de movimentação para cada canguru, você pode determinar se eles nunca vão pousar no mesmo local, ao mesmo tempo?
Entrada: Uma única linha de quatro inteiros separados por espaços que denota os respectivos valores de x1, v1, x2, e v2.
0<=x1 , x2<=10000
1<=v1 , v2<=10000
Saída: imprimir SIM se eles podem pousar no mesmo local, ao mesmo tempo; caso contrário, imprima NAO.
Observações: Os dois cangurus devem pousar no mesmo local depois de fazer o mesmo número de saltos.
EXEMPLO1
Entrada: 0 3 4 2
Saída: SIM
Explicação: 1. 0 -> 3 -> 6 -> 9 ->12
2. 4 -> 6 ->8 -> 10 ->12
Depois de 4 pulos eles se encontraram.
EXEMPLO 2
Entrada: 0 2 5 3
Saída: NAO
Explicação: O segundo canguru tem uma localização inicial, que está à frente (mais a direita) da localização inicial do primeiro canguru (ou seja, x2 > x1). Porque o segundo canguru se move a um ritmo mais rápido (o que significa v2 > v1) e já está à frente do primeiro canguru, o primeiro canguru nunca será capaz de alcançá-lo. Assim, imprima não.
Respostas
respondido por:
1
#include<stdio.h>
#include<stdlib.h>
int resposta(int canguru, cangurus[][2], int aux);
int posicao(int aux);
int velocidade(int aux);
void chegarounao(canguru[][2]);
int main(){
int cangurus[2][2];
resposta(2 ,cangurus, 0);
system("pause");
return 0;}
int resposta(int canguru, int dados[][2] int aux){
if(aux<canguru){
dados[aux][0]=posicao(aux);
dados[aux][1]=velocidade(aux);
return resposta(canguru, dados, aux+1); }
printf("\nO um canguru eh capaz de alcancar o outro?\n");
chegarounao(dados);
return 0;}
int posição(int aux){
int pos;
printf("Insira a posicao inicial do canguru %d: ", aux+1);
scanf("%d", &pos);
if((pos<0)&&(pos>10000)){
printf("Posicao invalida!\n\n");
return posicao(aux);}
return pos; }
int velocidade(int aux){
int vel;
printf("Insira a velocidade de salto do canguru %d: ", aux+1);
scanf("%d", &vel);
if((vel<1)&&(vel>10000)){
printf("Velocidade invalida!\n\n");
return velocidade(aux); }
return vel;}
void chegarounao(int canguru[][2]){
if((canguru[0][0]<canguru[1][0])){
if((canguru[0][1]<=canguru[1][1])) printf("Nao\n\n");
else printf("Sim\n\n"); }
else{
if((canguru[0][0]>canguru[1][0])){
if((canguru[0][1]>=canguru[1][1])) printf("Nao\n\n");
else printf("Sim\n\n"); }
else printf("Sim\n\n"); } }
#include<stdlib.h>
int resposta(int canguru, cangurus[][2], int aux);
int posicao(int aux);
int velocidade(int aux);
void chegarounao(canguru[][2]);
int main(){
int cangurus[2][2];
resposta(2 ,cangurus, 0);
system("pause");
return 0;}
int resposta(int canguru, int dados[][2] int aux){
if(aux<canguru){
dados[aux][0]=posicao(aux);
dados[aux][1]=velocidade(aux);
return resposta(canguru, dados, aux+1); }
printf("\nO um canguru eh capaz de alcancar o outro?\n");
chegarounao(dados);
return 0;}
int posição(int aux){
int pos;
printf("Insira a posicao inicial do canguru %d: ", aux+1);
scanf("%d", &pos);
if((pos<0)&&(pos>10000)){
printf("Posicao invalida!\n\n");
return posicao(aux);}
return pos; }
int velocidade(int aux){
int vel;
printf("Insira a velocidade de salto do canguru %d: ", aux+1);
scanf("%d", &vel);
if((vel<1)&&(vel>10000)){
printf("Velocidade invalida!\n\n");
return velocidade(aux); }
return vel;}
void chegarounao(int canguru[][2]){
if((canguru[0][0]<canguru[1][0])){
if((canguru[0][1]<=canguru[1][1])) printf("Nao\n\n");
else printf("Sim\n\n"); }
else{
if((canguru[0][0]>canguru[1][0])){
if((canguru[0][1]>=canguru[1][1])) printf("Nao\n\n");
else printf("Sim\n\n"); }
else printf("Sim\n\n"); } }
KuroeJin:
a função(abaixo da main) int posição(int aux){...}, ficaria: int posicao(int aux){}.(mantenha o que tem entre {})
Perguntas similares
6 anos atrás
6 anos atrás
6 anos atrás
9 anos atrás
9 anos atrás
9 anos atrás
9 anos atrás