Buscar

Diversos programas vistos em sala sobre vetores e funções.

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Todos os exercícios já vistos em sala, até 25/09/2015
Exemplos:
Exemplo01
/*
 Exemplo01
 Objetivo: Fazer um exemplo com uso de uma função.
 Programa: Lê dois números inteiros e mostra a saída
 dos mesmos, na ordem inversa de leitura. Utilizar 
 usar uma função, com passagem de parâmetros por referência,
 para inverter a ordem de leitura.
 Data: 25/08/2015 
*/
#include <cstdlib>
#include <iostream>
#include <locale> //para escrever caracteres especiais
using namespace std;
int inverteEntrada( int & , int & );//prototipo
int main( )
{
 setlocale(LC_ALL,"Portuguese");//configura caracteres especiais em Português
 int num1, num2;
 
 cout << "\nEntre com dois numeros inteiros: ";
 cin >> num1 >> num2;
 
 //antes de chamar a função
 printf("\nOrdem de entrada: %d \t %d",num1,num2);
 cout << "\n";
 
 inverteEntrada(num1,num2);
 
 //após chamar a função
 printf("\nOrdem de saída: %d \t %d",num1,num2);
 cout << "\n";
 
 
 system("PAUSE");
 return EXIT_SUCCESS;
}
int inverteEntrada(int &num1Aux, int &num2Aux)
{
 int aux;
 aux = num1Aux;
 num1Aux = num2Aux;
 num2Aux = aux;
 //printf("\nOrdem de saída: %d \t %d",num1Aux,num2Aux);
 //cout << "\n";
 
}
------------------------------------------------------
Exemplo02
/*
 Exemplo02
 Objetivo: Ensinar função tendo, como passagem de parâmetros, um vetor.
 Descrição: Este programa deve considerar na main(), a inicialização de 3 vetores e
 apresentar:
 1 - uma função para ler os dados dos mesmos, com o seguinte protótipo:
 
 void lerDados(int [], int ); 
 
 2 - uma função para alterar o vetor através de cálculos simples(dobrar os 
 dados do vetor, com o seguinte protótipo:
 
 void dobrarDados(int [], int );
 
 3 - uma função para imprimir os dados do vetor, com o seguinte protótipo:
 
 void imprimirDados(int [], int );
 
*/
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
//Protótipos ou declarações das funções
 
void lerDados(int [], int ); 
void dobrarDados(int [], int );
void imprimirDados(int [], int );
 
// Prog. Principal
 
int main()
{
 int v[3], w[4], z[6];
 
 cout<< "Entrando com dados para compor v : " <<endl;
 
 //chamando função e passando 2 argumentos
 lerDados(v, 3);
 
 cout<< "Entrando com dados para compor w : " <<endl;
 lerDados(w, 4);
 cout<< "Entrando com dados para compor z : " <<endl;
 lerDados(z,6);
 
 dobrarDados(v,3);
 dobrarDados(w,4);
 dobrarDados(z,6);
 
 cout<< "Imprimindo v apos sua alteracao : " <<endl;
 imprimirDados(v,3);
 cout<< "Imprimindo w apos sua alteracao : " <<endl;
 imprimirDados(w,4);
 cout<< "Imprimindo z apos sua alteracao : " <<endl;
 imprimirDados(z,6);
 system("pause");
 
 return 0; // Professor, explique este retorno !!
}
 
// Definições das funções 
 
void lerDados(int x[], int n)
{
 for (int i = 0; i < n; i++)
 cin>> x[i];
}
void dobrarDados(int x[], int n) {
 for (int i = 0; i < n; i++)
 x[i] = x[i] * 2;
}
 
void imprimirDados(int x[], int n) {
 for (int i = 0; i < n; i++)
 cout<< " " << x[i];
 cout<<endl;
}
----------------------------------------------
Exemplo03
/*
 Exemplo03
 Objetivo: Operações básicas para listas lineares sequenciais (vetores), não ordenadas
 Descrição: Fazer um programa que, na operação de inicialização, deve considerar na 
 main(), um vetor de 40 nós, para guardar notas dos alunos de uma turma,
 e, também, uma variável para controlar a quantidade, das notas que serão
 inseridas na lista. Em seguida, deve realizar na main()a leitura 
 de alguns valores, por exemplo: 6 valores, a serem inseridos, na lista,
 através de uma função com o seguinte protótipo:
 
 void inserir(float v[], float valor, int &n, int tamanho);
 
 Em seguida,, deve imprimir o números de valores inseridos, na lista,
 através de uma função com o seguinte protótipo:
 
 void percorrer(float v[], int n);
 Data: 02/09/2015 
*/
#include <cstdlib>
#include <iostream>
using namespace std;
void inserir(float v[], float valor, int &n, int tamanho);
//void inserir(float [], float , int & , int );
void percorrer(float v[], int n);
int main(int argc, char *argv[])
{
 float v[40];
 int n;//quantidade
 float valor;
 
 n = 0;
 
 cout << "\nComposicao do vetor." << endl;
 
 for (int i = 0; i <= 5; i++)
 {
 cout << "\nEntre com o elemento " << i + 1 << ": ";
 cin >> valor;
 inserir(v,valor,n,40); 
 }
 
 percorrer (v,n);
 
 
 system("PAUSE");
 return EXIT_SUCCESS;
}// fim da main()
void inserir(float v[], float valor, int &n, int tamanho) 
{
 if (tamanho == n)
 cout<< "ERRO: Lista cheia.";
 else
 {
 v[n] = valor;
 n++;
 }
} 
void percorrer(float v[], int n)
{
 for (int i = 0; i < n; i++)
 cout<< " " << v[i] << endl;
}
 
 
-------------------------------------------------
Exemplo04
/*
 Exemplo04
 Objetivo: Operações básicas para listas lineares sequenciais (vetores), não ordenadas
 Descrição: Considerando o programa exemplo03, incluir, mais duas 
 funções:
 1 - Busca sequencial, como seguinte protótipo:
 
 int buscarSequencial(float [], float , int ); 
 
 2 - Remoção de elemento da estrutura (vetor), 
 com seguinte protótipo:
 
 void remover(float [], float , int &);
 
 
 
 
 Data: 02/09/2015 
*/
#include <cstdlib>
#include <iostream>
using namespace std;
void inserir(float v[], float valor, int &n, int tamanho);
void percorrer(float v[], int n);
int buscarSequencial(float v[], float valor, int n);
void remover(float v[], float valor, int&n);
int main(int argc, char *argv[])
{
 float v[40];
 int n;//quantidade
 int posicao;//posição do valor de busca no vetor
 float valor;
 float xavDeBusca;
 float valorARemover;
 
 n = 0;
 
 cout << "\nComposicao do vetor." << endl;
 
 for (int i = 0; i <= 5; i++)
 {
 cout << "\nEntre com o valor " << i + 1 << ": ";
 cin >> valor;
 inserir(v,valor,n,40); 
 }
 
 percorrer (v,n);
 
 cout<< "\Entre com a chave de busca: "; 
 cin>> xavDeBusca;
 posicao = buscarSequencial(v,xavDeBusca,n);
 if (posicao>= 0)
 cout<< "Elemento encontrado na posicao = " 
 <<posicao << endl;
 else
 cout<< "Elemento não encontrado " 
 <<endl;
 cout<< "\Entre com o valor a ser removido: "; 
 cin>> valorARemover;
 remover(v,valorARemover,n); 
 
 percorrer (v,n); 
 
 system("PAUSE");
 return EXIT_SUCCESS;
}
void inserir(float v[], float valor, int &n, int tamanho) 
{
 if (tamanho == n)
 cout<< "ERRO: Lista cheia.";
 else
 {
 v[n] = valor;
 n++;
 }
} 
void percorrer(float v[], int n)
{
 for (int i = 0; i < n; i++)
 cout<< " " << v[i] << endl;
}
int buscarSequencial(float v[], float valor, int n)
{
for (int i = 0; i < n; i++)
 {
 if (v[i] == valor)
 return i; // achou - retorna o índice do dado 
 }
 return -1; // não achou - retorna um índice impossível 
}
void remover(float v[], float valor, int&n)
{
 if (n == 0) // Estre trecho caracteriza a operação que testa lista vazia
 {
 cout<< "ERRO : lista vazia." <<endl;
 return; // Professor, explicar return;
 }
 
 int posicao = buscarSequencial(v,valor,n);
 if (posicao == -1) 
 {
 cout<< "ERRO : valor não encontrado."
 <<endl;
 return;
 }
 
 // copia o último para a posição do valor a ser removido
 v[posicao] = v[n-1]; 
 n--; // ajusta a quantidade de elementos em v 
}
 
 
----------------------------------------------
Exemplo05 : Ainda não está completo
----------------------------------------------
Exemplo06
/*
 Objetivo: ordenar (método bolha) com função
*/
#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;
void inserir(int v[], int valor, int &n, int tamanho);
void percorrer(int v[], int n);
void ordenar(int v[],int n);
int main(int argc, char *argv[])
{
 int v[40];
 int n;//quantidade
 int posicao;//posição do valor de busca no vetor
 int valor;
 
 n = 0;
 
 cout << "\nComposicao do vetor." << endl;
 srand(time(0));
 for (int i = 0; i <= 5; i++)
 {
 
 valor = rand()% 31;
 inserir(v,valor,n,40); 
 }
 percorrer (v,n);
 ordenar (v,n);
 cout << "\n\n";
 
 percorrer (v,n);
 
 system("PAUSE");
 return EXIT_SUCCESS;
}
void inserir(int v[], int valor, int &n, int tamanho) 
{
 if (tamanho == n)
 cout<< "ERRO: Lista cheia.";
 else
 {
 v[n] = valor;
 n++;
 }
}
void percorrer(int v[], int n)
{
 for (int i = 0; i < n; i++)
 cout<< " " << v[i] << endl;
}
void ordenar(int v[],int n)
{
 int bolha, aux, i;
 while(n>1)
 {
 bolha=0;
 for(i=0;i<n-1;i++)
 {
 if (v[i]>v[i+1])
 {
 aux=v[i];
 v[i]=v[i+1];
 v[i+1]=aux;
 bolha=i;
 }
 }
 n=bolha+1;
 }
}
****************************************************************
Exercícios
Ex01
/*
Ex01
Objetivo: Faça um programa em C++ para ler a largura e o comprimento de
 um retângulo, calcular e imprimir o valor da área. O cálculo da área
 deverá ser feito por uma função que receberá a largura e o
 comprimento como parâmetros e retornará o valor calculado da
 área.
 Protótipo da função: double calcularAreaVersao1(double, double);
Data: 25/08/2015 
*/
#include <cstdlib>
#include <iostream>
#include <locale>//Para utilizar caracteres especiais na saída
using namespace std;
double calcularAreaVersao1(double , double);
int main()
{
 setlocale(LC_ALL,"Portuguese");//configura caracteres especiais na saída, em Português
 float comprimento, largura, area;
 
 cout << "\n Digite o valor do comprimento e da largura: ";
 cin >> comprimento >> largura;
 area = calcularAreaVersao1(comprimento, largura); 
 cout << "\n O valor da área é de: " << area << endl;
 system("PAUSE");
 return EXIT_SUCCESS;
}
double calcularAreaVersao1(double larguraAux, double comprimentoAux)
{
 float areaAux;
 
 areaAux = (larguraAux * comprimentoAux); 
 return areaAux;
}
-------------------------------------------------------------
Ex02
/*
Ex02:
Objetivo:
 Considere o Ex01 e escreva uma função diferente
 para o cálculo da área de acordo com o seguinte protótipo:
 void calcularAreaVersao2(double, double, double &);
 A função receberá a largura e o comprimento passados por valor e
 receberá um parâmetro area passado por referência, cujo objetivo
 é armazenar o resultado do cálculo da área.
Data: 25/08/2015
*/
#include <cstdlib>
#include <iostream>
#include <locale>//Para configurar caracteres especiais na saída
using namespace std;
void calcularAreaVersao2(double, double, double &);
int main()
{
 setlocale(LC_ALL,"Portuguese");//Configura caracteres especiais, na saída, em Português 
 double comprimento, largura, area;
 cout << "\nDigite o comprimento e a largura: ";
 cin >> comprimento >> largura;
 //area = 0;
 calcularAreaVersao2(comprimento, largura, area);
 cout << "\nO valor da area é: " << area;
 cout << endl;
 system("PAUSE");
 return EXIT_SUCCESS;
}
void calcularAreaVersao2(double comprimentoAux, double larguraAux, double &areaAux)
{
 areaAux = comprimentoAux * larguraAux;
 //return areaAux;
}
--------------------------------------------
Ex03
/*
 Ex03
 Objetivo: Operações básicas para listas lineares sequenciais (vetores), não ordenadas.
 Descrição: Fazer um programa que, na operação de inicialização, deve considerar na 
 main(), um vetor de 40 nós, para guardar valores inteiros distintos,
 e, também, uma variável para controlar a quantidade de valores que serão
 inseridos na lista. Em seguida, deve realizar na main()a leitura 
 de alguns valores, por exemplo: 6 valores, sem que haja repetição,
 a serem inseridos, na lista, através de uma função com o seguinte protótipo:
 
 void inserirSemRepetir(int [], int , int &, int); 
 
 Parâmetros: Vetor de dados, elemento a ser inserido, quantidade de dados
 existentes no vetor e a quantidade máxima alocada para o vetor.
 
 Obs.: A função buscarSequencial deverá ser chamada dentro da inserirSemRepetir
 e consequentemente, implementada no programa, com o seguinte protótipo:
 
 int buscarSequencial(int [], int , int ); 
 
 Em seguida,, deve imprimir os valores inseridos, na lista, através de uma 
 função com o seguinte protótipo:
 
 void percorrer(int v[], int n);
 
 Data: 10/09/2015 
*/
#include <cstdlib>
#include <iostream>
using namespace std;
//parametros: vetor de dados, valor a ser inserido, quantidade e alocação maxima
void inserirSemRepetir(int [], int , int & , int);
int buscarSequencial(int v[], int valor, int n); 
void percorrer(int v[], int n);
int j = 0; //global porque é usada em duas funções
int main( )
{
 int v[40];
 int n = 0;//quantidade
 int valor;
 
 //n = 0;
 
 cout << "\nComposicao do vetor." << endl;
 
 cout << "\nEntre com o valor do dado " << j + 1 << ": ";
 
 cin >> valor; 
 j++;
 
 inserirSemRepetir(v,valor,n,40);
 
 while (j <= 5)
 {
 j++;
 cout << "\nEntre com o valor do dado " << j << ": ";
 cin >> valor;
 inserirSemRepetir(v,valor,n,40);
 } 
 
 percorrer (v,n);
 
 system("PAUSE");
 return EXIT_SUCCESS;
}
void inserirSemRepetir(int v[], int valor, int &n, int tamanho) 
{
 int posicaoAux;
 if (tamanho == n)
 cout<< "ERRO: Lista cheia.";
 else
 
 posicaoAux = buscarSequencial(v,valor,n);
 
 
 if (posicaoAux >=0) 
 {
 v[n] = valor;
 n++;
 cout << "Dado " << valor << " foi inserido, na posicao = " 
 << n - 1 << endl;
}
 else j--;
} 
void percorrer(int v[], int n)
{
 for (int i = 0; i < n; i++)
 cout<< " " << v[i] << endl;
}
int buscarSequencial(int v[], int valor, int n)
{
 
 for (int i = 0; i < n; i++)
 {
 if (v[i] == valor)
 { 
 {
 cout << "Dado " << valor << " ja existe na lista, na posicao = " 
 << i << endl;
 
 }
 return -1;// dado ja existe na lista, retorna um índice impossível
 
 }
 
 } 
}
************************************************
Lista01 
Ex01_Lista01
/*
Data: 
Objetivo: 
 Fazer um programa que carregue um vetor com 5 números randomicos, 
 de semente igual a 30. Em seguida considere o vetor que foi gerado e 
 calcule e imprima a média aritmética dos elementos do vetor.
Autor: XXXXXXXXXXXXXXX
*/
#include <cstdlib>
#include <iostream>
using namespace std;
#define TAMANHO 5
int main(int argc, char *argv[])
{
 
 int inteiro, c, soma = 0;
 int vet[TAMANHO];
 float media;
 
 
 inteiro = rand();
 cout << "\nInteiro aleatorio sem geracao de semente: " << inteiro;
 
 cout << "\n\n";
 
 srand(30);
 inteiro = rand();
 cout << "\nInteiro aleatorio com semente fixa: " << inteiro;
 
 cout << "\n\n";
 
 srand(time(0));
 inteiro = rand();
 cout << "\nInteiro aleatorio com semente baseada no time: " << inteiro;
 
 cout << "\n\n";
 
 inteiro = rand() % 31;
 cout << "\nInteiro de 0 a 30: " << inteiro;
 
 cout << "\n\n";
 
 for (int i = 0; i < TAMANHO; i++)
 {
 vet[i] = (rand() % 31);
 soma = soma + vet[i];
 }
 
 
 
 for (int i = 0; i < TAMANHO; i++)
 {
 cout << "\n" << vet[i]; 
 } 
 
 cout << "\n\n";
 
 media = soma/TAMANHO;
 
 cout << "\nA media dos elementos do vetor eh: " << media; 
 
 cout << "\n\n";
 
 
 system("PAUSE");
 return EXIT_SUCCESS;
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais