dark_wolk 0 Denunciar post Postado Setembro 19, 2008 eh o seguinte to fazendo alguns problemas da obi e comecei pelos que estao disponiveis no site la na parte do pratique no nivel 1 de programação.. eu jah fiz a dos bits trocados e a da armadilha... so que eu parei na questao do estagiio... Entrada A entrada é constituída de vários conjuntos de teste, representando várias turmas. A primeira linha de um conjunto de testes contém um número inteiro N (1 ≤ N ≤ 1000) que indica o total de alunos na turma. As N linhas seguintes contêm, cada uma, um par de números inteiros C (1 ≤ C ≤ 20000) e M (0 ≤ M ≤ 100), indicando respectivamente o código e a média de um aluno. O final da entrada é indicado por uma turma com N = 0. Exemplo de Entrada 3 1 85 2 91 3 73 5 12300 81 12601 99 98012 76 10111 99 212 99 Saída Para cada turma da entrada seu programa deve produzir três linhas na saída. A primeira linha deve conter um identificador do conjunto de teste, no formato "Turma n", onde n é numerado a partir de 1. A segunda linha deve conter os códigos dos alunos que obtiveram a maior média da turma, separados por um espaço em branco. Os códigos dos alunos devem aparecer na mesma ordem da entrada, e cada um deve ser seguido de um espaço em branco. A terceira linha deve ser deixada em branco. O formato mostrado no exemplo de saída abaixo deve ser seguido rigorosamente. Exemplo de Saída Turma 1 2 Turma 2 12601 10111 212 (esta saída corresponde ao exemplo de entrada acima) no primeiro teste dah beleza... so que no segundo ele ta imprimindo as saidas separadamentes (corresponde ao segundo teste) Turma 2 12601 Turma 3 10111 Turma 4 212 onde esses codigos dos alunos deveriam sair todos na turma 2 nao separados #include<iostream> #define MAX_ALUNOS 1000 using namespace std; int main() { int i, melhor, n,k; int turma = 1; struct aluno { int codigo, media; }; struct aluno alunos[MAX_ALUNOS]; cin>>n; while (n > 0) { for (i = 0; i < n; i++) cin>>alunos[i].codigo>>alunos[i].media; melhor = 0; for (i = 1; i < n; i++) { for(k = 0;k < n;k++) { if (alunos[i].media > alunos[k].media) { cout<<"Turma "<<turma++<<"\n"<<alunos[i].codigo<<"\n\n"; i++;} } } cin>>n; } } eu sei que o erro esta qdo vai mostrar so que eu naum consigo pensar outra forma de resolver, pq para mim do jeito que ta ai eu penso que ele vai imprimir todos os valores juntos e so depois mudar.... se alguem puder me dar uma dica tah bom d+... flws Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Setembro 19, 2008 Opa cara ta resolvendo esses problemas eu jah consegui resolver 21 ;D! to em 130 e pouco no rank... sei q naum é correto + é meio f*** explicar como resolver entaum ai vai: #include <stdio.h> int main(){ int i, indice_melhor[1000], n, j; int turma = 1, iAux; int codigo, media, melhor_media; while (scanf("%d", &n), n > 0){ melhor_media = iAux = 0; j = 1; for (i = 0; i < n; i++) indice_melhor[i] = 0; for (i = 0; i < n; i++) { scanf("%d %d", &codigo, &media); if (media > melhor_media){ melhor_media = media; indice_melhor[0] = codigo; for(int x=1;x<n;x++) indice_melhor[x] = 0; } else { if (media == melhor_media) indice_melhor[j++] = codigo; } } printf("\nTurma %d\n", turma++); for (int h=0;h<j;h++) if(indice_melhor[h] != 0) printf("%d ", indice_melhor[h]); printf("\n"); } return 0; } Compartilhar este post Link para o post Compartilhar em outros sites