Übungsaufgabe zu Strukturen
-
Ok, danke.
ich hab es mal so versucht, aber da hab ich 22 Fehler. Könnt das so nicht gehn?:
#include <stdlib.h> #include <stdio.h> #include <math.h> #include <string.h> #include <time.h> #define MAXSTRING 10 struct punkt_struct { float x; float y; }; typedef struct punkt_struct punkt; void cropSelection(punkt allePunkte[], int len, punkt p1, punkt p2); void getpunkte(punkt allpoints[], int len); void printpunkte(punkt allpoints[], int z); void getpunkte(punkt allpoints[], int len) { int t; for(t=0; t<len; t++) { allpoints[t].x=rand()%10; allpoints[t].y=rand()%10; printf("%f %f\n",allpoints[t].x, allpoints[t].y); } } void cropSelection(punkt allePunkte[], int len, punkt p1, punkt p2) { int t=0; int anz=0; int z=0; for(t=0; t<len; t++) { if(allePunkte[t].x < p1.x || allePunkte[t].y < p1.y || allePunkte[t].x > p2.x || allePunkte[t].y > p2.y) { anz++; } else { allePunkte[t-anz].x=allePunkte[t].x; allePunkte[t-anz].y=allePunkte[t].y; z++: } } printpunkte(allePunkte,z); printf("Anzahl der nicht im Rechteck liegenden Punkte: %d",anz); } void printpunkte(punkt allpoints[], int z) { int t=0; //printf("___________________________________________\n"); for(t=0; t<z; t++) { printf("(%f/%f)\n",allpoints[t].x, allpoints[t].y); } } int main() { punkt punkte[MAXSTRING]; punkt point1 = {1,2}; punkt point2 = {5,4}; //srand(time(NULL)); getpunkte(punkte,MAXSTRING); cropSelection(punkte,MAXSTRING,point1,point2); return(0); }
-
Wichtig ist der erste Fehler. Das danach sind meist Folgefehler.
Bei dir ist es ein : in Zeile 51.
-
Oh, so ein doofer Fehler :D.
Kann man diese Möglichkeit als "Punkte löschen" einordnen?
Ich meine ich verkleinere ja nicht wirklich das Array bzw. Lösche die Punkte...
ich verschiebe ja nur n-Punkte die im Rechteck liegen an die 1. n-Stellen und gib sie dann aus.Kann man das "Löschen" nennen?
Oder gibts da noch eine bessere Möglichkeit?
-
robin987 schrieb:
Kann man das "Löschen" nennen?
Ja.
Dateien werden ja auch dadurch gelöscht, dass der Speicherbereich als ungenutzt markiert wird.
Bei Strings werden durch die terminierende '\0' alle nachfolgenden Zeichen nicht mehr beachtet.