Lógica, perguntado por ri6656, 3 meses atrás

Em uma faculdade de um mundo muito distante, dois jovens professores buscam ajudar seus alunos a estudarem e melhorarem seus conhecimentos sobre a disciplina de programação, fazendo com que notas mais altas sejam conquistadas. Para isso, desenvolveram a estratégia da "Segunda Chance".

A "Segunda Chance" consiste em uma nova atividade com os mesmos problemas da atividade original, porém com um prazo estendido e com a disponibilização de vídeos detalhados com a resolução de cada problema, de modo a incentivar que os alunos revisitem e comparem suas próprias propostas de solução.

Para aumentar ainda mais o incentivo para a turma, os professores concedem um bônus de dois pontos sobre a nota original para aqueles que resolverem TODOS os problemas dentro do prazo estendido, isto é, que obtiverem dez na nova atividade, o que é uma "moleza", considerando que basta assistir as resoluções e aplicá-las. Mas é claro, o bônus é concedido até o limite de dez pontos, ou seja, caso a soma do bônus com a nota original resulte em um valor superior a dez, a nota final será dez.

Como esperado, os alunos ficaram contentes e empolgados com a oportunidade. De tão agradecidos, ofereceram um software aos dois professores, de modo a reduzir um pouco da carga extra de trabalho que eles terão para recalcular as notas.

Você se voluntariou para implementar esse software, que precisa receber um valor inicial indicando a quantidade de alunos da turma, seguido pelas notas originais de cada aluno e pelas notas obtidas na nova atividade. O programa deverá exibir a quantidade de alunos que tiveram suas notas alteradas, assim como as notas originais e finais de cada aluno, destacando aqueles que aumentaram as notas.

Entrada

Na primeira linha haverá um número natural N (1 <= N <= 999) indicando a quantidade de alunos da turma;

Nas próximas N linhas, haverá a nota original de cada aluno, que são valores reais no intervalo fechado [ 0,10 ];

Por fim, nas N linhas seguintes, haverá a nota obtida na nova atividade por cada aluno, também situadas no intervalo fechado [ 0,10 ].

Note que as N primeiras notas correspondem as notas originais dos N primeiros alunos, e as próximas N notas correspondem as notas da "Segunda Chance" dos mesmos alunos. Portanto, se N = 5, a 1ª nota é do primeiro aluno e a 6ª nota também é do primeiro aluno (original e "Segunda Chance), a 2ª nota é do segundo aluno e a 7ª também, a 5ª é do quinto aluno e a 10ª também.

Saída

A primeira linha será a frase 'NOTAS ALTERADAS: ', sem apóstrofos e completamente em maiúsculo, em que deve ser substituído pela quantidade de alunos que tiveram suas notas originais alteradas em decorrência da aplicação do bônus;

As próximas N linhas serão as notas de todos os alunos, na mesma ordem dada na entrada, iniciando com asterisco ('*') para indicar as notas que foram alteradas e hífen ('-') para indicar aquelas que não foram, seguido pela posição da referida nota entre parênteses. O formato de cada linha pode ser observada nos exemplos, onde se destacam três características: (I) a posição tem sempre três dígitos, completada com zeros à esquerda quando necessário; (II) todas as notas são exibidas com duas casas decimais e; (III) todas as notas ocupam cinco colunas, incluindo o caractere ponto, e completadas com zeros à esquerda quando necessário.

Samples Input Samples Output


Samples Input Samples Output
5
10.00
10.00
10.00
10.00
10.00
0.00
0.00
0.00
0.00
0.00
NOTAS ALTERADAS: 0
-(001) original: 10.00 | final: 10.00
-(002) original: 10.00 | final: 10.00
-(003) original: 10.00 | final: 10.00
-(004) original: 10.00 | final: 10.00
-(005) original: 10.00 | final: 10.00

5
7.00
6.00
10.00
1.00
9.00
10.00
10.00
10.00
10.00
10.00
NOTAS ALTERADAS: 4
*(001) original: 07.00 | final: 09.00
*(002) original: 06.00 | final: 08.00
-(003) original: 10.00 | final: 10.00
*(004) original: 01.00 | final: 03.00
*(005) original: 09.00 | final: 10.00

5
7.00
6.00
10.00
1.00
9.00
8.00
9.00
7.00
5.00
10.00
NOTAS ALTERADAS: 1
-(001) original: 07.00 | final: 07.00
-(002) original: 06.00 | final: 06.00
-(003) original: 10.00 | final: 10.00
-(004) original: 01.00 | final: 01.00
*(005) original: 09.00 | final: 10.00
3
10.00
10.00
10.00
10.00
10.00
10.00
NOTAS ALTERADAS: 0
-(001) original: 10.00 | final: 10.00
-(002) original: 10.00 | final: 10.00
-(003) original: 10.00 | final: 10.00
1
0.00
9.00
NOTAS ALTERADAS: 0
-(001) original: 00.00 | final: 00.00

Soluções para a tarefa

Respondido por davialmeida0
0

Resposta:

numeroAluno = int(input())

qntdAlunos.append(numeroAluno)

n = 0

for i in range(0,qntdAlunos[n]):

    if qntdAlunos[n] != 0:

         vetNotaOrig = []

         while qntdAlunos[n] != contadorP:

              notaAlunoOriginal = int(input())

              vetNotaOrig.append(notaAlunoOriginal)

              contadorP += 1

         vetNotaAtv = []

         while qntdAlunos[n] != contadorS:

              notaAlunoAtv = int(input())

              vetNotaAtv.append(notaAlunoAtv)

              contadorS += 1

         while True:

              y = 0

              vetFinal = []

              while qntdAlunos[n] != y:

                   vetFinal = vetNotaAtv

                   vetFinal[y] = vetNotaOrig[y] + 2

                   if vetFinal[y] >= 10:

                        vetFinal[y] = 10

                   y += 1      

       

              p = 0

              nA = 0

              while qntdAlunos[n] != p:

                   if vetNotaOrig[p] != vetFinal[p]:

                        nA += 1

                        p += 1

                   else:

                        nA += 0

                        p += 1

       

              y = 0

              z = 1

              print('NOTAS ALTERADAS:',nA)

              while qntdAlunos[n] != y:

                   if vetNotaOrig[y] != vetFinal[y]:

                        x = '*'

                   else:

                        x = '-'

              print(x,'({:03d})'.format(z),'original:',f'{vetNotaOrig[y]:0>5.2f}','|','final:',f'{vetFinal[y]:0>5.2f}')

             

              z += 1

              y += 1

           

         break      

    else:

         n += 1

Explicação:

Perguntas interessantes