Resoluções da Etapa 2

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

Deixe uma resposta

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