Jump to content
Fórum Script Brasil
  • 0

STRUCT EM C


eduardodiniz19

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      652k
×
×
  • Create New...