Proteção de cheques. Os computadores são constantemente usados nos sistemas de escrita de cheque, como aplicações de folha de pagamento e contas a pagar. Circulam muitas histórias sobre cheques de pagamento semanal impressos (por engano) com valores superiores a US$ 1 milhão. Valores estranhos são impressos por sistemas computadorizados de escrita de cheque por erro humano e/ou falha de máquina. Os projetistas de sistemas, naturalmente, fazem todos os esforços para montar controles em seus sistemas que impeçam que cheques com valores errados sejam emitidos. Outro problema sério é a alteração intencional de um valor
do cheque por alguém com intenções de sacá-lo fraudulentamente. Para impedir que um valor monetário seja alterado, a maioria dos sistemas computadorizados de escrita de cheque emprega uma técnica chamada proteção de cheque. Os cheques planejados para impressão por computador contêm um número fixo de espaços, em que o computador deve imprimir um valor. Suponha que um cheque de pagamento contenha nove espaços em branco nos quais
o computador deverá imprimir o valor de um cheque semanal. Se o valor for grande, então os nove espaços serão preenchidos — por exemplo:
Caracteres e strings em C 293
11.230,60 (valor do cheque)
123456789 (números de posição)
Por outro lado, se o valor for menor do que mil, então vários espaços ficarão em branco — por exemplo,
99,87
123456789
contém quatro espaços em branco. Um cheque impresso com espaços em branco facilita o trabalho de alguém que queira alterar seu valor. Para impedir que um cheque seja alterado, muitos sistemas de escrita de cheque inserem asteriscos iniciais para proteger o valor, da seguinte forma:
****99,87
123456789
Escreva um programa que receba um valor monetário a ser impresso em um cheque e depois imprima o valor no formato de proteção de cheque com os asteriscos iniciais, se necessário. Suponha que nove espaços estejam disponíveis para a impressão de um valor.
Passo 1
Vamos escrever um programa que faça o seguinte:
Solicita que o usuário insira o valor em dólares a ser impresso em um cheque.
Imprime o valor fornecido em formato protegido por cheque com asteriscos à esquerda (conforme necessário com base no formato de nove espaços fornecido).
Vamos escrever um programa que faça o seguinte:
Solicita que o usuário insira o valor em dólares a ser impresso em um cheque.
Imprime o valor fornecido em formato protegido por cheque com asteriscos à esquerda (conforme necessário com base no formato de nove espaços fornecido).
Agora, declare as seguintes variáveis.
double amount; // Para armazenar o valor em dólares
double base = 100000.00; // Para verificar o formato de nove espaços
Passo 2
Em seguida, solicite ao usuário que insira o valor em dólares.
printf("Digite o valor em reais a ser impresso no cheque: ");
scanf("%lf", &quantidade);
Em seguida, determine o número de espaços à esquerda na quantidade fornecida. Isso será usado para imprimir os asteriscos necessários.
int count = 0;
while(amount
base /= 10;
count++;
}
Passo 3
Por fim, exibiremos o valor em formato protegido por verificação, imprimindo o asterisco inicial junto com o valor em dólar. Em seguida, indicaremos que o programa foi finalizado com sucesso, colocando o valor de retorno da função principal.
printf("Check-protected amount: ");
for(int i = 0; i count; i++){
printf("*");
}
printf( "%.2f\n\n", amount);
return 0;
Assim, o código completo do programa é escrito da seguinte forma
#include stdio.h>
int main(){
double amount;
double base = 100000.00;
printf("Enter the dollar amount to be printed on check: " );
scanf("%lf", &amount );
int count = 0;
while(amount
base /= 10;
count++;
}
printf("Check-protected amount: ");
for(int i = 0; i count; i++){
printf("*");
}
printf( "%.2f\n\n", amount);
return 0;
}
Resposta
#include stdio.h>
int main(){
double amount;
double base = 100000.00;
printf("Enter the dollar amount to be printed on check: " );
scanf("%lf", &amount );
int count = 0;
while(amount
base /= 10;
count++;
}
printf("Check-protected amount: ");
for(int i = 0; i count; i++){
printf("*");
}
printf( "%.2f\n\n", amount);
return 0;
}