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; } } }