Duvidas em C++

matine206

Membro
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:
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.
 
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
 
Operadores de copia e constructores de copia têm uma implementação mesmo que não os declares. Ve abaixo

As well as a class includes a default constructor and a copy constructor even if they are not declared, it also includes a default definition for the assignment operator (=) with the class itself as parameter. The behavior which is defined by default is to copy the whole content of the data members of the object passed as argument (the one at the right side of the sign) to the one at the left side:
Código:
CVector d (2,3);
CVector e;
e = d;           // copy assignment operator
The copy assignment operator function is the only operator member function implemented by default. Of course, you can redefine it to any other functionality that you want, like for example, copy only certain class members or perform additional initialization procedures.
The overload of operators does not force its operation to bear a relation to the mathematical or usual meaning of the operator, although it is recommended. For example, the code may not be very intuitive if you use operator + to subtract two classes or operator== to fill with zeros a class, although it is perfectly possible to do so.

From: http://www.cplusplus.com/doc/tutorial/classes2.html
PS: As tags Code estão disponiveis por uma razão
 
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);
//...
}
 
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
 
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
 
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

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!
 
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!
 
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
 
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

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?
 
Qualquer dúvida coloca aqui que o povo ajuda no que souber.

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!
 
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.
 
Back
Topo