stallman Postado Janeiro 16, 2009 Denunciar Share Postado Janeiro 16, 2009 (editado) Olá! Comecei a aprender C ontem à noite mas estou travado com uma dúvida faz várias horas. Apesar de ser bem iniciante, tentei me explicar como pude. Lá vai:Tenho o seguinte código:#include <stdio.h> int main() { int N=0,X,Y,U,V,Xa=0,Ya=10000,Ua=10000,Va=0,count=1,ans; while(count<999999) { scanf("%d", &N); while(N>0) { scanf("%d %d %d %d", &X, &Y, &U, &V); if(X>Xa) { Xa=X; } if(Y<Ya) { Ya=Y; } if(U<Ua) { Ua=U; } if(V>Va) { Va=V; } N-=1; } printf("Teste %d\n", count); if(Xa>Ua) { printf("nenhum\n\n"); } else if(Ya<Va) { printf("nenhum\n\n"); } else { printf("%d %d %d %d", Xa, Ya, Ua, Va); } count++; } return 0; }O que acontece é que o programa se comporta dessa maneira:E preciso fazer com que se comporte dessa maneira (ler tudo, e quando aparecer uma entrada 0 mandar o printf de todos os testes):Obs: nas imagens, a entrada está em cinza padrão e eu pintei a saída de verde)É basico: armazenar os printf e jogar tudo no final. Mas não faço idéia de como fazer isso.Sei que pra resolver é só processar os printf do final.Mas se precisarem entender o exercício, a explicação dele está aquiEspero que eu tenha conseguido explicar.Obrigado desde já! Editado Janeiro 16, 2009 por stallman Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 André Santos Postado Janeiro 16, 2009 Denunciar Share Postado Janeiro 16, 2009 (editado) Pra esse tipo de problema(dessas olimpiadas e sites de desafios), você pode ir imprimindo a output enquanto o programa roda. Não é preciso ler tudo para depois imprimir.Só não esqueça de adicionar a quebra de linha '\n' entre os testes! Editado Janeiro 16, 2009 por André Santos Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 raphael_suporte Postado Janeiro 16, 2009 Denunciar Share Postado Janeiro 16, 2009 na verdade o que parece ser diferente, é que o seu printf está dentro do loop, e na verdade você teria que coloca-lo em algum tipo de vetor e depois da um printf.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 André Santos Postado Janeiro 16, 2009 Denunciar Share Postado Janeiro 16, 2009 Como eu disse, nesses tipos de exercicios não é preciso fazer isso. O que acontece, é que nessas tarefas(de olimpiadas), as entradas no seu programa são feitas atraves de um arquivo e lidas "todas de uma vez", e o correto é ir imprimindo em tempo de execução mesmo, e não no fim.No linux, para ler as entradas de um arquivo você faz assim:./programa > ArquivoDeEntradaAssim, o seu programa vai imprimir a saida referente as entradas que você digitou em ArquivoDeEntrada.Não é necessário ler tudo, para só no fim, imprimir todos os n Testes. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
stallman
Olá! Comecei a aprender C ontem à noite mas estou travado com uma dúvida faz várias horas. Apesar de ser bem iniciante, tentei me explicar como pude. Lá vai:
Tenho o seguinte código:
O que acontece é que o programa se comporta dessa maneira:
E preciso fazer com que se comporte dessa maneira (ler tudo, e quando aparecer uma entrada 0 mandar o printf de todos os testes):
Obs: nas imagens, a entrada está em cinza padrão e eu pintei a saída de verde)
É basico: armazenar os printf e jogar tudo no final. Mas não faço idéia de como fazer isso.
Sei que pra resolver é só processar os printf do final.
Mas se precisarem entender o exercício, a explicação dele está aqui
Espero que eu tenha conseguido explicar.
Obrigado desde já!
Editado por stallmanLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.