Ir ao conteúdo
  • Cadastre-se

htilil

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

1
  1. @AnsiC, valeu mesmo, cara! Deu certinho aqui! #include <iostream> using namespace std; int main(){ int n, a, b, d=0, i=0, menor=99999, vencedor=0; cin >> n; while(i<n){ cin >> a >> b; if(a>=10 && b>=10){ d=a-b; if(d<0) d=-d; if(d<menor){ menor=d; vencedor=i; } } i++; } if(d==0){ cout << "sem ganhador"; }else{ cout << vencedor; } } No caso, eu fiz as alterações que você sugeriu, e como o primeiro jogador recebe 0, eu coloquei d==0 como condição no ultimo if, pois caso todos os competidores sejam desclassificados, a distancia vai continuar com o valor inicial, que é 0. Mais uma vez, obrigado!
  2. @AnsiC, primeiramente, valeu pela ajuda! Então cara, eu fiz as mudanças que você recomendou, tipo trocar aux por vencedor; só que a posição do primeiro competidor precisa ser 0, então se ele ganhar, vai ter que imprimir 0 na tela. Mesmo assim segui teu conselho para ver se funcionava, o código ficou assim: #include <iostream> using namespace std; int main(){ int n, a, b, d=0, i=0, menor=9999, vencedor=0; cin >> n; while(i<n){ cin >> a >> b; if(a>=10 && b>=10){ d=a-b; if(d<0){ d=-d; if(d<menor){ menor=d; vencedor=i+1; } }else{ d=d; if(d<menor){ menor=d; vencedor=i+1; } } }else{ i++; } i++; } if(vencedor==0){ cout << "sem ganhador"; }else{ cout << vencedor; } } Testando o código, ele dá certo quando as duas pedras são maiores que 10, mas quando uma das duas é menor que 10, ele já sai do while e imprime "sem ganhador"; Exemplo: Entrada 2 10 12 10 11 Saída 2 Que, de acordo com o código, está certo mesmo, agora: Entrada 2 9 10 Saída sem ganhador Daí eu fiquei sem entender, ao invés de acrescentar 1 ao contador e pedir a entrada das pedras de novo, ele saiu do laço :/
  3. Olá pessoal, sou iniciante em c++ e esse programa que eu vou descrever precisa ser feito sem vetor, mais abaixo está o código que eu desenvolvi. Há uma competição de arremesso de pedras, cada competidor arremessa duas pedras; ambas tem que ser arremessadas a pelo menos 10m de distancia, do contrario, o competidor estará desclassificado. Ganha a competição quem arremessar as duas pedras o mais próximo possível uma da outra e a saída será o número do competidor vencedor, sendo que o primeiro competidor recebe 0 e se nenhum competidor conseguir arremessar as duas pedras a pelo menos 10m, imprimir "sem ganhador". #include <iostream> using namespace std; int main(){ //n = numero de competidores, a e b = primeira e segunda pedra //d = distancia, i = contador, menor = para caulcular a menor distancia //aux = variavel auxiliar para guardar a posição do contador int n, a, b, d, i=0, menor=0, aux=0; cin >> n; while(i<n){ cin >> a >> b; if(a>=10 && b>=10){ if(a>b){ d=a-b; //se a variavel que armazena a menor distancia não foi calculada ainda, //então a distancia que esta sendo calculada no momento será armazenada //em "menor", e a variavel auxiliar vai armazenar a posição do //competidor if(menor==0){ menor=d; aux=i; //se algum valor ja foi armazenado em "menor", temos que checar se a //distancia que esta sendo calculada é menor que a distancia armazenada //em menor }else if(menor!=0 && d<menor){ menor=d; aux=i; } }else{ d=b-a; if(menor==0){ menor=d; aux=i; }else if(menor!=0 && d<menor){ menor=d; aux=i; } } //se a ou b, ou mesmo a e b forem menores que 10, o contador parte para o próximo //competidor }else{ i++; } i++; } if(???){ cout << "sem ganhador"; }else{ cout << aux; } } ??? - eu não sei exatamente qual condição devo colocar aqui E aí, como faz?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...