terça-feira, 19 de dezembro de 2017

Problema de realizar a dobra com sua espaçonave


Compartilhe!

Neste problema em C abaixo não só devemos calcular a possibilidade de realizar uma dobra da nossa espaçonave, verificando antes se temos tempo e combustível necessários, mas também considerar que nossa nave está perdendo combustível incessantemente e atualmente está vazia, porém sendo reabastecida em movimento; logo ela deve realizar a dobra assim que seu tanque tiver o necessário de combustível antes que o tempo acabe.

A entrada consiste no tempo disponível e na quantidade de combustível necessária para realizar a dobra. Em seguida temos uma série de valores de entrada, um valor para cada unidade de tempo, que significa o fluxo de combustível no tanque.

Na saída deve-se dizer se a dobra foi realizada ou não e em que tempo.

#include <stdio.h>

int main(){

 int t, c, fluxoValores, i, dobrou, tempo;

 scanf("%d %d", &t,&c);//Ler tempo e quantidade de combustível necessário para realizar a dobra.
 c = -c;
 
 i = 0; dobrou = 0; //Seta que ainda não fez a dobra.
 for (; i < t; i++){

  scanf("%d", &fluxoValores);
  c += fluxoValores; 
  
  if (!dobrou && c>=0){//Se não dobrou ainda e for maior igual a zero, significa que alcançou o necessário para a dobra, então guardo o tempo.
   tempo = i;
   dobrou = 1;
  }

 }
 
 if (dobrou){//Se for um valor positivo, significa que há combustível suficiente para realizar a dobra e diz em que tempo.
  printf("sim\n%d\n", tempo+1);
 }
 else {//Se negativo, o contrário do comentário anterior.
  printf("nao\n%d\n", i+1);
 }

 return 0;
}