Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Funções (2) Aula nº 12 arquivos de cabeçalho rand ( ) * * * - 29 Arquivos de Cabeçalho Cada biblioteca padrão de C++ tem um arquivo de cabeçalho correspondente que contém todos os protótipos das funções que ela contém; O programador pode criar arquivos de cabeçalho e incluí-los no programa: #include “maximo.h” * * * - 29 Implementar a função raizQuadrada. Esta função deve: Receber um número do tipo float como parâmetro. Retornar a raiz quadrada do número recebido, de tal maneira que esta raiz, quando elevada ao quadrado, apresente um erro máximo de 0.01% em relação ao valor do parâmetro. Escreva um programa para testar a função. Lembrando o exercício anterior ... * * * - 29 Arquivo: raizQuadrada.h float raizQuadrada(float z) { float r=0; do{ r +=0.0001; }while(z-r*r>0.0001); return r; } // fim da função raizQuadrada * * * - 29 #include <iostream> using namespace std; #include “raizQuadrada.h" int main() { float x; cout << "\nDigite um numero: "; cin >> x; cout << "\n\nA raiz quadrada desse numero eh: " << raizQuadrada(x) << endl<<endl; } // fim de main Arquivo: chama_raizQ.cpp * * * - 29 Geração de números aleatórios Função rand ( ) Gera um inteiro entre 0 e RAND_MAX (RAND_MAX = 2.147.483.647) int i = rand ( ) ; Biblioteca <cstdlib> * * * - 29 Ex.: Simulando lançamentos de dados O número gerado por rand( ) está entre 0 e 65535; Para forçar valores entre 1 e 6 fazemos (1 + rand ( ) % 6) (1 + rand ( ) % 6) O resto da divisão de qualquer número por 6 vai dar um resto de 0 a 5 Somado com 1 vai dar um número de 1 a 6 * * * - 29 #include <iostream> using namespace std; #include <iomanip> #include <cstdlib> // para usar rand ( ) Ex.: Simulando lançamentos de dados * * * - 29 int main() { for ( int i = 1; i <= 4; i++ ) { for (int j = 1; j<=5; j++) cout<<setw( 10 )<<( 1 + rand() % 6 ); cout << endl; } return 0; } * * * - 29 for ( int i = 1; i <= 4; i++ ) { for (int j = 1; j<=5; j++) cout<<setw( 10 )<<( 1 + rand() % 6 ); cout << endl; } i=1 i=2 i=3 i=4 Exemplo de execução: * * * - 29 rand ( ) Se rand ( ) gera números aleatórios Cada número gerado deve ter a mesma probabilidade. mas toda execução gera os mesmos números !! rand gera números pseudo-aleatórios ! * * * - 29 srand ( ) Argumento unsigned int – semente Inteiro não negativo unsigned int semente; cin >> semente; srand (semente); for (int i = 1; i <= 10; i++) { for (int j = 1; j<=5; j++) cout<<setw(10)<<(1+rand ( ) % 6); inteiro sem sinal acrescentado * * * - 29 int main() { unsigned semente; cout << “Forneça a semente”; cin >> semente; srand (semente); for ( int i = 1; i <= 4; i++ ) { for (int j = 1; j<=5; j++) cout<<setw( 10 )<<( 1 + rand() % 6 ); cout << endl; } return 0; } * * * - 29 int main() { unsigned semente; cout << “Forneça a semente”; cin >> semente; srand (semente); for ( int i = 1; i <= 4; i++ ) { for (int j = 1; j<=5; j++) cout<<setw( 10 )<<( 1 + rand() % 6 ); cout << endl; } return 0; } Mas para a mesma semente, os números gerados ainda serão os mesmos !! Vamos usar a hora do computador como semente !! * * * - 29 Função time ( ) time (0) retorna a hora de calendário (em segundos); convertido em um unsigned protótipo em <ctime> vamos usar time(0) como semente: srand ( time (0) ); * * * - 29 #include <iostream> using namespace std; #include <iomanip>// para usar setw ( ) #include <ctime>// para usar time ( ) #include <cstdlib> // para usar rand ( ) int main(){ srand ( time(0) ); for ( int i = 1; i <= 4; i++ ) { for (int j = 1; j<=5; j++) cout<<setw( 10 )<<( 1 + rand() % 6 ); cout << endl; } return 0; } * * * - 29 Exemplo - Jogo Um jogador joga 2 dados. A soma da face superior dos dados é calculada. se soma = 7 ou 11 –> vence na 1ª jogada; se soma = 2, 3 ou 12 –> perde na 1ª jogada; se soma = 4, 5, 6, 8, 9 ou 10, esta soma torna-se o ‘ponto’ do jogador. Para vencer, o jogador deve tirar outra soma igual ao seu ‘ponto’. se tirar 7 antes de fazer seu ponto, ele perde o jogo. * * * - 29 1ª jogada soma soma == 7 ou 11 vence perde soma == 2, 3 ou 12 ponto=soma jogada soma soma == ponto soma == 7 perde vence V F V F F F V V * * * - 29 Exemplo de Execução 1 Jogador fez 4 + 6 = 10 Ponto: 10 Jogador fez 1 + 1 = 2 Jogador fez 6 + 4 = 10 Jogador venceu !! * * * - 29 Exemplo de Execução 2 Jogador fez 2 + 5 = 7 Jogador venceu !! Exemplo de Execução 3 Jogador fez 2 + 2 = 4 Ponto: 4 Jogador fez 2 + 5 = 7 Jogador perdeu !! * * * - 29 Exemplo de Execução 4 Jogador fez 1 + 3 = 4 Ponto: 4 Jogador fez 1 + 2 = 3 Jogador fez 5 + 5 = 10 Jogador fez 1 + 4 = 5 Jogador fez 3 + 2 = 5 Jogador fez 4 + 5 = 9 Jogador fez 3 + 4 = 7 Jogador perdeu !! * * * - 29 Exemplos de Execução 5 Jogador fez 4 + 6 = 10 Pontos: 10 Jogador fez 1 + 1 = 2 Jogador fez 6 + 4 = 10 Jogador venceu !! * * * - 29 #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int jogaDado(); int main(){ srand (time(0)); int d1, d2, ponto; d1 = jogaDado(); d2 = jogaDado(); * * * - 29 cout << "Jogador fez " << d1 << " + " << d2 << " = " << d1+d2 << endl; switch (d1 + d2){ //tirando 7 ou 11 – vence na 1ª jogada case 7: case 11: cout << "\nJogador venceu"<< endl; break; * * * - 29 //tirando 2, 3 ou 12 – perde na 1ª jogada case 2: case 3: case 12: cout << "\nJogador perdeu"<< endl; break; * * * - 29 default: ponto = d1+d2; cout<<"\nPonto = "<<ponto<<endl; //jogar dados até tirar o ponto (vence) ou 7 (perde) while(1) { d1 = jogaDado(); d2 = jogaDado(); cout << "Jogador fez " << d1 << "+" <<d2<<" = "<<d1+d2<<endl; * * * - 29 if (d1+d2 == ponto) { cout << "\nJogador venceu"<< endl; break; //sai do while } if (d1+d2 == 7) { cout << "\nJogador perdeu"<< endl; break; //sai do while } } // fim do while break; //sai do switch }// fim do switch return 0; } // fim de main * * * - 29 default: ponto = d1+d2; cout<<"\nPonto = "<<ponto<<endl; do { d1 = jogaDado(); d2 = jogaDado(); cout<<"Jogador fez "<<d1<<“+”<<d2<<“=” <<d1+d2<<endl; } while ( (d1+d2 != ponto) && (d1+d2 != 7) ) if (d1+d2 == ponto) cout << "\nJogador venceu"<< endl; if (d1+d2 == 7) cout << "\nJogador perdeu"<< endl; break; }// fim do switch Outra opção para o default: * * * - 29 // Definição da função jogaDado( ) int jogaDado( ){ return ( 1 + rand() % 6 ); }