domingo, 14 de abril de 2013

Script para procura de produto mais vendido - MiniProj1 AED

Mais vendido?? A minha ideia::

Consideremos a lista de encomendas. Nesta lista temos "prodEnc" (código do produto), "quantEnc" (quantidade da encomenda).



Primeiramente, vamos criar uma estrutura ao qual vamos chamar maisVendido, no qual existem apenas três campos:: 1º - [ int codProduto ] e o 2º - [ int quantProduto ]. Entao teremos::

typedef struct maisV
{
       int codProduto;
       int quantProduto;
       struct maisV * prox;
} maisVendido;

maisVendido * M;

Como usar esta lista??
Aqui começa a magia.

Percorremos a lista de encomendas do primeiro ao último elemento (o apontador "prox" de encomendas != NULL)

Criamos uma lista M dentro da função/procedimento que é do tipo da lista de maisVendido.

-- # ------------------------------------------------------------------------------------
dentro da função/procedimento criamos duas varáveis::


int maior = 0;
int codProduto = 0;
-- # ------------------------------------------------------------------------------------

while(enc->prox != NULL)//percorremos a lista de encomendas
{
        if(M == NULL) //verificamos se a lista de maisVendido está preenchida
        { //Se não estiver, inserimos o primeiro elemento
                M->codProduto = enc->prodEnc;
                M->quantProduto = enc->quantEnc;
                M->prox = NULL;
        }
        else
        { //se estiver preenchida, vamos "actualizar", digamos assim
              while(M->prox != NULL) //enquanto não chegarmos ao fim dessa lista M
              {
                      if(M->codProduto == enc->prodEnc) //Se o produto já existir na lista
                      {
                            M->quantProduto = M->quantProduto + enc->quantEnc; //actualizamos a quantidade vendida deste produto
                      }
                      else //Se não existir na lista, então vamos inseri-lo
                      {
                            M->codProduto = enc->prodEnc;
                            M->quantProduto = enc->quantEnc;
                            M->prox = NULL;
                      }
              }//fim do while(M->prox != NULL)
        }//fim do if (M == NULL)
}//fim do while(enc->prox != NULL)
-- # ------------------------------------------------------------------------------------

Acredito, salvo erro, que este código funcione, pois nunca o testei.

A ideia é criar uma lista suplente M, onde vou inserir todos os produtos existentes na lista de encomendas uma vez só, actualizando apenas a sua quantidade se o produto estiver repetido na lista de encomendas.

Assim no final só terei de percorrer a lista M e verificar qual o produto com maior número de vendas (ver código seguinte)::

while(M->prox != NULL)
{
       if(maior < M->quantProduto)
       {
             maior = M->quantProduto;
             codProduto = M->codProduto;
       }//fim do if (maior < M->quantProduto)
}//fim do while(M->prox != NULL)

printf("O produto mais vendido tem o codigo [ %d ]. Ja foram vendidas [ %d ] unidades desse produto\n",codProduto, maior);

-- # ---------------------------------------------------------------------------------------

Espero ter ajudado alguém, pelo menos com a ideia. Se estiver errado a nível do código, por favor deixem o vosso comentário com a correcção. :)

by Johnny Pina

sábado, 6 de abril de 2013

Cores diferentes nas consolas de programas em C

Eis uma lista para quem queira dar cor à sua consola
no projecto.
Como funciona??
Muito simples. Nos códigos do programa escreve-se algo assim:

system("COLOR 0F");

O valor 0F dentro do system, a seguir ao COLOR , produz a cor desejada, em que o primeiro símbolo irá tonificar o fundo da consola e o segundo irá dar cor às letras impressas na consola.

Se não perceberam, leiam o exemplo a seguir:

Se eu quiser um fundo vermelho e letras azuis, irei usar o código:

system("COLOR 41");

Divirtam-se :)