• Nenhum resultado encontrado

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DA BAHIA CAMPUS JEQUIÉ CURSO TÉCNICO DE INFORMÁTICA MODALIDADE SUBSEQÜENTE PROF°.: ALEXANDRO DOS SANTOS SILVA

N/A
N/A
Protected

Academic year: 2019

Share "INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DA BAHIA CAMPUS JEQUIÉ CURSO TÉCNICO DE INFORMÁTICA MODALIDADE SUBSEQÜENTE PROF°.: ALEXANDRO DOS SANTOS SILVA"

Copied!
5
0
0

Texto

(1)

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DA BAHIA

CAMPUS JEQUIÉ

CURSO TÉCNICO DE INFORMÁTICA

MODALIDADE SUBSEQÜENTE

PROF°.: ALEXANDRO DOS SANTOS SILVA

LINGUAGEM DE PROGRAMAÇÃO I

LISTA DE EXERCÍCIOS 05 - GABARITO

Instruções:

Para resolução das questões abaixo, será admitido o uso apenas da sintaxe adotada para escrita de programas em

C/C++.

1.

Desenvolver funções com os seguintes propósitos:

a)

Receber um caractere como parâmetro e retornar verdadeiro (1) se for dígito e falso (0), caso contrário;

Resp.: além da função solicitada, na função principal usa-se uma estrutura de repetição para que testes sucessivos

sejam realizados com a função desenvolvida, a partir da entrada de caracteres.

#include <iostream.h>

int ehDigito(char ch) {

// se o caractere for 0, 1, 2, 3, 4, 5, 6, 7, 8 ou 9...

if (ch == '0' || ch == '1' || ch == '2' || ch == '3' || ch == '4' || ch == '5' || ch == '6' || ch == '7' || ch == '8' || ch == '9') { return 1;

}

// caso contrário... else {

return 0; }

}

int main() {

char ch, resp;

do {

cout << "Informe um caractere: ";

cin >> ch; // entrada de caracatere

// verificação de caractere (é dígito?) cout << "DIGITO = " << ehDigito(ch) << "\n";

cout << "\nDeseja continuar (s/n)? ";

cin >> resp; // entrada de resposta SIM/NÃO

cout << "\n";

// se for informado SIM (caractere "s" ou "S")... } while (resp == 's' || resp == 'S');

}

b)

Receber um caractere como parâmetro e retornar verdadeiro (1) se o mesmo for um espaço e falso (0), caso

contrário;

Resp.:

#include <iostream.h>

int ehEspaco(char ch) {

if (ch == ' ') { // se o caractere for espaço... return 1;

}

else { // caso contrário.... return 0;

} }

int main() {

(2)

// testes com a execução da função (2 vezes) cout << "ESPACO ( ) = " << ehEspaco(' ') << "\n"; cout << "ESPACO (a) = " << ehEspaco('a') << "\n";

system("pause"); }

c)

Retornar

o resultado de um número “elevado” a outro (a

mbos recebidos como parâmetros);

Resp.: aqui ressalta-se que a operação de exponenciação (também conhecida como um número

elevado

a outro)

indica a multiplicação da base por ela mesma tantas vezes quanto indicar o expoente. Observe que o resultado

inicial atribuído é 1 (um), já que esse é resultado de potências com expoente 0 (zero). Além disso, potências com

expoentes negativos implicam na inversão do valor da base antes do início das operações sucessivas de

multiplicação. Por fim, em função da complexidade de potências com expoentes reais (ao invés de inteiros), aqui

se optou pela execução de cálculos de potências com expoentes apenas inteiros.

#include <iostream.h>

float potencia(float base, int expoente) {

float result = 1; // resultado da potência

if (expoente < 0) { // se expoente negativo...

base = 1.0 / base; // procede-se com a inversão da base

expoente = -expoente; // procede-se com a troca de sinal do expoente }

// realização de multiplicação em quantidade idêntica ao valor do expoente for (int i=0; i<expoente; i++) {

// multiplicação do último resultado pelo valor da própria base result = result * base;

}

return result; // retorno do resultado da potência }

int main() {

char resp; // indicativo (SIM/NÃO) de encerramento do programa float base; // base de uma potência

int exp; // expoente de uma potência

float r; // resultado do cálculo da potência

do {

// entrada dos valores de base e expoente de uma potência cout << "BASE....: ";

cin >> base;

cout << "EXPOENTE: "; cin >> exp;

r = potencia(base, exp);

// cálculo de potência

cout << "POTENCIA: " << r << "\n";

cout << "\nDeseja continuar (s/n)? ";

cin >> resp; // entrada de resposta SIM/NÃO

cout << "\n";

// se for informado SIM (caractere "s" ou "S")... } while (resp == 's' || resp == 'S');

}

d)

Retornar o resto da divisão inteira de um número por outro (ambos recebidos como parâmetros);

Resp.: além da função solicitada, na função principal usa-se uma estrutura de repetição para que testes sucessivos

sejam realizados com a função desenvolvida, a partir da entrada de números.

#include <iostream.h>

(3)

return a % b; // retorno de resto de divisão }

int main() {

char resp; // indicativo (SIM/NÃO) de encerramento do programa int n1, n2; // números a serem divididos, para obtenção de resto int r; // resultado de resto de divisão

do {

// entrada dos valores dos números a serem divididos cout << "NUMERO 1...: ";

cin >> n1;

cout << "NUMERO 2...: "; cin >> n2;

r = resto(n1, n2);

// cálculo de resto da divisão entre os dois números cout << "RESTO DIVISAO: " << r << "\n";

cout << "\nDeseja continuar (s/n)? ";

cin >> resp; // entrada de resposta SIM/NÃO

cout << "\n";

// se for informado SIM (caractere "s" ou "S")... } while (resp == 's' || resp == 'S');

}

e)

Receber um caractere como parâmetro e retornar 1 caso seja uma vogal e 0 em caso contrário.

Resp.: além da função solicitada, na função principal usa-se uma estrutura de repetição para que testes sucessivos

sejam realizados com a função desenvolvida, a partir da entrada de caracteres.

#include <iostream.h>

int ehVogal(char ch) {

// se o caractere for uma vogal...

if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') { return 1;

}

// caso contrário... else {

return 0; }

}

int main() {

char ch, resp;

do {

cout << "Informe um caractere: ";

cin >> ch; // entrada de caracatere

// verificação de caractere (é vogal?) cout << "VOGAL = " << ehVogal(ch) << "\n";

cout << "\nDeseja continuar (s/n)? ";

cin >> resp; // entrada de resposta SIM/NÃO

cout << "\n";

// se for informado SIM (caractere "s" ou "S")... } while (resp == 's' || resp == 'S');

}

Observação: elabore uma função para cada item.

(4)

Resp.:

#include <iostream.h>

int modulo(int n) {

if (n > 0) { // se o número for positivo... return n; // retorno o próprio número }

else { // caso contrário...

return -n; // troca-se o sinal e retorno o número }

}

int main() {

char resp; // indicativo (SIM/NÃO) de encerramento do programa int n; // número a partir do qual se obterá o módulo

int r; // módulo do número

do {

// entrada do valor do número cout << "NUMERO: ";

cin >> n;

r = modulo(n);

cout << "MODULO: " << r << "\n";

cout << "\nDeseja continuar (s/n)? ";

cin >> resp; // entrada de resposta SIM/NÃO

cout << "\n";

// se for informado SIM (caractere "s" ou "S")... } while (resp == 's' || resp == 'S');

}

3.

Desenvolver uma função que receba como parâmetros valores (inteiros) de hora, minutos e segundos e retorne o valor

correspondente em segundos.

Resp.:

#include <iostream.h>

int segundos(int hr, int mn, int sg) {

// conversão de horário no formato hh:mm:ss para segundos return hr * 60 * 60 + mn * 60 + sg;

}

int main() {

char resp; // indicativo (SIM/NÃO) de encerramento do programa int hr, mn, sg; // horário no formato hh:mm:ss

int r; // resultado da conversão do horário para segundos

do {

// entrada do horário

cout << "HORARIO (HH:MM:SS): "; cin >> hr >> mn >> sg;

r = segundos(hr, mn, sg);

cout << "TOTAL DE SEGUNDOS.: " << r << "\n";

cout << "\nDeseja continuar (s/n)? ";

cin >> resp; // entrada de resposta SIM/NÃO

cout << "\n";

// se for informado SIM (caractere "s" ou "S")... } while (resp == 's' || resp == 'S');

(5)

4.

Desenvolver uma função que retorne o reverso de um número inteiro, recebido como parâmetro. O reverso do número

962, por exemplo, é 269.

Resp.: o algoritmo proposto aqui inclui operações de módulo (resto de divisão) do número em questão por 10 (dez)

para obtenção do enésimo dígito seguido da divisão inteiro do número por 10 (dez) para obtenção do próximo dígito;

essa sequência de operações é executada enquanto o último número apurado em função da divisão por 10 for maior

que 0 (zero). Após a extração dos dígitos, procede-se com a multiplicação dos mesmos por potências de 10 (1, 10,

100, 1000, 10000, etc.) para obtenção do reverso.

#include <iostream.h>

int reverso(int n) {

int result = 0; // resultado referente ao reverso do número n int digitos[1000]; // dígitos do número n (vetor)

int qtd = 0; // quantidade de dígitos do número n

int fator = 1; // fator de multiplicação para obtenção de reverso

for (int i=0; n>0; i++) { // identificação de dígitos do número n

int dig = n % 10; // cálculo do enésimo dígito (da direita à esquerda) digitos[i] = dig; // armazenamento do dígito no vetor

qtd++; // incremento da quantidade de dígitos do número n n = n / 10; // divisão do número n por 10 para obtenção do dígito seguinte }

// multiplicação dos dígitos por potências de 10 para obtenção do reverso for (int i = qtd - 1; i>=0; i--) {

result = result + digitos[i] * fator;

fator = fator * 10; // cálcula do próxima potência de 10 }

return result; }

int main() {

char resp; // indicativo (SIM/NÃO) de encerramento do programa int num; // número a partir do qual se obterá o inverso int rev; // reverso do número informado

do {

// entrada do valor do número cout << "NUMERO.: ";

cin >> num;

rev = reverso(num);

cout << "REVERSO: " << rev << "\n";

cout << "\nDeseja continuar (s/n)? ";

cin >> resp; // entrada de resposta SIM/NÃO

cout << "\n";

// se for informado SIM (caractere "s" ou "S")... } while (resp == 's' || resp == 'S');

Referências

Documentos relacionados

Foram analisados a relação peso-comprimento e o fator de condição de Brycon opalinus, em três rios do Parque Estadual da Serra do Mar-Núcleo Santa Virgínia, Estado de São

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

Dessa forma, diante das questões apontadas no segundo capítulo, com os entraves enfrentados pela Gerência de Pós-compra da UFJF, como a falta de aplicação de

Dentre as principais conclusões tiradas deste trabalho, destacam-se: a seqüência de mobilidade obtida para os metais pesados estudados: Mn2+>Zn2+>Cd2+>Cu2+>Pb2+>Cr3+; apesar dos

Resp.: para identificação de tempo de permanência, observa-se aqui que os horários de entrada e saída são convertidos para totais em minutos, após o qual são subtraídos, com

Se o código fornecido for 1 (um), prossegue-se com a entrada dos dados da próxima reserva e a tentativa de efetivação da mesma, da forma como proposto na questão anterior;

Observação: sobre a quantidade de funcionários, para os quais serão informados os horários de entrada e saída (formato minutos e horas), será solicitado a

Readapte o programa da questão anterior de modo que haja uma validação sobre a senha digitada pelo jogador 1 (caso seja informado, pelo mesmo, algum valor que não esteja entre 0 e