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)
Share

2 opiniões sobre “Exercícios em 3 linguagens

  1. ladi

    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.

     
    Reply
    1. Benjamin Grando Moreira

      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).

      total = 305
      
      #int() pega apenas a parte inteira da divisão
      notas100 = int(total / 100)
      #desconta o que já foi dado em notas de 100
      total = total - (notas100 * 100) 
      notas10 = int(total / 10) #nesse caso vai dar zero
      total = total - (notas10 * 10)
      notas5 = int(total / 5)
      total = total - (notas5 * 5)
      
      print notas100, notas10, notas5
       
      Reply

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.