domingo, 23 de janeiro de 2011

Uso de métodos virtuais em C++

#include <iostream>
using namespace std;

class Base{
public:
   virtual void print(){
      cout << "Base\n";
   }
};

class Derivada:public Base{
   public:
   void print(){
      cout << "Derivada\n";
   }
};

void main(){
   Base base;
   Base *b;
   Derivada d;
   b = &base;
   b->print();
   b = &d;
   b->print();

   system("pause");


Exemplo de um método Remover em c++

void removerObjecto(const string &o){
     Class *c=findObjecto(x);
     if(c){
           classes.erase(c);
           delete c;
     }
}

/* Antes de implementar este método deverá implementar o método find() */

Gestão de Salas em c++

#include <iostream>
#include <string>
#include "Coleccao.h"
using namespace std;

class Sala{
private:
    string identificacao;
    int lotacao;
    Coleccao<Sala> salas;
public:
    Sala(string i, int l){
        identificacao=i;
        lotacao=l;
    }

    string getSala(){
        return(identificacao);
    }

    void setSala(string i, int l){
            identificacao=i;
            lotacao=l;
    }

    void print(){
        cout<<identificacao<<", lotacao: "<<lotacao<<endl;
    }

    /*void listarSalas(){
        cout<<"Lista de salas: \n";
        Coleccao<Sala>::iterator it;
        for(it=salas.begin(); it!=salas.end(); it++)
            cout<<'\t'<<it->getSala()<<"\n";
    }*/
};

class UnidadeC{
private:
    string nome;
    int numAlunos;
public:
    UnidadeC(string n, int na){
        nome=n;
        numAlunos=na;
    }

    string getUnidadeC(){
        return(nome);
    }

    void setUnidadeC(string n, int na){
        nome=n;
        numAlunos=na;
    }
};

class Sala;
class UnidadeC;
class Aula{
private:
    string hora;
    Sala *salas;
    UnidadeC *unidadesc;
public:
    Aula(string h){
        hora=h;
    }

    string getAula(){
        return(hora);
    }

    void setAula(string h){
        hora=h;
    }
};

void main(){

    Sala s1("Sala 1", 30);
    Aula a1("14:00");
    UnidadeC u1("POO", 23);

    cout<<s1.getSala()<<endl;

    s1.setSala("Sala 2", 40);
    cout<<"Nome da Sala alterado para: "<<s1.getSala()<<endl;

    cout<<"Aula de "<<u1.getUnidadeC()<<" as "<<a1.getAula()<<", leccionada na "<<s1.getSala()<<endl;

    s1.print();
    cout<<endl;

    system("pause");
}


Saída Standard:

sábado, 22 de janeiro de 2011

Troca de variáveis em c++, do tipo int, double e string.

Primeiro implementar o ficheiro "Troca.h"

template<class T>
    void troca(T &a, T &b){
        T aux;
        aux = a;
        a = b;
        b = aux;
    }

De seguida implementar o ficheiro "User.cpp"

#include<iostream>
#include<string>
#include"troca.h"

using namespace std;

void main(){
    int n, k;
    cout<<"Insira dois inteiros: ";
    cin>>n>>k;
    troca(n, k);
    cout<<"Depois da troca: "<<n<< ' '<<k<<endl;

    double x, y;
    cout<<"Insira dois reais: ";
    cin>>x>>y;
    troca(x, y);
    cout<<"Depois da troca: "<<x<< ' '<<y<<endl;

    string s1, s2;
    cout<<"Insira duas palavras: ";
    cin>>s1>>s2;
    troca(s1, s2);
    cout<<"Depois da troca: "<<s1<< ' '<<s2<<endl;

    system("pause");
}

Saída Standard:


Importante: Os dois ficheiros devem estar incluídos num só projecto.

quinta-feira, 20 de janeiro de 2011

Exemplo de uma Herança em C++

#include<iostream>
#include<string>

using namespace std;

class Animal{
    string nome;
public:
    Animal(string n):nome(n){}

    virtual string Especie() const=0;

    static int Compativeis(const Animal &a1, const Animal &a2){
        return a1.Especie()==a2.Especie();
    }
};

class Gato: public Animal{
public:
    Gato(string n):Animal(n){}

    string Especie()const{
        return("Gato");
    }

};

class Cao: public Animal{
public:
    Cao(string n):Animal(n){}

    string Especie()const{
        return("Cao");
    }
};

void main(){
    Gato *g1=new Gato("Mia");
    Cao *c1=new Cao("Nely");
    cout<<g1->Especie()<<endl;
    cout<<c1->Especie()<<endl;

    if(Animal::Compativeis(*g1, *c1))
        cout<<"Compativeis"<<endl;
    else
        cout<<"Incompativeis"<<endl;
    delete g1;
    delete c1;


    system("pause");
}

Saída Standard:

quarta-feira, 19 de janeiro de 2011

Programa em C que faz uso dos parâmetros argv e argc


#include <stdio.h>
#include <stdlib.h>
void main(int argc, char *argv[])
{
int mes;
char *nomemes [] = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio",
                    "Junho", "Julho", "Agosto", "Setembro", "Outubro",
                    "Novembro", "Dezembro"};
if(argc == 4) /* Testa se o numero de parametros fornecidos esta' correto
                o primeiro parametro e' o nome do programa, o segundo o dia
                o terceiro o mes e o quarto os dois ultimos algarismos do ano */
{
    mes = atoi(argv[2]);  /* argv contem strings. A string referente ao mes deve ser
                             transformada em um numero inteiro. A funcao atoi esta
                             sendo usada para isto: recebe a string e transforma no
                             inteiro equivalente */
    if (mes<1 || mes>12)  /* Testa se o mes e' valido */
        printf("Erro!\nUso: data dia mes ano, todos inteiros");
    else
      printf("\n%s de %s de 19%s", argv[1], nomemes[mes-1], argv[3]);
}
else printf("Erro!\nUso: data dia mes ano, todos inteiros");
}

terça-feira, 18 de janeiro de 2011

Programa em C++ que define um contador

#include <iostream>
using namespace std;

class Contador{
    int valor;
public:
    Contador(){valor=0;}
    Contador(int v){valor = v;}

    void incrementar(){
        valor++;
    }

    void decrementar(){
        valor--;
    }
   
    int get(){
        return valor;
    }
};

void main(){
    Contador c1;
    Contador c2(10);
    c1.incrementar();
    c2.incrementar();
    c1.incrementar();
    c1.incrementar();
    c2.incrementar();

    Contador c3(c1);
    c1.decrementar();

    cout<<c1.get()<<"\n";
    cout<<c2.get()<<"\n";
    cout<<c3.get()<<"\n";

    system("pause");
}