Programma in C (200075)
Fare un programma in C che permette di visualizzare l'equazione della retta passante per due punti dati
Miglior risposta
Questo dovrebbe fare il caso tuo...
... l'ho testato (compilato ed eseguito) e pare funzionare correttamente, ovviamente manca tutta la parte per il controllo degli errori in input per cui ci si aspetta che chi inserissce i dati li dia corretti... ;)
/*equazione retta per due punti*/
#include
int coefficente_angolare (int a, int b); // prototipo funzione calcolo coeffiente angolare (numeratore e denominatore)
int ordinata_all_origine (int canum, int caden, int ax, int ay); // prototipo funzione calcolo ordinata all'origine (q)
int main () // programma principale
{
int x1, y1, x2, y2, mn, md, q; // dichiarazione variabili programma principale
printf("immettere ascissa punto A: " );
scanf("%d", &x1);
printf("immettere ordinata punto A: " );
scanf("%d", &y1);
printf("immettere ascissa punto B: " );
scanf("%d", &x2);
printf("immettere ordinata punto B: " );
scanf("%d", &y2);
if (y1 == y2) // controllo se retta parallela asse x
{
printf("Retta parallela all'asse delle ascisse.\n" );
printf(".\n" );
printf("y = %d.\n", y1);
return 0;
}
if (x1 == x2) // controllo se retta parallela asse y
{
printf("Retta parallela all'asse delle ordinate.\n" );
printf(".\n" );
printf("x = %d.\n", x1);
return 0;
}
if (x1 == x2 && y1 == y2) // controllo se inseriti due punti coincidenti
{
printf("Punti coincidenti!!!.\n" );
return 0;
}
mn = coefficente_angolare (y1, y2); // calcolo numeratore coefficente angolare
md = coefficente_angolare (x1, x2); // calcolo denominatore coefficente angolare
q = ordinata_all_origine (mn, md, x1, y1); // calcolo ordinata all'origine (coefficente q)
printf("L'equazione della retta passante per i punti A e B è.\n" );
printf(".\n" );
if (md == 1 || md == -1) // caso denominatore coefficente angolare = 1 o -1
{
printf("y = %dx + %d", mn, q);
return 0;
}
printf("y = (%d / %d)x + (%d / %d)", mn, md, q, md);
return 0;
}
int coefficente_angolare (int a, int b) // dichiarazione funzione coefficente angolare numeratore e denominatore
{
int ca;
ca = (b - a);
return ca;
}
int ordinata_all_origine (int canum, int caden, int ax, int ay) // dichiarazione funzione calcolo ordinata all'origine (q)
{
int oo;
oo = -(canum*ax) + (caden*ay);
return oo;
}
:hi Max
P.S.
Non chiedermi troppo perchè anch'io sono alle prime armi.... :lol
... l'ho testato (compilato ed eseguito) e pare funzionare correttamente, ovviamente manca tutta la parte per il controllo degli errori in input per cui ci si aspetta che chi inserissce i dati li dia corretti... ;)
/*equazione retta per due punti*/
#include
int coefficente_angolare (int a, int b); // prototipo funzione calcolo coeffiente angolare (numeratore e denominatore)
int ordinata_all_origine (int canum, int caden, int ax, int ay); // prototipo funzione calcolo ordinata all'origine (q)
int main () // programma principale
{
int x1, y1, x2, y2, mn, md, q; // dichiarazione variabili programma principale
printf("immettere ascissa punto A: " );
scanf("%d", &x1);
printf("immettere ordinata punto A: " );
scanf("%d", &y1);
printf("immettere ascissa punto B: " );
scanf("%d", &x2);
printf("immettere ordinata punto B: " );
scanf("%d", &y2);
if (y1 == y2) // controllo se retta parallela asse x
{
printf("Retta parallela all'asse delle ascisse.\n" );
printf(".\n" );
printf("y = %d.\n", y1);
return 0;
}
if (x1 == x2) // controllo se retta parallela asse y
{
printf("Retta parallela all'asse delle ordinate.\n" );
printf(".\n" );
printf("x = %d.\n", x1);
return 0;
}
if (x1 == x2 && y1 == y2) // controllo se inseriti due punti coincidenti
{
printf("Punti coincidenti!!!.\n" );
return 0;
}
mn = coefficente_angolare (y1, y2); // calcolo numeratore coefficente angolare
md = coefficente_angolare (x1, x2); // calcolo denominatore coefficente angolare
q = ordinata_all_origine (mn, md, x1, y1); // calcolo ordinata all'origine (coefficente q)
printf("L'equazione della retta passante per i punti A e B è.\n" );
printf(".\n" );
if (md == 1 || md == -1) // caso denominatore coefficente angolare = 1 o -1
{
printf("y = %dx + %d", mn, q);
return 0;
}
printf("y = (%d / %d)x + (%d / %d)", mn, md, q, md);
return 0;
}
int coefficente_angolare (int a, int b) // dichiarazione funzione coefficente angolare numeratore e denominatore
{
int ca;
ca = (b - a);
return ca;
}
int ordinata_all_origine (int canum, int caden, int ax, int ay) // dichiarazione funzione calcolo ordinata all'origine (q)
{
int oo;
oo = -(canum*ax) + (caden*ay);
return oo;
}
:hi Max
P.S.
Non chiedermi troppo perchè anch'io sono alle prime armi.... :lol
Miglior risposta