1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Duvidas em C++

Discussão em 'Programação' iniciada por matine206, 3 de Fevereiro de 2009. (Respostas: 24; Visualizações: 1097)

  1. Boas de seguida cologo um codigo c++ para os quais preciso d ajuda a identificar os erros e as proprias soluções!!!
    Agradeço ajuda!!
    apresento 3 exercicos se me poderem ajudar paera cada um agradeço!!!

    Exercicio 1---------------------------------

    class Base {
    public:
    int operator == ( const char *);
    //...
    };
    class Dedived : public Base {
    public:
    int operator == (int);
    //...
    };

    main (){
    Derived d1;
    if ( d1 == 1024 && d1 == " Ana Raquel")
    //...
    }



    Exercicio 2-----------------------------------


    class X {

    public:
    X();
    X(int);
    X(const X&);
    X& operator=(const X&);
    // ...
    };
    class Y {
    public:
    Y();
    private:
    X x;
    };
    //...
    Y::Y() { x=0; }
    //...


    Exercicio 3- --------------------------------------------


    class Word {
    public:
    Word(char *);
    //...
    private:
    string name;
    int occurs;
    };

    main {
    //...
    Word noun ("book");
    Word verb = noun;
    //...
    }
     
    Última edição: 3 de Fevereiro de 2009
  2. IComeFromBehind

    IComeFromBehind Power Member

    No primeiro exercício o operador da classe base não é visível para a classe derivada.

    No segundo exercício não tens problemas, há uma coerção de int pra X pelo construtor X(int)

    No terceiro exercício, não tens nada mal, o compilador gera-te um operador = por defeito.

    Isto com C++ é muito difícil ver o que é que são erros e o que é que é comportamento desejado lol.
     
  3. oi

    é assim pelo k tenho tentado resolver surge-m as seguintes respostas! mas nao sei s esta certo!
    (1): Forma errada de declarar a sobrecarga do operador de compraçao (==), o operador da classe base não é visível para a classe derivada
    (2): ?????
    (3): Penso k esta relacionado operador de igualdade.ou a falta de implementação de um copy construter

    se me puderem ajudar mais agradeço e muito

    IComeFromBehind como disses-t no 3 exemplo k é utilizado um operador = por defeito, mas penso k isso esta incorrecto, pelo k seias classes nao tem operador por defeito, apenas construtores, construtores por copia e destrutores... agradecia mais resposta e obrigado a todos
     
  4. Granadafeup

    Granadafeup Power Member

    Operadores de copia e constructores de copia têm uma implementação mesmo que não os declares. Ve abaixo

    PS: As tags Code estão disponiveis por uma razão
     
  5. ooo

    ok
    entendi!!!
    mas k problema pode isso causar no exercicio? então
     
  6. mais

    EOk obrigado pela ajuda!! e nestes alguem m pode ajudar k porblemas tem o codigo e soluções..
    Exercicio 4 -------------------------------------------------------
    class target_class{
    friend class friend_class;
    private:
    double salary;
    int rating;
    };
    target_class classA;
    int main () {
    char *p = (char *) &classA;
    classA.rating=5;
    int *pd = (int*) (p+sizeof(double));
    *pd = 5;
    return 0;
    }

    exercicio 5........................................
    class Pessoa {
    private:
    std::string nome;
    std::string morada;
    public:
    Pessoa();
    virtual ~Pessoa();
    //..
    };
    class Aluno: public Pessoa {
    private:
    std::string nomeEscola;
    std::string moradaEscola;
    public:
    Aluno();
    ~Aluno();
    //...
    };
    int main ( int argc, char** argv) {
    //...
    bool validaAluno (Aluno s);
    Aluno fourrier;
    bool fourrierIsOK = validaAluno(fourrier);
    //...
    }
     
  7. Duvida num exercicio C++!Urgente

    Boas!É o seguinte eu estou na universidade num curso no isel que tenho uma cadeira fundamentos de programaçao,estou ainda no primeiro ano do curso e amanha vou ao ultimo exame possivel de fazer a cadeira senao so para o proximo semestre lol.
    E entao tenho duvidas neste exercicio(no visual studio da 33 o valor final,e ja tive a passar para binario hexadecimal octal sei la mais o que e fazer trocas e mais trocas sabendo que o simbolo "|" significa "ou"-"+" e n encontro a soluçao resolvendo ha mao pois os exames é tudo escrito)

    #include<stdio.h>
    void main()
    {
    unsignedint x=49;
    unsignedint y=35;
    unsignedint z;
    z=x|y;
    printf("O valor de z eh igual a --> %x",z);
    printf("\n\n\n");
    }

    agradecia imenso a vossa ajuda fico a espera pessoal porque eu ate curto bues de c++ lol apesar de n perceber la mt!Obrigado
     
  8. Baderous

    Baderous Banido

    Esse operador | (OU lógico) não é o mesmo que este: || (OU condicional). Basicamente aplica o OU bit a bit entre esses 2 números.
    49 = 110001
    35 = 100011
    49|35 = 110001|100011 = 110011 = 51 = 0x33
     
  9. Obrigado pela atencao e pela rapidez a que me respondeste ha outra questao!
    Mas fikei com outra duvida,sekalhar é ignorancia minha,mas n entendi bem o que quizeste dizer com:"Basicamente aplica o OU bit a bit entre esses 2 números",logo n entendi o ultimo resultado "0x33" mas o resto entendi pk ate ai ja tinha chegado lol.
    Espero atentamente a uma outra resposta tua!Obrigadao meu!
     
  10. Ja agora uma outra duvida para ficar esclarecido,o que significa "%X","%d","%c" neste exercicio que te coloquei a duvida?é que alterando para "%d" ou "%c" o valor final vai tomar outro resultado!
    Obrigado mais uma vez!
     
  11. Baderous

    Baderous Banido

    51 em decimal, representa-se por 0x33 em hexadecimal. O OU bit a bit é fazer a operação OR, basicamente essa operação só dá valor 0 quando os seus 2 argumentos têm o valor 0, em todos os outros casos dá 1.
    OR 0 0 = 0
    OR 0 1 = 1
    OR 1 0 = 1
    OR 1 1 = 1
    O que se faz naquela operação é aplicar a função OR aos bits da mesma ordem dos 2 números.
    %x -> valor inteiro em hexadecimal
    %d -> valor inteiro em decimal
    %c -> caracter
    http://www.cplusplus.com/reference/clibrary/cstdio/printf.html
     
  12. Estas a ser um porreiraço a tirarme estas duvidas lol.
    Mas olha meu so mesmo para ver se percebi isto confirma-me se o que vou fazer aqui esta certo(se n tiver eu desisto de te tirar mais esta duvida meu,lol):

    52 = 110100
    47 = 101111
    52|47 = 110100|101111 = 111111 = 63 = 0x1515 ou fica 0x15?
     
  13. Baderous

    Baderous Banido

    Porquê 15? Isso dá 0x3F.
     
  14. Ha ja percebi meu!lol
    Entao este fica:

    60 = 111100
    53 = 111101
    60|53 = 111100|111101 = 111101 = 61 = 0x3D ne?lol
     
  15. Mas olha meu muito obrigado acerio és um bacano por me tirares essas duvidas todas!
    Senao fosses tu tava lixado lol.
     
  16. Baderous

    Baderous Banido

    Ya, é isso. Props.
     
  17. olha meu senao fosse pedir mt arranjavas-me o teu mail?lol
    Pareces ser um gajo bacano!
    Senao quizeres arranjar é na boa meu,é kt.
     
  18. Baderous

    Baderous Banido

    Qualquer dúvida coloca aqui que o povo ajuda no que souber.
     
  19. Meu eu tenho mais umas duvidas meu, mas tb n kero estar a abusar de ti meu tas a ver?
    Tipo eu neste exercicio que te vou por agora n percebi mesmo nada que me saio no exame anterior que é:

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
    FILE *fe;
    char matriz[1][1],i,j;


    for(i=0;i<1;i++){
    for(j=0;j<1;j++){
    matriz [j]=
    '1';
    printf(
    "%c", matriz[j]);
    }
    }


    fe=fopen(
    "c:\\fexame.txt","r");
    if(fe==NULL)
    {
    printf(
    "\nOficheiro nao existe no caminho especificado.");
    exit(1);
    }
    while(!feof(fe))
    {
    fscanf(fe,
    "%d",&matriz);
    printf(
    "%d\n",matriz);
    }
    fclose(fe);
    }

    E dizem:Considere que o ficheiro fexame.txt contém os valores referentes aos elementos de uma matriz de 4x4 a que correspondem os seguintes dados,lidos coluna a coluna:

    1 2 0 3 0 0 4 0 5 0 6 0 7 8 0 9

    Baseando-se no programa abaixo apresentando, MODIFIQUE-O, de modo a utilizar um vector bidimensional em vez da variavel w e apresentar no ecran esse vector bidimensional (matriz), disposto da seguinte forma:

    1 0 5 7
    2 0 0 8
    0 4 6 0
    3 0 0 9

    Esse é o enunciado do exercicio meu,tipo eu ja criei o ficheiro com esses dados e tentei polos desta maneira mas n consegui meu apareciame bues numeros iguais com bues colunas,eu n te vou pedir para me fazeres o exercicio mas se conseguisses arranjar uma teoria e uns exemplos de vectores bidimensionais de prefeencia em tuga,senao em ingles tb da para safar.

    Obrigado por tudo meu!
     
  20. Baderous

    Baderous Banido

    Quanto ao exercício, o que tens de fazer é criar uma matriz 4x4, abrires o ficheiro para leitura, e ires lendo com o fscanf esses valores. Tens de ter em atenção que vais preencher a matriz coluna a coluna, logo precisas de 2 ciclos for encadeados. O exterior percorre a variável respeitante à coluna e o interior percorre a variável que itera sobre as linhas. A cada 4 valores que leias, passas para a próxima coluna, logo precisas de ter uma variável que seja incrementada em cada leitura feita, sendo que quando mudas de linha, voltas a inicializar essa variável a 0.
     

Partilhar esta Página