C++ help detesto o void --'

Interich

Power Member
boas tou com um trabalho de C++ em que pede para inserir void. parte do c++ que detesto
sera que me conseguem ajudar?
o trabalho que a stora pediu tem a seguinte descriçao

Sabendo que um ponto é constituido por três coordenadas e uma recta pode ser definida por dois pontos. desenvolva um programa que implemente as seguintes estruturas e funções.

1. Defina as estruturas ponto e recta;

2. Desenvolva uma função que permita definir um ponto. A função deverá ter o seguinte protótipo: void inserirPonto(Ponto &p);

3. Desenvolva uma função que mostre o valor das coordenadas de um ponto. A função deverá ter o seguinte protótipo: void imprimirPonto(Ponto p);

4. Desenvolva uma função que permita alterar valor das coordenadas de um ponto. A função devera ter o seguinte protótipo: void alterarPonto(Ponto *p);

5. Desenvolva uma função que permita definir uma recta. A função deverá ter o seguinte protótipo: void inserirRecta(Recta *r);

6. Desenvolva uma função que mostre o valor das coordenadas dos pontos de uma recta. A função devera ter o seguine protótipo: void inserirRecta(Recta &r);

7. Desenvolva uma função que calcule o comprimento de uma recta. A função deverá ter o seguinte protótipo: doble comprimentoRecta(Recta r);


Ps: eu n tou a pedir para me fazerem o trabalho, apenas para me puderem ajudar a faze-lo.
 
já agora esclarece se é C++ ou apenas C.


se detestas o void então esquece programação... aliás, nao sei qual o motivo da tua birra com o void!


teóricamente parte do problema está mal formulado pois não é uma recta mas sim uma secção de recta... já que estás a defini-la com um comprimento.
 
Última edição:
Como trabalhar com Protótipos:
o exemplo que a wikipedia dá é bastante claro:

Código:
#include <stdio.h>

/* 
 * Se o protótipo é disponibilizado, o compilador irá detectar o erro 
 * na função main(). Se ele é omitido, o erro não será notificado.
 */
[I]int fac(int n);[/I]              /* Protótipo da função */

int [URL="http://pt.wikipedia.org/w/index.php?title=Main_%28fun%C3%A7%C3%A3o%29&action=edit&redlink=1"]main[/URL]() {                 /* Chamada da função */
    [URL="http://pt.wikipedia.org/w/index.php?title=Printf&action=edit&redlink=1"]printf[/URL]("%d\n", fac());   /* ERRO: falta um argumento na chamada de fac */
    return 0;
}

int fac(int n) {             /* Função chamada  */
    if (n == 0) {
        return 1;
    }
    else {
        return n * fac(n - 1);
    }
}
fonte: http://pt.wikipedia.org/wiki/Protótipo_de_função
 
Última edição:
penso que estejas a confundir ainda mais pois o que postaste nao está completo nem relacionado com pontos e rectas.


faz o seguinte, ao desenvolver o teu código (e agora vou supôr que é em C) segue esta estrutura como ponto de partida:

Código:
#include <stdio.h>

/* 
 * descrição do teu código
 * 
 */
[I]

/*[/I] Protótipos das funções */

void imprimirPonto(Ponto p);
void alterarPonto(Ponto *p);
void inserirRecta(Recta *r);
void inserirRecta(Recta &r);
doble comprimentoRecta(Recta r);

 
/* Zona de Código*/

void   [URL="http://pt.wikipedia.org/w/index.php?title=Main_%28fun%C3%A7%C3%A3o%29&action=edit&redlink=1"]main[/URL] (void) {                 /* em alternativa podes usar "int main (void){ ... return 0; }" */
 
    /* introduz aqui o teu código */

}



/* Funções auxiliares */

void imprimirPonto(Ponto p) {
 
    /* introduz aqui o teu código */

}

void alterarPonto(Ponto *p) {
 
    /* introduz aqui o teu código */

}

void inserirRecta(Recta *r) {
 
    /* introduz aqui o teu código */

}

void imprimirPonto(Ponto p) {
 
    /* introduz aqui o teu código */

}

doble comprimentoRecta(Recta r) {
 
    /* introduz aqui o teu código */

}
vê agora o que precisas para definir um ponto e uma recta, assim como trabalhar com ponteiros, leitura e escrita.

por exemplo, podes usar um array de 3 integers para armazenar as coordenadas de um ponto... e basicamente com isto ja tens feitas as funçoes do ponto.
 
Última edição:
Porque é que detestas o void? A única coisa que diz é que a função corre, mas não devolve um valor de tipo nenhum (aka procedimento).

Basicamente tens de fazer o que o m00s disse. Defines as estruturas (com o typedef struct), e depois é fazeres as funções...
 
Última edição:
1º Sabes o que significa void?
2º Se sim, qual a dúvida exactamente?
Se não . . .
3º Pratica para a frente que com a prática dificuldades passam a ser horas a menos no próximo work :)

cumpzz
 
Rapaz, o void não tem nada de assustador. Apenas faz com que um método não tenha que retornar nenhum valor. Por exemplo:

Código:
void inserirRecta(Recta &r)
{
    ...
}

int inserirRecta(Recta &r)
{
    ...
    int n=5;
    return n;
}

float inserirRecta(Recta &r)
{
    ...
    float n=5.4;
    return n;
}

string inserirRecta(Recta &r)
{
    ...
    string nome="LuisFP";
    return nome;
}

bool inserirRecta(Recta &r)
{
    ...
    return true;
}
 
Última edição:
A tua professora é uma besta é que é tanta estupidez junta que ninguém sabe por onde lhe pegar.

i)Em programação orientada aos objectos o que existem são métodos, funções só existem na cabeça das bestas que ainda andam na programação procedimental..

ii) Nesses métodos ninguém entende porque nuns a assinatura tem apontadores e outros referencias.

iii)
5. Desenvolva uma função que permita definir uma recta. A função deverá ter o seguinte protótipo: void inserirRecta(Recta *r);
Ninguem entende muito bem porque é que essa "função" não tem na sua assinatura 1 recta e 2 pontos...

iv)
6. Desenvolva uma função que mostre o valor das coordenadas dos pontos de uma recta. A função devera ter o seguine protótipo: void inserirRecta(Recta &r);
Cumo? uma recta é contituida por uma infinidade de pontos, como é que e possível lista-los a todos?

v)

7. Desenvolva uma função que calcule o comprimento de uma recta. A função deverá ter o seguinte protótipo: doble comprimentoRecta(Recta r);
Temos prémio Nobel da Matemática para a tua professora, pelos avanços que ela consegui em geometria analitica, foi a primeira pessoa a consegui calcular o comprimento de uma recta.


------------------------------------------

Agora passando à parte do teu trabalho tens de fazer isto:

Definir 2 estruturas, (typedef struct) uma chamada ponto (com 3 atributos do tipo double que são as cordenadas de um ponto no espaço (x,y,z)) e uma chamada recta que tem 2 atributos do tipo ponto (a outra estrutura que definiste antriormente).

Depois tens de preparar metodos de acesso á estrutura (1 metodo que te permita definir 1 ponto usando 3 doubles e outro metodo que te permita definir uma recta passando-lhe 2 pontos).

metodos de listaguem (1 metodo para mostrar as cordenadas do ponto e outro metodo para mostrar os pontos que fazem parte da recta -> aqui é importante reutizares o código)

depois é um metodo de calculo de distancia entre 2 pontos no espaço (é só fazeres uma pesquiza na net para encontrares as formulas).

E antes de começares a trabalhar das 1 Rare Candy ao meu pokemon :)
 
Não sejas tão mau com a senhora... bem sabes o que ela quer dizer com recta e pontos da recta. Mas quanto à parte das funções e estruturas...
 
Alguem me pode explicar a diferença entre:
void main ()
e
int main()

É basicamente o mesmo, só que o int main() fica à espera dum inteiro ao fim da sua execução. Tens de colocar a linha return 0; ao fim de tudo, para o programa sair correctamente.
Se não for importante a diferença, usa o void main ()
 
Se usas void main() não retornas nada ao sair do programa. Com int main() tens que retornar um valor (geralmente - return 0; )

Embora ambas funcionem, a implementação mais correcta é int main(). O return do int main() é util quando por exemplo um programa chama outro. Quando o programa A chama o programa B, uma maneira de o programa A tem de saber se o B foi bem executado é através do valor de retorno do B. Se B retornar zero - tudo OK. Se retornar outro número (geralmente return -1; ) então o programa A sabe que alguma coisa correu mal e pode trabalhar a partir daí.
 
Se usas void main() não retornas nada ao sair do programa. Com int main() tens que retornar um valor (geralmente - return 0; )
O return do int main() é util quando por exemplo um programa chama outro. Quando o programa A chama o programa B, uma maneira de o programa A tem de saber se o B foi bem executado é através do valor de retorno do B. Se B retornar zero - tudo OK. Se retornar outro número (geralmente return -1; ) então o programa A sabe que alguma coisa correu mal e pode trabalhar a partir daí.

Alguem me pode explicar a diferença entre:
void main ()
e
int main()

Embora ambas funcionem, a implementação mais correcta é int main().

Na verdade, nenhuma dessas implementações está correcta. Segundo a norma C99, existem apenas 2 headers possíveis para a função main:

Código:
int main(void)
int main(int argc, char** argv)

Na 1ª, a função main não recebe nenhum argumento. Na 2ª, recebe argumentos que podem ser acedidos pelo argc e argv. O header int main() representa uma função main que recebe um número variável de argumentos.

http://www.portugal-a-programar.org/forum/index.php/topic,30718.msg236498.html#msg236498
 
Back
Topo