Solução Informática - Nível Iniciante - Semana 2

Solução por Anita Almeida

Este problema utiliza apenas os comandos mais simples de programação, mas envolve algumas ideias essenciais para resoluções de outras questões, como a de enumerar o teste de cada resposta, a de somar um novo valor a uma variável X e determinar isso como a própria variável X e a de que não é necessário apresentar o resultado apenas no final, mas sim durante a lógica do programa.

Iniciando a programação então, após adicionar as bibliotecas e declarar as variáveis, o programa lê o primeiro valor de entrada m e o armazena nas variáveis m_1 e m_2. Após isso, temos a primeira verificação que checa se o programa deve encerrar ou não, ou seja, se a entrada é 0. Essa verificação é feita durante toda a lógica. Em seguida, o programa lê todos os X de X_1 até X_m e sempre soma o X_i à variável R, que seria o resultado final, por isso a função de +=. Depois de ler tudo, entra uma parte muito importante que é a de somar 1 na variável cont sempre que encerrar a leitura, definindo a que teste essa resposta R pertence. Logo depois, o programa imprime o teste em que se encontra, a resposta correspondente e deixa uma linha em branco, conforme dito no enunciado (lembrando que é de extrema importância seguir o roteiro de estrutura da resposta dado). Por fim, ele lê o novo valor de m, o armazena em m_1 e m_2 e zera o resultado anterior R para começar um novo teste caso o m não seja 0.

Apenas como observação, é importante lembrar que alguns softwares específicos, ao imprimir uma saída no programa, já a imprime conforme cada teste é encerrado. Porém, isso é característico apenas do software e não funciona igualmente quando é submetido à avaliação do problema na maioria das correções. Assim, você não deve se preocupar caso em seus testes, antes da avaliação, imprimam a resposta de acordo com a ordem dos testes e sim, se a resposta e a sua estrutura de saída estão corretas. Além disso, como uma segunda observação, é importante ressaltar que não é necessário ler qual o operador (+/-), já que se o próximo X for positivo ele é somado normalmente a R e se ele for negativo, por ser escrito na entrada como -X ele já é subtraído sem problemas, afinal, R+(-X) é o mesmo que R-X.

Segue o código comentado para melhor compreensão da solução:


#include<bits/stdc++.h> //biblioteca utilizada
int main()
{
int m1,m2,X,cont=0,R; //declaração das variáveis que compõe
scanf("%d", &m1); //lê o primeiro "m"
m2=m1; //m2 assume o mesmo valor de m1, ou seja, o valor do primeiro "m"
while(m2!=0) //enquanto a leitura do "m" não for 0 (encerra o programa), o programa fica preso neste loop
{
for(m2=m1; m2>0; m2--) //função para ler todos os "m" seguintes X
{
scanf("%d", &X); //lê o X atual
R+=X; //soma X ao resultado final
}
cont++; //soma 1 no teste correspondente
printf("Teste %d\n%d\n\n", cont,R); //imprimi a resposta a cada teste finalizado
scanf("%d", &m1); //lê o novo "m"
m2=m1; //m2 assume o mesmo valor de m1, ou seja, o valor do novo"m"
R=0; //zera o resultado para iniciar um novo teste
}
return(0); //zera o programa
}

view raw

Calculando.cpp

hosted with ❤ by GitHub