Você está aqui: C++ ::: Dicas & Truques ::: Arquivos e Diretórios

Como renomear um diretório em C++ usando a função rename()

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

int rename(const char *oldname, const char *newname);


Se o diretório for renomeado 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) EINVAL - Invalid argument - Os nomes dos diretórios contém caracteres inválidos;

b) ENOENT - No such file or directory - O caminho do diretório é inválido;

c) EACCESS - Acesso negado - Algum outro programa está usando este diretório e mantém controle sobre o mesmo.

Veja um trecho de código no qual renomeamos um diretório:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // vamos renomear este diretório
  char dir_antigo[] = "C:\\Dev-Cpp\\estudos";
  char dir_novo[] = "C:\\Dev-Cpp\\estudos2";

  // vamos testar se o diretório for renomeado com sucesso
  if(rename(dir_antigo, dir_novo) != 0){
    cout << "Erro: " << strerror(errno) << endl;
  }
  else{
    cout << "Diretório renomeado com sucesso" << endl;
  }

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

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

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // vamos renomear este diretório
  wchar_t dir_antigo[] = L"C:\\Dev-Cpp\\estudos";
  wchar_t dir_novo[] = L"C:\\Dev-Cpp\\estudos2";

  // vamos testar se o diretório for renomeado com sucesso
  if(_wrename(dir_antigo, dir_novo) != 0){
    cout << "Erro: " << strerror(errno) << endl;
  }
  else{
    cout << "Diretório renomeado com sucesso" << endl;
  }

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

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

Diretório renomeado com sucesso

Link para compartilhar na Internet ou com seus amigos:

Java ::: Fundamentos da Linguagem ::: Modificadores

Como usar o modificador native da linguagem Java

Quantidade de visualizações: 9238 vezes
O modificador native é usado exclusivamente com métodos. A implementação de um método marcado como native não é feita em Java mas sim em outra linguagem de programação, tal como C ou C++.

Veja um exemplo de uma aplicação Java contendo um método native:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

public class Estudos{
  private static native void escrever();
	
  public static void main(String[] args){
    System.loadLibrary("Funcoes");
    escrever();
  }
}

O primeiro detalhe a observar é a definição de um método native chamado escrever(). Veja que este método possui apenas a assinatura, o que quer dizer que sua implementação virá de um ponto externo ao nosso código. Em seguida temos uma chamada ao método LoadLibrary() da classe System. Este método recebe uma string contendo o nome da biblioteca que contém a implementação do método escrever(). O próprio método LoadLibrary se encarrega de acrescentar as extensões .dll ou .so ao nome da biblioteca que será carregada.

Quando estamos trabalhando com métodos native, é sempre uma boa idéia estudarmos JNI (Java Native Interface). JNI é uma API do Java que permite que métodos Java chamem funções nativas implementadas em C.


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade)

Exercícios Resolvidos de Java - Escreva um programa Java que usa uma função recursiva para retornar a quantidade de dígitos presentes em um número inteiro informado pelo usuário

Quantidade de visualizações: 795 vezes
Pergunta/Tarefa:

Escreva um programa Java usa uma função recursiva para retornar a quantidade de dígitos presentes em um número inteiro informado pelo usuário. Você pode usar qualquer técnica de recursividade disponível, desde que o retorno da função seja um valor inteiro.

Você deverá implementar a seguinte função recursiva:

public static int quantDigitos(int numero){
  // seu código aqui
}
Sua saída deverá ser parecida com:

Informe um número inteiro de qualquer tamanho: 4983
O número informado possui 4 dígitos
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package exercicio;

import java.util.Scanner;

public class Exercicio{
  public static void main(String[] args) {
    // cria um novo objeto da classe Scanner
    Scanner entrada = new Scanner(System.in);
    	
    // vamos pedir para o usuário informar um número inteiro
    System.out.print("Informe um número inteiro de qualquer tamanho: ");
    int num = Integer.parseInt(entrada.nextLine());
    
    // vamos obter a quantidade de dígitos no número usando
    // uma chamada à função recursiva quant_digitos()
    int quant = quantDigitos(num);
     
    // mostramos o resultado
    System.out.println("O número informado possui " + quant +
      " dígitos");
  }
  
  // função recursiva que recebe um número inteiro e retorna
  // sua quantidade de dígitos
  public static int quantDigitos(int numero){
    if ((numero / 10) == 0){ // atenção: divisão inteira
      // retorna o caso base
      return 1;
    }
    else{
      // efetua mais uma chamada recursiva
      return 1 + quantDigitos(numero / 10);
    }
  }   
}



Java ::: Java para Engenharia ::: Geometria Analítica e Álgebra Linear

Como calcular a transposta de uma matriz em Java - Java para Geometria Analítica e Álgebra Linear

Quantidade de visualizações: 2788 vezes
A matriz transposta de uma matriz A é a matriz AT. Tal matriz é obtida quando copiamos os elementos da matriz A para uma outra matriz (ou para ela mesma) e trocamos de posição as linhas e colunas. Dessa forma, a primeira linha da matriz A se transforma na primeira coluna da matriz transposta, a segunda linha da matriz A se transforma na segunda coluna da matriz transposta e assim por diante.

Em termos de notação, podemos dizer, de forma algébrica, que:

ATji = Aij

Onde i representa as linhas e j representa as colunas, tanto na matriz original quanto na matriz transposta.

É importante estar atento à quantidade de linhas e colunas na matriz original e na matriz transposta equivalente. Assim, se a matriz original for 3x2, a matriz transposta será 2x3.

Antes de vermos o código Java, dê uma olhada na seguinte matriz de duas linhas e três colunas:

\[A = \left[\begin{matrix} 3 & 5 & 7 \\ 1 & 2 & 9 \end{matrix}\right] \]

Sua matriz transposta correspondente é:

\[A^T = \left[\begin{matrix} 3 & 1 \\ 5 & 2 \\ 7 & 9 \end{matrix}\right] \]

E agora veja o código Java que declara uma matriz 2x3 e gera a matriz transposta 3x2:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

public class Estudos{
  public static void main(String args[]){
    // vamos declarar e construir uma matrix
    // 2x3 (duas linhas e três colunas
    int matriz[][] = {{3, 5, 7}, {1, 2, 9}};
    
    // vamos exibir os valores da matriz
    System.out.println("Elementos da matriz:");
    for(int i = 0; i < matriz.length; i++){
      for(int j = 0; j < matriz[0].length; j++){
        System.out.printf("%5d  ", matriz[i][j]);
      }
      System.out.println();
    }
    
    // como temos uma matriz 2x3, a transposta deverá ser
    // 3x2, ou seja, três linhas e duas colunas
    int linhas = matriz.length; // linhas da matriz original
    int colunas = matriz[0].length; // colunas da matriz original
    int transposta[][] = new int[colunas][linhas]; 
    
    // e agora vamos preencher a matriz transposta
    for(int i = 0; i < matriz.length; i++){
      for(int j = 0; j < matriz[0].length; j++){
        transposta[j][i] = matriz[i][j];
      }
    }
    
    // vamos exibir os valores da matriz transposta
    System.out.println("Elementos da matriz transposta:");
    for(int i = 0; i < transposta.length; i++){
      for(int j = 0; j < transposta[0].length; j++){
        System.out.printf("%5d  ", transposta[i][j]);
      }
      System.out.println();
    }
  }
}

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

Elementos da matriz:
    3      5      7  
    1      2      9  
Elementos da matriz transposta:
    3      1  
    5      2  
    7      9  



JavaScript ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o cosseno de um ângulo em JavaScript usando a função cos() do objeto Math - Calculadora de cosseno em JavaScript

Quantidade de visualizações: 7126 vezes
Em geral, quando falamos de cosseno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função cosseno disponível nas linguagens de programação para calcular o cosseno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria.

No entanto, é sempre importante entender o que é a função cosseno. Veja a seguinte imagem:



Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles.

Assim, o cosseno é a razão entre o cateto adjascente e a hipotenusa, ou seja, o cateto adjascente dividido pela hipotenusa. Veja a fórmula:

\[\text{Cosseno} = \frac{\text{Cateto adjascente}}{\text{Hipotenusa}} \]

Então, se dividirmos 30 por 36.056 (na figura eu arredondei) nós teremos 0.8320, que é a razão entre o cateto adjascente e a hipotenusa (em radianos).

Agora, experimente calcular o arco-cosseno de 0.8320. O resultado será 0.5881 (em radianos). Convertendo 0.5881 radianos para graus, nós obtemos 33.69º, que é exatamente o ângulo em graus entre o cateto adjascente e a hipotenusa na figura acima.

Pronto! Agora que já sabemos o que é cosseno na trigonometria, vamos entender mais sobre a função cos() da linguagem JavaScript. Esta função, que é parte do objeto Math, recebe um valor numérico e retorna um valor também numérico) entre -1 até 1 (ambos inclusos). Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

<html>
<head>
  <title>Estudos JavaScript</title>
</head>
 
<body>

<script type="text/javascript">
  // vamos calcular o cosseno de 3 números
  document.writeln("Cosseno de 0 = " + Math.cos(0));
  document.writeln("<br>Cosseno de 1 = " + Math.cos(1));
  document.writeln("<br>Cosseno de 2 = " + Math.cos(2));
</script>

</body>
</html>

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

Cosseno de 0 = 1
Cosseno de 1 = 0.5403023058681398
Cosseno de 2 = -0.4161468365471424

Note que calculamos os cossenos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função cosseno mostrada abaixo:




Java ::: Java Swing - Componentes Visuais ::: JList

Como retornar os índices dos itens selecionados em uma JList de seleção múltipla do Java Swing

Quantidade de visualizações: 7584 vezes
Em outra dica desta seção nós vimos como obter e retornar os valores selecionados em uma JList de múltipla seleção do Java Swing. Agora veremos como retornar os índices dos valores selecionados. Para isso nós vamos usar o método getSelectedIndices(), que retorna um vetor (array) de inteiros.

Note o uso da constante ListSelectionModel.MULTIPLE_INTERVAL_SELECTION fornecida para o método setSelectionMode() da JList para indicar a forma de seleção que estamos usando no exemplo.

Veja o código Java Swing completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Estudos extends JFrame{
  JList lista;  

  public Estudos() {
    super("A classe JList");
    
    Container c = getContentPane();
    c.setLayout(new FlowLayout(FlowLayout.LEFT));
    
    // Cria os itens da lista
    String nomes[] = {"Carlos", "Marcelo", "Fabiana",
      "Carolina", "Osmar"};

    // Cria a JList
    lista = new JList(nomes);
 
    // Define a seleção múltipla para a lista
    lista.setSelectionMode(
      ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

    // Um botão que permite obter os índices do itens 
    // selecionados
    JButton btn = new JButton("Obter índices selecionados");
    btn.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e){
          int[] indices = lista.getSelectedIndices();
          String res = "Índices selecionados:\n";

          for(int i = 0; i < indices.length; i++)
            res += indices[i] + "\n";

          JOptionPane.showMessageDialog(null, res);
        }
      }
    );

    // Adiciona a lista à janela
    c.add(new JScrollPane(lista));

    // Adiciona o botão à janela
    c.add(btn);  

    setSize(350, 250);
    setVisible(true);
  }
  
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

Lembre-se que as teclas Ctrl ou Shift devem estar pressionadas enquanto escolhemos os itens de uma JList de seleção múltipla.


Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

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á 75 usuários muito felizes estudando em nosso site.