Desafio 1 – Operador
Enunciado
Resolução
#include <math.h> #include <stdio.h> int main(){ int n=-1, x, y, dx, dy, dt, final, fx, fy; final= 1000, fx = 0, fy=0; int num, f1; scanf("%i\n", &num); int ix=5, iy=5; int i; for (f1=0; f1<num; f1++){ fx=0, fy=0, final=1000, dt=0, dy=0, dx=0, y=0, x=0; scanf("%i", &n); for(i=0; i<n; i++){ scanf("%i %i", &x, &y); if(ix<x) dx = x-ix; //pa deixa positivo else dx = ix-x; if(iy<y) dy = y-iy; //pa deixa positivo else dy = iy-y; dt = sqrt((dy*dy) + (dx*dx)); // printf("%i %i", dt, final); if(dt<final){ final = dt; fx = x; fy = y; } // printf("i = %i \n", i); } if (n==0) printf("Ihh rapaiz, foi muito bom te conhecer, F proceis.\n"); else if(fx==5 && fy==5) printf("meua migo olha o telefone ai do teu lado! Mas as coordenadas sao x = 5 e y = 5...\n"); else printf("AHAAA achei, corre malucoo as coordenadas sao x = %i, y = %i\n", fx, fy); } return 0; }
Desafio 2 – Olhos atentos
Enunciado
Resolução
#include <string.h> #include <stdio.h> #include <stdlib.h> int main() { int n; int vez; scanf("%i\n", &n); for(vez=0; vez<n; vez++){ int numpalv; scanf("%i", &numpalv); char entrada[numpalv][151]; int inte; for(inte=0; inte<numpalv; inte++){ scanf("%s", entrada[inte]); } int m, n; int qtosdejas = 0; for(m=0; m<numpalv; m++){ if(strcmp(entrada[m], "0") != 0 && !((strlen(entrada[m]) < 3) || (strcmp(entrada[m], "uma") == 0) || (strcmp(entrada[m], "com") == 0) || (strcmp(entrada[m], "por") == 0)|| (strcmp(entrada[m], "que") == 0) || (strcmp(entrada[m], "para") == 0))){ int cont = 0; for(n=0; n<numpalv; n++){ if(m != n && (strcmp(entrada[m], "0")) != 0){ if(strcmp(entrada[m], entrada[n]) == 0) { strcpy(entrada[n], "0"); cont++; qtosdejas ++; } } } if(cont > 0) strcpy(entrada[m], "0"); } } printf("%i ocorrencia(s) de falha na matrix\n", qtosdejas); fflush(stdin); } return 0; }
Desafio 3 – Entrada proibida
Enunciado
Resolução
#include <stdio.h> int ehPrimo(int num); int main(){ //variaveis int primo, comum, maxPrimo, maxComum, produto=-1, maxProdutos, N; //lendo numero de casos de teste scanf("%d", &N); while(N--){ primo = 0; comum = 0; //le os dois limites e ja le o primeiro produto para facilitar no loop a seguir scanf("%i %i %i", &maxPrimo, &maxComum, &produto); maxProdutos = maxPrimo+maxComum; //loop que verifica se o produto eh primo e le o proximo produto em seguida while(produto!=0){ if(ehPrimo(produto)){ primo++; }else{ comum++; } scanf("%i", &produto); } //se nao trouxe nada if(primo==0 && comum == 0){ printf("vei sem nada neah? vai gasta moh grana ai dentro\n"); } //se sao iguais aos limites else if(primo==maxPrimo && comum==maxComum){ printf("ROGeRIO POH DEIXAR ESSX AQUI ENTRAR QUE TA LIMPO\n"); } //se algum for igual ao limite maximo de produtos (soma dos maximos) else if (primo==maxProdutos || comum==maxProdutos){ printf("ROGeRIO POH DEIXAR ESSX AQUI ENTRAR QUE TA LIMPO\n"); } //do contrario nao permite entrada else{ printf("tu ta achando q vai pa onde co essas muamba ai? va vende isso noutro lugar\n"); } } return 0; } //funcao verifica primo int ehPrimo(int num){ int i; //se for 2 eh primo por eh divisivel por 1 e por ele mesmo apenas if(num==2) return 1; //se for divisivel por 2, entao nao eh proximo //elimina numeros pares (pois apenas o 2 eh par e primo) if(num%2==0) return 0; //depois verifica se existe algum numero alem o 1 e ele mesmo que poderia dividir o numero //alem disso, a divisao so podera ser exata se o i for no maximo a metade do numero for(i = 3; i<=num/2;i+=2){ //se algum valor i for divisor do numero, entao nao eh primo if(num%i==0){ return 0; } } //se passou por todos os Is e nao deu retorno, entao eh primo return 1; }
Desafio 4 – Algum robô zuou meu prato!
Enunciado
Resolução
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <malloc.h> #include <math.h> int carbo, fibr, ferr, prot, linha; char encostando[21][2]; //21 opções diferentes de comida se encostando: (P, M, A, B, C, G) = 6+5+4+3+2+1 void qualcomida(char letra){ if(letra != '0'){ if(letra == 'A' || letra == 'P' || letra == 'M') carbo++; //carboidrato else if(letra == 'F') ferr++; //ferro else if(letra == 'C' || letra == 'G') prot++; // proteina else fibr++; //fibras } } int taencostando(char l1, char l2, char encost[21][2]){ int a; for(a=0; a<24; a++){ if((encost[a][0] == l1 && encost[a][1] == l2) || (encost[a][0] == l2 && encost[a][1] == l1)) return 1; } return 0; } void achazoeira(char a, char b){ if(a != '0' && a != b && b != '0'){ if(taencostando(a, b, encostando) == 0){ encostando[linha][0] = b; encostando[linha][1] = a; linha++; } } } int main(){ int n; scanf("%i", &n); int i; for (i=0; i<n; i++){ int a, b, quad, l, c; scanf("%i", &quad); l = sqrt(quad); c = sqrt(quad); char prato[l][c]; carbo = 0; prot = 0; ferr = 0; fibr = 0; for(a=0; a<l; a++){ strcpy(prato[a], ""); for(b=0; b<c; b++) scanf(" %c", &prato[a][b]); } memset(encostando,0,21); //limpa as comidas do ultimo caso de teste linha = 0; //tamanho da lista de comidas que se encostam for(a=0; a<l-1; a++){ for(b=0; b<c-1; b++){ qualcomida(prato[a][b]); //contagem de tipo de comida achazoeira(prato[a][b+1], prato[a][b]); //verificação da comida ao lado da atual achazoeira(prato[a+1][b], prato[a][b]); //verificação da comida abaixo da atual if(a == l-2) { //verificação da ultima linha do prato qualcomida(prato[a+1][b]); if(b < l-1) achazoeira(prato[a+1][b+1], prato[a+1][b]); } if(b == c-2) { //verificação da ultima coluna do prato qualcomida(prato[a][b+1]); if(a < c-1) achazoeira(prato[a+1][b+1], prato[a][b+1]); } } } qualcomida(prato[a][b]); //pontinha do lado direito inferior da matriz que não é verificada no for char riqueza[10]; //verificando quem está em maior quantidade no prato if(carbo > ferr && carbo > fibr && carbo > prot) strcpy(riqueza, "carboidrato"); else if(ferr > carbo && ferr > fibr && ferr > prot) strcpy(riqueza, "ferro"); else if(fibr > ferr && fibr > carbo && fibr > prot) strcpy(riqueza, "fibras"); else strcpy(riqueza, "proteina"); printf("Rangao rico em %s", riqueza); if(linha > 0) printf("...mas ECA! Um robo zuou meu prato %i vez(es). Desisto!\n", linha); else printf(". Dilicinha!!\n"); } return 0; }