Você está aqui: C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Matemática e Estatística |
Como converter de decimal para números romanos em C++ - Exercícios Resolvidos de C++Quantidade de visualizações: 593 vezes |
Pergunta/Tarefa: Escreva um programa C++ que pede para o usuário informar um número inteiro decimal e converta-o para o número romano correspondente. Sua saída deverá ser parecida com: Informe um número decimal: 2023 O número romano correspondente é: MMXXIII Veja a resolução comentada deste exercício usando C++: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> #include <string> using namespace std; // função principal do programa int main(int argc, char *argv[]){ int numero; string resultado = ""; // para guardar o resultado // vamos criar um array com os valores decimais possíveis de // cada número romano int valores_numeros_romanos[13] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; // representação dos números romanos string numeros_romanos[13] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; // vamos pedir para o usuário informar um número decimal cout << "Informe um número decimal: "; cin >> numero; // o número é maior que zero? if (numero > 0) { // percorremos o array de valores decimais dos números romanos for(int i = 0; i < 13; i++){ // enquanto o número informado for maior que o valor do // do número romano atual while(numero >= valores_numeros_romanos[i]){ // reduz o número informado numero = numero - valores_numeros_romanos[i]; // concatena o número romano e continua o cálculo resultado = resultado + numeros_romanos[i]; } } } // mostramos o resultado if(resultado == ""){ cout << "O número informado não possui número romano" << endl; } else{ cout << "O número romano correspondente é: " << resultado << endl; } cout << "\n" << endl; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } |
![]() |
C++ ::: Win32 API (Windows API) ::: Aplicativos e Outros |
C++ WinAPI - Como criar o aplicativo de interface gráfica mais simples usando a API do Windows com C++Quantidade de visualizações: 34620 vezes |
Esta dica mostra uma das mais aplicações gráficas mais simples que podem ser criadas em C++ usando a API do Windows. Trata-se de uma chamada MessageBox() da WinAPI para criar uma caixa de mensagem. Embora simples, este programa pode ser o ponto de partida para aplicações mais úteis. O resultado pode ser visto na imagem abaixo: ![]() E agora o código C++ para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <string> #include <iostream> #include <windows.h> using namespace std; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, "Bem-vindo ao Arquivo de Códigos!", "Meu Programa", MB_OK); return 0; } Este exemplo foi escrito no Dev-C++ e Windows 10. Mas você pode usar Visual C++ ou qualquer outro compilador que permita desenvolver aplicações Windows. |
C++ ::: Fundamentos da Linguagem ::: Passos Iniciais |
C++ do básico ao avançado - Conheça a origem da linguagem C++Quantidade de visualizações: 13514 vezes |
C++ começou como uma versão expandida de C. As extensões C++ foram inventadas primeiramente por Bjarne Stroustrup, em 1979, no Bell Laboratories em Murray Hill, New Jersey. Ele inicialmente chamou a nova linguagem de "C com classes". Contudo, em 1983 o nome foi mudado para C++. Embora C fosse uma das linguagens preferidas e mais usadas para programação profissional em todo o mundo, a invenção de C++ se fez necessária devido a um fator de programação: o aumento da complexidade. No decorrer dos anos, programas de computador se tornaram maiores e mais complexos. Mesmo sendo uma excelente linguagem de programação, C tem seus limites. Em C, uma vez que um programa atinja a marca de 25.000 à 100.000 linhas de códigos, este se torna tão complexo que é difícil analisá-lo como um todo. A manutenção de seu código se torna um pesadelo. O propósito de C++ é quebrar esta barreira. A essência do C++ é permitir que programadores compreendam e gerenciem programas cada vez mais complexos. A maioria das adições feitas ao C por Stroustrup suportam a programação orientada a objetos, às vezes chamada de POO. Stroustrup afirmou que algumas das características da orientação a objetos de C++ foram inspiradas em uma linguagem chamada Simula67. Assim, C++ representa a combinação de dois métodos poderosos de programação. Desde que C++ foi inventada, ela já passou por três revisões importantes, com adições e modificações da linguagem. A primeira revisão ocorreu em 1985 e a segunda em 1990. A terceira ocorreu durante a padronização do C++. Há vários anos que este trabalho de padronização foi iniciado. Para esta finalidade, uma associação entre a ANSI (American National Standards Institute) e a ISO (International Standards Organization) resultou em um comitê de padronização. O primeiro documento contendo o padrão proposto foi criado em 25 de janeiro de 1994. Neste documento, o comitê ANSI/ISO C++ manteve as características definidas por Stroustrup e acrescentou algumas outras. Mas, no geral, este documento inicial refletiu o estado de C++ na época. Logo após a finalização do primeiro documento de padronização C++, um evento ocorreu e com ele a linguagem foi amplamente expandida: a criação da Standard Template Library (STL) por Alexander Stepanov. A STL é um conjunto de rotinas generícas que podemos usar para manipular dados. A STL não é somente poderosa e elegante, mas também muito extensa. |
C++ ::: STL (Standard Template Library) ::: Vector C++ |
Como retornar uma referência ao último elemento de um vector C++ usando a função back()Quantidade de visualizações: 7020 vezes |
O último elemento de um contêiner STL vector pode ser acessado por meio da função back(). Como esta função é sobrecarregada, temos duas opções:reference back(); const_reference back() const; ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> #include <vector> using namespace std; int main(int argc, char *argv[]){ // um vector vazio que conterá inteiros vector<int> valores; // vamos inserir três elementos valores.push_back(54); valores.push_back(13); valores.push_back(87); // vamos obter o valor do último elemento do vector // Note que back() pode ser usada dos dois lados // de uma operação de atribuição int valor = valores.back(); cout << "Último elemento: " << valor << endl; // vamos alterar o valor do último elemento valores.back() = 102; // vamos testar o resultado cout << "Último elemento: " << valores.back() << endl; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este código C++ nós teremos o seguinte resultado: Último elemento: 87 Último elemento: 102 Note que aqui nós usamos: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- int valor = valores.back(); para guardar o valor do último elemento na variável valor. Poderíamos também usar: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- int& valor = valores.back(); valor = 102; Agora valor é uma referência direta ao último elemento do vector. Desta forma, qualquer alteração no valor da variável valor afetará também o último elemento do vector. Observe agora o seguinte trecho de código: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- int valor = valores.back(); // o último elemento é 87 valores.back() = 20; cout << "Último elemento: " << valor << endl; Aqui nós acessamos o valor do último elemento, guardarmos-o na variável valor e atribuímos o valor 20 à valores.back(). Porém, ao imprimirmos a variável valor o seu conteúdo ainda é 87. De fato, o que gostaríamos é que uma alteração em valores.back() afetasse também a variável valor. Assim: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- int& valor = valores.back(); // o último elemento é 87 valores.back() = 20; cout << "Último elemento: " << valor << endl; Mas, como evitar alterações diretas na variável valor? Podemos declarar valor como uma referência constante, ou seja, usar a segunda versão da função back(), a saber const T&, que retorna uma referência constante. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- const int& valor = valores.back(); // o último elemento é 87 valores.back() = 20; valor = 300; // esta linha não compila cout << "Último elemento: " << valor << endl; Agora o efeito que queríamos é alcançado. Alterações em valores.back() afetam a variável valor, mas, não podemos alterar valor diretamente, já que esta variável é uma referência constante agora. |
Desafios, Exercícios e Algoritmos Resolvidos de C++ |
Veja mais Dicas e truques de C++ |
Dicas e truques de outras linguagens |
Python - Como calcular o limite de uma função usando Python e a biblioteca Sympy - Python para Engenharia |
Códigos Fonte |
![]() Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
![]() Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |