Exercícios em 3 linguagens
Nesse post é mostrada a solução de 2 exercícios em 3 linguagens de programação diferentes: C++, Python e Matlab. Além disso, são criadas soluções diferentes dentro da mesma linguagem.
Exercício 1: criar uma matriz identidade de tamanho NxN, onde N é informado pelo usuário. Criar uma segunda matriz que é o dobro da primeira.
Solução no C++
Solução em C++ sem função
int main(){
int n;
cout << "Dimensão da matriz: ";
cin >> n;
int mat[100][100], int mat2[100][100];
for (int i=0;i<n;i++) {
for (int j=0;j<n;j++) {
if (i == j) {
mat[i][j] = 1;
} else {
mat[i][j] = 0;
}
}
}
for (int i=0;i<n;i++) {
for (int j=0;j<n;j++) {
mat2[i][j] = mat[i][j] * 2;
}
}
for (int i=0;i<n;i++) {
for (int j=0;j<n;j++) {
cout << mat[i][j] << " ";
}
cout << endl;
}
cout << "n";
for (int i=0;i<n;i++) {
for (int j=0;j<n;j++) {
cout << mat2[i][j] << " ";
}
cout << endl;
}
}
Solução em C++ com função
void matrizEye(int mat[100][100], int n) {
for (int i=0;i<n;i++) {
for (int j=0;j<n;j++) {
if (i == j) {
mat[i][j] = 1;
} else {
mat[i][j] = 0;
}
}
}
}
void mostraMatriz(int mat[100][100], int linhas, int colunas) {
for (int i=0;i<linhas;i++) {
for (int j=0;j<colunas;j++) {
cout << mat[i][j] << " ";
}
cout << endl;
}
cout << endl;
}
void matrizMultiplica(int matFim[100][100], int matOriginal[100][100], int linhas, int colunas, int multiplicador) {
for (int i=0; i<linhas;i++) {
for (int j=0; j<colunas;j++) {
matFim[i][j] = matOriginal[i][j] * multiplicador;
}
}
}
int main() {
int mat1[100][100], mat2[100][100], n;
cout << "Dimensão da matriz: ";
cin >> n;
matrizEye(mat1,n);
matrizMultiplica(mat2, mat1, n, n, 2);
mostraMatriz(mat1, n, n);
mostraMatriz(mat2, n, n);
}
Solução no Python
Solução em Python sem função
n = input('Dimensão da matriz: ')
mat = [0]*n
for i in range(n):
mat[i] = [0]*n
mat2 = [0]*n
for i in range(n):
mat2[i] = [0]*n
for i in range(n):
for j in range(n):
if i == j:
mat[i][j] = 1
else:
mat[i][j] = 0
for i in range(n):
print mat[i][:]
print 'n'
for i in range(n):
for j in range(n):
mat2[i][j] = mat[i][j] * 2
for i in range(n):
print mat2[i][:]
Solução em Python com função
def criaMatriz(n,m):
mat = [0]*n
for i in range(m):
mat[i] = [0]*n
return mat
def criaMatrizEye(n):
mat = criaMatriz(n,n)
for i in range(n):
mat[i][i] = 1
return mat
def mostraMatriz(mat,n):
for i in range(n):
print mat[i][:]
print 'n'
n = input('Dimensão da matriz: ')
mat1 = criaMatrizEye(n)
mat2 = criaMatriz(n,n)
mostraMatriz(mat1,n)
mostraMatriz(mat2,n)
for i in range(n):
for j in range(n):
mat2[i][j] = mat1[i][j] * 2
mostraMatriz(mat2,n)
Solução no Matlab
n = input('Dimensão da matriz: ');
mat = eye(n);
mat2 = mat * 2;
mat2
Exercício 2: Criar um vetor com 100 posições com valores entre 10 e 50. Encontrar o maior, quantas vezes aparece e uma posição onde ele pode ser encontrado.
Solução no C++
Solução em C++ sem função
int main() {
srand(time(NULL));
int vetor[100], maior, vezes, posicao;
for (int i = 0; i < 100; i++) {
vetor[i] = rand() % 40 + 10;
cout << vetor[i] << " ";
}
maior = vetor[0];
vezes = 1;
posicao = 0;
for (int i = 1; i < 100; i++) {
if (vetor[i] > maior) {
maior = vetor[i];
posicao = i;
vezes = 1;
} else if (vetor[i] == maior) {
vezes++;
}
}
cout << "nMaior valor: " << maior;
cout << "nAparece " << vezes << " vezes";
cout << "nÍndice: " << posicao;
}
Solução em C++ com função
#include <iostream>
#include <stdlib.h>
using namespace std;
#define TAM 5
void preencheVetor(int vet[], int tam, int min, int max) {
for (int i = 0; i < tam; i++) {
vet[i] = rand() % (max-min+1) + min;
}
}
void mostraVetor(int vet[], int tam) {
for (int i = 0; i < tam; i++) {
cout << vet[i] << " ";
}
}
int encontraMaior(int vet[], int tam) {
int maior = vet[0];
for (int i = 1; i < tam; i++) {
if (vet[i] > maior) {
maior = vet[i];
}
}
return maior;
}
int contaVezes(int vet[], int tam, int num) {
int vezes = 0;
for (int i = 1; i < tam; i++) {
if (vet[i] == num) {
vezes++;
}
}
return vezes;
}
int encontraPosicao(int vet[], int tam, int num) {
for (int i = 0; i < tam; i++) {
if (vet[i] == num) {
return i;
}
}
return -1;
}
using namespace std;
int main() {
srand(time(NULL));
int vetor[TAM], maior;
preencheVetor(vetor, TAM, 10, 50);
mostraVetor(vetor, TAM);
maior = encontraMaior(vetor, TAM);
cout << "nMaior valor: " << maior;
cout << "nAparece " << contaVezes(vetor, TAM, maior) << " vezes";
cout << "nIndice: " << encontraPosicao(vetor, TAM, maior);
}
Solução no Python
Solução em Python sem função
import random
TAM = 5
vet = [0]*TAM
for i in range(TAM):
vet[i] = random.randint(10,50)
print vet
maior = max(vet)
print 'O maior valor do vetor é: ', maior
vezes = 0
for i in range(TAM):
if vet[i] == maior:
vezes = vezes + 1
posicao = i
print vezes
print 'Encontrado no índice ', posicao, ' do vetor'
Solução em Python com função
def criaVetor(tamanho, valorMin, valorMax):
import random
vet = [0]*tamanho
for i in range(tamanho):
vet[i] = random.randint(valorMin,valorMax)
return vet
vetor = criaVetor(10, 10, 50)
print vetor
maior = max(vetor)
print 'nMaior valor: ', maior
print 'O maior valor aparece ', vetor.count(maior), ' vezes'
print 'Um índice desse valor é: ', vetor.index(maior)
Solução no Matlab
TAM = 5;
vet = round( rand(1,TAM) * 40 + 10 )
maior = max(vet)
vezes = 0;
for i = 1:TAM
if vet(i) == maior
vezes = vezes + 1;
posicao = i;
endif
endfor
printf('Número de vezes: %in', vezes)
printf('Posição: %in', i)
ola quero saber como posso progamar em python – simples, sem função ou vetor. Saques, supondo que as notas de 100, 50, 20 e 10 reais estejam disponiveis.
Você precisará fazer divisões sucessivas, mas pegando apenas a parte inteira.
Por exemplo: R$ 305 -> 305 / 100 = parte inteira 3 (3 notas de 100).