Pesquisar este blog

Livros Recomendados

sábado, 13 de março de 2021

URI (BEECROWD) - 2479 - Ordenando a Lista de Crianças do Papai Noel - Ad-Hoc - C e C++

Fala, pessoal! Novo exercício da categoria Ad-Hoc agora! Confiram e comparem com as respostas de vocês!

Plataforma: URI (BEECROWD)

Problema2479

Enunciado:

Papai Noel está nos preparativos finais para a entrega dos presentes para as crianças do mundo todo pois o natal está chegando mais uma vez. Olhando suas novas listas de crianças que irão ganhar presentes neste ano ele percebeu que o duende estagiário (que havia ficado responsável por fazer as listas) não havia colocado os nomes em ordem alfabética. 

Como o Papai Noel é um homem muito organizado ele deseja que cada lista de crianças possua, no seu final, o total de crianças que foram bem comportadas neste ano e um total das que não foram. Assim ele pode comparar a quantidade de crianças que se comportam este ano com as dos anos anteriores.

Para ajudar o bom velhinho, seu dever é criar um programa que leia todos os nomes da lista e imprima os mesmos nomes em ordem alfabética. No final da lista, você deve imprimir o total de crianças que foram e não foram comportadas neste ano.

Linguagens: C e C++

Solução:

Código em C:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compara(const void *p1, const void *p2) {
    return strcmp(p1, p2);
}
int main() {
    int n, i, comportados = 0;
    char sinal;
    char nomes[100][21];
    scanf("%d ", &n);
    for (i = 0; i < n; i++) {
        scanf("%c %s ", &sinal, nomes[i]);
        if (sinal == '+')
            comportados++;
    }
    qsort(nomes, n, 21, compara);
    for (i = 0; i < n; i++)
        printf("%s\n", nomes[i]);
    printf("Se comportaram: %d | Nao se comportaram: %d\n", comportados, n - comportados);
    return 0;
}

Código em C++:

#include <algorithm>
#include <vector>
#include <iostream>

using namespace std;

int main() {
    int n, i, comportados = 0;
    char sinal;
    string str;
    vector<string> nomes;
    cin >> n;
    cin.ignore();
    for (i = 0; i < n; i++) {
        cin >> sinal >> str;
        if (sinal == '+')
            comportados++;
        nomes.push_back(str);
    }
    sort(nomes.begin(), nomes.end());
    for (i = 0; i < nomes.size(); i++)
        cout << nomes.at(i) << endl;
    cout << "Se comportaram: " << comportados << " | Nao se comportaram: " << n - comportados << endl;
    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