String Markup and Value Return

1

Here is my program, I need to register up to 100 products, each product is available in 5 stores and I need to tell the quantity sold of each product in each of the 5 stores. I will have a menu that will have option of registration, media of sale of each of the stores, media of sale of each product and the best selling product of each store.

The biggest problem I'm facing is this: if the highest-selling product is in vetor[5] of store 1, how do you say the name of that product?

Code:

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

#define tamanho_nome 50
#define quantidade_produtos 100

int main(){

char nome_produto[quantidade_produtos][tamanho_nome];
int loja1[quantidade_produtos];
int loja2[quantidade_produtos];
int loja3[quantidade_produtos];
int loja4[quantidade_produtos];
int loja5[quantidade_produtos];
int quantidade_cadastrada=0,i,opcao,posicao=0;
float medialoja1=0;
float medialoja2=0;
float medialoja3=0;
float medialoja4=0;
float medialoja5=0;
float media_venda_cada_produto=0;
int maior_vendal1=0;
int maior_vendal2=0;
int maior_vendal3=0;
int maior_vendal4=0;
int maior_vendal5=0;

do{
system("CLS");
printf("1-Cadastrar novo produto: \n");
printf("2-Media venda de cada loja: \n");
printf("3-Media de venda de cada produto : \n");
printf("4- Produto mais vendido de cada loja: \n");
printf("5-Sair: \n");
scanf("%d",&opcao);
system("CLS");
fflush(stdin);
if(opcao==5){
    break;
}

switch(opcao){

case 1: printf("Digite o nome do produto: \n");
scanf("%[^\n]",&nome_produto[posicao]);

printf("Digite a quantidade vendida na Loja 1: \n");
scanf("%d",&loja1[posicao]);
printf("Digite a quantidade vendida na Loja 2: \n");
scanf("%d",&loja2[posicao]);
printf("Digite a quantidade vendida na Loja 3: \n");
scanf("%d",&loja3[posicao]);
printf("Digite a quantidade vendida na Loja 4: \n");
scanf("%d",&loja4[posicao]);
printf("Digite a quantidade vendida na Loja 5: \n");
scanf("%d",&loja5[posicao]);
posicao++;
system("PAUSE");
system("cls");
break;

case 2: for(i=0;i<posicao;i++){
medialoja1+=loja1[i];
medialoja2+=loja2[i];
medialoja3+=loja3[i];
medialoja4+=loja4[i];
medialoja5+=loja5[i];
}
medialoja1=medialoja1/posicao;
medialoja2=medialoja2/posicao;
medialoja3=medialoja3/posicao;
medialoja4=medialoja4/posicao;
medialoja5=medialoja5/posicao;

printf("\nA loja 1 vendeu em media %2.f ",medialoja1);
printf("\nA loja 2 vendeu em media %2.f ",medialoja2);
printf("\nA loja 3 vendeu em media %2.f ",medialoja3);
printf("\nA loja 4 vendeu em media %2.f ",medialoja4);
printf("\nA loja 5 vendeu em media %2.f ",medialoja5);
system("PAUSE");
system("CLS");
break;

case 3: for(i=0;i<posicao;i++){
media_venda_cada_produto=loja1[i]+loja2[i]+loja3[i]+loja4[i]+loja5[i];
media_venda_cada_produto=media_venda_cada_produto/5;
printf("%s vendeu %2.f \n",nome_produto[i],media_venda_cada_produto);
}
system("PAUSE");
system("CLS");
break;

case 4:
  maior_vendal1=loja1[0];
  maior_vendal2=loja2[0];
  maior_vendal3=loja3[0];
  maior_vendal4=loja4[0];
  maior_vendal5=loja5[0];

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

    if(loja1[i]>maior_vendal1){
        maior_vendal1=loja1[i];
    }
     if(loja2[i]>maior_vendal2){
        maior_vendal2=loja2[i];
    }
     if(loja3[i]>maior_vendal3){
        maior_vendal3=loja3[i];
    }
     if(loja4[i]>maior_vendal4){
        maior_vendal4=loja4[i];
    }
     if(loja5[i]>maior_vendal5){
        maior_vendal5=loja5[i];
    }
  }

   for(i=0;i<posicao;i++){
    if(maior_vendal1==loja1[i]){
    printf("\nProduto mais vendido da loja1 e o %s\n",nome_produto[i]);
    }
    if(maior_vendal2==loja2[i]){
   printf("\nProduto mais vendido da loja2 e o %s\n",nome_produto[i]);
    }

    if(maior_vendal3==loja3[i]){
    printf("\nProduto mais vendido da loja3 e o %s\n",nome_produto[i]);
    }

    if(maior_vendal4==loja4[i]){
 printf("\nProduto mais vendido da loja4 e o %s\n",nome_produto[i]);
    }

    if(maior_vendal5==loja5[i]){
  printf("\nProduto mais vendido da loja5 e o %s\n",nome_produto[i]);
    }
   }



    system("PAUSE");
    system("CLS");
    break;

    default: printf("Voce digitou uma opcao invalida: \n");
    system("PAUSE");
    system("CLS");
    }
  }
while(opcao!=5000);
}

Code running on Ideone .

    
asked by anonymous 04.10.2018 / 01:48

1 answer

2

Well, there are some errors in the code, such as scanf("%d", &loja1);

As a vector it is already a pointer to int, so putting & causes the variable to be of type **int , so the right thing is to use without & in this case: scanf("%d", loja1);

You made this "do-if" , if it exists, and I did not understand why.

do{
    printf("O que deseja saber?: \n");
    printf("1-Cadastrar um novo produto ?: \n 2-Media de venda das lojas ?: \n 3-Media de venda dos produtos ?: \n 4-Produto mais vendido de cada uma das lojas ?: \n 5-Sair \n");
    scanf("%d",&opcao);

    if(opcao==5){
        break;
    }

I switched to this do-while :

do{
        printf("O que deseja saber?: \n");
        printf("1-Cadastrar um novo produto ?: \n 2-Media de venda das lojas ?: \n 3-Media de venda dos produtos ?: \n 4-Produto mais vendido de cada uma das lojas ?: \n 5-Sair \n");
        scanf("%d",&opcao);

}while(opcao != 5); 

The do-while has meaning "do this while the condition is true", then in that case when the option chosen is 5, the condition will be false and will exit the while.

With these corrections it looks like this:

#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#define quantidade_produtos 100
#define tamanho_nome 100
#define quantidade_vendida 100

int main(){

    int produtos=0,opcao;
    float medialoja1=0,medialoja2=0,medialoja3=0,medialoja4=0,medialoja5=0;
    char nome_produto[quantidade_produtos][tamanho_nome];
    int loja1[quantidade_produtos],loja2[quantidade_produtos];
    int loja3[quantidade_produtos] ,loja4[quantidade_produtos];
    int loja5[quantidade_produtos];

    do{
        printf("O que deseja saber?: \n");
        printf("1-Cadastrar um novo produto ?: \n 2-Media de venda das lojas ?: \n 3-Media de venda dos produtos ?: \n 4-Produto mais vendido de cada uma das lojas ?: \n 5-Sair \n");
        scanf("%d",&opcao);

    }while(opcao != 5); 

    fflush(stdin);
    switch(opcao){

        case 1: 
            printf("Qual o nome do produto?: \n");
            scanf("%[^\n]",nome_produto[produtos]);
            fflush(stdin);
            printf("Qual a quantidade vendida na loja 1 ?: \n");
            scanf("%d",loja1);
            printf("Qual a quantidade vendida na loja 2 ?: \n");
            scanf("%d",loja2);
            printf("Qual a quantidade vendida na loja 3 ?: \n");
            scanf("%d",loja3);
            printf("Qual a quantidade vendida na loja 4 ?: \n");
            scanf("%d",loja4);
            printf("Qual a quantidade vendida na loja 5 ?: \n");
            scanf("%d",loja5);
            produtos++;
            break;

        case 2: 
        for(int i=0;i<produtos; i++){
            medialoja1+=loja1[i];    
        }
    }
   return 0;
}
About the question itself, "If the highest-selling product is in the vector [5] of Store 1, how do you say the name of that product?", it seems to me that the way you structured does not help. And there are some things that I did not understand the purpose, for example:

printf("Qual a quantidade vendida na loja 1 ?: \n");
scanf("%d",loja1);

When you do this, you put the quantity in the first position of the vector only, which does not make much sense. If you can better explain how you thought I might try to help. Search about struct that might be useful for saving the name and quantity of the product in the same place.

    
05.10.2018 / 01:40