Pesquisar este blog

Livros Recomendados

Mostrando postagens com marcador 1051. Mostrar todas as postagens
Mostrando postagens com marcador 1051. Mostrar todas as postagens

quinta-feira, 3 de dezembro de 2020

URI - 1051 - Iniciante - Imposto de Renda - C++

Plataforma: URI

Problema1051

Enunciado:

Em um país imaginário denominado Lisarb, todos os habitantes ficam felizes em pagar seus impostos, pois sabem que nele não existem políticos corruptos e os recursos arrecadados são utilizados em benefício da população, sem qualquer desvio. A moeda deste país é o Rombus, cujo símbolo é o R$.

Leia um valor com duas casas decimais, equivalente ao salário de uma pessoa de Lisarb. Em seguida, calcule e mostre o valor que esta pessoa deve pagar de Imposto de Renda, segundo a tabela fornecida.

Lembre que, se o salário for R$ 3002.00, a taxa que incide é de 8% apenas sobre R$ 1000.00, pois a faixa de salário que fica de R$ 0.00 até R$ 2000.00 é isenta de Imposto de Renda. No exemplo fornecido (abaixo), a taxa é de 8% sobre R$ 1000.00 + 18% sobre R$ 2.00, o que resulta em R$ 80.36 no total. O valor deve ser impresso com duas casas decimais.

Linguagem: C++

Solução:

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    
    double valor, res;
    
    cin >> valor;
    
    if (valor >= 0 && valor <= 2000.00)
        cout << "Isento" << endl;
    else {
        
        if (valor > 2000.00 && valor <= 3000.00)
            res = (valor-2000.00)*0.08;

        else if (valor >= 3000.01 && valor <= 4500.00)
            res = (valor-3000.00)*0.18 + (1000.00)*0.08;
        
        else if (valor > 4500.00)
            res = (valor-4500.00)*0.28 + (1500.00)*0.18 + (1000.00)*0.08;
        
        cout << "R$ " << fixed << setprecision(2) << res << endl;
    }
    return 0;
}

quarta-feira, 2 de dezembro de 2020

URI - 1051 - Iniciante - Imposto de Renda - C

Plataforma: URI

Problema1051

Enunciado:

Em um país imaginário denominado Lisarb, todos os habitantes ficam felizes em pagar seus impostos, pois sabem que nele não existem políticos corruptos e os recursos arrecadados são utilizados em benefício da população, sem qualquer desvio. A moeda deste país é o Rombus, cujo símbolo é o R$.

Leia um valor com duas casas decimais, equivalente ao salário de uma pessoa de Lisarb. Em seguida, calcule e mostre o valor que esta pessoa deve pagar de Imposto de Renda, segundo a tabela fornecida.

Lembre que, se o salário for R$ 3002.00, a taxa que incide é de 8% apenas sobre R$ 1000.00, pois a faixa de salário que fica de R$ 0.00 até R$ 2000.00 é isenta de Imposto de Renda. No exemplo fornecido (abaixo), a taxa é de 8% sobre R$ 1000.00 + 18% sobre R$ 2.00, o que resulta em R$ 80.36 no total. O valor deve ser impresso com duas casas decimais.

Linguagem: C

Solução:

#include <stdio.h>
int main() {
    double valor, res;
    scanf("%lf", &valor);
    if (valor >= 0 && valor <= 2000.00)
        printf("Isento\n");
    else {
        if (valor > 2000.00 && valor <= 3000.00)
            res = (valor-2000.00)*0.08;
        else if (valor >= 3000.01 && valor <= 4500.00)
            res = (valor-3000.00)*0.18 + (1000.00)*0.08;
        else if (valor > 4500.00)
            res = (valor-4500.00)*0.28 + (1500.00)*0.18 + (1000.00)*0.08;

        printf("R$ %.2lf\n", res);
    }
    return 0;
}

segunda-feira, 30 de novembro de 2020

URI (BEECROWD) - 1789 - A Corrida de Lesmas - Iniciante - C e C++

O problema "A Corrida de Lesmas" é da categoria Iniciante no Beecrowd. Apesar disso, é mais difícil do que alguns problemas Ad-hoc na minha opinião. Nada que exija tanto, basicamente é necessário lidar com estruturas condicionais e atribuição de variáveis. Confira na sequência!

Plataforma: URI (BEECROWD)

Problema1789

Enunciado:

A corrida de lesmas é um esporte que cresceu muito nos últimos anos, fazendo com que várias pessoas dediquem suas vidas tentando capturar lesmas velozes, e treina-las para faturar milhões em corridas pelo mundo. Porém a tarefa de capturar lesmas velozes não é uma tarefa muito fácil, pois praticamente todas as lesmas são muito lentas. Cada lesma é classificada em um nível dependendo de sua velocidade: Nível 1: Se a velocidade é menor que 10 cm/h . Nível 2: Se a velocidade é maior ou igual a 10 cm/h e menor que 20 cm/h . Nível 3: Se a velocidade é maior ou igual a 20 cm/h . Sua tarefa é identificar qual nível de velocidade da lesma mais veloz de um grupo de lesmas.

Linguagens: C e C++

Solução:

É necessário ler os valores e procurar o maior. O valor da variável maior, para cada caso, inicia em 1 porque é sabido que todo valor será 1 ou mais. Assim, se o valor recebido for maior que 1, a variável maior é atribuída com este valor. Imediatamente após isso, testamos se este maior valor é maior ou igual a 20 (será nível 3); senão, se é maior ou igual a 10 (será nível 2) ou será nível se não se enquadrar nessas condições (ou seja, o valor é menor que 10). A variável nível guarda esse valor e é atualizada em cada caso.

Após ler todos os casos, basta imprimir a variável nível.

Código em C:

#include <stdio.h>
int main() {
    int casos;
    while(scanf("%i",&casos)!=EOF) {
        int contador=0,maior=1,valor,nivel=1;
        while(contador<casos) {
            scanf("%i ",&valor);
            if(valor>maior) {
                maior = valor;
                if(maior>=20)
                    nivel=3;
                else {
                    if(maior>=10)
                        nivel=2;
                }
            }
            contador++;
        }
        printf("%i\n",nivel);
    }
    return 0;
}

Código em C++:

#include <iostream>
int main() {
    int casos;
    while(std::cin >> casos) {
        int contador = 0, maior = 1, valor, nivel = 1;
        while(contador<casos) {
            std::cin >> valor;
            if(valor > maior) {
                maior = valor;
                if(maior >= 20) {
                    nivel = 3;
                }
                else {
                    if(maior >= 10)
                        nivel = 2;
                }
            }
            contador++;
        }
        std::cout << nivel << std::endl;
    }
    return 0;
}

Solução alternativa em C++:

Essa solução segue a mesma lógica mas só verifica o nível após saber quem é o maior número, ou seja, lê todos os valores primeiro e substitui o valor da variável maior (max) quando o valor lido for maior que ela. Depois disso faz os testes e imprime o nível respectivo, sem a necessidade de armazenar o nível em uma variável.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
int main() {
 
    int n, v;
    while(cin>>n){
        int max = 0;
        while(n--){
            int v;
            cin >> v;
            if(v>max) max = v;
        }
        if(max<10) cout << 1 << endl;
        else if(max<20) cout << 2 << endl;
        else cout << 3 << endl;
    }
    return 0;
}

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas