1 QUESTÃOClique no número da questão para visualizá-la
Enunciado:
QUESTÃO 1
Suponha que você faz parte de uma empresa de desenvolvimento de software e um código que está sendo implementado pode ter um atraso em função de um programador ter sido afastado por uns dias devido a um atestado obtido por motivo de doença. O código está quase pronto, mas falta parte da implementação para que se obtenha o software completo e funcional como foi solicitado por um cliente. Você então é indicado como programador responsável por completar o código, mas precisa fazê-lo sozinho, pois o programador de atestado está sem contato durante este período por orientações da empresa em função de seu estado.
Sua tarefa é: Observar o que o programador havia conseguido implementar e em seguida completar o código restante para que possa compilar e executar sem problemas, atendendo os requisitos indicados abaixo do código.
#include
#include
#include
typedef struct {
int cod;
char produto[30];
float valor;
int quantidade;
} dados;
int main (){
int i, contador;
char opcao;
dados estoque[10];
setlocale(LC_ALL, "");
for (i=0; i<10; i++){
estoque[i].cod = i+1;
strcpy (estoque[i].produto, "NULL");
____________________________ // 1. inicializar campos faltantes.
____________________________
}
while (contador < 10) {
printf ("Gostaria de adicionar dados (s/n)? ");
scanf (" %c", &opcao);
if (opcao == 'N' || opcao == 'n') {
contador = 10;
}
else if (opcao == 'S' || opcao == 's') {
printf ("Digite a descrição do produto: ");
scanf ("%s", estoque[contador].produto);
printf ("Digite a quantidade do produto em estoque: ");
scanf (" %d", &estoque[contador].quantidade);
printf ("Digite o valor do produto: ");
scanf (" %f", &estoque[contador].valor);
contador++;
}
else
printf ("Opção incorreta!\n");
}
printf ("Relatório de Estoque Atual\n\n");
for (i=0; i
_____________________________ // 2. Exibição do estoque conforme solicitado.
_____________________________
_____________________________
_____________________________
_____________________________
_____________________________
}
}
Requisitos a serem atendidos:
1. Alguns campos do registro foram inicializado, mas outros não. Complete a inicialização dos dados do vetor de registros.
2. A exibição do estoque cadastrado ao final da solicitação de entrada de dados deve ser realizada, mas apenas os registros que contenham quantidade maior que zero devem ser exibidos.
Obs.: Adições de funcionalidades como ajuste de idioma são opcionais e não agregam nota, mas outras como jogar indefinidas vezes até que se decida parar de jogar afetam os requisitos originais e não devem ser adicionados ao algoritmo
Soluções para a tarefa
Para completar o código, primeiro devemos inicializar os campos valor e quantidade que não foram inicializados. Feito isso, na segunda etapa, devemos ajustar o comando for para imprimir o relatório dos produtos que possuem a variável valor maior do que zero.
ETAPA 1 - Inicialização das Variáveis
A inicialização é feita quando atribuímos às variáveis um valor neutro para a situação. Sendo assim, para a variável valor, que é do tipo float, vamos inicializar com o valor 0.0, que indica zero reais.
Já a variável quantidade é do tipo int e para o contexto, podemos inicializá-la com o valor 0. Que indica ausência do produto.
Considerando que pelo enunciado a linguagem de programação utilizada é C, vamos completar a inicialização com a sintaxe adequada, lembrando que as variáveis que vamos inicializar fazem parte da struct estoque. Com isso, ficará da seguinte forma:
for (i=0; i<10; i++){
estoque[i].cod = i+1;
strcpy (estoque[i].produto, "NULL");
estoque[i].valor = 0.0;
estoque[i].quantidade = 0;
}
Obs: Não esqueça do ponto e vírgula no final de cada comando.
ETAPA 2 - Impressão do Relatório
Ao final da leitura de dados, temos que imprimir na tela o relatório dos produtos que possuem uma quantidade positiva, ou seja, onde a variável quantidade é maior do que zero.
O enunciado não especifica uma forma visual de impressão do relatório, portanto vou fazer a impressão do formato que eu achar melhor, embora caso deseje outro formato possa realizá-lo desde que satisfaça as condições solicitadas.
Primeiramente, a estrutura de repetição for deve ser completada. Como podemos ver em todo o código, teremos no máximo 10 produtos, portanto podemos realizar o for com as condições de iteração de zero a nove, resultando em: "for( i = 0; i < 10; i++)".
Dentro da estrutura, antes de verificar a quantidade, podemos verificar a existência dos próximos produtos. Repare no trecho de código que pergunta ao usuário se ele deseja adicionar mais produtos ou não. Independente do valor do contador, se o usuário responder que não, o contador avança diretamente para dez quebrando a estrutura. Ou seja, caso nosso produto da vez tenha sua descrição como "NULL" (valor que esta variável foi inicializada), isso significa que não precisamos continuar pois não haverão mais produtos. Desta forma, vamos usar o if para checar este fato, e caso seja verdade vamos encerrar o loop com o comando break. Resultando em:
if (estoque[i].produto == "NULL") {
break;
}
Caso o produto exista, o próximo passo é verificar a quantidade sendo maior do que zero. Utilizaremos a mesma estrutura, porém, caso a quantidade seja zero, não queremos que o loop se acabe, apenas queremos passar para o próximo produto. Portanto, utilizaremos o comando continue. Resultando em:
if (estoque[i].quantidade < 0){
continue;
}
Por fim, passando por ambas estruturas condicionais, sabemos que podemos imprimir o relatório na tela. Para isso, apenas devemos lembrar qual código de percentagem utilizar no comando printf para cada tipo diferente de variável.
- cod: É do tipo int, logo utilizaremos %d.
- produto: Vetor de char, utilizaremos %s.
- valor: É do tipo float. Além disso, como é um preço, queremos 2 casas decimais depois da vírgula, logo utilizaremos %.2f.
- quantidade: É do tipo int. Utilizaremos %d.
Considerando todos os cuidados tomados, a segunda etapa, ou seja, exibição do relatório, pode ficar da seguinte forma:
printf ("Relatório de Estoque Atual\n\n");
for (i=0; i < 10; i++) {
if (estoque[i].produto == "NULL") {
break;
}
if (estoque[i].quantidade < 0){
continue;
}
printf("Produto %d \n Descrição: %s \n Valor: %.2f \n Quantidade: %d \n\n", estoque[i].cod, estoque[i].produto, estoque[i].valor, estoque[i].quantidade);
}
Saiba mais sobre linguagem de programação C em:
https://brainly.com.br/tarefa/28035640