Ir ao conteúdo
  • Cadastre-se
linguagem_c

Problemas com um certo struct

Recommended Posts

Erro na linha 51:

"incompatible types in assignment"

#include <stdio.h>
#include <stdlib.h>

#define MAX 5
struct papelaria
{
int codigo;
char descricao[50];
float valor;
int quant;
}dados[MAX];
void alterar();
int main()
{
int i;
char tecla = 's';
for(i=0;i<MAX;i++){
printf("Digite o codigo: \n");
scanf("%d",&dados[i].codigo);
printf("Digite a descricao: \n");
fgets(dados[i].descricao, 50, stdin);
printf("Digite o valor unitario: \n");
scanf("%f",&dados[i].valor);
printf("Digite a quantidade em estoque: \n");
scanf("%d",&dados[i].quant);
}
printf("Deseja alterar ?\n (s) sim (n) não");
tecla = getch();
if(tecla == 's'){
alterar();
}
system("PAUSE");
return 0;
}
void alterar(){
int cod, i;
char descricao[50];
float valor;
int quant;
printf("Digite nova descricao \n");
fgets(descricao, 50, stdin);
printf("Digite novo valor: \n");
scanf("%f",&valor);
printf("Digite nova quantidade: \n");
scanf("%d",&quant);
printf("Alterar dados \n");
printf("Informa o codigo do produto a ser alterado \n");
scanf("%d",&cod);
for(i=0;i<MAX;i++){
if(cod == dados[i].codigo){
dados[i].descricao = descricao;
dados[i].valor = valor;
dados[i].quant = quant;
}
else{
printf("Codigo errado \n");
}
}
}

Editado por Plateu

Compartilhar este post


Link para o post
Compartilhar em outros sites
Erro na linha 51:

"incompatible types in assignment"

#include <stdio.h>
#include <stdlib.h>

#define MAX 5
struct papelaria
{
int codigo;
char descricao[50];
float valor;
int quant;
}dados[MAX];
void alterar();
int main()
{
int i;
char tecla = 's';
for(i=0;i<MAX;i++){
printf("Digite o codigo: \n");
scanf("%d",&dados[i].codigo);
printf("Digite a descricao: \n");
fgets(dados[i].descricao, 50, stdin);
printf("Digite o valor unitario: \n");
scanf("%f",&dados[i].valor);
printf("Digite a quantidade em estoque: \n");
scanf("%d",&dados[i].quant);
}
printf("Deseja alterar ?\n (s) sim (n) não");
tecla = getch();
if(tecla == 's'){
alterar();
}
system("PAUSE");
return 0;
}
void alterar(){
int cod, i;
char descricao[50];
float valor;
int quant;
printf("Digite nova descricao \n");
fgets(descricao, 50, stdin);
printf("Digite novo valor: \n");
scanf("%f",&valor);
printf("Digite nova quantidade: \n");
scanf("%d",&quant);
printf("Alterar dados \n");
printf("Informa o codigo do produto a ser alterado \n");
scanf("%d",&cod);
for(i=0;i<MAX;i++){
if(cod == dados[i].codigo){
dados[i].descricao = descricao;
dados[i].valor = valor;
dados[i].quant = quant;
}
else{
printf("Codigo errado \n");
}
}
}

1- Dizer qual é a linha 51 ajuda...

2- Use strcpy quando for igualar strings.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dei uma mexida em seu codigo porque havia mais erros do que aquele da linha 51.Lembrando que eu editei e compilei td usando o Code::Block e o g++, respectivamente.

ps: Todas as modificações estão em negrito

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>//usar getche

#include <string.h>//usar strcpy

#include <iostream>//usar toupper

#define MAX 5

//definir a estrutura como um tipo de definiçao

typedef struct papelaria

{

int codigo;

char descricao[50];

float valor;

int quant;

}papelaria;//Apelido para a sua estrutura

papelaria dados[MAX];//Evite variaveis globais

void alterar();

int main()

{

int i;

char tecla = 's';

for(i=0;i<MAX;i++){

printf("Digite o codigo: n");

fflush(stdin);//Limpar o buffer do teclado

scanf("%d",&dados.codigo);

printf("Digite a descricao: n");

fflush(stdin);

fgets(dados.descricao, 50, stdin);

printf("Digite o valor unitario: n");

fflush(stdin);

scanf("%f",&dados.valor);

printf("Digite a quantidade em estoque: n");

fflush(stdin);

scanf("%d",&dados.quant);

}

printf("Deseja alterar ?n (s) sim (n) não");

fflush(stdin);

tecla=toupper(getch());//Transforma todos os caracteres em maiusculos

if(tecla == 'S')

{

alterar();

}

system("PAUSE");

return 0;

}

void alterar()

{

int cod, i;

char descricao[50];

float valor;

int quant;

printf("Digite nova descricao n");

fflush(stdin);

fgets(descricao, 50, stdin);

printf("Digite novo valor: n");

fflush(stdin);

scanf("%f",&valor);

printf("Digite nova quantidade: n");

fflush(stdin);

scanf("%d",&quant);

printf("Alterar dados n");

printf("Informa o codigo do produto a ser alterado n");

fflush(stdin);

scanf("%d",&cod);

for(i=0;i<MAX;i++){

if(cod == dados.codigo)

{

strcpy(dados.descricao,descricao);//Copiar o conteudo de uma string para a outra

dados.valor = valor;

dados.quant = quant;

}

else{

printf("Codigo errado n");

}

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×