Aiutatemi a passare un'esame....
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 9 di 9

Discussione: Aiutatemi a passare un'esame....

Cambio titolo
  1. #1
    Utente L'avatar di B_ackbon_E
    Registrato il
    09-04
    Località
    Qualche volta a casa mia
    Messaggi
    3.871

    Aiutatemi a passare un'esame....

    Ciao a tutti !

    Sto cercando di superare un esame di programmazione con Dev-Pascal... Dove riuscire a creare un programma che, una volta inseriti due punti, crei un grafico e una retta che passi per questi due punti dati.

    Vi prego, sapete come fare???

  2. #2
    Utente L'avatar di pentothal
    Registrato il
    10-02
    Località
    Firenze
    Messaggi
    4.692
    Quindi, si devono inserire 2 punti:
    A=(x1,y1) e B=(x2,y2)
    L'equazione della retta passante per due punti è la seguente:
    (y-y1)/(y2-Y1)=(x-x1)/(x2-x1)

    Supponiamo di passare alla formula le coordinate x e di ottenere le rispettive coordinate y, la formula cambia in:
    y=(((x-x1)/(x2-x1))*(y2-y1))-y1

    ###

    Io non so il pascal ma per darti una idea (in pseudocodice):

    1) acquisisci da tastiera le coordinate del punto A (ossia x1 e y1) e del punto B (ossia x2 e y2)

    2) prendi un certo range di valori di x ed esegui il seguente ciclo:

    for(che va da x=0 fino alla x massima (ossia l'ultimo pixel della modalità grafica)){
    y=(((x-x1)/(x2-x1))*(y2-y1))-y1;
    disegnaPixel(x, y);
    }

    A parole, data una qualsiasi coordinata X, il ciclo trova la corrispondente coordinata Y. Questa coppia di valori (X,Y) è il punto appartenente alla retta passante per i punti A e B.

    ###

    in c++ il codice è il seguente (se ti può essere d'aiuto):

    void main(){

    /* inizializzazione variabili */
    int colore;
    float x, y, x1, y1, x2, y2, inc;
    colore=2;
    inc=0,1;

    /*acquisizione punto A*/
    cin>>x1;
    cin>>y1;

    /*acquisizione punto B*/
    cin>>x2;
    cin>>y2;

    /* Inizializzazione modalità grafica */
    /* (cambia secondo il linguaggio e l'ambiente di svilupo) */
    initgraph();

    /* Costruzione della retta */
    for(x=0; x<getmaxx (); x+=inc){
    y=(((x-x1)/(x2-x1))*(y2-y1))-y1;
    putpixel(x,y,colore); // funzione che accende un pixel sullo schermo
    }

    /* Chiusura modalità grafica */
    getch();
    closegraph();
    }

    ###

    NOTA: l'esempio che ti ho fatto, per motivi di semplicità, costruisce solo le rette sul primo quadrante. Se vuoi fare una retta che vada anche negli altri quadranti devi fare cosi (sempre espresso in c++):

    il programma è uguale a prima, solo che nella parte dell'inizializzazione variabili devi aggiugere:
    float origineX = getmaxx ()/2;
    float origineY = getmaxy()/2;
    ossia il centro dello schermo, ossia lo zero logico (centro) del grafico.

    Poi devi modicifare quella parte del ciclo che accende il pixel sullo schrmo, ossia la funzione putpixel():
    putpixel(originex+x,origineY+y,colore);
    Ultima modifica di pentothal; 31-10-2004 alle 19:41:18

  3. #3
    MM.FF.NN. L'avatar di .::Morgan::.
    Registrato il
    08-04
    Località
    Padova
    Messaggi
    1.819
    Ma la parte del grafico è fatta in c++?

  4. #4
    Utente L'avatar di pentothal
    Registrato il
    10-02
    Località
    Firenze
    Messaggi
    4.692
    Citazione .::Morgan::.
    Ma la parte del grafico è fatta in c++?
    ovvio, non so il pascal, quindi non so come inizializzare la modalità grafica... spero che B_ackbon_E lo sappia...

  5. #5
    Utente Tostapane L'avatar di WarriorXP
    Registrato il
    10-02
    Località
    MI C.le - LE
    Messaggi
    23.423
    [OT]Ma si studia Pascal all'università? Che facoltà é?[/OT]

  6. #6
    Oh my iPod! L'avatar di er patata
    Registrato il
    11-02
    Località
    Bari Downtown
    Messaggi
    13.118
    Citazione WarriorXP
    [OT]Ma si studia Pascal all'università? Che facoltà é?[/OT]
    'gnurant, è l'esame di Informatica Debosciata

    A volte credo di essere fin troppo nerd. Naa, never too much.
    Vuoi personalizzare l'aspetto del forum di GamesRadar? Clicca qui!
    Consortium.ru 2004 3D Motion Demo, shocking graphics. (QuickTime 60MB)

    Vuoi guadagnare soldi velocemente? Clicca qui!

  7. #7
    Utente L'avatar di pentothal
    Registrato il
    10-02
    Località
    Firenze
    Messaggi
    4.692
    Citazione WarriorXP
    [OT]Ma si studia Pascal all'università? Che facoltà é?[/OT]
    Dipende che università è... non mi syupirei di trovare linguaggi obsoleti in corsi che rimiscolano linformatica a chissà quale altra disciplina...

  8. #8
    MM.FF.NN. L'avatar di .::Morgan::.
    Registrato il
    08-04
    Località
    Padova
    Messaggi
    1.819
    Citazione pentothal
    ovvio, non so il pascal, quindi non so come inizializzare la modalità grafica... spero che B_ackbon_E lo sappia...
    Io ho provato a fare quello che hai detto in c++ col borland, ma alla parte grafica va in errore. Quali file bisogna includere per il grafico?

  9. #9
    Utente L'avatar di pentothal
    Registrato il
    10-02
    Località
    Firenze
    Messaggi
    4.692
    #include <graphics.h> // libreria grafica
    #include <iostram.h> // per i cin e cout (l'unica cosa che ho usato del c++ )
    #include <stdio.h> // serve alla graphics.h
    #include <conio.h> // per eseguire quel getch() in fondo

    Poi, initGraph() non esiste, l'ho inventata io per riassumere l'inizializzazione della modalità grafica, purtroppo questa varia a seconda dell'ambiente di sviluppo che usi, e sinceramente non posso verificare perchè non ho installato un compilatore (sono anni che non faccio un programma in c o in c++)

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •