Você está aqui: Python ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Matriz Simétrica em Python - Um programa Python que testa se uma matriz quadrada é uma matriz simétrica - Desafio de Programação Resolvido em PythonQuantidade de visualizações: 209 vezes |
Pergunta/Tarefa: Antes de fazermos a resolução deste exercício de matrizes em Python, é importante revermos alguns conceitos sobre a matriz simétrica. O que é uma matriz simétrica Uma matriz simétrica é toda matriz cuja matriz transposta é igual à própria matriz, ou seja, A = At. Para compreender o que é uma matriz simétrica, é importante revermos o que é uma matriz transposta. Matriz transposta: quando invertemos as linhas e colunas de uma matriz, ou seja, dada a matriz A, a matriz transposta de A, representada por At, terá em sua primeira coluna a primeira linha da matriz A; já a segunda coluna da matriz transposta será a segunda linha da matriz A, e assim sucessivamente. Veja a figura: Matriz simétrica: sabendo o que é uma matriz transposta, dada a matriz A, quando calculamos a matriz transposta de A e encontramos a própria matriz A, ou seja, A = At, então essa matriz é simétrica. Escreva um programa Python que declara uma matriz de inteiros de 3 linhas e 3 colunas e peça para o usuário informar os valores de cada elemento. Em seguida mostre a matriz informada e indique se a matriz é uma matriz simétrica ou não. Sua saída deverá ser parecida com: Elemento na linha 1 e coluna 1: 5 Elemento na linha 1 e coluna 2: 1 Elemento na linha 1 e coluna 3: 2 Elemento na linha 2 e coluna 1: 1 Elemento na linha 2 e coluna 2: 6 Elemento na linha 2 e coluna 3: 3 Elemento na linha 3 e coluna 1: 2 Elemento na linha 3 e coluna 2: 3 Elemento na linha 3 e coluna 3: 8 5 1 2 1 6 3 2 3 8 A matriz informada é uma matriz simétrica. Veja a resolução comentada deste exercício em Python: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- # função principal do programa def main(): n = 3 # ordem da matriz quadrada # uma matriz quadrada de três linhas e três colunas matriz = [[0 for x in range(n)] for y in range(n)] # vamos pedir para o usuário informar os elementos da matriz for i in range(len(matriz)): for j in range(len(matriz[i])): matriz[i][j] = int(input("Elemento na linha [%d] e coluna [%d]: " % (i + 1, j + 1))) # agora verificamos se a matriz é simétrica simetrica = True for i in range(len(matriz)): if not simetrica: break for j in range(len(matriz[i])): # os elementos em posicoes simetricas sao iguais? if matriz[i][j] != matriz[j][i]: simetrica = False break # vamos mostrar a matriz da forma que ela foi informada print("\nValores na matriz:\n") for i in range(len(matriz)): for j in range(len(matriz[i])): print("%5d " % matriz[i][j], end=' ') print() if simetrica: print("\nA matriz informada é uma matriz simétrica.") else: print("\nA matriz informada não é uma matriz simétrica.") if __name__== "__main__": main() |
Link para compartilhar na Internet ou com seus amigos: |
C ::: Desafios e Lista de Exercícios Resolvidos ::: C Básico |
Exercícios Resolvidos de C - Como somar o primeiro e o último dígito de um número inteiro informado pelo usuário em CQuantidade de visualizações: 532 vezes |
Pergunta/Tarefa: Escreva um programa C que pede para o usuário informar um número inteiro e mostre a soma do primeiro dígito com o último dígito. Atenção: você deve usar apenas os operadores matemáticos e a função log10(). Sua saída deverá ser parecida com: Informe um número inteiro: 48763 A soma do primeiro e do último dígito é: 7 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 <stdio.h> #include <stdlib.h> #include <locale.h> #include <math.h> int main(int argc, char *argv[]){ setlocale(LC_ALL,""); // para acentos do português int numero, quant, primeiro_digito, ultimo_digito, soma; // vamos pedir para o usuário informar um número inteiro printf("Informe um número inteiro: "); scanf("%d", &numero); // vamos obter a quantidade (-1) de dígitos no número informado quant = (int)log10(numero); primeiro_digito = (int)(numero / pow(10, quant)); ultimo_digito = numero % 10; // soma o primeiro e o último dígito soma = primeiro_digito + ultimo_digito; // mostra o resultado printf("A soma do primeiro e do último dígito é: %d", soma); printf("\n\n"); system("PAUSE"); return 0; } |
Delphi ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI |
Como retornar uma lista dos dispositivos de entrada MIDI no sistema usando DelphiQuantidade de visualizações: 10982 vezes |
Em algumas ocasiões nós precisamos obter uma lista dos dispositivos de entrada MIDI no sistema, talvez com o propósito de selecionar um determinado dispositivo em uma ListBox ou ComboBox. O trecho de código abaixo mostra como isso pode ser feito. O primeiro passo é declarar uma variável do tipo TMidiInCaps. Este registro está declarado na unit MMSystem.pas e é uma tradução da estrutura MIDIINCAPS da API do Windows. Entre outros tipos de dados, esta estrutura possui um membro szPname que retorna o nome do dispositivo. Na unit MMSystem.pas este membro está declarado como array[0..MAXPNAMELEN-1] of AnsiChar, ou seja, uma matriz de AnsiChar que será preenchida pela API do Windows e terá seu final marcado com o caractere null (NULL terminated string). Note a conversão deste valor para o tipo String no momento de inserí-lo no ComboBox. Em versões anteriores do Delphi (estou escrevendo este código no Delphi 2009) podíamos usar a função StrPas() para esta finalidade. O passo seguinte é obter a quantidade de dispositivos de entrada MIDI. Isso é feito com uma chamada à função midiInGetNumDevs da API do Windows. Uma vez obtida a quantidade de dispositivos nós usamos um laço for e, no corpo deste laço, usamos o valor da variável de controle i para efetuar uma chamada à função midiInGetDevCaps(), também da API do Windows: midiInGetDevCaps(i, @MidiInCaps, sizeof(TMidiInCaps)); Esta função recebe o identificador do dispositivo (um valor inteiro começando em 0 e indo até a quantidade de dispositivos - 1), um ponteiro para um registro MidiInCaps e o tamanho em bytes do registro. Se a função for executada com sucesso, o registro MidiInCaps será preenchido com várias informações úteis, tais como o nome do dispositivo, o ID do fabricante, o ID do produto, versão do driver, etc. Para finalizar, nós acessamos o campo szPname do registro MidiInCaps e o adicionamos no ComboBox. Veja o código completo a seguir: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var i: Integer; MidiInCaps: TMidiInCaps; // este record está definido em MMSystem.pas erro: Word; begin // uses MMSystem ComboBox1.Clear; // midiInGetNumDevs retorna a quantidade de dispositivos de entrada // MIDI no sistema for i := 0 to midiInGetNumDevs - 1 do begin // vamos obter o dispositivo identificado pela variável i (uDeviceID) erro := midiInGetDevCaps(i, @MidiInCaps, sizeof(TMidiInCaps)); if erro <> MMSYSERR_NOERROR then raise Exception.Create('Não foi possível obter a lista de dispositivos ' + 'de entrada MIDI'); // vamos adicionar o nome do dispositivo no ComboBox ComboBox1.Items.Add(String(MidiInCaps.szPname)); end; end; Ao executar este código o ComboBox será preenchido no mínimo com o valor: MPU-401 Este é o MPU 401-compatible MIDI input port, um dos dispositivos de entrada MIDI mais comuns nos PCs, embora já não esteja tão presente nos computadores mais atuais. Para fins de compatibilidade esta dica ou anotação foi escrita usando Delphi 2009. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Operadores de Manipulação de Bits (Bitwise Operators) |
Exercícios Resolvidos de Java - Como converter de decimal para binário usando os operadores de bits em JavaQuantidade de visualizações: 613 vezes |
Este exercício faz parte da nossa lista de desafios de programação em Java. Pergunta/Tarefa: Escreva um programa Java para pede para o usuário informar um número decimal e faça a conversão para binário usando os operadores de bits. Sua saída deverá ser parecida com: Informe um número decimal: 9 O número binário é: 00000000000000000000000000001001 Veja a resolução completa para o exercício em Java, comentada linha a linha: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.util.Scanner; public class Estudos { // vamos definir o tamanho do vetor para guardar // os dígitos do número binário final static int TAM_INT = Integer.BYTES * 8; public static void main(String[] args){ // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // variáveis para ajudar a resolver o problema int decimal, indice, i; // vetor para guardar o número binário int binario[] = new int[TAM_INT]; // vamos pedir para o usuário informar um decimal inteiro System.out.print("Informe um número decimal: "); decimal = Integer.parseInt(entrada.nextLine()); // ajustamos índice para o último elemento do vetor indice = TAM_INT - 1; // enquanto índice for maior ou igual a 0 while(indice >= 0){ // vamos guardar o bit menos significativo LSB binario[indice] = decimal & 1; // diminuímos o índice 100010 indice--; // desloca bits para a direita uma posição decimal = decimal >> 1; } // agora vamos exibir o número binário System.out.print("O número binário é: "); for(i = 0; i < TAM_INT; i++){ System.out.print(binario[i]); } System.out.println("\n\n"); } } |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos |
Exercício Resolvido de Java - Crie uma classe Agenda que pode armazenar 10 pessoas e que seja capaz de realizar as seguintes operaçõesQuantidade de visualizações: 5419 vezes |
Exercícios Resolvidos de Java - Crie uma classe Agenda que pode armazenar 10 pessoas e que seja capaz de realizar as seguintes operações Pergunta/Tarefa: Crie uma classe Agenda que pode armazenar 10 pessoas e que seja capaz de realizar as seguintes operações: void armazenaPessoa(String nome, int idade, float altura); void removePessoa(String nome); int buscaPessoa(String nome); // informa em que posição da agenda está a pessoa void imprimeAgenda(); // imprime os dados de todas as pessoas da agenda void imprimePessoa(int index); // imprime os dados da pessoa que está na posição "i" da agenda. O código deverá ser desenvolvido em Java console (modo texto) e usar um menu switch() para as operações. Sua saída deverá ser parecida com: Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: Código para a classe Pessoa (Pessoa.java): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; public class Pessoa { private String nome; private int idade; private double altura; // construtor cheio public Pessoa(String nome, int idade, double altura) { this.nome = nome; this.idade = idade; this.altura = altura; } // construtor vazio public Pessoa() { } // método que imprime todos os dados da pessoa public void imprimirDados(){ System.out.println("Nome: " + nome + "\nIdade: " + idade + "\nAltura: " + altura); } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public int getIdade() { return idade; } public void setIdade(int idade) { this.idade = idade; } public double getAltura() { return altura; } public void setAltura(double altura) { this.altura = altura; } } Código para a classe Agenda (Agenda.java): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; public class Agenda { // vetor que guardará as pessoas private Pessoa pessoas[]; // construtor da classe Agenda public Agenda(int quantidade){ pessoas = new Pessoa[quantidade]; } public void armazenaPessoa(String nome, int idade, double altura){ // ainda temos posições disponíveis na agenda? boolean cadastrado = false; for(int i = 0; i < pessoas.length; i++){ if(pessoas[i] == null){ // encontramos uma posição Pessoa p = new Pessoa(nome, idade, altura); // criamos uma nova pessoa // guardamos ela no vetor pessoas[i] = p; // e avisamos que o cadastro foi efetuado com sucesso cadastrado = true; break; // sai do laço } } if(cadastrado){ System.out.println("\nCadastro efetuado com sucesso"); } else{ System.out.println("\nNão foi possível cadastrar. Agenda cheia"); } } // método que permite pesquisar e excluir uma pessoa public void removePessoa(String nome){ // vamos verificar se a exclusão foi efetuada com sucesso boolean excluido = false; for(int i = 0; i < pessoas.length; i++){ if(pessoas[i] != null){ // esta é a pessoa que estamos procurando? if(pessoas[i].getNome().equals(nome)){ pessoas[i] = null; // posição disponível novamente excluido = true; break; // sai do laço } } } if(excluido){ System.out.println("\nPessoa removida com sucesso"); } else{ System.out.println("\nNão foi possível remover. Pessoa não encontrada."); } } // informa em que posição da agenda está a pessoa public int buscaPessoa(String nome){ int resultado = -1; // vamos verificar se a pessoa existe na agenda for(int i = 0; i < pessoas.length; i++){ if(pessoas[i] != null){ // esta é a pessoa que estamos procurando? if(pessoas[i].getNome().equals(nome)){ resultado = i; break; // sai do laço } } } return resultado; } // imprime os dados de todas as pessoas da agenda public void imprimeAgenda(){ // vamos percorrer o vetor de pessoas e imprimir cada uma for(int i = 0; i < pessoas.length; i++){ if(pessoas[i] != null){ Pessoa p = pessoas[i]; System.out.println("\nNome: " + p.getNome()); System.out.println("Idade: " + p.getIdade()); System.out.println("Altura: " + p.getAltura()); } } } // imprime os dados da pessoa que está na posição "i" da agenda public void imprimePessoa(int index){ // este índice é válido? if((index < 0) || (index > (pessoas.length - 1))){ System.out.println("\nÍndice inválido"); } else{ Pessoa p = pessoas[index]; if(p == null){ System.out.println("\nNão existe pessoa nesse índice ainda."); } else{ System.out.println("\nNome: " + p.getNome()); System.out.println("Idade: " + p.getIdade()); System.out.println("Altura: " + p.getAltura()); } } } } Código para a classe Principal (Principal.java): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import java.util.Scanner; public class Principal { // para fazer a leitura da entrada do usuário static Scanner entrada = new Scanner(System.in); public static void main(String[] args) { // cria uma nova Agenda Agenda agenda = new Agenda(10); String nome; // nome da pessoa int idade; // idade da pessoa double altura; // altura da pessoa // cria o menu de opções while(true){ System.out.println("\n1. Nova Pessoa"); System.out.println("2. Excluir Pessoa"); System.out.println("3. Buscar Pessoa"); System.out.println("4. Imprimir Agenda"); System.out.println("5. Imprimir Pessoa (Índice)"); System.out.println("6. Sair"); System.out.print("Sua opção: "); int opcao = Integer.parseInt(entrada.nextLine()); switch(opcao){ case 1: System.out.print("\nInforme o nome: "); nome = entrada.nextLine(); System.out.print("Informe a idade: "); idade = Integer.parseInt(entrada.nextLine()); System.out.print("Informe a altura (use ponto em vez de vírgula): "); altura = Double.parseDouble(entrada.nextLine()); agenda.armazenaPessoa(nome, idade, altura); break; case 2: System.out.print("\nInforme o nome a ser removido: "); nome = entrada.nextLine(); agenda.removePessoa(nome); break; case 3: System.out.print("\nInforme o nome a ser pesquisado: "); nome = entrada.nextLine(); int indice = agenda.buscaPessoa(nome); if(indice < 0){ System.out.println("\nA pessoa não foi encontrada"); } else{ System.out.println("\nA pessoa foi encontrada no índice: " + indice); } break; case 4: agenda.imprimeAgenda(); break; case 5: System.out.print("\nInforme o índice desejado: "); int index = Integer.parseInt(entrada.nextLine()); agenda.imprimePessoa(index); break; case 6: System.exit(0); default: System.out.println("\nOpção inválida\n"); break; } } } } |
C ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Como usar o laço do...while em C - Linguagem C para iniciantes: O laço do...whileQuantidade de visualizações: 31343 vezes |
O laço do...while em C é bem parecido com o laço while. A diferença é que no do...while, a condição é testada no final da primeira iteração, o que garante que o laço será executado no mínimo uma vez. Veja um exemplo de seu uso:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int valor = 1; do{ printf("%d ", valor); valor++; }while(valor <= 10); printf("\n\n"); system("PAUSE"); return 0; } |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software 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 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 |