Anúncio Patrocinado
Chat de Sexo - Site para adultso - Maiores de 18 anos. Converse com pessoas de todo o Brasil, de forma discreta e anônima
Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: C++ ::: Dicas & Truques ::: Arquivos e Diretórios

Arquivos e diretórios em C++ - Como excluir um arquivo usando a função remove() do C++

Quantidade de visualizações: 10067 vezes
Em algumas situações nossos códigos C++ precisam excluir arquivos. Isso pode ser feito com o auxílio da função remove() ou _remove(), disponível no header io.h or stdio.h (trazido da linguagem C). Veja a assinatura desta função:

int remove(const char *filename);


Se o arquivo for excluído com sucesso a função retornará o valor 0. O retorno será -1 se um erro ocorrer. Neste caso a variável global errno será definido como um dos seguintes valores:

a) ENOENT - No such file or directory - O caminho do arquivo é inválido;

b) EACCESS - Acesso negado - Algum outro programa está usando este arquivo e mantém controle sobre o mesmo.

Veja um trecho de código no qual excluimos um arquivo:

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // vamos excluir este arquivo
  char arquivo[] = "C:\\Dev-Cpp\\arquivo.txt";

  // vamos testar se o arquivo foi excluído com sucesso
  if(remove(arquivo) != 0){
    cout << "Erro: " << strerror(errno) << endl;
  }
  else{
    cout << "Arquivo excluído com sucesso" << endl;
  }

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

É possível usar a versão Unicode de remove(). O método _wremove(), também presente em io.h or stdio.h é útil quando precisamos internacionalizar nossas aplicações. Veja o exemplo:

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // vamos excluir este arquivo
  wchar_t arquivo[] = L"C:\\Dev-Cpp\\arquivo.txt";

  // vamos testar se o arquivo foi excluído com sucesso
  if(_wremove(arquivo) != 0){
    cout << "Erro: " << strerror(errno) << endl;
  }
  else{
    cout << "Arquivo excluído com sucesso" << endl;
  }

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Ao executar este código nós teremos o seguinte resultado:

Arquivo excluído com sucesso.

Link para compartilhar na Internet ou com seus amigos:

Lisp ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar o laço loop for da linguagem Lisp

Quantidade de visualizações: 443 vezes
O laço for loop da linguagem Common Lisp é usado quando sabemos exatamente quantas vezes uma instrução ou um grupo de instruções deve ser repetido. Este laço é similar ao laço for encontrado na maioria das linguagens de programação.

Vamos começar vendo um laço for loop que conta de 1 até 10:

; Um laço for loop que conta de 1 até 10
(loop for i from 1 to 10
  do (print i)
)

Ao executar este código Common Lisp nós teremos o seguinte resultado:

1
2
3
4
5
6
7
8
9
10

Agora veja o mesmo laço usado para contar de 10 até 1, ou seja, em ordem decrescente:

; Um laço for loop que conta de 10 até 1
(loop for i from 10 downto 1
  do (print i)
)

Note que, agora, eu troquei "to" por "downto" para que a variável de controle fosse decrementada, em vez de incrementada. Dessa forma, ao executarmos este código Common Lisp, o resultado será:

10
9
8
7
6
5
4
3
2
1


C# ::: Dicas & Truques ::: Data e Hora

Datas e horas em C# - Como obter o valor numérico do dia da semana para uma determinada data usando C#

Quantidade de visualizações: 12978 vezes
A propriedade DayOfWeek da classe DateTime da linguagem C# retorna um valor numérico que corresponde ao dia da semana. Assim, se o dia for domingo, o retorno será 0. Se for segunda-feira, o resultado será 1, e assim por diante.

Veja o código completo para o exemplo:

using System;

namespace Estudos{
  class Program{
    static void Main(string[] args) {
      // domingo = 0, segunda = 1, etc
      DateTime agora = DateTime.Now;
      int dia_semana = (int)agora.DayOfWeek;
      Console.WriteLine("O valor numérico do dia da semana é: {0:D}", dia_semana);

      Console.WriteLine("\n\nPressione uma tecla para sair...");
      Console.ReadKey();
    }
  }
}

Ao executar este código nós teremos o seguinte resultado:

O valor numérico do dia da semana é: 2


C ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca)

C para iniciantes - Como ordenar os elementos de um vetor de inteiros usando a ordenação da bolha (Bubble Sort) na linguagem C

Quantidade de visualizações: 9290 vezes
O método ou algorítmo de ordenação da bolha é uma das técnicas mais simples de ordenação. No entanto, este método não é eficiente, visto que o tempo despendido para sua execução é muito elevado se comparado à outros métodos existentes. Geralmente usamos este método quando queremos ordenar 50 elementos ou menos.

O entendimento deste método é fácil. Se estivermos ordenandos os valores do menor para o maior, o método da bolha percorre os elementos do vetor (array), comparando e movendo o menor valor para a primeira posição do vetor, tal qual bolhas indo para a superfície. Veja um exemplo completo:

#include <stdio.h>
#include <stdlib.h>

void bubble_sort(int matriz[], int tam){
  int temp, i, j;

  for(i = 0; i < tam; i++){
    for(j = 0; j < tam; j++){
      if(matriz[i] < matriz[j]){
        temp = matriz[i];
        matriz[i] = matriz[j];
        matriz[j] = temp;
      }
    }
  }
}

int main(int argc, char *argv[])
{
  int valores[] = {4, 6, 2, 8, 1, 9, 3, 0, 11};
  int i, tamanho = 9;

  // imprime a matriz sem a ordenação
  for(i = 0; i < 9; i++){
    printf("%d ", valores[i]);
  }

  // vamos ordenar a matriz
  bubble_sort(valores, tamanho);

  // imprime a matriz ordenada
  puts("\n");
  for(i = 0; i < 9; i++){
    printf("%d ", valores[i]);
  }

  puts("\n");
  system("pause");
  return 0;
}

Ao executar este código nós teremos o seguinte resultado:

Sem ordenação:
4, 6, 2, 8, 1, 9, 3, 0, 11

Ordenados:
0, 1, 2, 3, 4, 6, 8, 9, 11


Python ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas

Como calcular o coeficiente angular de uma reta em Python dados dois pontos no plano cartesiano

Quantidade de visualizações: 2798 vezes
O Coeficiente Angular de uma reta é a variação, na vertical, ou seja, no eixo y, pela variação horizontal, no eixo x. Sim, isso mesmo. O coeficiente angular de uma reta tem tudo a ver com a derivada, que nada mais é que a taxa de variação de y em relação a x.

Vamos começar analisando o seguinte gráfico, no qual temos dois pontos distintos no plano cartesiano:



Veja que o segmento de reta AB passa pelos pontos A (x=3, y=6) e B (x=9, y=10). Dessa forma, a fórmula para obtenção do coeficiente angular m dessa reta é:

\[\ \text{m} = \frac{y_2 - y_1}{x_2 - x_1} = \frac{\Delta y}{\Delta x} = tg \theta \]

Note que __$\Delta y__$ e __$\Delta x__$ são as variações dos valores no eixo das abscissas e no eixo das ordenadas. No triângulo retângulo que desenhei acima, a variação __$\Delta y__$ se refere ao comprimento do cateto oposto e a variação __$\Delta y__$ se refere ao comprimento do cateto adjascente.

Veja agora o trecho de código na linguagem Python que solicita as coordenadas x e y dos dois pontos, efetua o cálculo e mostra o coeficiente angular m da reta que passa pelos dois pontos:

# vamos importar o módulo Math
import math as math

def main():
  # x e y do primeiro ponto
  x1 = float(input("Coordenada x do primeiro ponto: "))
  y1 = float(input("Coordenada y do primeiro ponto: "))

  # x e y do segundo ponto
  x2 = float(input("Coordenada x do segundo ponto: "))
  y2 = float(input("Coordenada y do segundo ponto: "))

  # agora vamos calcular o coeficiente angular
  m = (y2 - y1) / (x2 - x1)

  # e mostramos o resultado
  print("O coeficiente angular é: %f\n\n" % m)
  
if __name__== "__main__":
  main()

Ao executar este código em linguagem Python nós teremos o seguinte resultado:

Coordenada x do primeiro ponto: 3
Coordenada y do primeiro ponto: 6
Coordenada x do segundo ponto: 9
Coordenada y do segundo ponto: 10
O coeficiente angular é: 0.666667

Veja agora como podemos calcular o coeficiente angular da reta que passa pelos dois pontos usando o Teorema de Pitágoras. Note que agora nós estamos tirando proveito da tangente do ângulo Theta (__$\theta__$), também chamado de ângulo Alfa ou Alpha (__$\alpha__$):

# vamos importar o módulo Math
import math as math

def main():
  # x e y do primeiro ponto
  x1 = float(input("Coordenada x do primeiro ponto: "))
  y1 = float(input("Coordenada y do primeiro ponto: "))

  # x e y do segundo ponto
  x2 = float(input("Coordenada x do segundo ponto: "))
  y2 = float(input("Coordenada y do segundo ponto: "))

  # vamos obter o comprimento do cateto oposto
  cateto_oposto = y2 - y1
  # e agora o cateto adjascente
  cateto_adjascente = x2 - x1
  # vamos obter o ângulo tetha, ou seja, a inclinação da hipetunesa
  # (em radianos, não se esqueça)
  tetha = math.atan2(cateto_oposto, cateto_adjascente)
  # e finalmente usamos a tangente desse ângulo para calcular
  # o coeficiente angular
  tangente = math.tan(tetha)

  # e mostramos o resultado
  print("O coeficiente angular é: %f\n\n" % tangente)
  
if __name__== "__main__":
  main()

Ao executar este código você verá que o resultado é o mesmo. No entanto, fique atento às propriedades do coeficiente angular da reta:

1) O coeficiente angular é positivo quando a reta for crescente, ou seja, m > 0;

2) O coeficiente angular é negativo quando a reta for decrescente, ou seja, m < 0;

3) Se a reta estiver na horizontal, ou seja, paralela ao eixo x, seu coeficiente angular é zero (0).

4) Se a reta estiver na vertical, ou seja, paralela ao eixo y, o coeficiente angular não existe.


wxWidgets ::: Dicas de Estudo e Anotações ::: Passos Iniciais

Como baixar, compilar a biblioteca e criar um projeto C++ wxWidgets usando o Visual Studio 2017

Quantidade de visualizações: 2058 vezes
O wxWidgets (conhecido anteriormente como wxWindows) é um toolkit para a criação de interfaces gráficas de usuário (UI) multiplataforma. É lançado sob uma licença livre, a wxWindows Library Licence.

Lançada em 1992 por Julian Smart, que continua como desenvolvedor, a biblioteca wxWidgets permite que um programa seja compilado e executado em diversas plataformas de computação, com poucas ou nenhuma modificação. Ela suporta sistemas como: Microsoft Windows, Apple Inc. Mac OS, Linux/Unix (para X11).

A biblioteca é implementada em C++, mas outras implementações estão disponíveis para várias das linguagens de programação mais comuns, entre elas: Python, Smalltalk, Perl e Java.

Fazendo o dowload do código fonte do wxWidgets

Agora que você já sabe o que é o wxWidgets, chegou a hora da notícia triste. Compilar e usar esta biblioteca em nossos programas C++ é um pesadelo, principalmente no Windows. Por isso, resolvi compartilhar com todos as minha experiência, já que o entendimento de todos os passos envolvidos me consumiu alguns finais de semana.

O primeiro passo é baixar o código fonte (source code) do wxWidgets. Para isso aponte o seu navegador para https://www.wxwidgets.org. Para esta dica eu usei a versão 3.1.3 no Visual Studio 2017. Acredito que outras versões, tanto do wxWidgets quanto do Visual Studio C++ tenham procedimentos parecidos.

Vá até a área de downloads e localize o instalador Windows Installer 1.3.1, com o tamanho de 53Mb. Lembre-se que estamos baixando o código fonte da biblioteca, e não os binários já prontos.

Finalizado o download, faça a instalação em um diretório sem espaços. Uma boa sugestão é "C:\wxWidgets-3.1.3"

Compilando o wxWidgets usando o Visual Studio 2017

Chegou a hora da compilação. Se você ainda não o fez, abra o VS 2017, vá no menu Abrir -> Pasta/Solução e navegue até o diretório C:\wxWidgets-3.1.3\build\msw. Neste diretório você encontrará projetos para as mais diferentes versões do Visual Studio. Como estamos usando o VS 2017, o projeto a ser aberto é wx_vc15.sln. Escolhe logo este arquivo e clique Abrir.

Para o processo de compilação nós temos quatro opções: Debug (static), DLL Debug, DLL Release e Release (static). O Debug deixa o executável maior, porque inclui verificações de faixas e outras informações importantes para o desenvolvimento. As versões com DLL são escolhas boas, pois deixa o executável menor e agiliza o processo de compilação. O alvo da CPU pode ser Win32 ou x64, dependendo do seu desejo. Para esta dica eu usei Win32.

Agora vamos compilar para estas quatro opções. Escolha a primeira (Debug), defina a CPU alvo e use a opção Compilar Solução. Pode ir buscar um cafezinho porque o processo é um pouco demorado. Faça isso com as outras três opções de compilação.

Correu tudo bem? Nada de erros? Vamos continuar então.

Criando o seu primeiro projeto wxWidgets para testar sua compilação

Em geral, quando terminamos de compilar o wxWidgets, a primeira coisa que fazemos é abrir uma das samples (amostras) que acompanham a biblioteca, tais como a "minimal", no diretório "C:\wxWidgets-3.1.3\samples\minimal". Se você fizer isso agora, verá que esta aplicação (minimal_vc15.sln) é compilada e executada com sucesso. O problema é quando queremos construir nossa aplicação a partir deste template. O simples fato de renomearmos o projeto ou movê-lo desse diretório já trará uma dor de cabeça danada.

Então vamos criar nosso próprio projeto. Feche e abra o VS 2017 novamente. Em seguida vá até o menu Arquivo -> Novo -> Projeto -> Projeto Vazio. Dê um nome e um local para este projeto, sempre sem espaços e caracteres especiais.

No Gerenciador de Soluções, clique com o botão auxiliar no nó Arquivos de Origem (Source Code) e escolha Adicionar -> Novo Item. Na janela que se abrirá, escolha Arquivo do C++ (.cpp), dê o nome "Main.cpp" e clique Adicionar.

Agora copie o código abaixo (retirado do manual do wxWidgets) e cole no arquivo Main.cpp:

// wxWidgets "Hello World" Program
// For compilers that support precompilation, 
// includes "wx/wx.h".
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
    #include <wx/wx.h>
#endif

class MyApp : public wxApp
{
  public:
    virtual bool OnInit();
};

class MyFrame : public wxFrame
{
  public:
    MyFrame();

  private:
    void OnHello(wxCommandEvent& event);
    void OnExit(wxCommandEvent& event);
    void OnAbout(wxCommandEvent& event);
};

enum
{
  ID_Hello = 1
};

wxIMPLEMENT_APP(MyApp);

bool MyApp::OnInit()
{
  MyFrame *frame = new MyFrame();
  frame->Show(true);
  return true;
}

MyFrame::MyFrame()
  : wxFrame(NULL, wxID_ANY, "Hello World")
{
  wxMenu *menuFile = new wxMenu;
  menuFile->Append(ID_Hello, "&Hello...\tCtrl-H",
    "Help string shown in status bar for this menu item");
  menuFile->AppendSeparator();
  menuFile->Append(wxID_EXIT);
  wxMenu *menuHelp = new wxMenu;
  menuHelp->Append(wxID_ABOUT);
  wxMenuBar *menuBar = new wxMenuBar;
  menuBar->Append(menuFile, "&File");
  menuBar->Append(menuHelp, "&Help");
  SetMenuBar(menuBar);
  CreateStatusBar();
  SetStatusText("Welcome to wxWidgets!");
  Bind(wxEVT_MENU, &MyFrame::OnHello, this, ID_Hello);
  Bind(wxEVT_MENU, &MyFrame::OnAbout, this, wxID_ABOUT);
  Bind(wxEVT_MENU, &MyFrame::OnExit, this, wxID_EXIT);
}

void MyFrame::OnExit(wxCommandEvent& event)
{
  Close(true);
}

void MyFrame::OnAbout(wxCommandEvent& event)
{
  wxMessageBox("This is a wxWidgets Hello World example",
    "About Hello World", wxOK | wxICON_INFORMATION);
}

void MyFrame::OnHello(wxCommandEvent& event)
{
  wxLogMessage("Hello world from wxWidgets!");
}


Assim que você colar esse código, você já verá um monte de erros, várias partes do código sublinhadas de vermelho. Não se desespere que nós vamos corrigir isso agora.

Clique com o botão direito no nó do seu projeto e escolha a opção Propriedades. Nessa janela, localize a opção Configuração e selecione Todas as configurações. Plataforma fica à sua escolha, Win32 (x86) ou x64. Na dúvida deixe Win32.

Agora vá em C/C++, na aba Geral e localize Diretórios de Inclusão Adicionais. Clique e escolha a opção Editar. Adicione uma nova entrada para o diretório "C:\wxWidgets-3.1.3\include" (sem as aspas). Clique a opção Aplicar. Agora, ainda na opção C/C++, escolha Pré-processador, clique Editar e vamos acrescentar o valor WXUSINGDLL. Clique Aplicar novamente e vamos agora até o Veiculador (Linker). Localize Diretórios de Bibliotecas Adicionais e adicione a entrada "C:\wxWidgets-3.1.3\lib\vc_dll". Clique Aplicar.

Agora mude a configuração para Release. Em seguida vá na seção C/C++, localize a opção Diretórios de Inclusão Adicionais e acrescente a entrada "C:\wxWidgets-3.1.3\lib\vc_dll\mswu" (sem aspas). Vá agora no Veiculador (Linker), opção Entrada e informe o valores wxbase31u.lib e wxmsw31u_core.lib para Dependências Adicionais, cada um em uma linha.

Vamos repetir a mesma coisa para a configuração Debug. Dessa vez os valores para Dependências Adicionais na opção Entrada do Veiculador serão wxbase31ud.lib e wxmsw31ud_core.lib (cada um em uma linha). Para finalizar, vá em C/C++ e adicione "C:\wxWidgets-3.1.3\lib\vc_dll\mswud" como uma nova entrada para Diretórios de Inclusão Adicionais.

Chegou o grande momento

Se você seguiu todos os passos atentamente, já está pronto para compilar seu projeto. Dispare a opção Compilar e cruze os dedos. É bem provável que você já veja de cara o erro abaixo:

Erro LNK2019 símbolo externo indefinido _main referenciado na função "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) estudos C:\estudos_wxwidgets\estudos\estudos\estudos\MSVCRTD.lib(exe_main.obj) 1

Se isso acontecer, vá de novo até as propriedades do projeto, selecione Todas as Configurações, localize a opção Veiculador (Linker) e depois Sistema. Em SubSystem, troque o valor Console (/SUBSYSTEM:CONSOLE) por Windows (/SUBSYSTEM:WINDOWS). Tente compilar novamente.

É provável que você encontre mais um erro, e esperamos que será o último.

O programa não pode ser iniciado porque está faltando wxmsw313u_core_vc_custom.dll no seu computador. Tente reinstalá-lo para resolver esse problema.

O programa não pode ser iniciado porque está faltando wxbase313u_vc_custom.dll no seu computador. Tente reinstalá-lo para resolver esse problema.

Isso aconteceu porque você deve estar compilando em Debug DLL ou Release DLL (o que não é uma má idéia). Para resolver, vá até "C:\wxWidgets-3.1.3\lib\vc_dll" e copie essas duas DLLs para o diretório do seu executável (que deve estar dentro da pasta Debug ou Release) ou para o diretório Windows. A opção de colocar junto ao seu executável é melhor, pois evita o risco de erros caso você tiver versões diferentes do wxWidgets no seu sistema.

Abraços e vida longa ao C/C++.


Veja mais Dicas e truques de wxWidgets

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
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
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
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
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 8 usuários muito felizes estudando em nosso site.