Graduação em TI (ADS/SI/CS) > Estrutura de Dados

Aula 5 - Ponteiros

(1/1)

Jefferson:
Exercício 1


--- Citar ---1. Faça um programa que receba do usuário dois vetores, A e B, com 10 números inteiros cada. Crie um novo vetor denominado C calculando C = A - B. Mostre na tela os dados dos vetores A, B e C. OBS: As operações com vetor devem ser feitas utilizando ponteiros e a deve ser criada uma função que realiza a subtração de dois vetores.
--- Fim de citação ---


--- Código: C++ ---12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#include <iostream>#include <sstream>using std::cout;using std::cin;using std::string;using std::stringstream; #include <iomanip> //setwusing std::setw; int receberValor(int pos);void preencherVetor (int *vetor, int tamanho);void subtrairVetores(int *vetA, int *vetB, int *vetResult, int tamanho); int main(){    const int tamVetores =10;    int A[tamVetores];    int B[tamVetores];    int C[tamVetores];     cout << "VETOR A:\n";    preencherVetor(A, tamVetores);     cout << '\n';    cout << "VETOR B:\n";    preencherVetor(B, tamVetores);         subtrairVetores(A, B, C, tamVetores);     cout << '\n';    cout << "Vetor A" << setw(11) << "Vetor B" << setw(19) << "Vetor C (A-B)\n";    cout << '\n';     for (int i=0; i<tamVetores; i++){        cout << A[i] << setw(12) << B[i] << setw(12) << C[i] << '\n';   }   return 0;}  void preencherVetor (int *vetor, int tamanho){    for (int i=0; i<tamanho; i++){        *(vetor+i) = receberValor(i+1);    } } void subtrairVetores(int *vetA, int *vetB, int *vetResult, int tamanho){         for (int i=0; i<tamanho;i++) *(vetResult+i) = *(vetA+i) - *(vetB+i); } int receberValor(int pos){    string temp="";    int num=0;    while (true){        cout << "Valor "<< pos << ": ";        cin >> temp;        stringstream myStream(temp);        if (myStream >>num) break; //sucesso na conversão            else            cout << "\nNúmero inválido. Tente de novo." << '\n';    }   return num;}

Jefferson:
Exercício 2


--- Citar ---Faça um programa que leia um vetor de 8 posições e, em seguida, leia também dois valores X e Y (posições do vetor). Ao final seu programa deverá escrever a soma dos valores encontrados nos respectivos índices X e Y. OBS: As operações com vetor devem ser feitas utilizando ponteiros e a deve ser criada uma função para a soma dos valores dos índices.
--- Fim de citação ---


--- Código: C++ ---12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879#include <iostream>using std::cout;using std::cin; #include <iomanip> //time //no dev c++ para isso ser aceito é preciso ir em Tools -> Compiler Options e acrescentar -std=c++11 "when calling the compiler"#include <random> #include <locale.h> //necessário para usar setlocale void usaValoresAleatorios(int vetor[], int tamanho, int *x, int *y);int somarValores(int *vetor, int x, int y); int main(){    const int tamVetor=8;    int a[tamVetor];    int x;    int y;    char resposta;    setlocale(LC_ALL,"");  //me permite usar acentuação     cout << "Por default este programa usa o gerador de números aleatórios.\n";    cout << "você deseja em vez disso fornecer os valores?\n";    cout << "s=sim, n=não.\n";    cin >> resposta;     if (resposta=='s'){//Não me importa realmente qualquer outra resposta       for (int i=0; i<tamVetor; i++){            cout << "Posição " << i+1 << ": ";            cin >> *(a+i);       }        cout << '\n';        cout << "X: ";        cin >> x;        cout << "Y: ";        cin >> y;    }    else{        usaValoresAleatorios (a,tamVetor,&x,&y);    }     cout << '\n';    cout << "Valores de entrada\n";    cout << '\n';     for (int i=0; i<tamVetor; i++){        cout <<i+1 <<": " << *(a+i) << '\n';    }    cout << '\n';    cout << "X: " << x << '\n';    cout << "Y: " << y << '\n';    cout << '\n';    int soma = somarValores(a, x, y);        cout << "A soma dos valores encontrados nas posições X e Y é: " << soma << '\n'; return 0;}  void usaValoresAleatorios(int vetor[], int tamanho, int *x, int *y){    // Preparo o gerador de número randômicos para me fornecer números na faixa de -10 a 10    std::mt19937 eng(time(NULL)); // Alimento o gerador com a hora atual para me certificar que cada execução seja diferente    std::uniform_int_distribution<> distr(-10, 10); // defino faixa    std::uniform_int_distribution<> distr1(1, tamanho); // defino faixa     //Preencho o vetor com números aleatórios    for (int i=0; i<tamanho; i++){        vetor[i]=distr(eng);    }    *x=distr1(eng);    *y=distr1(eng);} int somarValores(int *vetor, int x, int y){  return *(vetor+x-1) + *(vetor+y-1);}

Navegação

[0] Índice de mensagens

Responder

Ir para versão completa