Array values are reset when displaying

Asked

Viewed 45 times

0

Guys, I have this simple code in C and I’d like to know why I’m trying to display the total array and the value that’s returning me is 0, if I put this printf inside the first while the values are printed right, but how do I print foraw I’m beginner in C.

The rest of the code is fully functional.

#include <stdio.h>

#define N 30

int main() {

int produto[N], i=0, cont=0;
double preco[N], total[N], totalCompras=0;


printf("Digite quantos produtos deseja cadastrar: ");
scanf("%d", &i);


while (cont<i) {
    printf("Digite a quantidade vendida do %dº produto: ", (cont+1));
    scanf("%d", &produto[i]);

    printf("Digite o preco da unidade do %dº produto: ", (cont+1));
    scanf("%lf", &preco[i]);

    total[i] = (produto[i]*preco[i]);
    totalCompras += total[i];

    cont++;
}
int j=0;
while(j<i) {
    printf("\n Total de vendas do produto: %0.2lf\n", total[j]);
    j++;
}

printf("\nTotal das compras: %0.2lf\n", totalCompras);


}

1 answer

1


Look at the loop while that you programmed the variable cont will iterate until it is smaller than the variable i( which is the variable that receives the product registration number ), only the index of the array you are using to enter the values and to make the calculation is being i where it should be cont, then it would look something like this.

    ...
    while (cont<i) {
        printf("Digite a quantidade vendida do %dº produto: ", (cont+1));
        scanf("%d", &produto[cont]);

        printf("Digite o preco da unidade do %dº produto: ", (cont+1));
        scanf("%lf", &preco[cont]);

        total[cont] = (produto[cont]*preco[cont]);
        totalCompras += total[cont];

        cont++;
    }
    ...

Another detail to note is not related to your question but that might help you is the use of #define, you could use const unsigned int N = 30, then I’d be like this:

#include <stdio.h>

int main(){
    const unsigned int N = 30;
    ...
}

And also the use of a struct that would nest the arrays produto, preco and total, more or less like this:

#include <stdio.h>

struct venda{ //struct que aninha produto, preco e total
    unsigned int quantidade;
    double valor_unitario;
    double sub_total;
};

int main() {

const unsigned int N = 30; //não estou utilizando #define
unsigned int i=0, cont=0;
double totalCompras=0;

struct venda vendas[N]; //Criando um array de structs

printf("Digite quantos produtos deseja cadastrar: ");
scanf("%d", &i);


while ( cont < i ) {
    printf("Digite a quantidade vendida do %dº produto: ", ( cont + 1 ) );
    scanf("%d", &vendas[ cont ].quantidade ); //populando a variavel quantidade do meu array vendas no indice cont

    printf("Digite o preco da unidade do %dº produto: ", ( cont + 1 ) );
    scanf("%lf", &vendas[ cont ].valor_unitario );//populando a variavel valor_unitario do meu array vendas no indice cont

    vendas[ cont ].sub_total = ( vendas[ cont ].quantidade * vendas[ cont ].valor_unitario);//populando a variavel sub_total do meu array vendas no indice cont
    totalCompras += vendas[cont].sub_total;

    cont++;
}

cont = 0;
while( cont < i ) {
    printf("\n Total de vendas do produto %i: %0.2lf\n", cont + 1, vendas[ cont ].sub_total );
    cont++;
}

printf("\nTotal das compras: %0.2lf\n", totalCompras );


}
  • It worked! I will implement the tips, thank you.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.