Você está aqui: Cards de Engenharia Civil - Construção Civil |
||
|
||
|
|
||
Ruby ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle |
Exercícios Resolvidos de Ruby - Ler os lados de um triângulo e informar se ele é isósceles, escaleno ou equiláteroQuantidade de visualizações: 1088 vezes |
|
Pergunta/Tarefa: Um triângulo é uma forma geométrica (polígono) composta de três lados, sendo que cada lado é menor que a soma dos outros dois lados. Assim, para que um triângulo seja válido, é preciso que seus lados A, B e C obedeçam à seguinte regra: A < (B + C), B < (A + C) e C < (A + B). Escreva um programa Ruby que leia os três lados de um triângulo e verifique se tais valores realmente formam um triângulo. Se o teste for satisfatório, informe se o triângulo é isósceles (dois lados iguais e um diferente), escaleno (todos os lados diferentes) ou equilátero (todos os lados iguais). Sua saída deverá ser parecida com: Informe o primeiro lado do triângulo: 30 Informe o segundo lado do triângulo: 40 Informe o terceiro lado do triângulo: 60 O triângulo é escaleno Veja a resolução comentada deste exercício usando Ruby:
# vamos ler o primeiro lado do triângulo
print "Informe o primeiro lado do triângulo: "
lado_a = Integer(gets)
# vamos ler o segundo lado do triângulo
print "Informe o segundo lado do triângulo: "
lado_b = Integer(gets)
# vamos ler o terceiro lado do triângulo
print "Informe o terceiro lado do triângulo: "
lado_c = Integer(gets)
# os lados informados formam um triângulo?
if((lado_a < (lado_b + lado_c)) && (lado_b < (lado_a + lado_c)) \
&& (lado_c < (lado_a + lado_b)))
# é um triângulo equilátero (todos os lados iguais)?
if((lado_a == lado_b) && (lado_b == lado_c))
print "O triângulo é equilátero"
else
# é isósceles (dois lados iguais e um diferente)?
if((lado_a == lado_b) || (lado_a == lado_c) || \
(lado_c == lado_b))
print "O triângulo é isósceles"
else
# é escaleno
print "O triângulo é escaleno"
end
end
else
print "Os lados informados não formam um triângulo."
end
|
C++ ::: Dicas & Truques ::: Arquivos e Diretórios |
Como excluir um diretório em C++ usando a função rmdir()Quantidade de visualizações: 8866 vezes |
Em algumas situações nossos códigos C++ precisam excluir diretórios. Isso pode ser feito com o auxílio da função _rmdir() ou rmdir(), disponível no header direct.h (trazido da linguagem C). Veja a assinatura desta função:int _rmdir(const char *pathname); a) ENOTEMPTY - Directory not empty - O diretório não está vazio e portanto não pode ser excluído; 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 C++ no qual excluímos um diretório:
#include <iostream>
#include <direct.h>
using namespace std;
int main(int argc, char *argv[]){
// vamos excluir este diretório
char diretorio[] = "C:\\Dev-Cpp\\estudos";
// vamos testar se houve erro na exclusão do diretório
if(rmdir(diretorio) == -1){
cout << "Erro: " << strerror(errno) << endl;
}
else{
cout << "Diretório excluído com sucesso" << endl;
}
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
É possível usar a versão Unicode de _rmdir(), ou rmdir(). O método _wrmdir(), também presente em direct.h é útil quando precisamos internacionalizar nossas aplicações. Veja o exemplo:
#include <iostream>
#include <direct.h>
using namespace std;
int main(int argc, char *argv[]){
// vamos excluir este diretório
wchar_t diretorio[] = L"C:\\Dev-Cpp\\estudos";
// vamos testar se houve erro na exclusão do diretório
if(_wrmdir(diretorio) == -1){
cout << "Erro: " << strerror(errno) << endl;
}
else{
cout << "Diretório excluído com sucesso" << endl;
}
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
|
Java ::: Dicas & Truques ::: Recursão (Recursividade) |
Java Avançado - Como listar o conteúdo de um diretório recursivamenteQuantidade de visualizações: 1 vezes |
|
Nesta dica mostrarei como podemos usar recursividade (recursão) para listar todo o conteúdo de um diretório. Este é um exercício para melhorar o seu entendimento de funções recursivas em Java. Veja o código completo para o exemplo:
package arquivodecodigos;
import java.io.*;
import java.util.*;
public class Estudos {
static int indentLevel = -1;
public static void main(String[] args) {
listPath(new File("c:\\estudos_c"));
}
static void listPath(File path) {
File files[];
indentLevel++;
files = path.listFiles();
Arrays.sort(files);
for (int i = 0, n = files.length; i < n; i++) {
for (int indent = 0; indent < indentLevel; indent++) {
System.out.print(" ");
}
System.out.println(files[i].getName());
if(files[i].isDirectory()) {
listPath(files[i]);
}
}
indentLevel--;
}
}
Ao executar este código nós teremos o seguinte resultado:
DICA.txt
estudos
.vs
estudos
v16
.suo
Browse.VC.db
ipch
AutoPCH
1dcb307edee5acf8
ORIGEM.ipch
Debug
estudos.exe
estudos.exe.recipe
estudos.ilk
estudos.log
estudos.pdb
estudos.tlog
CL.command.1.tlog
CL.read.1.tlog
CL.write.1.tlog
estudos.lastbuildstate
link.command.1.tlog
link.read.1.tlog
link.write.1.tlog
estudos.vcxproj.FileListAbsolute.txt
Origem.obj
vc142.idb
vc142.pdb
estudos.sln
estudos.vcxproj
estudos.vcxproj.filters
estudos.vcxproj.user
Origem.cpp
Estudos_C.dev
Estudos_C.exe
Estudos_C.layout
main.c
main.o
Makefile.win
|
AutoLISP ::: Dicas & Truques ::: Linha, Linhas, Comando LINE |
Como desenhar uma linha no AutoCAD usando AutoLISP - Dois pontos geométricos e o comando LINEQuantidade de visualizações: 797 vezes |
|
Nesta dica mostrarei como desenhar linhas no AutoCAD usando AutoLISP e o comando LINE. Para isso nós vamos definir dois pontos geométricos p e q. Para deixar o código simples eu defini os pontos (coordenadas x, y, z) usando listas. Posteriormente você poderá pedir para o usuário clicar na área de desenho (GA) e obter as coordenadas usando a função getpoint() da AutoLISP. Veja o código AutoLISP completo para o exemplo: ; Este programa é usado para desenhar uma ; linha a partir de dois pontos definidos no ; código. Opcionalmente você poderá pedir ; para o usuário informar as coordenadas dos ; dois pontos usando a função getpoint() (defun desenhar-linha() ; vamos definir as coordenadas do ; primeiro ponto (setq p (list 300 250 0)) ; vamos definir as coordenadas do ; segundo ponto (setq q (list 1900 650 0)) ; Agora chamamos o comando LINE passando os ; dois pontos geométricos (command "LINE" p q "") ) Dica: Para carregar seu código AutoLISP no AutoCAD, digite (LOAD "C:\\codigos_autolisp\\desenho.lsp"), com duas barras invertidas na separação dos diretórios e nome do arquivo, na janela de comandos e depois chame a função desejada digitando (DESENHAR-LINHA), por exemplo. Opcionalmente você pode ir até o menu Manage e escolher a opção Load Application. Em seguida selecione o arquivo desejado e clique o botão Load. |
Java ::: Classes e Componentes ::: JTable |
Java Swing Avançado - Como exibir imagens nas células de uma JTable em suas aplicações Java SwingQuantidade de visualizações: 15537 vezes |
|
Nesta dica mostrarei como criar uma classe personalizada que estende a classe JLabel e implementa a interface TableCellRenderer. O objetivo é fornecer esta JLabel ao método setCellRenderer() de uma das colunas da JTable e exibir uma imagem ou foto ao lado do conteúdo da célula. Veja o resultado da figura abaixo: ![]() E aqui está o código Java Swing completo para o exemplo:
package arquivodecodigos;
import javax.swing.*;
import java.awt.*;
import javax.swing.table.*;
public class Estudos extends JFrame{
public Estudos(){
super("Exemplo de uma tabela simples");
// colunas da tabela
String[] colunas = {"Nome", "Idade", "Sexo"};
// conteúdo da tabela
Object[][] conteudo = {
{"Osmar J. Silva", "32", "Masculino"},
{"Maria Clara Gomes", "19", "Feminino"},
{"Fernando Gomes", "15", "Masculino"},
{"Carlos Vieira", "40", "Masculino"}
};
// constrói a tabela
JTable tabela = new JTable(conteudo, colunas);
// quero exibir imagens ao lado do texto da primeira coluna
TableCellRenderer tcr = new Imagem();
TableColumn column = tabela.getColumnModel().getColumn(0);
column.setCellRenderer(tcr);
tabela.setPreferredScrollableViewportSize(new Dimension(350, 50));
Container c = getContentPane();
c.setLayout(new FlowLayout());
JScrollPane scrollPane = new JScrollPane(tabela);
c.add(scrollPane);
setSize(400, 300);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class Imagem extends JLabel implements TableCellRenderer{
public Imagem(){
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column){
Icon imagem = new ImageIcon("C:\\estudos_java\\icon.gif");
// certifique-se da existencia da imagem "icon.gif" antes de executar
if(isSelected)
setBackground(table.getSelectionBackground());
else
setBackground(table.getBackground());
setIcon(imagem);
setText(value.toString());
return this;
}
public void validate() {}
public void revalidate() {}
protected void firePropertyChange(String propertyName,
Object oldValue, Object newValue) {}
public void firePropertyChange(String propertyName,
boolean oldValue, boolean newValue) {}
}
|
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





