Prévia do material em texto
Lista 7 - imprima, atribuição,\leia, se ... então .. senão se, escolha, para
ou enquanto ou faca...enquanto e matrizes bidimensionais.
Orientações:
1- Todos os exercícios têm pelo menos uma matriz bidimensional,
2- O comanda de entrada está presente em todos os exercícios.
3- Quando existir algum cálculo declare a variável e armazene o
resultado da operação.
4- A estrutura do for, ou a estrutura do while ou a estrutura do
do...while, está presente em todos os exercícios.
5 - Todos os exercícios terão comando de saída.
6- Todas as soluções na linguagem C++.
Linguagem C++
Solução do exercício 8
1) Entrar com valores reais para uma matriz M[4] [5] . Gerar e exibir a matriz
DOBRO.
#include <iostream>
using namespace std;
int main()
{
int L, c;
float M[4][5], DOBRO[4][5];
//entrada
for(L=0; L<4; L++)
{
for(c=0; c<5; c++)
{
cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<": ";
cin>>M[L][c];
//gera a matriz dobro . Poderia estar em outro for, mas assim eh melhor
DOBRO[L][c]= M[L][c] * 2;
}
}
//saida
cout<<"\n\nMatriz Dobro\n\n";
for(L=0; L<4; L++)
{
for(c=0; c<5; c++)
{
cout<<DOBRO[L][c]<<"\t";
}
cout<<"\n";
}
cout<<"\n\n";
system("pause");
}
2) Entrar com valores inteiros para uma matriz A[4] [4] e para uma matriz B[4]
[4]. Gerar e exibir a matriz SOMA.
#include <iostream>
using namespace std;
int main()
{
int L, c, A[4][4], B[4][4], SOMA[4][4];
//entrada dos valores da Matriz A
for(L=0; L<4; L++)
{
for(c=0; c<4; c++)
{
cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz A: ";
cin>>A[L][c];
}
}
//entrada dos valores da Matriz B
for(L=0; L<4; L++)
{
for(c=0; c<4; c++)
{
cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz B: ";
cin>>B[L][c];
//gera a matriz SOMA . Poderia estar em outro for, mas assim eh melhor
SOMA[L][c]= A[L][c] + B[L][c];
}
}
//saida
cout<<"\n\nMatriz SOMA\n\n";
for(L=0; L<4; L++)
{
for(c=0; c<4; c++)
{
cout<<SOMA[L][c]<<"\t";
}
cout<<"\n";
}
cout<<"\n\n";
system("pause");
}
3) Entrar com valores para duas matrizes 5 x 5. Gerar e exibir a matriz diferença.
#include <iostream>
using namespace std;
int main()
{
int L, c, A[5][5], B[5][5], diferenca[5][5];
//entrada dos valores da Matriz A
for(L=0; L<5; L++)
{
for(c=0; c<5; c++)
{
cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz A: ";
cin>>A[L][c];
}
}
//entrada dos valores da Matriz B
for(L=0; L<5; L++)
{
for(c=0; c<5; c++)
{
cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz B: ";
cin>>B[L][c];
//gera a matriz diferenca . Poderia estar em outro for, mas assim eh melhor
diferenca[L][c]= A[L][c] + B[L][c];
}
}
//saida
cout<<"\n\nMatriz Diferenca\n\n";
for(L=0; L<5; L++)
{
for(c=0; c<5; c++)
{
cout<<diferenca[L][c]<<"\t";
}
cout<<"\n";
}
cout<<"\n\n";
system("pause");
}
4) Ler valores inteiros para a matriz A[3][5] . Gerar e exibir a matriz
SOMA_LINHA, onde cada elemento é a soma dos elementos de uma linha da
matriz A. Faça o trecho que gera a matriz, separado dos trechos de entrada ou
do trecho de saída.
#include <iostream>
using namespace std;
int main()
{
int L, c, A[3][5], SOMA_LINHA[3];
//entrada dos valores da Matriz A
for(L=0; L<3; L++)
{
SOMA_LINHA[L] = 0;//para não ter que criar outro for
for(c=0; c<5; c++)
{
cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz A: ";
cin>>A[L][c];
}
}
//gera a matriz SOMA_LINHA
for(L=0;L<3;L++)
for (c=0; c<5;c++)
SOMA_LINHA[L] += A[L][c];
//saida
system("cls");
cout<<"\n\nSoma Linha\n\n";
for(L=0;L< 3;L++)
cout<<"\n"<<SOMA_LINHA[L];
cout<<"\n\n";
system("pause");
}
5) Ler valores inteiros para a matriz A[3][5]. Gerar e imprimir a matriz
SOMA_COLUNA, onde cada elemento é a soma dos elementos de uma coluna da
matriz A. Faça o trecho que gera a matriz, separado dos trechos de entrada ou
do trecho de saída.
#include <iostream>
using namespace std;
int main()
{
int L, c, A[3][5], SOMA_COLUNA[5];
//entrada dos valores da Matriz A
for(L=0; L<3; L++)
{
for(c=0; c<5; c++)
{
cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz A: ";
cin>>A[L][c];
}
}
//inicializa SOMA_COLUNA
for (c=0; c<5;c++)
SOMA_COLUNA[c] = 0;
//gera a matriz SOMA_COLUNA
for (c=0; c<5;c++)
for(L=0;L<3;L++)
SOMA_COLUNA[c] += A[L][c];
//saida
system("cls");
cout<<"\n\nSoma Coluna\n\n";
for(c=0;c< 5;c++)
cout<<SOMA_COLUNA[c]<<"\t";
cout<<"\n\n";
system("pause");
}
6) Fazer um programa leia valores para uma matriz M10 x 10 e escreva-a na ordem
inversa que foi lida.
Se a matriz fosse M3 x 3 e tivesse estes elementos:
sua impressão seria:
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
987
654
321
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
123
456
789
#include <iostream>
using namespace std;
int main()
{
int L,C;
float mat[10][10];
//Entrada
for(L=0; L < 10; L++)
{
for(C=0; C < 10; C++)
{
cout<<"\n Linha "<<L+1<<" coluna "<<C+1<<": ";
cin>>mat[L][C];
}
}
//Saida
system("cls");//system("clear"); LINUX
cout<<"\nMatriz Exibida na orem inversa de leitura\n";
for(L=9; L >=0; L--)
{
for(C=9; C >=0 ; C--)
{
cout<<mat[L][C]<<"\t";
}
cout<<"\n\n";
}
cout<<"\n\n";
system("pause");
}
7) Faça um programa que leia valores reais para uma matriz 5 x 5 e exiba todos
os elementos exceto os elementos da diagonal principal.
#include <iostream>
using namespace std;
int main()
{
int L,C;
float mat[5][5];
//Entrada
for(L=0; L < 5; L++)
{
for(C=0; C < 5; C++)
{
cout<<"\n Linha "<<L+1<<" coluna "<<C+1<<": ";
cin>>mat[L][C];
}
}
//Saida
system("cls");//system("clear"); LINUX
cout<<"\nTodos elementos menos os da DP\n";
for(L=0; L < 5; L++)
{
for(C=0; C < 5; C++)
{
if(L != C)
cout<<mat[L][C]<<"\t";
else cout<<"\t";
}
cout<<"\n\n";
}
cout<<"\n\n";
system("pause");
}
8) Faça um programa que leia valores reais para uma matriz 4 x 4 e exiba os
elementos que se encontram acima da diagonal principal e a soma deles.
#include <iostream>
using namespace std;
int main()
{
int L,C;
float mat[4][4], soma=0;
//Entrada
for(L=0; L < 4; L++)
{
for(C=0; C < 4; C++)
{
cout<<"\n Linha "<<L+1<<" coluna "<<C+1<<": ";
cin>>mat[L][C];
}
}
//Saida
system("cls");//system("clear"); LINUX
cout<<"\nTodos elementos acima da DP\n";
for(L=0; L < 4; L++)
{
for(C=0; C < 4; C++)
{
if(L < C)
{
soma += mat[L][C];cout<<mat[L][C]<<"\t";
}
else cout<<"\t";
}
cout<<"\n\n";
}
cout<<"\nSoma dos elementos: "<<soma<<"\n";
system("pause");
}
9) Faça um programa que leia os elementos de uma matriz 6 x 6 e exiba os
elementos que se encontram acima da diagonal principal e o produto deles.
#include <iostream>
using namespace std;
int main()
{
int L,C;
float mat[6][6], produto=1;
//Entrada
for(L=0; L < 6; L++)
{
for(C=0; C < 6; C++)
{
cout<<"\n Linha "<<L+1<<" coluna "<<C+1<<": ";
cin>>mat[L][C];
}
}
//Saida
system("cls");//system("clear"); LINUX
cout<<"\nTodos elementos acima da DP\n";
for(L=0; L < 6; L++)
{
for(C=0; C < 6; C++)
{
if(L < C)
{
produto *= mat[L][C];
cout<<mat[L][C]<<"\t";
}
else cout<<"\t";
}
cout<<"\n\n";
}
cout<<"\nProduto dos elementos: "<<produto<<"\n";
system("pause");
}
9) Faça um programa que leia valores inteiros para uma matriz M inteira 4x4 e
exiba os elementos que estão em linhas pares e colunas ímpares.
#include <iostream>
using namespace std;
int main()
{
int L,C, mat[4][4];
//Entrada
for(L=0; L < 4; L++)
{
for(C=0; C < 4; C++)
{
cout<<"\n Linha "<<L+1<<" coluna "<<C+1<<": ";
cin>>mat[L][C];
}
}
//Saida
system("cls");//system("clear"); LINUX
cout<<"\nElementos em linhas pares e colunas impares\n";
for(L=0; L < 4; L++)
{
for(C=0; C < 4; C++)
{
if(L % 2 ==1 && C % 2 == 0)
{
cout<<mat[L][C]<<"\t";
}
else cout<<"\t";
}
cout<<"\n\n";
}
cout<<"\n\n";
system("pause");
}
10) Num torneio de futsal, de um turno, inscreveram-se 12 times. Armazenar os
nomes dos times e exibir a tabela de jogos.
Solução_1
#include <iostream>
#define TAM 3
using namespace std;
int main()
{
int L, c;
char times[TAM][21];
//entrada dos nomes dos times
for(L=0; L<TAM; L++)
{
cout<<"\nNome do "<<L+1<<"o time: ";
cin.getline(times[L], 31);
}
// saida
system("cls"); //nao eh obrigatorio
cout<<"\n\nTabela de Jogos \n\n";
for(L=0; L<TAM; L++)
for(c=0; c<TAM; c++)
if(L < c) // pode ser if(L > c) tambem
cout<<"\n"<<times[L]<<" x "<<times[c];
cout<<"\n\n";
system("pause");
}
Solução_2
#include <iostream>
#define TAM 3
using namespace std;
int main()
{
int L, c;
char times[TAM][21];
//entrada dos nomes dos times
for(L=0; L<TAM; L++)
{
cout<<"\nNome do "<<L+1<<"o time: ";
cin.getline(times[L], 31);
}
// saida
system("cls"); //nao eh obrigatorio
cout<<"\n\nTabela de Jogos \n\n";
for(L=0; L<TAM-1; L++)
for(c=L+1; c<TAM; c++)
cout<<"\n"<<times[L]<<" x "<<times[c];
cout<<"\n\n";
system("pause");
}