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

C++ help detesto o void --'

Discussão em 'Programação' iniciada por Interich, 10 de Outubro de 2008. (Respostas: 15; Visualizações: 1558)

  1. Interich

    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.
     
  2. m00s

    m00s Power Member

    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: 10 de Outubro de 2008
  3. Armadillo

    Armadillo Folding Member

    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: 10 de Outubro de 2008
  4. Interich

    Interich Power Member

    apenas escrevi o que a folha dizia --'
     
  5. Armadillo

    Armadillo Folding Member

    duvidas concretas... onde estão?:P

    cumps
     
  6. arconada

    arconada Power Member

    Eu por acaso adoro o void... ou é pq não tenho que fazer return ou porque não vou ter parametros de entrada :)
     
  7. m00s

    m00s Power Member

    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: 10 de Outubro de 2008
  8. ravager

    ravager Power Member

    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: 10 de Outubro de 2008
  9. Tyran

    Tyran Power Member

    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
     
  10. LuisFP

    LuisFP Power Member

    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: 10 de Outubro de 2008
  11. theforbidden1

    theforbidden1 Banido

    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)
    Ninguem entende muito bem porque é que essa "função" não tem na sua assinatura 1 recta e 2 pontos...

    iv)
    Cumo? uma recta é contituida por uma infinidade de pontos, como é que e possível lista-los a todos?

    v)

    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 :)
     
  12. arconada

    arconada Power Member

    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...
     
  13. owny

    owny Power Member

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

    ravager Power Member

    É 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 ()
     
  15. CruDeLioS

    CruDeLioS Power Member

    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í.
     
  16. Baderous

    Baderous Banido

    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
     

Partilhar esta Página