quarta-feira, 24 de outubro de 2018

URI PROBLEMA 1263 - Aliteração SOLUÇÃO EM C

URI Online Judge | 1263

Aliteração

Por TopCoder*  EUA
Timelimit: 1
Uma aliteração ocorre quando duas ou mais palavras consecutivas de um texto possuem a mesma letra inicial (ignorando maiúsculas e minúsculas). Sua tarefa é desenvolver um programa que identifique, a partir de uma sequência de palavras, o número de aliterações que essa sequência possui.

Entrada

A entrada contém diversos casos de testes. Cada caso é expresso como um texto em uma única linha, contendo de 1 a 100 palavras separadas por um único espaço, cada palavra tendo de 1 a 50 letras minúsculas ou maiúsculas ('A'-'Z','a'-'z'). A entrada termina em EOF.

Saída

Para cada caso de teste imprima o número de aliterações existentes no texto informado, conforme exemplos abaixo.



#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main()
{
    char line[6001];
    char *curr, *prev, letter;
    int length, alliterations;

    while (fgets(line, 6001, stdin)) {
        alliterations = 0;
        length = 0;
        letter = '\0';
        curr = line;
        prev = NULL;

        while (*curr != '\n') {
            if (!prev || *prev == ' ' && *curr != ' ') {
                if (letter == tolower(*curr))
                    ++length;
                else {
                    if (length > 1)
                        ++alliterations;

                    length = 1;
                    letter = tolower(*curr);
                }
            }
            prev = curr;
            ++curr;
        }
        if (length > 1)
            ++alliterations;

        printf("%d\n", alliterations);
    }

    return 0;
}

Nenhum comentário:

Postar um comentário

URI PROBLEMA 1133 - Resto da Divisão SOLUÇÃO EM C

URI Online Judge | 1133 Resto da Divisão Adaptado por Neilor Tonin, URI   Brasil Timelimit: 1 Escreva um programa que leia 2 valo...