Buscar

Programação em C: Matrizes e Desafios

Prévia do material em texto

Análise e Desenvolvimento de 
Sistemas – ADS 
2º semestre
Prof. Me. Jonathan Rogéri
Jonathan.rogeri@docente.unip.br
Ling. e Técnicas de Programação
Trabalhando com caracteres:
int main() {
setlocale(LC_ALL, "Portuguese"); //Para usar acentos
int i;
char nome[10];
printf("Informe seu nome:");
scanf("%s",&nome);
printf("%s",nome);
return 0;
}
Ling. e Técnicas de Programação
Matriz
Variável composta homogênea bidimensional
M
Int M[3][4]; //Declaração
M[0][0] = 10; //Atribuição
Printf(“O valor de M na posição 0,0 é: %i”,M[0][0]); //Utilização
10
Ling. e Técnicas de Programação
int main() {
setlocale(LC_ALL, "Portuguese");
int M[3][7], i, j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("\nInsira um valor:");
scanf("%i",&M[i][j]);
printf("\nO valor %i recebido, será inserido na linha %i e coluna %i.", M[i][j],i,j );
}
}
printf("\n\n\nMinha Matriz:\n\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("\t%i", M[i][j] );
}
printf("\n");
}
return 0;
}
Ling. e Técnicas de Programação
Exercícios:
1. Faça um programa que receba uma matriz 5 x 5. Mostre o maior
elemento da Matriz e sua posição.
2. Faça um programa que recebe duas matrizes 3 x 6. Depois, realiza a
soma de cada posição entre as matrizes, grava em uma terceira matriz e
mostra o resultado da soma.
Ling. e Técnicas de Programação
Exercícios: 1
int main() {
setlocale(LC_ALL, "Portuguese");
int M[5][5], i, j, vmaior;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("\nInsira um valor:");
scanf("%i",&M[i][j]);
if(i==0 && j==0)
vmaior = M[i][j];
if(M[i][j] > vmaior)
vmaior = M[i][j];
}
}
printf("\nO maior valor da matriz é: %i", vmaior);
return 0;
}
Ling. e Técnicas de Programação
Exercícios: 2
int main() {
setlocale(LC_ALL, "Portuguese");
int M[3][6], M2[3][6], S[3][6], i, j;
for(i=0;i<3;i++)
{
for(j=0;j<6;j++)
{
printf("\nInsira um valor para a matriz 1:");
scanf("%i",&M[i][j]);
printf("\nInsira um valor para a matriz 2:");
scanf("%i",&M2[i][j]);
}
}
printf("\n\n\nA matriz soma é:\n");
for(i=0;i<3;i++)
{
for(j=0;j<6;j++)
{
S[i][j]=M[i][j]+M2[i][j];
printf("\t%i", S[i][j] );
}
printf("\n");
}
return 0;
}
Ling. e Técnicas de Programação
Desafio
Zé Felício é um fazendeiro que adora astronomia e descobriu um portal na Internet que fornece uma lista das posições onde caíram meteoritos.
Com base nessa lista, e conhecendo a localização de sua fazenda, Zé Felício deseja saber quantos meteoritos caíram dentro de sua propriedade.
Ele precisa de sua ajuda para escrever um programa de computador que faça essa verificação automaticamente.
São dados:
• uma lista de pontos no plano cartesiano, onde cada ponto corresponde à posição onde caiu um meteorito;
• as coordenadas de um retângulo que delimita uma fazenda.
As linhas que delimitam a fazenda são paralelas aos eixos cartesianos. Sua tarefa é escrever um programa que determine quantos meteoritos
caíram dentro da fazenda (incluindo meteoritos que caíram exatamente sobre as linhas que delimitam a fazenda).
Seu programa deve ler vários conjuntos de testes:
• A primeira linha de um conjunto de testes quatro números inteiros X1, Y1, X2 e Y2, onde (X1, Y1) é a coordenada do canto superior esquerdo e
(X2, Y2) é a coordenada do canto inferior direito do retângulo que delimita a fazenda.
• A segunda linha contém um inteiro, N, que indica o número de meteoritos.
• Seguem-se N linhas, cada uma contendo dois números inteiros X e Y, correspondendo às coordenadas de cada meteorito.
Ao final, mostrar quantos meteoritos caíram na fazenda de Zé Felício.
Obs: Esse exercício não utiliza vetor ou matriz, apenas estrutura de repetição.
Ling. e Técnicas de Programação
Desafio (Correção)
int main() {
setlocale(LC_ALL, "Portuguese");
int x1F, y1F, x2F, y2F, x, y, n, qtde, i;
printf("\nInsira as coordenadas da fazenda:");
scanf("%i %i %i %i", &x1F, &y1F, &x2F, &y2F);
printf("\nInformea quantidade de meteoritos:");
scanf("%i", &n);
for(i=1;i<=n;i++)
{
printf("\nInsira as coordenadas do meteorito:");
scanf("%i %i", &x, &y);
if(x >= x1F && x <= x2F && y <= y1F && y >= y2F)
qtde = qtde + 1;
}
printf("A quantidade de meteoritos que caíram na fazenda foi: %i", qtde);
}
Ling. e Técnicas de Programação
Exercícios para trabalho (Entrega até 12/10 às 23:59h):
Link: https://unipead-my.sharepoint.com/:f:/g/personal/jonathan_rogeri_docente_unip_br/ErW-
pSwi0nlKgBDiN6HvRaMBq3GBO23l6hxbS47Kl2TI3g
3. Faça um programa que recebe duas matrizes, uma 2x3 e outra 3x2 e efetue a multiplicação entre as matrizes.
4. Faça um programa com uma matriz de 20 linhas e 5 colunas de números reais, onde cada linha da matriz corresponde a um 
produto e as colunas, correspondem, respectivamente à:
coluna 0: código do produto
coluna 1: valor de custo do produto
colona 2: margem de lucro bruta
coluna 3: valor de venda
coluna 4: saldo do produto em estoque
O programa deve ter um menu onde o usuário pode escolher se irá cadastrar um novo produto, realizar uma venda ou sair do 
programa. No entanto, só é possível realizar venda se já existir pelo menos 1 produto cadastrado.
Se o usuário optar por cadastrar um produto, deve-se receber do usuário o código do produto, valor de custo, margem de lucro e 
saldo em estoque.
Após receber todas as informações, com base no valor de custo e margem de lucro, calcule o valor de venda de cada produto 
(custo x margem / 100).
Se o usuário optar por realizar uma venda, o usuário deve informar o código do produto e a quantidade. O programa deve abater
a quantidade do saldo em estoque e mostrar ao usuário o valor da venda, que será a multiplicação da quantidade pedida pelo 
preço de venda.
Caso o usuário escolha realizar uma venda, ele pode vender vários produtos até voltar para o menu original, e só devemos 
mostrar o valor da venda após a venda ser finalizada (ou seja, quando ele não quiser mais vender nenhum produto).
Após realizar uma venda ou cadastrar um produto, sempre deve retornar ao menu principal do programa. 
O programa só deve ser encerrado quando o usuário optar pela opção de sair.
https://unipead-my.sharepoint.com/:f:/g/personal/jonathan_rogeri_docente_unip_br/ErW-pSwi0nlKgBDiN6HvRaMBq3GBO23l6hxbS47Kl2TI3g

Continue navegando