quarta-feira, 6 de junho de 2012

Registros - Exercício Complementar 2

Resolução dos Problemas da Apostila de Registros




Exercício Complementar 2


1.   Uma indústria faz a folha de pagamentos de seus empregados baseado em uma tabela que corresponde a estrutura de um vetor onde cada posição representa um funcionário que contém os seguintes dados:

·      inscrição;
·      nome;
·      classe (1 ou 2);
·      horas normais ;
·      horas extras;

Fazer um programa que processe a tabela e emita para cada funcionário seu contracheque, cujo formato é dado a seguir:


NÚMERO DE INSCRIÇÃO:                                    NOME:
SALÁRIO HORAS NOMAIS:
SALÁRIO HORAS EXTRAS:
DEDUÇÃO  INSS:
          SALARIO LIQUIDO:

O salário de referência deverá ser lido do teclado.
O salário referente às horas extras é calculado acrescentando 30% ao salário-hora normal. O desconto do INSS é de 8% do salário bruto (salário correspondente às horas normais trabalhadas + salário correspondente  às horas extras.
Para o cálculo do salário, considerar que existem duas classes de funcionários, a classe, cujo salário é 1,3 vezes o salário de referência, e a classe 2, cujo salário é 1,9  vezes o salário de referência.

Observação: realize uma boa interface com o usuário utilizando as funções de cores e posicionamento na tela.

Algoritmo


Programa Contracheque
Tipo
      ficha = registro
            classe: literal
            nome: literal[20]
            inscricao: inteiro
            hnormal: inteiro
            hextra: inteiro
      fim_registro
Var
      Declare cadastro: vetor[1..50] de ficha
      Declare i, q: inteiro
      Declare op: literal
      Declare salreferencia, salclasse, inss, salnormal, salextra, salbruto, salliquido: real
Inicio
      q ß 0
      Repita
      Inicio_repita
            Leia (cadastro[q].inscricao)
            Leia (cadastro[q].nome)
            Leia (cadastro[q].classe)
            Enquanto (cadastro[q].classe <> ‘1’) OR (cadastro[q].classe <> ‘2’) Faça
            Inicio_enquanto
                  Escreva (“CLASSE INVALIDA”)
                  Leia (cadastro[q].classe)
            Fim_enquanto
            Leia (cadastro[q].hnormal)
            Leia (cadastro[q].hextra)
            q ß q + 1
            Escreva (“Existem outros (s/n)?”)
            Leia (op)
      Enquanto (op = ‘s’)
      Fim_repita
      salreferencia ß 0
      Leia (salreferencia)
      Para i ß 1 até q Faça
      Inicio_para
            salclasse ß 0
            salnormal ß 0
            salextra ß 0
            salbruto ß 0
            salliquido ß 0
            inss ß 0
            Se cadastro[i].classe = ‘1’
            Entao salclasse ß salreferencia * 1.3
            Senao salclasse ß salreferencia * 1.9
            Fim_se
            salnormal ß salclasse * cadastro[i].hnormal
            salnormal ß (1.3 * salclasse) * cadastro[i].hextra
            salbruto ß salnormal + salextra
            inss ß 0.08 * salbruto
            salliquido ß salbruto – inss
            Escreva (“NUMERO DE INSCRICAO: “, cadastro[i].inscricao , “NOME: “ , cadastro[i].nome)
            Escreva (“SALARIO HORAS NORMAIS: “, salnormal)
            Escreva (“SALARIO HORAS EXTRAS: “, salextra)
            Escreva (“DEDUCAO INSS: “, inss)
            Escreva (“SALARIO LIQUIDO: “, salliquido)
      Fim_para
Fim

Código implementado no Dev-C++ 4.9.9.2


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

using namespace std;

struct ficha //declaração do tipo registro
       {
       char classe, nome[20];
       int inscricao, hnormal, hextra;
       };

int main()
{
    ficha cadastro[50]; //declaração do vetor cadastro do tipo ficha
    float salreferencia, salclasse, inss, salnormal, salextra, salbruto, salliquido;
    int i, q, len;
    char op;
    q = 0;
    do //leitura dos dados dos funcionários
        {
        cout << " >>>>>>>>>>>>> PROGRAMA FOLHA DE PAGAMENTO <<<<<<<<<<<<< " << "\n\n";
        cout << "\t\t" << "CADASTRO DE FUNCIONARIOS" << "\n\n";
        cout << "Inscricao: ";
        cin >> cadastro[q].inscricao;
        cin.sync();
        cout << "Nome: ";
        gets(cadastro[q].nome);
        cout << "Classe (1 ou 2): ";
        cin >> cadastro[q].classe;
        while (!((cadastro[q].classe == '1') || (cadastro[q].classe == '2'))) //verificação de classe inválida
              {
              cout << "\n" << "CLASSE INVALIDA" << endl;
              cout << "\n" << "Classe (1 ou 2): ";
              cin >> cadastro[q].classe;
              }
        cout << "Horas normais: ";
        cin >> cadastro[q].hnormal;
        cout << "Horas extras: ";
        cin >> cadastro[q].hextra;
        q = q + 1;
        cout << "\n" << "Existem outros funcionarios (s/n)?";
        cin >> op;
        system("cls");
        }
    while (op == 's');
    cout << " >>>>>>>>>>>>> PROGRAMA FOLHA DE PAGAMENTO <<<<<<<<<<<<< " << "\n\n";
    salreferencia = 0;
    cout << "Salario por hora trabalhada em R$: "; //leitura do salário de referência
    cin >> salreferencia;
    cout << "\n\n" << "\t\t" << "EMISSAO DO CONTRACHEQUE";
    for (i = 0; i < q; i++) //emissão do contracheque
        {
        salclasse = inss = salnormal = salextra = salbruto = salliquido = 0;
        if (cadastro[i].classe == '1') //verificação da classe
           {
           salclasse = (salreferencia * 1.3);
           }
        else
            {
            salclasse = (salreferencia * 1.9);
            }
        salnormal = salclasse * cadastro[i].hnormal; //cálculo do salário horas normais
        salextra = (1.3 * salclasse) * cadastro[i].hextra; //cálculo do salário horas extras
        salbruto = salnormal + salextra; //cálculo do salário bruto
        inss = (0.08 * salbruto); //cálculo da dedução do inss
        salliquido = salbruto - inss; //cálculo do salário líquido
        cout << "\n\n";
        cout << " NUMERO DE INSCRICAO: " << cadastro[i].inscricao << "\t" << "NOME: ";
        cout << cadastro[i].nome << endl;
        cout << " SALARIO HORAS NORMAIS: R$ " << salnormal << endl;
        cout << " SALARIO HORAS EXTRAS: R$ " << salextra << endl;
        cout << " DEDUCAO INSS: R$ " << inss << endl;
        cout << "\t" << "SALARIO LIQUIDO: R$ " << salliquido << endl;
        cout << "\n";
        system("PAUSE");
        }
    system("cls");
    cout << "\n";
    cout << " ********** OBRIGADO POR ESCOLHER ESTE SOFTWARE ********** ";
    cout << "\n\n";
    system("PAUSE");
}

Registros - Exercício Complementar 1

Resolução dos Problemas da Apostila de Registros

Repare que este problema é semelhante ao exercício 4 resolvido no post: Vetores - Aula de Programação de 15/05. A diferença está em como se armazena a tabela em uma estrutura do tipo registro.

Exercício Complementar 1



1.   Um armazém trabalha com 10 mercadorias diferentes identificadas pelos números inteiros de 1 a 10. O dono do armazém anota a quantidade vendida de cada mercadoria durante o mês. Ele tem uma tabela que indica para cada mercadoria o preço de vendida. Escrever o programa para ler e depois imprimir os dados de cada mercadoria em uma linha diferente e depois  o faturamento mensal do armazém. O preço de cada mercadoria é fornecido seguido pelos números das mercadorias e as quantidades vendidas. Quando uma mercadoria não tiver nenhuma vendida, é informado o valor zero no lugar de quantidade vendida.

Algoritmo


Programa Armazem
Tipo
      estoque = registro
            quantidade: inteiro
            preco: real
      Fim_registro
Var
      Declare mercadoria: vetor[1..10] de estoque
      Declare faturamento: real
      Declare i: inteiro
Inicio
      faturamento ß 0
      Para i ß 1 até 10 Faça
      Inicio_para
            Leia (mercadoria[i].quantidade)
            Leia (mercadoria[i].preco)
      Fim_para
      Para i ß 1 até 10 Faça
      Inicio_para
            Escreva (mercadoria[i].preco, “ - “ , i+1 , “ - “ , mercadoria[i].quantidade)
            faturamento ß faturamento + (mercadoria[i].quantidade * mercadoria[i].preco)
      Fim_para
      Escreva (“Faturamento: “, faturamento)
Fim

Código implementado no Dev-C++ 4.9.9.2


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

using namespace std;

struct estoque //declaração do tipo estoque
       {
       int quantidade;
       float preco;
       };

int main()
{
    estoque mercadoria[10]; //declaração do vetor mercadoria do tipo estoque
    float faturamento;
    int i;
    faturamento = 0;
    cout << " >>>>>>>>>> PROGRAMA ARMAZEM <<<<<<<<<< " << "\n\n";
    cout << "TABELA DE VENDAS" << "\n\n";
    for (i = 0; i < 10; i++) //leitura dos dados de entrada da tabela
        {
        cout << "MERCADORIA " << i + 1 << "\n";
        cout << "Digite a quantidade da vendida: ";
        cin >> mercadoria[i].quantidade;
        cout << "Digite o preco em R$: ";
        cin >> mercadoria[i].preco;
        cout << "\n";
        }
    system("cls");
    cout << " >>>>>>>>>> PROGRAMA ARMAZEM <<<<<<<<<< " << "\n\n";
    cout << "RELATORIO MENSAL DE VENDAS" << "\n\n";
    for (i = 0; i < 10; i++) //impressão dos dados da tabela
        {
        cout << "R$ " << mercadoria[i].preco << " - MERCADORIA " << i + 1;
        cout << " - " << mercadoria[i].quantidade << " UNIDADES VENDIDAS." << endl;
        faturamento = faturamento + (mercadoria[i].quantidade*mercadoria[i].preco);
        }
    cout << "\n\n" << "O faturamento mensal foi de R$ " << faturamento << "\n\n";   
    system("PAUSE");
}

Registros - Exercício 3

Resolução dos Problemas da Apostila de Registros


Exercício 3


Em certo município vários proprietários de imóveis estão em atraso com o pagamento  do imposto predial. Escreva um programa que calcule e escreva o valor da multa a ser paga por estes proprietários considerando que:
·      os dados de cada imóvel: identificação (literal), valor do imposto e número de meses em atraso;
·      as multas devem ser calculadas a partir do valor do imposto e de acordo com a seguinte tabela:

Valor do imposto
% por mês em atraso
até R$ 500
1
de R$ 501   até R$ 1800
2
de R$ 1801 até R$ 5000
4
de R$ 5001 até R$ 12000
7
acima de R$ 12000
10


·      o último registro, que não deve ser considerado, contém identificação do imóvel igual a vazio;
·      na saída deverão ser impressos: identificação do imóvel, valor do imposto, meses em atraso e a multa a ser paga.

Algoritmo


Programa Imposto;
Tipo
    registro = REGISTRO            {DEFINICAO DO TIPO REGISTRO}
             limiteinf : inteiro;           {QUE REPRESENTA A TABELA}
             limitesup : inteiro;         { DE MULTAS}
             perc : inteiro;
          FIM;
    propriedade = REGISTRO            {DEFINICAO DO TIPO PROPRIEDADE}
             ident: literal[8];                   {QUE REPRESENTA OS DADOS DE CADA}
             imposto : real;                    {IMOVEL}
             mesesat : inteiro;
          FIM;
Var
    tabela: vetor [1..5] de registro;
    imovel : propriedade;
    i,j : inteiro;
    multa : real;
INICIO
    escreva ('LEITURA DA TABELA PARA A APLICACAO DE MULTAS');
    Para iß1 até 5 faça
    Inicio_para
        escreva('Limite inferior :');
        leia (tabela[i].limiteinf);
        escreva('Limite superior :');
        leia (tabela[i].limitesup);
        escreva('Percentual :');
        leia (tabela[i].perc);   
    Fim_para;
    escreva ('LEITURA DO IMOVEL');
    escreva('Identificacao : ');
    leia (imovel.ident);
    Se imovel.ident <> ' ' então
    Inicio_se
            escreva('Imposto : ');
            leia (imovel.imposto);
            escreva('Meses em Atraso : ');
            leia (imovel.mesesat);
    Fim_se;
    Enquanto (imovel.ident <> ' ') faça
    Inicio_enquanto
        i ß5;
        Enquanto (imovel.imposto < tabela[i].limiteinf) AND (i>=0) faça
            ißi-1;
        multa<--tabela[i].perc/100 * (imovel.imposto) * (imovel.mesesat);
        escreva ('Identificacao  : ',imovel.ident);
        escreva ('Imposto : ',imovel.imposto);
        escreva ('Multa : ',multa);
        escreva ('LEITURA DO IMOVEL');
        escreva('Identificacao : ');
        leia (imovel.ident);
        Se imovel.ident <> ' ' entao
        Inicio_se
            escreva('Imposto : ');
            leia (imovel.imposto);
            escreva('Meses em Atraso : ');
            leia (imovel.mesesat);
       Fim_se;
    Fim_se;
FIM.

Código implementado no Dev-C++ 4.9.9.2


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

using namespace std;

struct multas //estrutura do tipo registro que representa a tabela de multas
       {
       float limiteinf, limitesup, perc;
       };
       
struct propriedade //estrutura do tipo propriedade que representa dados do imóvel
       {
       char ident[15];
       float imposto;
       int mesesat;
       };
      
int main()
{
    multas tabela[5]; //declaração do vetor tabela do tipo multas
    propriedade imovel; //declaração da variável imóvel do tipo propriedade
    int i;
    float multa;
    cout << "PROGRAMA CALCULO DE IMPOSTO PREDIAL DEVIDO" << "\n\n";
    for (i = 0; i < 5; i++) //leitura da tabela de multas
        {
        cout << i + 1 << "o. FAIXA DE TRIBUTACAO" << "\n\n";
        cout << "Limite inferior em R$: ";
        cin >> tabela[i].limiteinf;
        cout << "Limite superior em R$: ";
        cin >> tabela[i].limitesup;
        cout << "Percentual por mes em atraso: ";
        cin >> tabela[i].perc;
        cout << "\n";
        }
    system("cls");
    cout << "\n" << "TABELA DE TRIBUTACAO" << "\n\n";
    for (i = 0; i < 5; i++) //impressão da tabela de multas para referência
        {
        cout << " De R$ " << tabela[i].limiteinf << " ate R$ ";
        cout << tabela[i].limitesup << " = ";
        cout << tabela[i].perc << "% por mes." << endl;
        }
    cin.sync(); //sincronização do buffer de entrada de dados
    cout << "\n" << "LEITURA DO IMOVEL" << "\n\n";
    cout << "Identificacao do imovel: ";
    gets(imovel.ident);
    while (strcmp(imovel.ident,"\0")) //enquanto (identidade do imóvel ≠ de vazio) faça
          {
          cout << "Valor do imposto em R$: ";
          cin >> imovel.imposto;
          for (i = 0; i < 5; i++) //comparação dos valores do imóvel com valores da tabela
              {
              if ((imovel.imposto >= tabela[i].limiteinf) && (imovel.imposto <= tabela[i].limitesup))     
                 {
                 cout << "Meses em atraso: ";
                 cin >> imovel.mesesat;
                 multa = (tabela[i].perc/100)*imovel.imposto*imovel.mesesat; //cálculo multa
                 cout << "\n\n" << "SITUACAO DO IMOVEL " << imovel.ident << "\n\n";
                 cout << "Imposto devido: R$ " << imovel.imposto << endl;
                 cout << "Mese em atraso: " << imovel.mesesat << endl;
                 cout << "Multa pagar: R$ " << multa << "\n\n";
                 }
              }
          system("PAUSE");
          cin.sync();
          cout << "\n\n" << "LEITURA DO IMOVEL" << "\n\n";
          cout << "Identificacao do imovel: ";
          gets(imovel.ident);
          }
    cout << "\n\n";
    system("PAUSE");
}

Registros - Exercícios 1 e 2

Resolução dos Problemas da Apostila de Registros


Exercício 1


1 - Faça um programa que leia as informações (iguais a do exemplo acima) de 1 funcionário e as imprima na tela. Obs. Leia as informações de um funcionário, limpe a tela e imprima as suas informações;

Algoritmo


Programa Registro;
Tipo
ficha = registro                          {DECLARACAO DO REGISTRO}
                inscrição : inteiro;
               nome : literal[30];
                rua : literal[45];
                numero : inteiro;
                cep : inteiro;
                cpf : literal[15];
                sexo : char;
                data_nasc : literal[8];
                depfimente : char;
                horas_trab : real;
             fim_registro;
Inicio
    escreva('Inscricao: '); leia (ficha.inscricao);
    escreva('Nome: '); leia (ficha.nome);
    escreva('Rua: '); leia (ficha.rua);
    escreva('Numero: '); leia (ficha.numero);      {LEITURA DOS CAMPOS}
    escreva('CEP: '); leia (ficha.cep);                  { DO REGISTRO}
    escreva('CPF: '); leia (ficha.CPF);
    escreva('Sexo: '); leia (ficha.sexo);
    escreva('Data de Nascimento: '); leia (ficha.data_nasc);
    escreva('Tem depfimentes (S/N): '); leia (ficha.depfimente);
    escreva('Horas Trabalhadas: '); leia (ficha.horas_trab);

    escreva ('FICHA LIDA');
    escreva ('Inscricao: ',ficha.inscricao);
    escreva ('Nome: ',ficha.nome);                     {IMPRESSAO}
    escreva ('Rua: ',ficha.rua);               
    escreva ('Numero: ',ficha.numero);
    escreva ('CEP: ',ficha.cep);
    escreva ('CPF: ',ficha.CPF);
    escreva ('Sexo: ',ficha.sexo);
    escreva ('Data de Nascimento: ',ficha.data_nasc);
    escreva ('Tem depfimentes (S/N): ',ficha.depfimente);
    escreva ('Horas Trabalhadas: ',ficha.horas_trab);
Fim.

Código implementado no Dev-C++ 4.9.9.2


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

using namespace std;

struct cadastro //declaração do tipo registro
       {
       char sexo, dep, nome[30], rua[45], cpf[15], nascimento[8];
       float htrabalhadas;
       int inscricao, numero, cep;
       };

int main()
{
    cadastro ficha; //variável ficha do tipo registro
    cout << "Inscricao: "; //leitura dos campos do registro ficha
    cin >> ficha.inscricao;
    cin.sync(); //sincronização do buffer de entrada de dados
    cout << "Nome: ";
    gets(ficha.nome);
    cout << "Rua: ";
    gets(ficha.rua);
    cout << "Numero: ";
    cin >> ficha.numero;
    cout << "CEP: ";
    cin >> ficha.cep;
    cout << "CPF: ";
    cin >> ficha.cpf;
    cout << "Sexo: ";
    cin >> ficha.sexo;
    cout << "Data de nascimento: ";
    cin >> ficha.nascimento;
    cout << "Dependentes(s/n): ";
    cin >> ficha.dep;
    cout << "Horas trabalhadas: ";
    cin >> ficha.htrabalhadas;
    system("cls");
    cout << "FICHA LIDA" << "\n\n"; //impressão dos campos do registro ficha
    cout << "Inscricao: " << ficha.inscricao << endl;
    cout << "Nome: " << ficha.nome << endl;
    cout << "Rua: " << ficha.rua << endl;
    cout << "Numero: " << ficha.numero << endl;
    cout << "CEP: " << ficha.cep << endl;
    cout << "CPF: " << ficha.cpf << endl;
    cout << "Sexo: " << ficha.sexo << endl;
    cout << "Data de nascimento: " << ficha.nascimento << endl;
    cout << "Dependentes: " << ficha.dep << endl;
    cout << "Horas trabalhadas: " << ficha.htrabalhadas << "\n\n";
    system("PAUSE");
}

Exercício 2


2 - Escrever um programa que, dados 20 CÓDIGOS DE PROFISSÃO, emita o NOME das profissões correspondentes. Como estrutura de dados, devemos ter um vetor com 20 posições, onde cada posição refere-se à um registro com dois campos: CODIGO e NOME.

Algoritmo


Programa Profissoes;
Tipo
            registro = REGISTRO                {TIPO QUE REPRESENTA}
                        codigo: inteiro;                {A TABELA DE CODIGOS E PROFISSOES}
                        nome: literal[8];
            FIM;
Var
     tabela: vetor[1..20] de registro;
     codigodesejado, i, k: inteiro;
Inicio
    Escreva('LEITURA DOS CODIGOS DAS PROFISSOES');
    Para iß1 até 20 Faça
    Inicio
        escreva('codigo  : ');
        leia (tabela[i].codigo);
        escreva('nome    : ');
        leia (tabela[i].nome);
    Fim;
    escreva ('IDENTIFICACAO DE CODIGOS DAS PROFISSOES');
    Para iß1 até 10 Faça
    Inicio
        escreva('codigo  desejado: ');
        leia (codigodesejado);
        kß1;
        Enquanto (tabela[k].codigo <> codigodesejado) AND (k<20) do
            k<--k+1;
        Se tabela[k].codigo = codigodesejado então
        Inicio
            escreva ('nome: ',tabela[k].nome);
        Fim
        Senão
        Inicio
            escreva ('CODIGO INVALIDO');
        Fim;
    Fim;
Fim.

Código implementado no Dev-C++ 4.9.9.2


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

using namespace std;

struct profissao //declaração do tipo registro
       {
       int codigo;
       char nome[15];
       };

int main()
{
    profissao tabela[20]; //vetor tabela do tipo profissão
    int i, k, codigodesejado;
    char codigocerto;
    cout << "LEITURA DOS CODIGOS DAS PROFISSOES" << "\n\n";
    for (i = 0; i < 20; i++) //leitura dos dados das profissões
        {
        cout << "Codigo: ";
        cin >> tabela[i].codigo;
        cout << "Nome: ";
        cin >> tabela[i].nome;
        }
    cout << "\n" << "IDENTIFICACAO DE CODIGOS DAS PROFISSOES" << "\n\n";
    for (i = 0; i < 20; i++) //identificação dos códigos das profissões
        {
        cout << "Codigo desejado: ";
        cin >> codigodesejado;
        cout << "\n";
        codigocerto = 'n';
        k = 0;
        while (k < 20)
            {
            if (tabela[k].codigo == codigodesejado) //impressão dos resultados
               {
               codigocerto = 's';
               cout << "Nome: " << tabela[k].nome;
               }
            k = k + 1;
            }
        if (codigocerto == 'n') //verificação de código inexistente
           {
           cout << "CODIGO INVALIDO";
           }
        cout << "\n\n";
        }
    system("PAUSE");
}

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");
}