Ir ao conteúdo
  • Cadastre-se

Onde estou errando? Pascal(Tetris)


Posts recomendados

Boa tarde!
Estou fazendo um código em pascal para um exercício que é corrigido por um sistema online( ou seja, verifica todas possibilidades)
Realizo todos os testes propostos e alguns meus e mesmo assim o site continua dizendo que há algum erro!
 
o Problema:

Tarefa
Como você possui conhecimentos de programação, acabou sendo designado pela turma para escrever um programa para imprimir a classificação final do campeonato, a partir das pontuações de cada jogador.

Entrada
A entrada é composta de vários conjuntos de teste. A primeira linha de um conjunto de testes contém um número inteiro J, que indica o número de jogadores que participaram do campeonato. A seguir, para cada jogador há duas linhas na entrada: a primeira possui o nome do jogador (formado apenas por letras, sendo apenas a inicial em maiúscula, e com no máximo 15 letras), e a segunda possui as 12 pontuações que o jogador obteve, separadas por espaço. As pontuações são inteiros entre 0 e 1000. O final da entrada é indicado por um conjunto de teste com J = 0.

Saída
Para cada conjunto de teste, o seu programa deve escrever uma linha contendo o identificador do conjunto de teste, no formato “Teste n”, onde n é numerado seqüencialmente a partir de 1. A seguir, o seu programa deve escrever a classificação final no campeonato, utilizando uma linha para cada participante. Cada linha deve conter três informações, separadas por um espaço em branco: a classificação do jogador, a sua pontuação final, e o seu nome. A classificação de um jogador é igual a 1 mais o número de jogadores que obtiveram pontuação maior do que a sua. Em caso de empate, os jogadores devem ser ordenados em ordem alfabética. Depois de toda a classificação, deve ser deixada uma linha em branco. O formato do exemplo de saída abaixo deve ser seguido rigorosamente.

Exemplo
Entrada:
4
Zezinho
100 123 133 333 400 300 129 200 360 340 200 600
Luizinho
60 50 120 250 170 190 190 220 260 270 290 300
Carlinhos
10 10 20 10 10 10 10 20 20 20 20 20
Joaozinho
200 300 400 400 500 500 500 600 650 650 700 810
3
Pedrinho
100 100 200 200 300 300 400 400 500 500 600 600
Huguinho
50 100 200 200 300 300 500 500 400 400 600 700
Zezinho
100 100 100 100 100 100 100 100 100 100 100 100
0

Saída:
Teste 1
1 5200 Joaozinho
2 2518 Zezinho
3 2020 Luizinho
4 150 Carlinhos

Teste 2
1 3500 Huguinho
1 3500 Pedrinho
3 1000 Zezinho
 

Restrições
0 <= J <= 1000 (J = 0 apenas para indicar final da entrada)
0 <= pontuação em uma partida <= 1000 
1 <= tamanho dos nomes, em número de letras <= 15
 
 
 
Meu programa:

program tetris;var pontos,jogo,posi: array[0..1010] of longint;nomes: array[0..1010] of string;y,z,w,i,x,maior,menor,j,a,b,k: longint;s: string;begina:=0;y:=1;k:=0;while y<>0 do beginreadln(y);if y<>0 then begink:=k+1;for i:=1 to y do beginreadln(nomes[i]);for w:=1 to 12 do begin //Lê o nome do primeiro atleta e coloca no vetor nome e registra em 12 posições de um vetor as pontuações e a somaread(z);a:=(a+z);jogo[w]:=z;end;readln;menor:=jogo[1];maior:=jogo[1];for x:=1 to 11 do begin //Compara as doze pontuações e registra a menor e a maiorif menor>jogo[x+1] then beginmenor:=jogo[x+1];end;if maior<jogo[x+1] then beginmaior:=jogo[x+1];end;end;j:=(maior+menor);a:=(a-j); // subtrai a menor e a maior do pontuação do somatorio geralpontos[i]:=a; // registra a soma da pontuação no vetor pontosa:=0;posi[i]:=i; //coloca as posições no vetor posição sem ordenarend;for i:=1 to y do beginfor x:=1 to (y-1) do begin //Ordena os vetores a partir do vetor pontos, ordenando pontos e nomesif pontos[x]<pontos[x+1] then beginb:=pontos[x];s:=nomes[x];pontos[x]:=pontos[x+1];nomes[x]:=nomes[x+1];pontos[x+1]:=b;nomes[x+1]:=s;end;if (pontos[x]=pontos[x+1]) then begin //Coloca a mesma posição no vetor posi, para pontuações iguaisposi[x+1]:=posi[x];if (nomes[x]>nomes[x+1]) then begin //Ordena alfabeticamente os nomes do mesma pontuaçãos:=nomes[x];nomes[x]:=nomes[x+1];nomes[x+1]:=s;end;end;end;end;writeln('Teste ',k);for i:=1 to y do begin //Escreve a posição, pontuação e nomewriteln(posi[i],' ',pontos[i],' ',nomes[i]);end;writeln;end;end;end.
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.


1) SOBRE A ENTRADA DE DADOS

Esses devem devem ser digitados no console manualmente ou deveria ser através de leitura de arquivos ou alguma outra automação??



2) SOBRE "ALGUM ERRO"
 

Boa tarde!
Estou fazendo um código em Pascal para um exercício que é corrigido por um sistema online (ou seja, verifica todas possibilidades).
Realizo todos os testes propostos e alguns meus e mesmo assim o site continua dizendo que há algum erro!

Que site?  Que erros?


Testei com o dados, e deu "exatamente" como você postou...

Segue a tela do console:

E:\Simon\DropBox\Meus Programas Portáteis\Programação\Notepad++ 6.8.3>echo off4Zezinho100 123 133 333 400 300 129 200 360 340 200 600Luizinho60 50 120 250 170 190 190 220 260 270 290 300Carlinhos10 10 20 10 10 10 10 20 20 20 20 20Joaozinho200 300 400 400 500 500 500 600 650 650 700 810Teste 11 5200 Joaozinho2 2518 Zezinho3 2020 Luizinho4 150 Carlinhos3Pedrinho100 100 200 200 300 300 400 400 500 500 600 600Huguinho50 100 200 200 300 300 500 500 400 400 600 700Zezinho100 100 100 100 100 100 100 100 100 100 100 100Teste 21 3500 Huguinho1 3500 Pedrinho3 1000 Zezinho

PS: para testar, primeiramente copiei linha por linha e fui colando no console... ("botão direito do mouse, colar")
depois, fiz outro teste e funcionou: colei a entrada de uma vez só e colei no console.. Também funcionou!




Obs.:
Ao postar um código, por favor, utilize a tag CODE (botão <> no painel). Qualquer dúvida, favor acessar em Tópicos em destaque no referido fórum a postagem Tags: Como e para que usar?

Para facilitar para outros usuário, abaixo o seu código identado:

program tetris;var   pontos,   jogo,   posi    :array[0..1010] of longint;   nomes   :array[0..1010] of string;   y,z,w,i,x,   maior,   menor,   j,a,b,k :longint;   s       :string;begina:=0;y:=1;k:=0;while y<>0 do begin  readln(y);  if y<>0 then begin    k:=k+1;    for i:=1 to y do begin      readln(nomes[i]);      for w:=1 to 12 do begin //Lê o nome do primeiro atleta e coloca no vetor nome e registra em 12 posições de um vetor as pontuações e a soma        read(z);        a:=(a+z);        jogo[w]:=z;        end;      readln;      menor:=jogo[1];      maior:=jogo[1];      for x:=1 to 11 do begin //Compara as doze pontuações e registra a menor e a maior        if menor>jogo[x+1] then begin          menor:=jogo[x+1];          end;        if maior<jogo[x+1] then begin          maior:=jogo[x+1];          end;        end;      j:=(maior+menor);      a:=(a-j); // subtrai a menor e a maior do pontuação do somatorio geral      pontos[i]:=a; // registra a soma da pontuação no vetor pontos      a:=0;      posi[i]:=i; //coloca as posições no vetor posição sem ordenar      end;    for i:=1 to y do begin      for x:=1 to (y-1) do begin //Ordena os vetores a partir do vetor pontos, ordenando pontos e nomes        if pontos[x]<pontos[x+1] then begin          b:=pontos[x];          s:=nomes[x];          pontos[x]:=pontos[x+1];          nomes[x]:=nomes[x+1];          pontos[x+1]:=b;          nomes[x+1]:=s;          end;        if (pontos[x]=pontos[x+1]) then begin //Coloca a mesma posição no vetor posi, para pontuações iguais          posi[x+1]:=posi[x];          if (nomes[x]>nomes[x+1]) then begin //Ordena alfabeticamente os nomes do mesma pontuação            s:=nomes[x];            nomes[x]:=nomes[x+1];            nomes[x+1]:=s;            end;          end;        end;      end;    writeln('Teste ',k);    for i:=1 to y do begin //Escreve a posição, pontuação e nome      writeln(posi[i],' ',pontos[i],' ',nomes[i]);      end;    writeln;    end;  end;end.

No aguardo!

Link para o comentário
Compartilhar em outros sites

Existe um site, http://moj.naquadah.tk/cgi-bin/index.sh, onde os professores colocam listas com exercícios de programação, esse site mesmo corrige e testa todas as possibilidades possíveis, testa todos os casos...

O site insere as entradas uma de cada vez.

Não consigo encontrar onde está o erro do programa, já que esse site só retorna que está errado, mas não especifica.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

Existe um site, http://moj.naquadah.tk/cgi-bin/index.sh, onde os professores colocam listas com exercícios de programação, esse site mesmo corrige e testa todas as possibilidades possíveis, testa todos os casos...
O site insere as entradas uma de cada vez.

Não consigo encontrar onde está o erro do programa, já que esse site só retorna que está errado, mas não especifica.

 

 

 

Pode ser algo relacionado as restrições...

 

Restrições
0 <= J <= 1000 (J = 0 apenas para indicar final da entrada)
0 <= pontuação em uma partida <= 1000 
1 <= tamanho dos nomes, em número de letras <= 15

 

Pelo que eu vi, nenhuma delas estão sendo tratadas..

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...