Ir ao conteúdo
  • Cadastre-se

C Erro no programa em c (float)


Posts recomendados

Estou fazendo um programa de agropecuaria

e esta dando um erro

quando coloco o preço ex:46.33 o programa fica repetindo as coisas e só quando eu coloco um numero inteiro ele para e quando vou coferir não mostra os valores com virgula, apenas o valor inteiro

mesmo sendo declarado como float o vetPre:

 

 

 

 

 

 

 

 

 

 

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
#include <math.h>
#define MAX 5


char vetPro [MAX][51];
char vetCod [MAX][10];
int vetQuan [MAX][10];
float vetPre[MAX];

void alterarVetor(){

    
}
                
        


void inserirVetor(){
    int x,pos=-1;
    for(x=0;x<MAX;x++){
        if(strcmp(vetCod[x],"")==0){
            printf("Nome do Produto:\n");
            fflush(stdin);
            gets(vetPro[x]);
            printf("Código do Produto:\n");
            fflush(stdin);
            gets(vetCod[x]);
            printf("Quantidade do Produto:\n");
            fflush(stdin);
            scanf("%d",&vetQuan[x]);
            printf("Informe o valor do produto:\n");
            fflush(stdin);
            scanf("%f",&vetPre);

            printf("\tProduto inserido com sucesso!");
            
            pos=x;
            system("cls");
            break;
        }
        
    }
    
}

void exibirVetor(){
        printf("\n\n");
    int x, vazio=1;
    for (x=0;x<MAX;x++){
        if(strcmp(vetCod[x],"")!=0){
            if(vazio==1){
                printf("\nCódigo\t\tProduto\t\tQuantidade\t\tPreço");
                printf("\n°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°");
            }
            printf("\n%s\t\t%s\t\t%d\t\t%0.2f",vetCod[x],vetPro[x],vetQuan[x],vetPre[x]);
            vazio = 0;
        }
    }
    if (vazio==1){
        printf("\nNão há produtos no estoque\n\n!!!");
    }
    printf("\n\n");
}


void limparVetor(){
        int x;
    for(x=0;x<MAX;x++){
        if(strcmp(vetCod[x],"")!=0){
            strcpy(vetPro[x],"");
            strcpy(vetCod[x],"");
        
        }
    }
}

    

int main() {
    setlocale(LC_ALL,"Portuguese");

    printf("\n\t\t***BEM-VINDO A AGROPECUÁRIA DO BINO***\n\n\n\n");
    int op=0;
    while(op!=8){
        system("color f4");
        printf("MENU DE OPÇÕES: (digite o número da opção desejada)\n\n");
        printf("1)Inserir produtos no estoque\n");
        printf("2)Editar produto no estoque\n");
        printf("3)Excluir produto do estoque\n");
        printf("4)Exibir produtos no estoque\n");
        printf("5)Calculadora\n");
        printf("6)Venda\n");
        printf("7)Limpar Dados\n");
        printf("8)Sair\n\n\n");
        printf("Opção desejada: ");
        scanf("%d",&op);
        
        if(op==1){
            system("cls");
            printf("***INSERIR PRODUTOS NO ESTOQUE***\n\n");
            inserirVetor();
            
        }
        else if(op==2){
            
        }
        else if(op==3){
            
        }
        
        else if (op==4){
            system("cls");
            printf("***PRODUTOS NO ESTOQUE***\n\n");
            exibirVetor();
        }
        else if(op==5){
            float n1,n2,resultado;
            char operador;
            while(op==5){
            
            printf("\t*****CALCULADORA BÁSICA*****");
                printf("\n\n\n N1:");
                scanf ("%f",&n1);
                system("cls");
                printf("\n Digite o operador (+)(-)(*)(/):");
                scanf ("%s",&operador);
                system("cls");
                printf("\n N2:");
                scanf ("%f",&n2);
                system("cls");
                if (operador== '+') {
                resultado=n1+n2;    
                printf ("\n O resultado é: %0.2f",resultado);
                }
                else
                if (operador=='-') {
                resultado=n1-n2;
                printf ("\n O resultado é: %0.2f",resultado);
                }
                else
                if (operador=='/') {
                resultado=n1/n2;
                printf ("\n O resultado é: %0.2f",resultado);
                }
                else  
                if (operador=='*') {
                resultado=n1*n2;
                printf ("\n O resultado é: %0.2f",resultado);
                }
                printf("\n\nDeseja calcula novamente? (5)Sim (1)Não: ");
                scanf("%d",&op);
                system("cls");
                }
            }
            
        
        
        else if(op==6){
            
            
        }
        else if(op==7){
            limparVetor();
        }
        
    }
}

 

 

image.thumb.png.7c07e90303ec21643a87e5a0727c1701.png

 


 

Link para o comentário
Compartilhar em outros sites

1) Você está usando uma matriz multidimensional para armazenar valores do tipo int, sendo que apenas usa o primeiro indice no printf. Troque por vetor.


int vetQuan [MAX][10];
scanf("%d",&vetQuan[x]);

printf("\n%s\t\t%s\t\t%d\t\t%0.2f",vetCod[x],vetPro[x],vetQuan[x],vetPre[x]);

 

2) Na questão do preço, você não usou o índice no scanf:

 

scanf("%f",&vetPre);
scanf("%f",&vetPre[x]);

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...