Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * File: main.c
- * Author: pmargreff
- * link: https://www.urionlinejudge.com.br/judge/pt/problems/view/1069
- * Created on 1 de Janeiro de 2015, 22:29
- */
- #include <stdio.h>
- #include <stdlib.h>
- void limparBuffer(void);
- void ler(char vetor[]);
- int contador(char vetor[], int *d);
- int main(int argc, char** argv) {
- int casos; // número de casos de teste
- int n;
- int diamantes; // número de diamantes
- char vetor[1000]; //variável para armazenar a entrada
- scanf("%d", &casos);
- for (n = 0; n < casos; n++) {
- limparBuffer();
- ler(vetor);
- contador(vetor, diamantes);
- printf("%d\n", diamantes);
- }
- return (EXIT_SUCCESS);
- }
- //limpa o buffer consumindo todos caracteres até encontrar \n ou EOF
- void limparBuffer(void) {
- char c;
- while ((c = getchar()) != '\n' && c != EOF);
- }
- //le com scanf até \n ou os 1000 primeiros caracteres0
- void ler(char vetor[]) {
- scanf("%1000[^\n]s", vetor);
- }
- /*
- * percorre todo o vetor, se encontrar a parte esquerda de um diamante
- * incrementa um na variável contEsq, se encontrar a parte direita
- * incrementa um na variável contDir se não encontrar não faz nada.
- * Por se precisar de dois lados para completar um diamante, logo o
- * número de diamantes é igual ao menor número de lados encontrados
- * Passa o menor dos dois contadores para a váriável d que faz
- * referencia a diamantes no main.
- */
- int contador(char vetor[], int *d) {
- int i, contEsq = 0, contDir = 0;
- int n = 1;
- for (i = 0; vetor[i] != '\0'; i++) {
- if (vetor[i] == '<')
- contEsq++;
- else if (vetor[i] == '>')
- contDir++;
- }
- if (contEsq > contDir)
- *d = &contDir;
- else
- *d = &contEsq;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement