domingo, 27 de maio de 2012

Registros - Conceito

Variáveis Compostas Heterogêneas

(texto retirado do site tiexpert.net)

Um registro (= record) é uma coleção de várias variáveis, possivelmente de tipos diferentes. Na linguagem C, registros são conhecidos como structs (abreviatura de structures).

Estrutura de Dados - STRUCT


O conceito de orientação a objeto - principalmente classes que serão tratadas mais a frente - tem uma base muito sólida no conceito de estrutura de dados.
As estruturas de dados consistem em criar apenas um dado que contém vários membros, que nada mais são do que outras variáveis. De uma forma mais simples, é como se uma variável tivesse outras variáveis dentro dela. A vantagem em se usar estruturas de dados é que podemos agrupar de forma organizada vários tipos de dados diferentes, por exemplo, dentro de uma estrutura de dados podemos ter juntos tanto um tipo float, um inteiro, um char ou um double.
As variáveis que ficam dentro da estrutura de dados são chamadas de membros ou campos.

Criando uma estrutura de dados com STRUCT


Para criar uma estrutura de dados usamos a palavra reservada struct. Toda estrutura deve ser criada antes de qualquer função ou mesmo da função principal main. Toda estrutura tem nome e seus membros são declarados dentro de um bloco de dados. Após a definição de seus membros no bloco de dados, terminamos a linha com um ponto-e-vírgula (;). Portanto:

struct nome_da_estrutura
          {
          tipo_de_dado  nome_do_membro;
          };

Por exemplo, se fossemos criar uma estrutura de dados para simbolizar uma data faríamos:

struct data 
          {
          int dia;
          int mes;
          int ano;
          };

Declarando um struct e acessando seus membros


Ainda utilizando o exemplo acima, vamos declarar uma variável do tipo estrututa de dados data e acessar seus membros.
Após criarmos uma estrutura de dados com struct, poderemos utilizá-la como um tipo de dado comum (ex.: float, int, char). E para acessar seus membros utilizamos a variável declarada mais um ponto (.) e o nome do membro. Veja este exemplo abaixo: 

#include <iostream>
#include <stdio.h>

using namespace std;

struct data 
          {
          int dia;
          int mes;
          int ano;
          };

int main ()
{
     data hoje;
     hoje.dia = 23;
     hoje.mes = 9;
     hoje.ano = 2008;
     cout << "Hoje e " << hoje.dia << "/" << hoje.mes << "/" << hoje.ano << endl;
     system ("pause");
}

Portanto, a variável hoje é declarada como sendo um tipo de dado data. Data é uma estrutura de dados que tem três características (ou três membros) inteiros: dia, mes e ano. Como hoje é um tipo de dado data, ele obtém os mesmos três membros. Para acessar cada membro, usamos a variável e depois o nome do membro que queremos acessar separados por ponto (.).


Exercício 1 da aula de Algoritmo Estruturado de 23/05


Implementar o programa para ler e imprimir um vetor de 5 contas.

Algoritmo


Programa Contas
     regcliente = registro
          nome: literal
          rua: literal
          numero: inteiro
          cep: inteiro
          saldo: real
     fim_registro
     Declare contas: vetor[1..5] de regcliente
     Declare i: inteiro
Inicio
        Para i ← 1 até 5 Faça
        Inicio_para
                Leia (contas[i].nome)
                Leia (contas[i].rua)
                Leia (contas[i].numero)
                Leia (contas[i].cep)
                Leia (contas[i].saldo)
        Fim_para
        Para i ← 1 até 5 Faça
        Inicio_para
                Escreva (contas[i].nome)
                Escreva (contas[i].rua)
                Escreva (contas[i].numero)
                Escreva (contas[i].cep)
                Escreva (contas[i].saldo)
        Fim_para
Fim

Código implementado no Dev-C++ 4.9.9.2


#include <iostream>
#include <stdio.h>

using namespace std;

struct regcliente //declaracao do registro
          {
          int numero, cep;
          char nome[30], rua[30];
          float saldo;
          };

int main()
{
     regcliente contas[5]; //declaracao da variavel contas do tipo registro
     int i;
     for (i = 0; i < 5; i++)
           {
           cout << "CONTA NUMERO " << i+1 << "\n\n";
           cout << "Digite o nome: ";
           cin >> contas[i].nome;
           cout << "Digite o nome da rua: ";
           cin >> contas[i].rua;
           cout << "Digite o numero: ";
           cin >> contas[i].numero;
           cout << "Digite o CEP: ";
           cin >> contas[i].cep;
           cout << "Digite o saldo em R$: ";
           cin >> contas[i].saldo;
           system("cls");
           }
     for (i = 0; i < 5; i++)
           {
           cout << "CONTA NUMERO " << i+1 << "\n\n";
           cout << "Nome: " << contas[i].nome << endl;
           cout << "Rua: " << contas[i].rua << endl;
           cout << "Numero: " << contas[i].numero << endl;
           cout << "CEP: " << contas[i].cep << endl;
           cout << "Saldo: R$ " << contas[i].saldo << endl;
           cout << "\n\n";
           system("PAUSE");
           system("cls");
           }
     system("PAUSE");
}

Matrizes

Resolução do exercício da aula de algoritmo de 23/05



Na matemática é comum o uso de matrizes de números. Neste sentido, o primeiro programa sobre variáveis compostas multidimensionais corresponde a leitura de uma matriz 4 X 4 e imprimí-la na tela.

Algoritmo



Programa matriz
     Declare mat: matriz [1..5,1..5] de inteiro
     Declare i, j: inteiro
Inicio
         Para i ←
 1 até 5 Faça 
         Inicio_para         
                  Para j ← 1 até 5 Faça 
                  Inicio_para
                           Escreva ('Digite o valor [', i , ’,’ , j , '] da matriz: ')
                           Leia (mat[i,j])
                  Fim_para
         Fim_para
         Para i ←
 1 até 5 Faça 
         Inicio_para
                  Para j ← 1 até 5 Faça 
                  Inicio_para
                           Escreva ('O valor lido da posição [', i , ’,’ , j , '] da matriz : ', mat[i,j])
                  Fim_para
         Fim_para
Fim



Código compilado no Dev-C++ 4.9.9.2


#include <iostream>
#include <stdio.h>


using namespace std;

int main()
{
     int matriz[5][5];
     int i, j;
     for (i = 0; i < 5; i++)
           {
           for (j = 0; j < 5; j++)
                 {
                 cout << "Digite o valor [" << i + 1 << "," << j + 1 << "] da matriz: ";
                 cin >> matriz[i][j];
                 system("cls");
                 }
           }
     for (i = 0; i < 5; i++)
           {
           for (j = 0; j < 5; j++)
                 {
                 cout<<"O valor lido da posicao ["<<i+1<<","<<j+1<<"] da matriz: "<<matriz[i][j]<<"\n";
                 }
           system("PAUSE");
           cout << "\n";
           }
     system("PAUSE");
}

segunda-feira, 21 de maio de 2012

Vetores - Aula de Programação 15/05


Resolução dos exercícios da aula de 15/05



Exercício 1 - Código compilado no Dev-C++ 4.9.9.2


/* Escreva um programa para ler 10 numeros e escrever os números digitados. */


#include <iostream>
#include <stdio.h>


using namespace std;


main()
{
    float vetor[10];
    int i;
    for (i = 0; i < 10; i++)
        {
        cout << "Digite o " << i + 1 << "o. numero: ";
        cin >> vetor[i];
        system("cls");
        }
    for (i = 0; i < 10; i++)
        {
        cout << "Posicao "<< i + 1 << " do vetor: " << vetor[i];
        cout << "\n";
        }    
    system("PAUSE");
}

Exercício 2 - Código compilado no Dev-C++ 4.9.9.2


/*Escreva um programa para ler a nota de 5 alunos e imprimir o nome do aluno 
com nota acima da média da classe*/


#include <iostream>
#include <stdio.h>


using namespace std;


main()
{
    char nome[5][20];
    float soma, media, nota[5];
    int i;
    soma = 0;
    for (i = 0; i < 5; i++)
        {
        cout << "Digite o nome do aluno " << i + 1 << " : ";
        cin >> nome[i];
        cout << "Digite a nota do aluno " << i + 1 << " : ";
        cin >> nota[i];
        soma = soma + nota[i];
        system("cls");
        }
    media = soma / 5;
    for (i = 0; i < 5; i++)
        {
        if (nota[i] > media)
           {
           cout << "O aluno " << nome[i] << " ficou acima da media." << "\n\n";
           }
        }    
    system("PAUSE");
}


Exercício 3 - Código compilado no Dev-C++ 4.9.9.2


/*Escreva um programa para ler a nota de 30 alunos, calcular a média geral da 
turma e escrever quantos alunos tiveram a nota acima da média calculada.*/


#include <iostream>
#include <stdio.h>


using namespace std;


main()
{
    char nome[30][20];
    float soma, media, nota[30];
    int i, qtd;
    qtd = 0;
    soma = 0;
    for (i = 0; i < 30; i++)
        {
        cout << "Digite o nome do aluno " << i + 1 << " : ";
        cin >> nome[i];
        cout << "Digite a nota do aluno " << i + 1 << " : ";
        cin >> nota[i];
        soma = soma + nota[i];
        system("cls");
        }
    media = soma / 30;
    for (i = 0; i < 30; i++)
        {
        if (nota[i] > media)
           {
           qtd = qtd + 1;
           }
        }
    cout << "Quantidade de alunos aprovados: " << qtd << "\n\n";   
    system("PAUSE");
}


Exercício 4 - Código compilado no Dev-C++ 4.9.9.2


/*Um armazém trabalha com 20 mercadorias diferentes identificadas pelos números 
inteiros de 1 a 20. O dono do armazém anota a quantidade de cada mercadoria vendida 
durante o mês. Ele tem uma tabela que indica para cada mercadoria o preço de venda. 
Escreva o algoritmo para calcular o faturamento mensal do armazém, isto é: A tabela
de preço e quantidade são fornecidas em dois conjuntos, sendo que um conjunto contém
a quantidade vendida e o outro o preco de cada mercadoria. */


#include <iostream>
#include <stdio.h>


using namespace std;


main()
{
    int quantidade[20];
    float faturamento, preco[20];
    int i;
    faturamento = 0;
    for (i = 0; i < 20; i++)
        {
        cout << "Digite a quantidade do produto " << i + 1 << " vendida: ";
        cin >> quantidade[i];
        cout << "Digite o preco do produto " << i + 1 << " em R$: ";
        cin >> preco[i];
        system("cls");
        }
    for (i = 0; i < 20; i++)
        {
        faturamento = faturamento + (quantidade[i]*preco[i]);
        }
    cout << "O faturamento mensal foi de R$ " << faturamento << "\n\n";    
    system("PAUSE");
}


Case - Aula de Programação 08/05

Resolução dos Exercícios da Aula de 08/05

Exercício 1



Faça um algoritmo que receba o número do mês e mostre o mês correspondente. Valide mês inválido.


Algoritmo



Programa Mes
     Declare mes: inteiro
Inicio
        Escreva ("Digite o número do mês: ")
        Leia (mes)
        Escolha mes
        Inicio_escolha           
                Caso 1
                        Escreva ("Janeiro")
                Caso 2
                        Escreva ("Fevereiro")
                Caso 3
                        Escreva ("Março")
                Caso 4
                        Escreva ("Abril")
                Caso 5
                        Escreva ("Maio")
                Caso 6
                        Escreva ("Junho")
                Caso 7
                        Escreva ("Julho")
                Caso 8
                        Escreva ("Agosto")
                Caso 9
                        Escreva ("Setembro")
                Caso 10
                        Escreva ("Outubro")
                Caso 11
                        Escreva ("Novembro")
                Caso 12
                        Escreva ("Dezembro")
        Fim_escolha
Fim

Código compilado no Dev-C++ 4.9.9.2


#include <iostream>
#include <stdio.h>


using namespace std;


main()
{
      int mes;
      cout << "Digite o numero do mes:";
      cin >> mes;
      system ("cls");
      switch (mes)
             {
             case 1:
             cout << "Janeiro";
             break; 
             case 2:
             cout << "Fevereiro";
             break;
             case 3:
             cout << "Marco";
             break;
             case 4:
             cout << "Abril";
             break;
             case 5:
             cout << "Maio";
             break;
             case 6:
             cout << "Junho";
             break;
             case 7:
             cout << "Julho";
             break;
             case 8:
             cout << "Agosto";
             break;
             case 9:
             cout << "Setembro";
             break;
             case 10:
             cout << "Outubro";
             break;
             case 11:
             cout << "Novembro";
             break;
             case 12:
             cout << "Dezembro";
             break;
             default:
             cout << "Opção invalida";
             }
      cout << "\n\n";
      system ("pause");
}


Exercício 2


Escrever um algoritmo que leia os dados de N pessoas (nome, sexo, idade e saúde) e informe se está apta ou não para cumprir o serviço militar obrigatório. Informe os totais.


Algoritmo



Programa ServicoMilitar
        Declare programa, idade, apto: inteiro
        Declare nome, sexo, saude, opc: caractere
        Declare totApto, total: inteiro
Inicio
        Programa <- 1
        Enquanto programa = 1 Faça
        Inicio_enquanto
               Limpatela
               apto <- 1
               saude <- "B"
               total <- total + 1
               Escreva ("Digite o nome: ")
               Leia (nome)
               Escreva ("Digite o sexo (M/F): ")
               Leia (sexo)
               Escreva ("Digite a idade: ")
               Leia (idade)
               Se idade < 18 
               Entao apto <- 0
               Fim_se
               Escreva ("Digite o estado de saúde: ")
               Escreva ("(B) Bom - (R) - Ruim - ")
               Leia (saude)
               Se saude = "R" 
               Entao apto <- 0
               Senao Se saude <> "B"
                          Entao apto <- 0
                          Fim_se
               Fim_se
               Se apto = 1
               Entao totApto <- totApto + 1
               Fim_se
               Escreva ("Deseja continuar filtrando (S/N)? ")
               Leia (opc)
               Se opc = "N"
               Entao programa <- 0
               Fim_se
      Fim_enquanto
      Limpatela
      Escreva ("Resumo geral: ")
      Escreva ("Foram filtrados: ",total," pessoas")
      Escreva ("Aptos: ",totApto)
      Escreva ("")
Fim


Código compilado no Dev-C++ 4.9.9.2


#include <iostream>
#include <stdlio.h>


using namespace std;


main()
{
   int totapto, total, programa, idade, apto;
   char nome[20], sexo, saude, opc;
   total = 0;
   totapto = 0;
   programa = 1;
   while (programa == 1)
         {
         system ("cls");
         apto = 1;
         saude = 'b';
         total = total + 1;
         cout << "Digite o nome: ";
         cin >> nome;
         cout << "Digite o sexo (M/F): ";
         cin >> sexo;
         cout << "Digite a idade: ";
         cin >> idade;
         if (idade < 18)
            {
            apto = 0;
            }   
         cout << "Digite o estado de saude - (b)bom / (r)ruim - :";
         cin >> saude;
         if (saude == 'r')
            {
            apto = 0;
            }
         else if (saude != 'b')
                 {
                 apto = 0;
                 }
         if (apto == 1)
            {
            totapto = totapto + 1;
            }
         cout << "Deseja continuar filtrando (s/n)? ";
         cin >> opc;
         if (opc == 'n')
            {
            programa = 0;
            }
         }            
   system ("cls");
   cout << "Resumo geral" << "\n\n";
   cout << "Foram filtrados: " << total << " pessoas\n";
   cout << "Aptos: " << totapto;
   cout << "\n\n";
   system ("pause");
}


Exercício 3


Implemente o algoritmo em C++


Algoritmo



Programa Tabuada
var
x : inteiro
i :inteiro
op, num:inteiro
opc : caracter
inicio
// Seção de Comandos
repita
        ESCREVA ("")
        ESCREVA ("............................... SISTEMA DE TABUADA ............................... ")
        ESCREVA ("")
        ESCREVA ("")
        ESCREVA ("")
        ESCREVA ("                    ESCOLHA UM OPÇÃO PARA A TABUADA                  ")
        ESCREVA ("")
        ESCREVA ("")
        ESCREVA ("")
        ESCREVA (" |==================================================| ")
        ESCREVA (" |                                       1) ADIÇÃO                                             | ")
        ESCREVA (" |                                       2) SUBTRAÇÃO                                     | ")
        ESCREVA (" |                                       3) MULTIPLICAÇÃO                                | ")
        ESCREVA (" |                                       4) DIVISÃO                                            | ")
        ESCREVA (" |==================================================| ")
        ESCREVA ("")
        escreva ("Escolha uma das opções acima: ")
        leia (op)
        limpatela

caso 1
        se op = 1 entao
            escreva ("Digite a tabuada que deseja ver: ")
            leia(x)
            escreva ("Até quando você deseja que apareça o numero de Adição: ")
            leia (num)

            escreva ( "A tabuada de " ,x, " Adição até: ", num, " é: ")
            para i de 1 ate num faca
                   escreva ( x , " + ", i, " = ", x+i)
            fimpara
        fimse
caso 2
        se op = 2 entao
            escreva ("Digite a tabuada que deseja ver: ")
            leia(x)
            escreva ("Até quando você deseja que apareça o numero de Subtração: ")
            leia (num)
            escreva ( "a tabuada de " ,x, " subtração até: ", num, " é: ")
            para i de 1 ate num faca
                   escreva ( x , " - ", i, " = ", x-i)
            fimpara
        fimse
caso 3
        se op = 3 entao
            escreva ("Digite a tabuada que deseja ver: ")
            leia(x)
            escreva ("até quando você deseja que apareça o numero de Multiplicação: ")
            leia (num)
            escreva ( " a tabuada de " ,x, " Multiplicada até: ", num, " é: ")
            para i de 1 ate num faca
                   escreva ( x , " x ", i, " = ", x*i)
            fimpara
        fimse
caso 4
        se op = 4 entao
            escreva ("Digite a tabuada que deseja ver: ")
            leia(x)
            escreva ("até quando você deseja que apareça o numero de Divisão: ")
            leia (num)
            escreva ( "a tabuada de " ,x, " Dividida até: ", num, " é: ")
            para i de 1 ate num faca
                   escreva ( x , " / ", i, " = ", x/i)
            fimpara
        fimse
        escreva ("Deseja continuar calculando? S|N ")
        leia (opc)
        limpatela
ate opc = "n"
        ESCREVA ("")
        escreva (" ********** OBRIGADO POR ESCOLHER ESTE SOFTWARE ********** ")
        ESCREVA ("")
fimalgoritmo

Código compilado no Dev-C++ 4.9.9.2


#include <iostream>
#include <stdio.h>


using namespace std;
main()
{
      float x, num;
      int i, op;
      char opc; 
      do
        {
        cout << "\n";
        cout << " >>>>>>>>>>>>>>>> SISTEMA DE TABUADA <<<<<<<<<<<<<<<< ";
        cout << "\n\n\n";
        cout << "                       ESCOLHA UMA OPCAO PARA A TABUADA                ";
        cout << "\n\n\n";
        cout << " |==================================================| " << "\n";
        cout << " |                                          1) ADICAO                                          | " << "\n";
        cout << " |                                          2) SUBTRACAO                                  | " << "\n";
        cout << " |                                          3) MULTIPLICACAO                            | " << "\n";
        cout << " |                                          4) DIVISAO                                         | " << "\n";
        cout << " |==================================================| " << "\n";
        cout << "\n";
        cout << " Escolha uma das opcoes acima: ";
        cin >> op;
        system ("cls");
        switch (op)
               {
               case 1:
                    {
                    cout << " Digite a tabuada que deseja ver: ";
                    cin >> x;
                    cout << " Ate quando voce deseja que apareca o numero de Adicao: ";
                    cin >> num;
                    cout << "\n" << " Tabuada de " << x << " adicionado ate " << num << " : ";
                    cout << "\n\n";
                    for (i = 0; i <= num; i++)
                        {
                        cout << " " << x << " + " << i << " = " << x + i << "\n";
                        }
                    break;
                    }
               case 2:
                    {
                    cout << " Digite a tabuada que deseja ver: ";
                    cin >> x;
                    cout << " Ate quando voce deseja que apareca o numero de Subtracao: ";
                    cin >> num;
                    cout << "\n" << " Tabuada de " << x << " subtraido ate " << num << " : ";
                    cout << "\n\n";
                    for (i = 0; i <= num; i++)
                        {
                        cout << " " << x << " - " << i << " = " << x - i << "\n";
                        }
                    break;
                    }
               case 3:
                    {
                    cout << " Digite a tabuada que deseja ver: ";
                    cin >> x;
                    cout << " Ate quando voce deseja que apareca o numero de Multiplicacao: ";
                    cin >> num;
                    cout << "\n" << " Tabuada de " << x << " multiplicado ate " << num << " : ";
                    cout << "\n\n";
                    for (i = 0; i <= num; i++)
                        {
                        cout << " " << x << " * " << i << " = " << x * i << "\n";
                        }
                    break;
                    }
               case 4:
                    {
                    cout << " Digite a tabuada que deseja ver: ";
                    cin >> x;
                    cout << " Ate quando voce deseja que apareca o numero de Divisao: ";
                    cin >> num;
                    cout << "\n" << " Tabuada de " << x << " dividido ate " << num << " : ";
                    cout << "\n\n";
                    for (i = 0; i <= num; i++)
                        {
                        cout << " " << x << " / " << i << " = " << x / i << "\n";
                        }
                    break;
                    }
               default:
                      {
                      cout << " Opcao invalida" << "\n";
                      } 
               }
        cout << "\n" << " Deseja continuar calculando?(s/n) ";
        cin >> opc;
        system("cls");
        }
      while (opc == 's');
      cout << "\n";
      cout << " *********** OBRIGADO POR ESCOLHER ESTE SOFTWARE *********** ";
      cout << "\n\n";
      system("PAUSE");
}





domingo, 20 de maio de 2012

Vetores - Desafio 2

Apostila de Vetores - Desafio 2

(Atualizado para incluir estrutura de verificação de código de mercadoria incorreto)

2. Em um sistema para o controle de estoque de mercadorias de uma loja são dados os códigos das mercadorias e as respectivas quantidades existentes. Elabore um programa para atualização do estoque, tal que:
  • Seja lido estoque inicial (máximo 100 mercadorias). Pergunte ao usuário se ainda existem mercadorias a serem lidas. 
  • Sejam lidos os pedidos dos clientes, constituídos, cada um do número do cliente, código da mercadoria e quantidade desejada(variáveis simples). Obs. a condição de parada para a leitura dos pedidos dos clientes é perguntar ao usuário se ainda existe pedidos. 
  • Seja verificado, para cada pedido, se ele pode ser integralmente atendido. Em caso negativo, Seja impresso o número do cliente e a mensagem “NÃO TEMOS A MERCADORIA EM ESTOQUE SUFICIENTE” 
  • Seja atualizado estoque após cada operação 
  • Seja listado estoque final 
Passos de Execução do Programa (algoritmo de alto nível)
  1. Leitura do estoque inicial 
  2. Leitura do pedido do cliente 
  3. Verificação da quantidade no estoque
  4. Atualização do estoque 
  5. Listagem do estoque final

Algoritmo


Programa ControleEstoque
     Declare mercadoria, estoque: vetor [1.. 100] de char
     Declare i, q, cliente, mercadoriapedido, quantidadepedido: inteiro
     Declare op1, op2, codigocerto: caracter
Inicio
         q ← 0
         op1 ← 's'
         Enquanto (op1 = 's') Faça                                     {Leitura do estoque inicial}
         Inicio_enquanto
                  Leia (mercadoria[q])
                  Leia (estoque[q])
                  q ← q + 1
                  Escreva ('Existem outras mercadorias? s/n')
                  Leia (op1)
         Fim_enquanto
         op2  ← 's'
         Enquanto (op2 = 's') Faça                                     {Leitura do pedido do cliente}
         Inicio_enquanto
                  codigocerto ← 'n'
                  Leia (cliente)
                  Leia (mercadoriapedido) 
                  Para i  ← até q Faça                                   {Verificação do estoque}
                  Inicio_para
                           Se (mercadoriapedido = mercadoria[i])
                           Entao  codigocerto ← 's'
                                       Leia (quantidadepedido)
                                       Se (quantidadepedido <= estoque[i])   {Atualização de estoque}
                                       Entao estoque[i]  estoque[i] - quantidadepedido
                                       Senao Escreva (cliente, 'Nao temos a mercadoria em estoque')
                  Fim_para
                  Se (codigocerto = 'n')                                  {Verificacao de codigo inexistente}
                  Entao Escreva ('Codigo inexistente')
                  Escreva ('Existem mais pedidos? s/n')
                  Leia (op2)
         Fim_enquanto
         Para i ← até q Faça                                             {Listagem do estoque final}
         Incio_para
                 Escreva (mercadoria[i], " : ", estoque[i])
         Fim_para
Fim

Código compilado no Dev-C++ 4.9.9.2



#include <iostream>
#include <stdio.h>

using namespace std;

main()
{
      int mercadoria[100], estoque[100];
      int i, q, cliente, mercadoriapedido, quantidadepedido;
      char op1, op2, codigocerto;
      q = 0;
      op1 = 's';
      cout << ">>>>>>>>>> PROGRAMA CONTROLE DE ESTOQUE <<<<<<<<<<" << "\n\n\n";
      cout << "CADASTRO DE ESTOQUE" << "\n";
      while (op1 == 's') //leitura do estoque inicial
            {
            cout << "\n" << "Codigo da mercadoria: ";
            cin >> mercadoria[q];
            cout << "Quantidade da mercadoria: ";
            cin >> estoque[q];
            q = q + 1;
            cout << "\n" << "Existem outras mercadorias?(s/n) ";
            cin >> op1;
            }
      system("cls");
      op2 = 's';
      while (op2 == 's') //leitura do pedido do cliente
            {
            codigocerto = 'n';
            cout << ">>>>>>>>>> PROGRAMA CONTROLE DE ESTOQUE <<<<<<<<<<" << "\n\n\n";
            cout << "CADASTRO DE PEDIDOS " << "\n\n";
            cout << "Numero do cliente: ";
            cin >> cliente;
            cout << "\n" << "Codigo da mercadoria: ";
            cin >> mercadoriapedido;
            for (i = 0; i < q; i++) //verificacao da quantidade no estoque
                {
                if (mercadoriapedido == mercadoria[i])
                   {
                   codigocerto = 's';
                   cout << "Quantidade desejada: "; //leitura da quantidade
                   cin >> quantidadepedido;
                   if (quantidadepedido <= estoque[i])
                      {
                      estoque[i] = estoque[i] - quantidadepedido; //atualizacao de estoque
                      }
                   else
                       {
                       cout << "\n" << "Cliente " << cliente;
                       cout << " : NAO TEMOS A MERCADORIA " << mercadoriapedido << " EM ESTOQUE SUFICIENTE" << "\n";
                       }
                   }
                }
            if (codigocerto == 'n') //verificacao de codigo de mercadoria inexistente
               {
               cout << "\n" << "CODIGO DE MERCADORIA INEXISTENTE" << "\n";
               }
            cout << "\n" << "Existem mais pedidos?(s/n) ";
            cin >> op2;
            system("cls");
            }
      cout << ">>>>>>>>>> PROGRAMA CONTROLE DE ESTOQUE <<<<<<<<<<" << "\n\n\n";
      cout << "ESTOQUE FINAL" << "\n\n";
      for (i = 0; i < q; i++) //listagem do estoque final
          {
          cout << "Mercadoria " << mercadoria[i] << " : " << estoque[i] << " unidades" << endl;
          }
      cout << "\n";
      system("PAUSE");
}