Desafio 1 – Desce Mais um Barrigudinho
Enunciado
Resolução
#include <stdio.h> #include <stdlib.h> int main () { int n; float a1, a2, v1, v2, resp = 0.14, alcool, porcent; scanf ("%d", &n); for(int i = 0; i < n; i++){ scanf("%f" , &v1); scanf("%f" , &a1); scanf("%f" , &v2); scanf("%f" , &a2); if ((a1 > resp && a2 > resp) || (a1 < resp && a2 < resp)){ printf("Mo comedia essa mistura, presta nao\n"); }else { alcool = ((v1*a1) + (v2*a2)); porcent = alcool/(v1+v2); if (porcent == resp){ printf("Bao demais que esse ta no ponto, vai ate esquentar\n"); } else if(porcent < resp){ if(a2 > a1){ printf("Arriegua tonhao, mistura tudo, o que sobrar de 1 vou estourar na garganta\n"); } else { printf("Arriegua tonhao, mistura tudo, o que sobrar de 2 vou estourar na garganta\n"); } } else { if (a2 > a1){ printf("Arriegua tonhao, mistura tudo, o que sobrar de 2 vou estourar na garganta\n"); } else { printf("Arriegua tonhao, mistura tudo, o que sobrar de 1 vou estourar na garganta\n"); } } } } return 0; }
Desafio 2 – A alegria não pode parar
Enunciado
Resolução
#include <stdio.h> #include <stdlib.h> #include <string.h> int main (){ char string[15]; int qtd, n; scanf("%i", &n); for (int i = 0; i < n; i++){ scanf("%s %i", string, &qtd); if(!strcmp(string, "vinho")) printf("%i %i %i %i\n", qtd, (qtd*45)/1000, (qtd*240)/1000, (qtd*500)/1000); else if(!strcmp(string, "limao")) printf("%i %i %i %i\n", (qtd*1000)/45, qtd, (qtd*240)/45, (qtd*500)/45); else if(!strcmp(string, "laranja")) printf("%i %i %i %i\n", (qtd*1000)/240, (qtd*45)/240, qtd, (qtd*500)/240); else if(!strcmp(string, "agua")) printf("%i %i %i %i\n", (qtd*1000)/500, (qtd*45)/500, (qtd*240)/500, qtd); } return 0; }
Desafio 3 – Circulou
Enunciado
Resolução
#include <stdio.h> #include <stdlib.h> #include <string.h> void printCirculouVezes(int vezes) { for (int i = 0; i < vezes; i++) { printf("Circulou"); } } void resolve(char *cantoria) { int i = 0; int n = -1; int ultimaPalavra = 1; while (cantoria[i] != '\0') { if (cantoria[i] == 'C') { ultimaPalavra = 1; n = i; } if (cantoria[i] == ' ') { ultimaPalavra = 0; } i++; } if (ultimaPalavra == 0 || n + 3 > i) { printf("Taaaao maravilhoso nosso amoor\n"); return; } char culou[] = "culou"; int index = 0; for (int j = n + 3; j < i; j++) { if (cantoria[j] == '\0') { break; } if (culou[index] == cantoria[j]) { index++; } else { printf("Taaaao maravilhoso nosso amoor\n"); return; } } // printf("n: %d\n", n); // printf("i: %d\n", i); // printf("index: %d\n", index); if (index == 5) { printf("Taaaao maravilhoso nosso amoor\n"); } else { printf("%s", cantoria); printCirculouVezes(5 - index); printf("\n"); } } int main() { int n; scanf("%d\n", &n); for (int i = 0; i < n; i++) { char cantoria[255]; scanf("\n%[^\n]", cantoria); resolve(cantoria); } return 0; }
Desafio 4 – Nos Ares da Sapucaí
Enunciado
Resolução
#include <stdbool.h> #include <stdio.h> #include <stdlib.h> typedef struct { int linha; int coluna; } Coordenada; int matriz[5][5]; int tamanho = 5; void recebe_matriz() { for (int i = 0; i < tamanho; i++) for (int j = 0; j < tamanho; j++) scanf("%d", &matriz[i][j]); } Coordenada busca_elemento(int altura_elemento) { Coordenada elemento; for (int i = 0; i < tamanho; i++) for (int j = 0; j < tamanho; j++) if (matriz[i][j] == altura_elemento) { elemento.linha = i; elemento.coluna = j; } return elemento; } bool posicao_valida(int coordenada_x, int coordenada_y) { if (coordenada_x < tamanho && coordenada_x >= 0 && coordenada_y >= 0 && coordenada_y < tamanho) return true; return false; } bool verificacao_horizontal(Coordenada inicio, Coordenada fim) { // verificando à direita if (inicio.coluna < fim.coluna) { for (int i = inicio.coluna; i < tamanho; i++) { // se é a chegada if (matriz[inicio.linha][i] == -2) { return true; } // se é uma altura intransponível if (matriz[inicio.linha][i] > 175) { return false; } } } // verificando à esquerda else if (inicio.coluna > fim.coluna) { for (int i = inicio.coluna; i >= 0; i--) { // se é a chegada if (matriz[inicio.linha][i] == -2) { return true; } // se é uma altura intransponível if (matriz[inicio.linha][i] > 175) { return false; } } } // Não é possível que -01 e -02 estejam no mesmo elemento da matriz return false; } bool verificacao_vertical(Coordenada inicio, Coordenada fim) { // verificando acima if (inicio.linha > fim.linha) { for (int i = inicio.linha; i >= 0; i--) { // se é a chegada if (matriz[i][inicio.coluna] == -2) { return true; } // se é uma altura intransponível if (matriz[i][inicio.coluna] > 175) { return false; } } } // verificando abaixo else if (inicio.linha < fim.linha) { for (int i = inicio.linha; i < tamanho; i++) { // se é a chegada if (matriz[i][inicio.coluna] == -2) { return true; } // se é uma altura intransponível if (matriz[i][inicio.coluna] > 175) { return false; } } } return false; } bool verificacao_diagonal(Coordenada inicio, Coordenada fim) { // verificando à direita if (inicio.coluna < fim.coluna) { // verificando na diagonal nordeste if (inicio.linha > fim.linha) { for (int i = inicio.linha, j = inicio.coluna; i >= 0 && j < tamanho; i--, j++) { // se é a chegada if (matriz[i][j] == -2) { return true; } // se é uma altura intransponível if (matriz[i][j] > 175) { return false; } } } // verificando na diagonal sudeste else { for (int i = inicio.linha, j = inicio.coluna; i < tamanho && j < tamanho; i++, j++) { // se é a chegada if (matriz[i][j] == -2) { return true; } // se é uma altura intransponível if (matriz[i][j] > 175) { return false; } } } } // verificando à esquerda else { // verificando na diagonal noroeste if (inicio.linha > fim.linha) { for (int i = inicio.linha, j = inicio.coluna; i >= 0 && j >= 0; i--, j--) { // se é a chegada if (matriz[i][j] == -2) { return true; } // se é uma altura intransponível if (matriz[i][j] > 175) { return false; } } } // verificando na diagonal sudeste else { for (int i = inicio.linha, j = inicio.coluna; i < tamanho && j >= 0; i++, j--) { // se é a chegada if (matriz[i][j] == -2) { return true; } // se é uma altura intransponível if (matriz[i][j] > 175) { return false; } } } } return false; } int main() { int num_casos; scanf("%d\n", &num_casos); for (int i = 0; i < num_casos; i++) { recebe_matriz(); Coordenada inicio = busca_elemento(-1); Coordenada chegada = busca_elemento(-2); // printf("%d %d\n", inicio.linha, inicio.coluna); // printf("%d %d\n", chegada.linha, chegada.coluna); // printf("%d\n", verificacao_horizontal(inicio, chegada)); // printf("%d\n", verificacao_vertical(inicio, chegada)); // printf("%d\n", verificacao_diagonal(inicio, chegada)); if (verificacao_horizontal(inicio, chegada) || verificacao_vertical(inicio, chegada) || verificacao_diagonal(inicio, chegada)) { printf("Por aqui Blu!\n"); } else { printf("Oopa, nao vai dar nao.\n"); } } return 0; }