Buscar

Exemplos Aula 07-2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

1 
Exemplos 
 
2) Armazenar três nomes em uma matriz. Construir trecho de proteção para evitar 
problemas durante a execução, impedindo que nomes com mais de 30 caracteres 
sejam armazenados. Retirar o caracter \n, caso exista. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Observe os trechos coloridos: o primeiro evita o armazenamento de nomes com mais 
de 30 caracteres. 
 
Foi usada uma variável de nome lixo com tamanho suficiente para o que propõe. 
A função strcpy(...) foi usada para copiar o conteúdo de um vetor em outro vetor. 
 
O segundo trecho retira o \n que é armazenado na variável, se tiver espaço, devido a 
função fgets(). 
 
 
 
 
 
 
 2 
 
3) Armazenar nome de três produtos e os valores de compra e venda. Exibir todos os dados. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Relembrando 
 
O formato %-30s exibe o nome em 30 colunas, alinhando à esquerda, mesmo que o 
nome tenha poucos caracteres, possibilitando exibir sob a forma de tabela. 
 
 
 
 
 3 
 
4) Construa um programa que armazene números reais em uma matriz de ordem 4 e 
exiba toda a matriz e os elementos que se encontram na diagonal principal. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Vamos analisar o enunciado. 
 
a) Matriz de ordem 4 significa dizer que é uma matriz quadrada que tem 4 linhas e 4 
colunas. 
b) Números que se encontram na diagonal principal são aqueles que estão em 
posições cuja linha é igual à coluna. 
c) Precisaremos de 2 estruturas de repetição: uma para entrada e outra para saída. 
d) No trecho de saída, tem um teste para verificar se o valor de L é igual ao valor de 
c, significando que o elemento se encontra na DP. 
 
Saiba mais sobre o assunto lendo o texto abaixo. 
 
 
 
 
 
 
 
No estudo da Álgebra das Matrizes, aprendemos alguns conceitos e, um deles, diz 
respeito à Matriz Quadrada e o que podemos "extrair" dela. 
Nesse texto, disponibilizamos todas as relações existentes entre os elementos e suas 
posições dentro da matriz, tendo em vista às diagonais Principais e Secundárias. 
Foi definida uma constante TAM para que você possa alterar para o tamanho que 
desejar e declarada uma matriz de nome mat e do tipo int, mas você poderá alterar 
para o tipo float, mas não se esqueça do especificador de formato %f.
Além disso, coloque o Título de acordo com sua escolha assim como a condição. 
#include <stdio.h> 
#include <stdlib.h> 
#define TAM 4 
int main() 
{
 int L, c, mat[TAM][TAM]; 
Condição
Em relação à Diagonal Principal
(DP)
(L == c) só diagonal 
4
 
 /* Entrada */ 
 for(L=0; L<TAM; L++) 
 { 
 for(c=0; c<TAM; c++) 
 { 
 printf("Linha %d coluna %d: ",L+1,c+1); 
 scanf("%d", &mat[L][c]); 
 } 
 } 
 /* Saida */ 
 printf("\n\nTodos Elementos\n\n"); 
 for(L=0; L<TAM; L++) 
 { 
 for(c=0; c<TAM; c++) 
 printf("%3d\t", mat[L][c]); 
 printf("\n\n"); 
 } 
 printf("\nTITULO\n\n"); 
 for(L=0; L<TAM; L++) 
 { 
 for(c=0; c<TAM; c++) 
 if(condição) 
 printf("%3d\t", mat[L][c]); 
 else 
 printf("\t"); 
 printf("\n\n"); 
 } 
 printf("\n"); 
 system("pause"); 
} 
 
(L != c) todos menos a diagonal 
 
 
(L < c) elementos acima da diagonal 
 
 
(L > c) elementos abaixo da diagonal 
 
 
 
Em relação à Diagonal Secundária 
(DS) 
 
(L + c == TAM -1) só diagonal 
 
 
(L + c != TAM -1) todos menos a 
diagonal 
 
 
(L + c < TAM -1) elementos acima da 
diagonal 
 
 
(L + c > TAM -1) elementos abaixo da 
diagonal 
 
 
 
5
 
 
 
 6 
5) Construa um programa que armazene números reais em uma matriz de dimensões 2 
x 3. Gere a matriz transposta e exiba as duas matrizes. 
 
Analisando o enunciado: 
a) Matriz transposta é a matriz que se obtém trocando a linha por coluna. 
 
 
 
 
 
 
 
b) Uma estrutura do for para entrada e, nessa estrutura, um comando de 
atribuição para gerar a transposta. 
c) Dois trechos de saída. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 7 
6) Construa um programa que armazene números reais em uma matriz de dimensões 
2 x 3. Gere a matriz tripla e exiba as duas matrizes. 
 
 
 
Matriz tripla é a matriz resultante do produto do escalar 3 por cada elemento da 
matriz. A matriz gerada tem as mesmas dimensões da matriz original. 
 
 
 
 
 
 
8 
7) Sr. João gostaria de fazer um programa que simulasse uma planilha do Excel. Ele 
sabe que só nas aulas 9 e 10 aprenderá a armazenar mês a mês e salvar os dados.
Ele resolveu criar 2 matrizes de char para armazenar os meses (controle semestral) e 
os nomes das despesas, uma vez que ele incluiu todas. São 6 tipos de despesas.
Seu principal objetivo é saber quanto gasta por mês e quando gasta por semestre com 
cada despesa.
Só para concretizar o que Sr. João deseja fazer, observe as figuras a seguir e leia o 
texto Soma Linha Soma Coluna para que possa entender cada trecho do código.
É um exemplo importante no que diz respeito à aplicação de matrizes bidimensionais.
 
 
 
 9 
 
 
 
 
 
 
 
 10 
 
 
Matrizes somaLinha e somaColuna 
 
 
 
Matriz somaLinha 
 
 É uma matriz unidimensional(vetor ou matriz coluna) que terá tantas linhas 
quantas forem as linhas da matriz original e cada elemento será a soma de todos 
os elementos da linha correspondente na matriz original. Em outras palavras, cada 
elemento é soma de todos os elementos das colunas de uma linha. 
 
1 Inicializando a matriz somaLinha 
 
 Como é uma matriz de acumuladores precisa ser inicializada. 
for(L=0; L<tamanhoLinha; L++) 
 somaLinha[L]=0; 
 
2 Gerando a matriz somaLinha 
for(L=0; L< tamanhoLinha; L++) 
 for(c=0; c< tamanhoColuna; c++) 
 somaLinha[L]+= matrizOriginal [L][c]; 
 
3 Exibindo a matriz somaLinha sozinha 
 for(L=0; L< tamanhoLinha;L++) 
 printf("%...\n",somaLinha[L]) ; 
Observação: Não se esqueça do especificador de formato. 
 
 
11
4 Exibindo a matriz somaLinha com a matriz original 
 system("cls"); /*system("clear"); no Linux */ 
printf("\nMatriz Original com matriz SomaLinha\n\n"); 
for(L=0; L< tamanhoLinha; L++) 
 { 
 for(c =0; c < tamanhoColuna; c++) 
 printf("%...\t",matrizOriginal[L][c]); 
 printf("%...\n",somaLinha[L]); 
 } 
Observação: Não se esqueça do especificador de formato. 
 
Matriz somaColuna 
 
 É uma matriz unidimensional(vetor ou matriz linha) que terá tantas colunas 
quantas forem as colunas da matriz original e cada elemento será a soma de 
todos os elementos da coluna correspondente na matriz original. Em outras palavras, 
cada elemento é a soma de todos os elementos das linhas de uma coluna. 
 
1 Inicializando a matriz somaColuna 
 
 Como é uma matriz de acumuladores precisa ser inicializada. 
for(c=0; c<tamanhoColuna; c++) 
 somaColuna[c]=0; 
 
2 Gerando a matriz somaColuna 
 for(L=0; L< tamanhoLinha;L++) 
 for(c=0; c< tamanhoColuna;c++) 
 somaColuna[c]+= matrizOriginal [L][c]; 
 
 
 
 
 
12
3 Exibindo a matriz somaColuna sozinha 
 for(c=0; c < tamanhoColuna; c++) 
 printf("%...\t",somaColuna[c]); 
printf("\n"); 
Observação: Não se esqueça do especificador de formato. 
 
4 Exibindo a matriz somaColuna com a matriz original 
system("cls"); /*system("clear"); no Linux */ 
printf("\nMatriz Original com matriz SomaColuna\n\n"); 
for(L=0; L< tamanhoLinha; L++) 
 { 
 for(c =0; c < tamanhoColuna; c++) 
 printf("%...\t",matrizOriginal[L][c]); 
 printf("\n");} 
for(c=0; c < tamanhoColuna; c++) 
 printf("%...\t",somaColuna[c]); 
printf("\n"); 
Observação: Não se esqueça do especificador de formato. 
 
No exemplo da aula 7 on-line, o tamanho linha e o tamanho coluna eram idênticos e, 
por essa razão, algumas simplificações foram possíveis. 
Refaço simplificando o exemplo e usando alguns dos trechos apresentados nesse 
texto. 
#include <stdio.h> 
#include <stdlib.h> 
int main() 
{ 
 int L,c; float valores[3][2], somaMes[2], somaSem[3]; 
 char despesasNomes[][15]={"faculdade", "telefone", "gasolina"},mes[][8]={"jan", 
"fev"}; 
 /*Inicialização*/ 
 for(L=0; L < 3 ; L++) 
13
 somaSem[L]=0; 
 
 /*Inicialização*/ 
 for(c=0; c < 2 ; c++) 
 somaMes[0]=0; 
 
 /*Entrada*/ 
 for(L=0; L < 3 ; L++) 
 { 
 printf("\n%s\n", despesasNomes[L]); 
 for(c=0; c < 2 ; c++) 
 { 
 printf("%s: ",mes[c]); 
 scanf("%f", &valores[L][c]); 
 somaMes[c] += valores[L][c]; /*acumula para o mes*/ 
 somaSem[L] += valores[L][c]; /*acumula para o semestre*/ 
 } 
 } 
 
/*Saida*/ 
 printf("\n\n\t\tjan\tfev\tTotalS"); 
 for(L=0; L<3; L++) 
 { 
 printf("\n%-15s", despesasNomes[L]); 
 for(c=0; c < 2 ; c++) 
 printf("\t%7.2f",valores[L][c]); 
 printf("\t%7.2f",somaSem[L]); 
 } 
 printf("\n\t"); 
 for(c=0; c<2; c++) 
 printf("\t%7.2f",somaMes[c]); 
 printf("\n\n"); 
 system("pause"); 
} 
14
 
 
 
Apresento mais um exemplo que considero básico em termos didáticos porque uso os 
nomes dos trechos desse texto. 
#include <stdio.h> 
#include <stdlib.h> 
#define TL 4 
#define TC 3 
int main() 
{ 
 int L,c; float valores[TL][TC], somaColuna[TC], somaLinha[TL]; 
 
 /*Inicialização da SomaColuna*/ 
 for(c=0; c < TC ; c++) 
 somaColuna[c]=0; 
 
 /*Inicialização da SomaLinha*/ 
 for(L=0; L < TL ; L++) 
 somaLinha[L]=0; 
 
15
 /*Entrada e geração de somaLinha e somaColuna*/ 
 for(L=0; L < TL ; L++) 
 { 
 for(c=0; c < TC ; c++) 
 { 
 printf("Linha %d - Coluna %d: ",L+1, c+1); 
 scanf("%f", &valores[L][c]); 
 somaColuna[c] += valores[L][c]; 
 somaLinha[L] += valores[L][c]; 
 } 
 } 
 
/*Saida - matriz e somaLinha juntas */ 
 printf("\n\nCol 1\tCol22\tCol3 3\tTotalS\n"); 
 for(L=0; L<TL; L++) 
 { 
 for(c=0; c < TC ; c++) 
 printf("%7.2f\t",valores[L][c]); 
 printf("%7.2f\n",somaLinha[L]); 
 } 
 printf("\n\n"); 
 
/*Saida - matriz somaColuna */ 
 for(c=0; c<TC; c++) 
 printf("%7.2f\t",somaColuna[c]); 
 printf("\n\n"); 
 system("pause"); 
} 
16
 
 
 
 
17
	a07_t13
	matrizQuadrada.unlocked
	Condição
	matrizQuadrada.unlocked.pdf
	Condição
	soma.unlocked.pdf
	Matriz somaLinha
	3 Exibindo a matriz somaLinha sozinha

Outros materiais