Ir para conteúdo
Fórum Script Brasil
  • 0

STRUCT EM C


eduardodiniz19

Pergunta

Galera to tentando fazer uma questão que pede para cadastrar produtos e depois alterar os preços, na hora de altera os preços ,eu escolho p alterar o preço do primeiro item e ele altera o do segundo e vice-versa.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define TAM 2

struct produto{
char descricao[31];
int codigo;
int qnt_estoque;
float valor_uni;
};

void preencher( struct produto v[],int tam){
int i;
for (i=;i<TAM;i++){

printf("DIGITE A DESCRICAO DO PRODUTO : ");
fflush(stdin);
gets(v[i].descricao);
fflush(stdin);
printf("DIGITE O VALOR UNITARIO DO PRODUTO %s: ",v[i].descricao);
scanf("%f",&v[i].valor_uni);
fflush(stdin);
printf("DIGITE A QUATIDADE EM ESTOQUE DO PRODUTO %s: ",v[i].descricao);
scanf("%d",&v[i].qnt_estoque);
printf("\n PRODUTO CADASTRADO COM SUCESSO\n");
}
}

void alterar( struct produto v[],int tam){
int i, num;
for (i=;i<TAM;i++) // Laço para listar os produtos cadastrados
{
    printf("CODIGO: %d  / DESCRICAO: %s  / preço: %7.2f  / QUANTIDADE: %d\n", i+1,v[i].descricao,v[i].valor_uni,v[i].qnt_estoque); 
}
printf("\n DIGITE O CODIGO DO PRODUTO PARA ALTERAR O preço: ");
scanf("%d",&num);
printf("\n\n");
printf("DIGITE O NOVO preço: ");
scanf("%f",&v[num].valor_uni); 
printf("\nPRECO ALTERADO COM SUCESSO!");
getch();
system("cls");
} 

void imprimir(struct produto v[],int tam){
	int i;
	system("cls");
for (i=;i<TAM;i++){
		printf("CODIGO: %d  / DESCRICAO: %s  / preço: %7.2f  / QUANTIDADE: %d\n", i+1,v[i].descricao,v[i].valor_uni,v[i].qnt_estoque); 

}

	}

int main(){
	struct produto vetor[TAM];
	int i;
	preencher(vetor,TAM);
	alterar(vetor,TAM);

	imprimir(vetor,TAM);

}

 

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Isso é normal, lembre que se escolher alterar o elemento 1 esse será a primeira posição pois a primeira é 0 e a segunda é 1. Se quando chegar no scanf e você colocar a 1 querendo dizer que isso é a primeira posição do seu vetor, você deveria ter algo como scanf("%d", &posicao);, então você entra com o numero 1 nesse scanf, a posição a alterar seria vetor[posiçao-1], isso equivale a vetor[0], si posição vale 1 e restamos 1, isso é zero. Mas tem outro problema.... Si a pessoa entrar com 0? você acessaria a posição -1, isso é errado, não se pode acessar a posições mais baixas que zero nem maiores que o limite, isso deveria ser conferido antes.
do{
scanf("%d", &posicao);
posicao--;
}while(posiçao>=0 && posiçao < TAM );

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...