Pesquisar este blog

Livros Recomendados

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

quarta-feira, 3 de março de 2021

URI (BEECROWD) - 2140 - Duas Notas - Iniciante - C e C++

Duas Notas, problema resolvido! Confira abaixo.

Plataforma: URI (BEECROWD)

Problema2140

Enunciado:

Gilberto é um famoso vendedor de esfirras na região. Porém, apesar de todos gostarem de suas esfirras, ele só sabe dar o troco com duas notas, ou seja, nem sempre é possível receber o troco certo. Para facilitar a vida de Gil, escreva um programa para ele que determine se é possível ou não devolver o troco exato utilizando duas notas. As notas disponíveis são: 2, 5, 10, 20, 50 e 100.

Linguagens: C e C++


Solução:

Utilizei a mesma lógica nos dois códigos. Caso a condição de impossibilidade seja satisfeita, atribuo o valor zero a uma variável de controle (poderia imprimir direto "impossible" também, há outras formas válidas para este exercício). Se ela estiver em zero, imprime im. Depois disso, o código imprime possible.

Código em C:

#include <stdio.h>

int main() {
    
    int n, m, troco, flag, indiceTermo1, indiceTermo2;
    int notas[6] = {2, 5, 10, 20, 50, 100};
    
    while(1) {
        
        scanf("%i %i", &n, &m);
        flag = 1;
        
        if (n == 0 && m == 0)
            break;
        
        troco = m - n;
        
        for (indiceTermo1 = 0; indiceTermo1 < 6; indiceTermo1++) {
            
            for (indiceTermo2 = 0; indiceTermo2 < 6; indiceTermo2++) {
                
                if (troco == notas[indiceTermo1] + notas[indiceTermo2]) {
                    
                    flag = 0;
                    break;
                    
                }
                
            }
        }
        
        if (flag)
            printf("im");
            
        printf("possible\n");
        
    }

    return 0;
}

Código em C++:

#include <iostream>

using namespace std;

int main() {
    
    int n, m, troco, flag, indiceTermo1, indiceTermo2;
    int notas[6] = {2, 5, 10, 20, 50, 100};
    
    while(1) {
        
        cin >> n >> m;
        flag = 1;
        
        if (n == 0 && m == 0)
            break;
        
        troco = m - n;
        
        for (indiceTermo1 = 0; indiceTermo1 < 6; indiceTermo1++) {
            
            for (indiceTermo2 = 0; indiceTermo2 < 6; indiceTermo2++) {
                
                if (troco == notas[indiceTermo1] + notas[indiceTermo2]) {
                    
                    flag = 0;
                    break;
                    
                }
                
            }
        }
        
        if (flag)
            cout << "im";
            
        cout << "possible" << 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