Pesquisar este blog

Livros Recomendados

terça-feira, 2 de fevereiro de 2021

URI (BEECROWD) - 1273 - Justificador - Strings - C

Mais um problema de alinhamento de texto! O problema justificador do Beecrowd! Vou confessar que esse não foi tão simples! Entendi a lógica, mas fazer isso funcionar foi um pouco trabalhoso. Veja abaixo como eu fiz! Acredito que existam várias soluções diferentes para esse problema. Conte nos comentários como ficou a sua solução!

Plataforma: URI (BEECROWD)

Problema1273

Enunciado:
Nós temos algumas palavras e queremos justificá-las à direita, ou seja, alinhar todas elas à direita. Crie um programa que, após ler várias palavras, reimprima estas palavras com suas linhas justificadas à direita.

Linguagens: C e C++


Solução: 

Código em C++:

#include <iostream>
int main() {
    int n, l = 1;
    while (1) {
        std::cin >> n;
        if (n == 0) break;
        int maiorTamanho = 0, tamanho, tamanhoDasPalavras[n], espacosEmBranco, contador = 0;
        char palavra[n][50];
        if (l == 0)
            std::cout << std::endl;
        l = 0;
        while (contador < n) {
            std::cin >> palavra[contador];
            int indice = 0;
            tamanho = 0;
            while (palavra[contador][indice++] != '\0')
                tamanho++;
            if (tamanho > maiorTamanho) maiorTamanho = tamanho;
            tamanhoDasPalavras[contador++] = tamanho;
        }
        contador = 0;
        while (contador < n) {
           espacosEmBranco = maiorTamanho - tamanhoDasPalavras[contador];
            while (espacosEmBranco--)
                std::cout << " ";
            std::cout << palavra[contador++] << std::endl;
        }
    }
    return 0;
}

Código em C:

#include <stdio.h>

int main() {
    
    int n, lock = 1;
    
    while (1) {
        
        scanf("%d ", &n);
        if (n == 0) break;
        
        int maiorTamanho = 0;
        int tamanho;
        int tamanhoDasPalavras[n];
        int espacosEmBranco;
        char palavra[n][50];
        int contador = 0;
        
        if (lock == 0)
            printf("\n");
            
        lock = 0;
        
        while (contador < n) {
            
            scanf("%s", palavra[contador]);
            
            int indice = 0;
            tamanho = 0;
            
            while (palavra[contador][indice++] != '\0')
                tamanho++;
                
            if (tamanho > maiorTamanho) maiorTamanho = tamanho;
                
            tamanhoDasPalavras[contador++] = tamanho;
            
        }
        
        contador = 0;
        
        while (contador < n) {
            
            espacosEmBranco = maiorTamanho - tamanhoDasPalavras[contador];
            
            while (espacosEmBranco--)
                printf(" ");
            
            printf("%s\n", palavra[contador++]);
            
        }
    }
    return 0;
}

Nenhum comentário:

Postar um comentário

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas