Desafio 1 – Proteja eles
Enunciado
Resolução
#include <math.h> #include <stdio.h> #include <string.h> int main(){ int dano, velocidade, pente, ttbalas, balaspente; int n, f1, f2, erro, bixos, acaboub, matou, morreu; double vida, doeu; scanf ("%i\n", &n); char arma [10]; for (f1=0;f1<n;f1++){ scanf ("%s", &arma); erro = 0; if(strcmp(arma, "deagle")== 0){ dano= 10; velocidade = 4; pente = 7; ttbalas = 35; } else if (strcmp(arma,"glokinha") == 0){ dano= 2; velocidade = 6; pente = 20; ttbalas = 60; } else if (strcmp (arma,"doze") == 0){ dano = 20; velocidade = 3; pente = 3; ttbalas = 15; } else if (strcmp (arma, "ak47")==0){ dano = 10; velocidade = 9; pente = 30; ttbalas = 60; } else if (strcmp (arma, "p90tinha")==0){ dano = 11; velocidade = 11; pente = 30; ttbalas= 60; } else if (strcmp (arma, "GRANADA")==0){ dano = 50; velocidade = 1; pente = 1; ttbalas = 3; } else if (strcmp (arma, "SCARtop") == 0){ dano = 10; velocidade = 2; pente = 20; ttbalas = 60; } else { printf("que arma eh essa mano? inventou agora foi?\n"); erro=1; } doeu = dano*velocidade*0.8; //dano total balaspente = pente; if (erro==0){ scanf("%i", &bixos); for(f2=0; f2<bixos; f2++){ //for dos bixos scanf("%lf", &vida); while (vida>0){ //enquanto o bixo ainda tiver vida if (balaspente <= 0 && ttbalas >0 && f2<=bixos){ //precisa recarregar e ainda tem bixos printf ("SEGURA AI Q VO RECARREGA\n"); ttbalas = ttbalas - pente; balaspente = pente; } else if (ttbalas<=0 && balaspente<=0 && matou !=1){ //acabaram todas as balas os bixos ainda nn morreram printf ("CABO AS BALA CORRE GALERAAAA\nNarrador: eles morreram\n"); acaboub = 1; break; } vida = vida- doeu; //tira vida balaspente--; //diminui quantidade de balas matou = 0; morreu = 0; if(vida<=0){ printf ("MATEI ESSE OTARIO AQUI OOOHHH VAM PRO PROXIMO AMIGUES\n"); matou = 1; } if (balaspente <= 0 && ttbalas >0 && matou == 0){ //precisa recarregar e nao matou printf ("SEGURA AI Q VO RECARREGA\n"); ttbalas = ttbalas - pente; balaspente = pente; } else if (ttbalas<=0 && balaspente<=0 && matou !=1){ printf ("CABO AS BALA CORRE GALERAAAA\nNarrador: eles morreram\n"); acaboub = 1; break; } } if(acaboub==1){ acaboub=0; break; } if(matou==1 && f2==bixos-1){ //se ja matou e nn tem mais bixos matou=0; printf ("todos os bixo morreram... parabens equipe!\n"); } } } } return 0; }
Desafio 2 – Cookies
Enunciado
Resolução
#include <stdio.h> #include <string.h> #define true 1 int main(){ while(true){ char utilizado[26]; //26 para abrigar o \0 no final caso o numero tenha 25 digitos char ideal[26]; scanf("%s %s", utilizado, ideal); if(ideal[0] == '0') //caso de saida break; int certos = 0, quase = 0; //iniciando contadores de numeros certos na posicao certa e de certos na errada for(int i = 0; i < strlen(ideal); i++){ //loop para identificar os algarismos certos if(ideal[i] == utilizado[i]){ certos++; utilizado[i] = '.'; //troco o caracter para nao contar erroneamente como um quase ideal[i] = ','; } } for(int i = 0; i < strlen(ideal); i++){ //loop fazendo uma varredura simples nos dois arranjos para contar os quase for(int j = 0; j < strlen(ideal); j++){ if(ideal[i] == utilizado[j]){ quase++; utilizado[j] = '.'; break; //depois de encontrar o numero posso sair do loop pois nao importa quantas vezes repete } } } if(certos == strlen(ideal)) //se a quantidade de certos eh o tamanho total do numero significa que eh igual printf("aqui estao seus cookies quentinhos\n"); else if(strlen(ideal)-quase-certos > certos) //se errados (total menos certos menos quase) eh maior que certos printf("oh nao os cookies queimaram\n"); else if(quase > certos) //se quase eh maior que certos printf("ta mole o.o\n"); else //certos eh o maior mas nao estah 100% certo printf("meh, podia estar mais gostoso\n"); } }
Desafio 3 – Viva la Vida!
Enunciado
Resolução
#include <stdio.h> void imprimeBebidas(int quantBebidas[]); int calculaPessoasBebidas(int quantBebidas[]); int main(){ int N, M, quant, convidados, minQuant, maxQuant, resulBebidas, i, j, k; char bebida[10]; int quantBebidas[3]; //0 uisque 1 vodca 3 cachaca scanf("%d", &N); for(k = 0; k<N; k++) { //zerando resultados quantBebidas[0] = 0; quantBebidas[1] = 0; quantBebidas[2] = 0; scanf("%d", &M); for(i = 0; i < M; i++) { //pegando nome da bebida e quantidade scanf(" %s %d", bebida, &quant); //se quantidade for 0 entao nao precisa add e tambem nao eh para imprimir if(quant != 0){ switch(bebida[0]){ case 'U': quantBebidas[0] += quant; break; case 'V': quantBebidas[1] += quant; break; case 'C': quantBebidas[2] += quant; break; } imprimeBebidas(quantBebidas); } } //le convidados scanf(" %s %d", bebida, &convidados); resulBebidas = calculaPessoasBebidas(quantBebidas); //calcula min e max convidados minQuant = resulBebidas - (resulBebidas*0.1); maxQuant = resulBebidas + (resulBebidas*0.1); //sobrando if(convidados<minQuant){ printf("Deu ruim! Bebe bastante agua pessoal!\n"); } //faltando else if(convidados>maxQuant){ printf("TRAZ O COROTINHOOOOO\n"); } //dentro dos limites else{ printf("Viva la Vida!\n"); } } return 0; } void imprimeBebidas(int quantBebidas[]){ //so imprime como pede o enunciado printf("Uisque: %d; Vodca: %d; Cachaca: %d\n", quantBebidas[0], quantBebidas[1], quantBebidas[2]); } int calculaPessoasBebidas(int quantBebidas[]){ //calcula a quantidade de pessoas baseado nos parametros do enunciado e nas quantidades de cada bebida return quantBebidas[0]*8 + quantBebidas[1]*6 + quantBebidas[2]*5; }
Desafio 4 – Fabricando Chaves
Enunciado
Resolução
#include <string.h> #include <stdio.h> #include <stdlib.h> char* procurasubs(char palavra[], int comeco, int fim){ char* substring = malloc(sizeof(palavra)); int i = comeco; int j = 0; while(i <= fim && j <= (fim-comeco)){ substring[j] = palavra[i]; i++; j++; } substring[j] = '\0'; return substring; } int main(){ int qtd; scanf("%i", &qtd); fflush(stdin); while(qtd > 0){ char entradas[qtd][16]; int i; for(i=0; i<qtd; i++){ strcpy(entradas[i], ""); scanf("%s", &entradas[i]); fflush(stdin); } i = 3; //i marcando o final da substring int maiorest = 0; for(i < strlen(entradas[0]);i++;){ int mest = 0; int p = 0; //enquanto na primeira string existir um trecho que existe nas strings seguintes, p++. Atualiza o maior estágio de fechadura while(strstr(entradas[p], procurasubs(entradas[0], i-4, i)) != NULL && p < qtd){ if(mest < strlen(strstr(entradas[p], procurasubs(entradas[0], i-4, i)))- 5) mest = strlen(strstr(entradas[p], procurasubs(entradas[0], i-4, i)))- 5; p++; } //se a quantidade de estágios corretos são do tamanho da fechadura consolida o estágio maior para o tamanho da matriz if(p == qtd){ maiorest = mest; break; //encerra o loop para preservar a localização em i e o maior estagio } } char* fechadura = procurasubs(entradas[0], i-4, i); char molde[maiorest][qtd]; int n; for(n=0; n<qtd; n++){ int g = 5; int c = maiorest-1; while(g < strlen(strstr(entradas[n], fechadura))){ molde[c][n] = 'X'; c--; g++; } while(g>= strlen(strstr(entradas[n], fechadura)) && c >=0){ molde[c][n] = ' '; c--; } } int fin, fine; for(fin=0; fin<maiorest; fin++){ for(fine=0; fine<qtd; fine++){ printf("%c", molde[fin][fine]); } printf("\n"); } fflush(stdin); scanf("%i", &qtd); } return 0; }
Desafio 5 Extra – Cego cheio de tensão
Enunciado
Resolução
#include <stdio.h> int main(){ int n, tam; scanf("%i", &n); //numero de casos de teste while(n--){ scanf("%i", &tam); //tamanho de cada caso de teste int v[tam]; for(int i = 0; i < tam; i++){ scanf("%i", &v[i]); //preenchendo o vetor com os valores de tensao } //apenas ignoro a conta que resultaria em Vm = Vmax*1 int i; for(i = 0; i < tam; i++){ if(v[i] < 120 || v[i] >= 300){ //caso nao seja seguro andar no local eu saio do loop break; } } if(i == tam) //caso tenha alcancado o final do loop significa que eh seguro andar printf("Vai na fe amigao\n"); else //se caiu em algum momento antes deve tomar cuidado printf("oopa cuidado ai\n"); } return 0; }