Resoluções da Etapa 4

Desafio 1

Enunciado
Resolução em Java
import java.util.Scanner;
public class Diferenciais {
    
    public static void main(String[] args){
    
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        sc.nextLine();
        
        String resp;
        
        for (int i = 0; i < n; i++){
            
            resp = sc.nextLine();
            resp += " + c";
            System.out.println(resp);
            
        }
        
    }
    
}
Resolução em C++
#include "javalib.hpp"

int main()
{
    int n = nextInt();
    nextLine();

    for(; n > 0; n--)
    {
        std::string line = nextLine();
        std::cout << line << " + c" << std::endl;
    }
}

Desafio 2

Enunciado
Resolução em Java
import java.util.Scanner;
public class OhOGas {
    
    public static void main(String[] args){
    
        Scanner sc = new Scanner(System.in);
        
        int t = sc.nextInt();
        sc.nextLine();
        
        boolean problema;
        
        //Variáveis auxliares
        int qtd, t1, t2, min;
        
        int[] tanques = new int[t];
        for (int i = 0; i < t; i++){
            tanques[i] = sc.nextInt();
            sc.nextLine();
        }
        
        String[] comandos;
        
        while(true){  
            
            if(t == 0){
                System.out.println("HOUSTON, TEMOS UM PROBLEMA");
                break;
            } 
                
                
            problema = true;
            
            for (int i = 0; i < t; i++){
                if (tanques[i] > 0){
                    problema = false;
                    break;
                }
            }
            
            if(problema){
                System.out.println("HOUSTON, TEMOS UM PROBLEMA");
                break;
            }
            
            comandos = sc.nextLine().split(" ");   
            
            if(comandos[0].equals("F")){
                System.out.println("MAMAE, TO CHEGANDO");
                break;
            }
            
            switch(comandos[0]){
                case "T":
                    t1 = Integer.parseInt(comandos[1]);
                    t2 = Integer.parseInt(comandos[2]);
                    qtd = Integer.parseInt(comandos[3]);
                    if(t1 < 0 || t1 >= t || t2 < 0 || t2 >= t || t1==t2){
                        System.out.println("ERRO");
                        break;
                    }
                    if(tanques[t2] < qtd){
                        System.out.println("quantidade insuficiente de combustivel no tanque " + t2);
                        break;
                    }
                    tanques[t1] += qtd;
                    tanques[t2] -= qtd;
                    System.out.println(qtd + " litros de combustivel foram transferidos do tanque " + t2
                    + " para o tanque " + t1);
                    break;
                case "Q":
                    qtd = Integer.parseInt(comandos[1]);
                    if (t == 0){
                        System.out.println("ERRO");
                        break;
                    }
                    if(tanques[t-1] == 0){
                        System.out.println("nenhum combustivel sobrando para queimar");
                        break;
                    }
                    min = (tanques[t-1] > qtd)? qtd : tanques[t-1];
                    tanques[t-1] -= min;
                    System.out.println("foram queimados " + min + " litros de combustivel com sucesso");
                    break;
                case "D":
                    if(t == 0){
                        System.out.println("ERRO");
                        break;
                    }
                    System.out.println("desacoplado o tanque " + (t-1));
                    t--;
                    break;
            }
            
        }
    
    }
    
}
Resolução em C++
#include "javalib.hpp"

int main(int argc, char **argv)
{
    int T = nextInt(), fim = T;
    int tanques[T]{ 0 };
    for(int i = 0; i < T; i++)
        tanques[i] = nextInt();

    bool quit = false, success = true;
    while(!quit)
    {
        char op = nextChar();

        int t1, t2, q;

        int sum = 0;
        for(int i = 0; i != fim; i++)
            sum += tanques[i];

        if(sum == 0)
        {
            success = false;
            quit = true;
            break;
        }

        switch(op)
        {
            case 'T':
                t1 = nextInt();
                t2 = nextInt();
                q = nextInt();
                if(t1 == t2 || t1 < 0 || t2 < 0 || t1 >= fim || t2 >= fim)
                    std::cout << "ERRO" << std::endl;
                else if(tanques[t2] <= 0 || tanques[t2] < q)
                    std::cout << "quantidade insuficiente de combustivel no tanque " << t2 << std::endl;
                else
                {
                    tanques[t2] -= q;
                    tanques[t1] += q;
                    std::cout << q << " litros de combustivel foram transferidos do tanque " << t2 << " para o tanque " << t1 << std::endl;
                }
                break;
            case 'Q':
                q = nextInt();
                if(tanques[fim - 1] == 0)
                    std::cout << "nenhum combustivel sobrando para queimar" << std::endl;
                else
                {
                    q = (q < tanques[fim - 1]) ? q : tanques[fim - 1];
                    tanques[fim - 1] -= q;
                    std::cout << "foram queimados " << q << " litros de combustivel com sucesso" << std::endl;
                }
                break;
            case 'D':
                fim--;
                std::cout << "desacoplado o tanque " << fim << std::endl;
                break;
            case 'F':
                quit = true;
                break;
        }
    }

    if(success)
        std::cout << "MAMAE, TO CHEGANDO" << std::endl;
    else
        std::cout << "HOUSTON, TEMOS UM PROBLEMA" << std::endl;

    return 0;
}

Desafio 3

Enunciado
Resolução em Java
import java.util.Scanner;
public class Equacao {
    
    public static void main (String args[]){
        
        //Scanner
        Scanner sc = new Scanner(System.in);
        
        //Variáveis
        int a, b, c;
        
        //Variáveis auxiliares
        float aux;
        float delta;
        
        //Raizes
        int r1,r2;
        
        //Loop de execução
        while(true){
            
            //Leitura da entrada
            a = sc.nextInt();
            b = sc.nextInt();
            c = sc.nextInt();
            sc.nextLine();
            
            //Fim do loop
            if (HasNext(a, b, c))
                break;
            
            //Calculo do delta
            delta = CalculaDelta(a, b, c);
            
            //Localização das raízes e impressão da resposta        
            if(delta < 0){
                System.out.println("Funcao nao possui raizes");            
            }else if (delta == 0){
                r1 = (int)Math.ceil(-b/(2*a));
                System.out.println(r1);   
            }else{
                aux = (float)(-b + Math.sqrt(delta))/(2*a);
                r1 = (int)Math.ceil(aux);
                aux = (float)(-b - Math.sqrt(delta))/(2*a);
                r2 = (int)Math.ceil(aux);

                if(r1 > r2)                
                    System.out.println(r2 + " " + r1); 
                else
                    System.out.println(r1 + " " + r2);
            }
            
        }
        
    }
    
    //Essa função retorna se os casos de teste chegaram ao fim
    public static boolean HasNext(int a, int b, int c){
        return (a == 0 && b == 0 && c == 0);
    }
    
    //Essa função checa se a função passada possui duas, uma ou nenhuma raiz, a fim de evitar erros 
    public static float CalculaDelta(int a, int b, int c){
        float resp;
        
        resp = (float)Math.pow(b, 2) - (4*a*c);
        
        return resp;
    }
    
}
Resolução em C++
#include "javalib.hpp"

int main()
{
    while(true)
    {
        int a = nextInt();
        int b = nextInt();
        int c = nextInt();

        if(a == 0 && b == 0 && c == 0)
            break;

        int theta = (b*b) - (4*a*c);

        if(theta < 0)
        {
            std::cout << "Funcao nao possui raizes" << std::endl;
        } else if(theta == 0)
        {
            std::cout << (int)ceil(-b/(2*a)) << std::endl;
        } else
        {
            int i1 = ceil((-b + sqrt(theta))/(2*a));
            int i2 = ceil((-b - sqrt(theta))/(2*a));
            if(i1 > i2)
            {
                int aux = i1;
                i1 = i2;
                i2 = aux;
            }

            std::cout << i1 << ' ' << i2 << std::endl;
        }
    }
}

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *