
invader_zim
Membros-
Total de itens
11 -
Registro em
-
Última visita
Tudo que invader_zim postou
-
Eu faria assim: #include <stdio.h> int main(void) { unsigned i, j; for (i = 1, j = 1; j <= 50; i += 2, j++) { printf("%u/%u", i, j); if (j != 50) printf(" + "); } return 0; }
-
O exercício é o seguinte: Faça um programa que preencha uma matriz 3x5 com números inteiros e some cada uma das linhas, armazenando o resultado das somas em um vetor. A seguir, o programa deverá multiplicar cada elemento da matriz pela soma da linha correspondente e mostrar a matriz resultante. Obs: Utilize as funções de criação de vetores e matrizes e trabalhe com o conceito de modularização. As funções de criação de matrizes e vetores devem ser transformadas em bibliotecas (arquivo .h) e importadas no programa principal. Estou resolvendo uma série de exercícios e estou chegando a algoritmos corretos (eles cumprem o que prometem), mas eu preciso saber de que forma eu posso melhorar esses algoritmos; torná-los mais legíveis, eficientes etc. Eu gostaria de saber o que vocês acham do código; gostaria de saber em que pontos eu poderia melhorá-lo. Os códigos-fonte estão listados a seguir: main.c #include <stdio.h> #include "matriz.h" int main(void) { tMatriz matriz; tVetor vetor; matriz = AlocaMatriz(3, 5); vetor = AlocaVetor(3); PreencheMatriz(matriz, 3, 5); ImprimeMatriz(matriz, 3, 5); SomaLinhas(matriz, vetor, 3, 5); MultiplicaMatriz(matriz, vetor, 3, 5); ImprimeMatriz(matriz, 3, 5); LiberaMatriz(matriz, 3); LiberaVetor(vetor); return 0; } matriz.h #ifndef MATRIZ_H_INCLUDED #define MATRIZ_H_INCLUDED typedef int** tMatriz; typedef int* tVetor; tMatriz AlocaMatriz(unsigned m, unsigned n); tVetor AlocaVetor(unsigned tam); void PreencheMatriz(tMatriz matriz, unsigned m, unsigned n); void ImprimeMatriz(tMatriz matriz, unsigned m, unsigned n); void SomaLinhas(tMatriz matriz, tVetor soma, unsigned m, unsigned n); void MultiplicaMatriz(tMatriz matriz, tVetor soma, unsigned m, unsigned n); void LiberaMatriz(tMatriz matriz, unsigned m); void LiberaVetor(tVetor vetor); #endif // MATRIZ_H_INCLUDED matriz.c #include <stdio.h> #include <stdlib.h> #include "matriz.h" tMatriz AlocaMatriz(unsigned m, unsigned n) { tMatriz matriz; unsigned i; matriz = (tMatriz) malloc(m*sizeof(int*)); if (matriz == NULL) exit(EXIT_FAILURE); for (i = 0; i < m; i++) { matriz[i] = (int*) malloc(n*sizeof(int)); if (matriz[i] == NULL) exit(EXIT_FAILURE); } return matriz; } tVetor AlocaVetor(unsigned tam) { tVetor vetor = (tVetor) malloc(tam*sizeof(int)); return vetor; } void PreencheMatriz(tMatriz matriz, unsigned m, unsigned n) { unsigned i, j; for (i = 0; i < m; i++) for(j = 0; j < n; j++) { printf("Informe o valor de m[%u][%u]: ", i, j); scanf("%d", &matriz[i][j]); } } void ImprimeMatriz(tMatriz matriz, unsigned m, unsigned n) { unsigned i, j; printf("\n\n"); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { printf("%4d ", matriz[i][j]); } printf("\n\n"); } printf("\n\n"); } void SomaLinhas(tMatriz matriz, tVetor soma, unsigned m, unsigned n) { unsigned i, j; for (i = 0; i < m; i++) soma[i] = 0; for (i = 0; i < m; i++) for (j = 0; j < n; j++) soma[i] += matriz[i][j]; } void MultiplicaMatriz(tMatriz matriz, tVetor soma, unsigned m, unsigned n) { unsigned i, j; for (i = 0; i < m; i++) for (j = 0; j < n; j++) matriz[i][j] *= soma[i]; } void LiberaMatriz(tMatriz matriz, unsigned m) { unsigned i; for (i = 0; i < m; i++) free(matriz[i]); free(matriz); } void LiberaVetor(tVetor vetor) { free(vetor); }
-
Exercício Livro "C Como Programar - Deitel"
pergunta respondeu ao invader_zim de invader_zim em C, C++
É mesmo! Nesse caso o short faria bem o seu papel e ocuparia menos espaço em memória. Achei que o seguinte trecho de código com o operador condicional ficaria mais legível desta forma: acumulado += (quantidade ? quantidade * precos[codigo - 1] : 0); Assim o programador não é induzido a crer que tudo o que aparece antes do sinal de interrogação faz parte da expressão condicional. -
O exercício está descrito na imagem acima. Estou tentando sempre melhorar meus códigos para deixá-los mais legíveis e otimizados; por isso resolvi postar este aqui no fórum. A ideia é discutir o código e aprender com isso. Acho até que seria interessante criar mais uma subcategoria em "C/C++" só para discussão de códigos em C. #include <stdio.h> #define FLAG -1 int main(void) { int codigo, quantidade; float acumulado = 0; do { printf("\n\nInforme o codigo do produto (1/2/3/4/5) "); printf("\n(-1 para sair) ----> "); scanf("%d", &codigo); if (codigo == FLAG) break; printf("Informe a quantidade do produto %d vendida: ", codigo); scanf("%d", &quantidade); switch (codigo) { case 1: acumulado += quantidade * 2.98; break; case 2: acumulado += quantidade * 4.50; break; case 3: acumulado += quantidade * 9.98; break; case 4: acumulado += quantidade * 4.49; break; case 5: acumulado += quantidade * 6.87; break; default: printf("Codigo informado não é valido!\n"); } } while (1); printf("\n----------------------------------------"); printf("\nValor de revenda total da semana: %.2f\n", acumulado); printf("\n----------------------------------------"); return 0; }
-
Qual seria o real significado da palavra "Implementação" dentro do contexto da computação???
-
Há como retornar matrizes, sim. Bom... na verdade é retornado um ponteiro de ponteiro para o tipo da matriz em questão.
-
Alguém pode me explicar como retornar matrizes?
-
Ao declarar uma variável do novo tipo que você criou, é necessário incluir a palavra reservada struct antes do nome do tipo. O seu exemplo ficaria: struct teste cadastro[10]; Existem formas de evitar a constante repetição da palavra struct fazendo uso do typedef. Em qualquer livro ou tutorial na internet você irá encontrar algumas variações na forma de declarar estruturas. OBS.: O seu exemplo também precisa de ';' no fechamento do corpo da estrutura.
-
Alguém possui ou já leu algum dos livros citados no título do tópico? Os livros são de autoria do Prof. Dr. Ulysses de Oliveira. Estou interessando em adquirir os livros mas, antes, gostaria de saber qual a opinião de alguns leitores.
-
Opa! Valeu, mas eu já tinha visto esse vídeo. Segui todos os passos e não funcionou aqui.
-
Como faço para instalar o pdcurses ou qualquer outra biblioteca no codeblocks?