Prezados,
Recebi uma atividade na faculdade que pedia para analisar um código e substituir algumas letras por comandos ou funções adequadas:
“O programa abaixo está utilizando variáveis do tipo string. Sabemos que na linguagem C a string é tratada como um vetor e possui funções específicas de manipulação. Observe que esse programa possui algumas letras A,B,C,D,E,F,G em destaque. Essas letras devem ser substituídas por comandos ou funções. Agora execute esse programa e escreva os comandos/funções adequados, nas linhas tracejadas.”
Abaixo o código dado:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
int tentativa;
char nome[20],senha[15],saudacao[25],sexo;
printf("\n Qual o seu nome?"); A (nome);
printf("\n Sexo M ou F ? ");
scanf("%c",&sexo);
if ((sexo=='M') || (sexo=='m'))
{
B (saudacao,"Sr. ");
C (saudacao,nome);
}
else
{
B (saudacao,"Sra. ");
C (saudacao,nome);
}
tentativa=3;
while (tentativa > 0)
{
printf("\n %s Qual a senha? : ", saudacao);
D (senha);
if ( E (senha,"provaav1") == 0)
{
tentativa = 0;
printf("%s Senha Correta \n Voce digitou a senha \n",saudacao);
for(l=0; l < F (senha); l++)
printf(" %c ", G );
}
else
tentativa --;
}
system("pause");
}
Usei o Code::Blocks para ir testando as mudanças que ia realizando no código.
Depois de ler a matéria dada pelo professor e pesquisar, cheguei a seguinte conclusão:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
int tentativa, i;
char nome[20],senha[15],saudacao[25],sexo;
printf("\n Qual o seu nome? ");
fflush(stdin);
gets(nome);
printf("\n Sexo M ou F ? ");
scanf("%c",&sexo);
if ((sexo=='M') || (sexo=='m'))
{
strcpy(saudacao,"Sr. ");
strcat(saudacao,nome);
}
else
{
strcpy(saudacao,"Sra. ");
strcat(saudacao,nome);
}
tentativa=3;
while (tentativa > 0)
{
printf("\n %s Qual a senha? : ", saudacao);
fflush(stdin);
gets(senha);
if ( strcmp(senha,"provaav1") == 0)
{
tentativa = 0;
printf(" %s Senha Correta \n Voce digitou a senha \n",saudacao);
for(i=0; i < strlen(senha); i++)
printf(" %c ", senha[i]);
}
else
tentativa --;
}
system("pause");
}
Portanto entendi que os comandos e as funções seriam:
A gets
B strcpy
C strcat
D gets
E strcmp
F strlen
G senha[i]
Dúvida: Existe outra forma de analisar esse código?
Desde já agradeço a atenção.