Você está aqui: C ::: Desafios e Lista de Exercícios Resolvidos ::: C Básico |
Um programa que lê três números e os classifica e exibe em ordem crescente - Exercícios Resolvidos de CQuantidade de visualizações: 860 vezes |
Pergunta/Tarefa: Escreva um programa C que pede ao usuário três números inteiros. Em seguida, ordene os três valores em ordem crescente e os exiba. Sua saída deverá ser parecida com: Informe o primeiro valor: 7 Informe o segundo valor: 4 Informe o terceiro valor: 6 Os números ordenados em ordem crescente são: 4 6 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> int main(int argc, char *argv[]){ // variáveis usadas na resolução do problema int num1, num2, num3, temp; setlocale(LC_ALL,""); // para acentos do português // vamos ler os três números printf("Informe o primeiro valor: "); scanf("%d", &num1); printf("Informe o segundo valor: "); scanf("%d", &num2); printf("Informe o terceiro valor: "); scanf("%d", &num3); // o primeiro número é maior que o segundo? vamos trocá-los if(num1 > num2){ temp = num1; num1 = num2; num2 = temp; } // o segundo número é maior que o terceiro? vamos trocá-los if(num2 > num3){ temp = num2; num2 = num3; num3 = temp; } // depois da segunda troca o número 1 é novamente maior que o número 2? if(num1 > num2){ temp = num1; num1 = num2; num2 = temp; } // mostra o resultado printf("Os números ordenados em ordem crescente são:\n"); printf("%d %d %d", num1, num2, num3); printf("\n\n"); system("PAUSE"); return 0; } |
![]() |
C ::: C para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como calcular a transposta de uma matriz em C - Curso de C para Geometria Analítica e Álgebra LinearQuantidade de visualizações: 1001 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 C, 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 C 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) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <locale.h> int main(int argc, char *argv[]){ setlocale(LC_ALL,""); // para acentos do português // vamos declarar e construir uma matrix // 2x3 (duas linhas e três colunas int matriz[2][3] = {{3, 5, 7}, {1, 2, 9}}; int i, j; // vamos exibir os valores da matriz printf("Elementos da matriz:\n"); for(i = 0; i < 2; i++){ for(j = 0; j < 3; j++){ printf("%5d ", matriz[i][j]); } printf("\n"); } // como temos uma matriz 2x3, a transposta deverá ser // 3x2, ou seja, três linhas e duas colunas int linhas = 3; // linhas da matriz original int colunas = 2; // colunas da matriz original int transposta[linhas][colunas]; // e agora vamos preencher a matriz transposta for(i = 0; i < 2; i++){ for(j = 0; j < 3; j++){ transposta[j][i] = matriz[i][j]; } } // vamos exibir os valores da matriz transposta printf("Elementos da matriz transposta:\n"); for(i = 0; i < 3; i++){ for(j = 0; j < 2; j++){ printf("%5d ", transposta[i][j]); } printf("\n"); } printf("\n\n"); system("PAUSE"); return 0; } Ao executar este código C 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 |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como criar sua própria função substring() para obter uma substring a partir de uma string em CQuantidade de visualizações: 16847 vezes |
Em algumas situações precisamos obter uma substring a partir de uma string. A linguagem C já fornece algumas funções que tornam isso possível. No entanto, nenhuma destas funções permite especificar o índice inicial da substring. Sendo assim, o trecho de código abaixo mostra como escrever uma função substring() que permite informar a string de origem, o índice inicial e a quantidade de caracteres que serão obtidos. O retorno da função será um ponteiro para a substring obtida:---------------------------------------------------------------------- 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 <string.h> char *substring(char *origem, int inicio, int quant){ char *res = origem; int i = 0; // posição inicial menor que 0 ou // posição inicial muito exagerada? if((inicio < 0) || (inicio > strlen(origem))) inicio = 0; // quantidade de caracteres muito exagerada? if(quant > inicio + strlen(origem)) quant = strlen(origem) - inicio; // obtem os caracteres desejados for(i = 0; i <= quant - 1; i++){ res[i] = origem[inicio + i]; } // marca o fim da string res[i] = '\0'; return res; } int main(int argc, char *argv[]) { char texto[] = "Gosto muito de C e C++"; // não podemos bagunçar a string original char sub_temp[128]; strcpy(sub_temp, texto); // 10 caracteres começando // no índice 6 char *res = substring(sub_temp, 6, 10); // exibe o resultado puts(res); // exibe a string original puts(texto); system("pause"); return 0; } Ao executar este código nós teremos o seguinte resultado: muito de C Gosto muito de C e C++ |
C ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Tenha cuidado com os limites dos índices de um vetor ou matriz na linguagem CQuantidade de visualizações: 9725 vezes |
Um erro muito comum em programas C ocorre quando não atentamos para os limites dos índices de um vetor ou matriz. Como sabemos, os índices iniciam em 0 e vão até o tamanho do vetor menos 1. Porém, ao contrário de outras linguagens, o C (compiladores sendo usados em 2007 e 2008) não evita que este limite seja ultrapassado. O resultado disso é que o programa acaba lendo posições de memória inexistentes ou pertecentes a outros programas. Veja um trecho de código no qual acessamos uma posição inválida no vetor valores. Este código foi testado no MinGW 3.4.2 e compilou e executou sem qualquer mensagem de advertência. ---------------------------------------------------------------------- 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[]) { // array com 5 inteiros int valores[] = {23, 6, 45, 9, 3}; // acessa um índice além dos limites do array // lembre-se de que os índices iniciam em 0 int valor = valores[5]; // exibe o resultado printf("%d\n\n", valor); system("PAUSE"); return 0; } Ao executar este código nós teremos o seguinte resultado (o seu vai ser diferente, é claro): -858993460 Minha recomendação é: se você quer mesmo programar na linguagem C, crie uma forma de impedir o acesso à índices inválidos. Se isso acontecer, os resultados exibidos pelos seus programas poderão ser realmente inesperados. |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
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 |