Desenvolver software é uma tarefa interessante, mas mentalmente desgastante, pois para cada novo problema, um caminho totalmente diverso pode ser trilhado para se chegar a uma solução computacional funcional e que atenda às necessidades solicitadas. Alguns conceitos são simples como a entrada de dados via teclado, ou a saída via monitor, mas existem outras estruturas que podem ser elaboradas com maior complexidade lógica que exigem que o aluno esteja mentalmente bem para que possa desenvolver algo adequado e otimizado. Para esta atividade, observe o que é solicitado a seguir: Foi solicitado a você que elabore um código em linguagem C que simule uma tranca de abertura de cofre onde os dígitos de seu RA (registro acadêmico de 9 ou 10 dígitos), de forma que sejam formados pares de dezenas para simular o número correto de cada etapa da tranca, ou seja, num RA fictício 19236798-5, converta para 01-92-36-79-85 para RAs com 9 dígitos ou sem acrescentar o 0 no caso de RAs com 10 dígitos. Estes números devem ser os segredos que vão liberando a tranca etapa por etapa, sendo que a cada erro, reinicia-se a tranca e o usuário necessíta reiniciar a inserção dos números novamente, desde a primeira etapa, como no mecanismo de abertura de cofres mesmo. Em caso do usuário não acertar as 5 dezenas, o processo é repetido infinitamente, como uma tranca normal, mas caso o usuário acerte os cinco números em sequência, uma mensagem deve ser exibida informando que a porta foi aberta.
Soluções para a tarefa
O algoritmo pode ser desenvolvido da seguinte forma:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define FALSE 0
#define TRUE 1
char proxNaoBranco()
{
char c = ' ';
while (c == ' ' || c == '\t' || c == '\n') c = getchar();
if (c == '.') exit(EXIT_SUCCESS);
return c;
}
int main(void)
{
char c, s1 = 'y', s2 = 'z', c1, c2;
int travado = TRUE;
while (1)
{
c = ' ';
if (travado)
{
while (c != '*') c = proxNaoBranco();
c1 = proxNaoBranco();
c2 = proxNaoBranco();
travado = !(s1 == c1 && s2 == c2);
if (travado) printf("\a\nIncorreto\n\n");
else printf("\a\nDestravado\n\n");
}
else
{
while (c != '#' && c != ':') c = proxNaoBranco();
if (c == '#')
{
c1 = proxNaoBranco();
c2 = proxNaoBranco();
if (isalpha(c1) && isalpha(c2))
{
s1 = c1;
s2 = c2;
printf("\a\nSenha alterada\n\n");
}
else printf("\a\nErro\n\n");
}
else
{
travado = TRUE;
printf("\a\nTravado\n\n");
}
Algoritmo é uma sequência finita de instruções definidas e sem ambiguidade, onde cada uma deve ser executada mecanicamente ou eletronicamente considerando um intervalo finito de tempo. São muito utilizados na programação.
Bons estudos!
Resposta:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
int main(){
setlocale(LC_ALL,"Portuguese");
int senha = 1;
inicio:
system ("cls");
printf ("Olá, bem vindo ao cofre! Para que o cofre seja aberto é necessário inserir a senha composta por 5 etapas. A cada etapa deve ser inserido uma senha de dois dígitos, assim o cofre é aberto. /n");
printf ("Digite a primeira senha!");
scanf ("%2d", &senha);
if (senha == 00)
{
printf ("Digite a segunda senha!");
scanf ("%2d", &senha);
if (senha == 00)
{
printf ("Digite a terceira senha!");
scanf ("%2d", &senha);
if (senha == 87)
{
printf ("Digite a quarta senha!");
scanf ("%2d", &senha);
if (senha == 90)
{
printf ("Digite a quinta senha!");
scanf ("%2d", &senha);
if (senha == 05)
{
printf ("Senha correta! Cofre aberto...");
}
else
{
printf ("Senha incorreta. Tente novamente.");
system ("pause");
goto inicio;
}
}
else
{
printf ("Senha incorreta. Tente novamente.");
system ("pause");
goto inicio;
}
}
else
{
printf ("Senha incorreta. Tente novamente.");
system ("pause");
goto inicio;
}
}
else
{
printf ("Senha incorreta. Tente novamente.");
system ("pause");
goto inicio;
}
}
else
{
printf ("Senha incorreta. Tente novamente.");
system ("pause");
goto inicio;
}
return (0);
}
Explicação: