[C] Programma Rettangolo-Punto
Devo realizzare un programma in C che date le coordinate di un punto verifica se è interno ad un dato rettangolo (che può avere i lati solo paralleli agli assi coordinati).
Deve essere fatto creando delle strutture per il punto e il per il rettangolo.
Questo è il codice che ho scritto:
La compilazione funziona. quando parte però dopo aver inserito i dati mi da egmentation error.
Dov'è il problema? non ho grande dimestichezza con gli struct essendo il primo programma in cui li uso.
Grazie anticipatamente per l'aiuto.
Deve essere fatto creando delle strutture per il punto e il per il rettangolo.
Questo è il codice che ho scritto:
#include <stdio.h> #include <stdlib.h> #include <math.h> struct punto { char nome; float x; float y; }; struct rettangolo { float verticale1; float verticale2; float orizzontale1; float orizzontale2; }; int ordina (struct rettangolo R) { float a; if (R.verticale1>R.verticale2) { a=R.verticale1; R.verticale1=R.verticale2; R.verticale2=a; } if (R.orizzontale1>R.orizzontale2) { a=R.orizzontale1; R.orizzontale1=R.orizzontale2; R.orizzontale2=a; } return; } int internoesterno (struct punto P, struct rettangolo R) { if (((R.verticale1<P.x) && (P.x<R.verticale2)) && ((R.orizzontale1<P.y) && (P.y<R.orizzontale2))) { printf("%s", "Il punto "); printf("%s", P.nome); printf("%s\n", " è interno al rettangolo."); } else { printf("%s", "Il punto "); printf("%s", P.nome); printf("%s\n", " è esterno al rettangolo."); } return; } int main (int argc, char*argv[]) { struct punto P; struct rettangolo R; scanf("%c\n", &(P).nome); scanf("%f\n", &(P).x); scanf("%f\n", &(P).y); scanf("%f\n", &(R).verticale1); scanf("%f\n", &(R).verticale2); scanf("%f\n", &(R).orizzontale1); scanf("%f\n", &(R).orizzontale2); ordina(R); internoesterno(P, R); exit(EXIT_SUCCESS); }
La compilazione funziona. quando parte però dopo aver inserito i dati mi da egmentation error.
Dov'è il problema? non ho grande dimestichezza con gli struct essendo il primo programma in cui li uso.
Grazie anticipatamente per l'aiuto.
Risposte
NdM: Ho editato il tuo post in modo che usasse il tag code per mostrare il codice. Ricordati di usarlo in futuro.
Il problema è comunque probabilmente in questa riga:
Perché i punti hanno un nome? E soprattutto perché usi un carattere e lo leggi in quel modo? Sono certo che quella riga faccia qualcosa di completamente diverso da quello che ti aspetti..
Il problema è comunque probabilmente in questa riga:
scanf("%c\n", &(P).nome);
Perché i punti hanno un nome? E soprattutto perché usi un carattere e lo leggi in quel modo? Sono certo che quella riga faccia qualcosa di completamente diverso da quello che ti aspetti..
bene! così funziona. una domanda: io chiedo di inserire sei valori in imput ma invece il programma me ne chiede 7. funziona comunque. ma vorrei saper perchè.
"franzu":
bene! così funziona. una domanda: io chiedo di inserire sei valori in imput ma invece il programma me ne chiede 7. funziona comunque. ma vorrei saper perchè.
Hai 7 scanf.