É o seguinte não to conseguindo fazer funcionar do modo que deveria ser,esse problema esta na função caixa,o que deveria acontecer é você digita o código do produto e ele compara se é igual ao código que tu teria cadastrado anteriormente,e printa ele depois,só que desse modo que eu fiz não ta funcionando e eu não consigo pensar em outro modo de realizar essa tarefa.Agradeço a atenção.
o exercício em si e o código a baixo.
/*Questão 2. Escreva um programa que simule uma caixa registradora: o operador digita o código do produto e a quantidade; se digitar "+",
novo conjunto de dados (código + quantidade) deve ser lido; se digitar "=", o total deve ser fornecido.
Os produtos disponíveis, bem como seus códigos e preços, são apresentados na tabela abaixo:
Código Descrição Preço
001 Desodorante 56,00
023 Pasta Kolynos 89,00
108 Sabonete 40,00
120 Escova dentes 90,00
OBS: Monte uma estrutura para representar esta tabela.
Crie um menu de opções as quais permitam melhor interação junto ao usuário.*/
#include <cstdio>
#include <ctype.h>
#include <iostream> // cout, cin
#include <stdlib.h> // rand, atof
#include <stdio.h> // printf, scanf,
#include <conio.h> // getch printf
#include <string.h> // strlen, strcat
#include <windows.h> // COORD
#include <cmath> // pow
const int tam = 3;
int count=0,op=0,m=1,z=0;
char p[2];
struct tab
{
int codigo;
char descricao[30];
float preco;
};
struct tab tabela[tam];
void monta_menu(void){
system("cls");
printf("\tMenu\n\n\n");
printf("\t0-Sair\n");
printf("\t1-Cadastrar Produtos\n");
printf("\t2-Listar Produtos Cadastrados\n");
printf("\t3-Caixa Registradora\n");
printf("\t\tEscolha a opcao:");
scanf("%d",&op);
}
void cadastrotab(void){
for(count = 0 ; count < tam ; count++)
{
printf("\nCodigo do Produto: ");
scanf("%d",&tabela[count].codigo);
printf("Descricao do Produto: ");
scanf("%s",tabela[count].descricao);
printf("Preco do Produto: ");
scanf("%f", &tabela[count].preco);
}
}
void listar(){
for(int i=0;i<tam;i++){
printf("\n\t%d\t\t%s\t\t%5.2f ",tabela.codigo,tabela.descricao, tabela.preco);
}
}
//------------------------------------------------------------------------------------------------------------------------------
void caixa(){
for(int i = 0; i < tam;i++ )
{
printf("Digite o Codigo do Produto: ");
scanf("%d",&z);
if(tabela.codigo == z){
printf("\n\tCodigo\t\tDescricao\tPreco");
printf("\n\t%d\t\t%s\t\t%5.2f ",tabela.codigo,tabela.descricao,tabela.preco);
printf("\n\n\nDigite + para adicionar produtos ou = para visualizar o total: ");
scanf("%s",&p);
if(p == "+"){
i++;
}
else {
system ("cls");
for(int i=0;i< tam;i++){
printf("\n\tCodigo\t\tDescricao\tPreco");
printf("\n\t%d\t\t%s\t\t%5.2f ",tabela.codigo,tabela.descricao, tabela.preco);
//printf("\n\t%d\t\t%s\t\t%5.2f ",tabela.codigo,tabela.descricao,tabela.preco);
}
break;
}
}
else{
printf("\t\tNenhum Produto corresponde a esse Codigo\n\n");
}
}
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
int main (){
monta_menu();
while(m){
switch(op){
case 0:
system ("cls");
m = 0;
break;
case 1:
system ("cls");
cadastrotab();
getch();
monta_menu();
break;
case 2:
system ("cls");
printf("\n\n\t\t\tLISTA DE PRODUTOS\n\n");
printf("\n\tCodigo\t\tDescricao\tPreco");
listar();
getch();
monta_menu();
break;
case 3:
system ("cls");
caixa();
getch();
monta_menu();
break;
default:
monta_menu();
}
}
}