17 de outubro de 2021

Do bit Ao Byte

Embarcados, Linux e programação

Desafio maker 03: Ordenar um array

programador back-end | Incrementar um valor | IoT | Pausar processamento | desafio maker | ordenar um array | caixa dagua | blink sem condicionais

Molezinha ou não? O desafio maker 03 propõe algo que é bastante fácil de fazer, mas não vamos ordenar um array utilizando loops for, nem while e nem criar uma função recursiva, ok?

Desafio maker 03 – Apresentando o desafio

Devemos ordenar um array com os valores abaixo, cujo array deverá ser criado com um recurso do próprio C++. A API do Arduino é C++, não se preocupe. Se não funcionar com Arduino, funciona com ESP32, mas dá pra fazer no próprio computador, utilizando Codeblocks, VS Code, QtCreator ou outra IDE que desejar.

O array a ser ordenado é esse:

{4,1,4,3,4,1,5,7};

Ah! Esqueci de dizer; é preciso que o resultado esteja em ordem decrescente.

Ops! Esqueci de dizer outra coisa; a ordenação deve ser feita em uma linha só. Lembre-se: sem loop for, while e sem criar uma função recursiva. É isso.

Ouch! Esqueci outra coisa; a ordenação deve ser reentrante; isso significa que não é para criar outro vetor para alocar a ordenação.

Dicas do desafio maker 03

Um vetor em C++ é um objeto, contendo métodos para acessar seu conteúdo. Não use .sort() também, mas “talvez” haja algum recurso a utilizar. O array acima pode ser criado assim:

//DESAFIO MAKER 03: Ordenar um array
#include <bits/stdc++.h>

//se for fazer no PC/notebook, use assim:
using namespace std;

...

//se for fazer no Arduino/ESP, faça no setup
int main(){
    vector <int> v {4,1,4,3,4,1,5,7};
    //resto do código...
}

Mastigado! Quem está habituado com o recurso vai matar essa fácil.

Outra dica importante; quando tiver dúvidas de C++, a melhor referência que temos na Internet acredito ser o site cplusplus. Posso estar errado em recomendar o site enfaticamente, mas me referencio a ele vez ou outra quando preciso lembrar uma sintaxe ou em busca de uma referência para determinado propósito. O conteúdo está na língua inglesa.

A última dica é um trocadilho com mensagem “oculta” de um livro fictício sobre o fiel amigo do homem:

“Como demonstração de amizade, ele olha para cima e lhe dá uma lambda antes de latir: Au, au!”.

Oferecimento

Esse Desafio maker 03 é um oferecimento da CurtoCircuito, parceiro de longa data do blog, sempre à frente com novidades e materiais de primeira para maker, como essa A9G que estou prestes a escrever um artigo.

Até a resposta do desafio e, se solucionar, cole em nossa página no facebook, comentando na publicação. Use Ctrl+J para colar código ou use o site pastebin.

Até o artigo de solução!