Hilfe beim Dateneinlesen für Programmieraufgabe



  • Hallo, für mein Studium muss ich folgende aufgabe programmieren:

    Schreiben Sie ein Programm KoKonv.exe, das 3dimensionale
    kartesische Koordinaten wahlweise in Zylinderoder
    Kugelkoordinaten umrechnet und umgekehrt. Die Eingangskoordinaten sollen in Form einer Nx3Matrix
    in einer Textdatei hinterlegt sein, deren Name KoKonv.exe als Kommandozeilenparameter übergeben wird. Zusätzlich soll in der Datei hinterlegt sein, um welches KOSystem
    es sich bei den Daten dort handelt. Die Ausgangsdaten sollen optional in eine Datei geschrieben werden, die denselben Namen hat wie die Datei mit den Eingangsdaten, aber eine andere Dateinamenerweiterung (z.B. Daten.xyz >
    Daten.zyl).

    Ich habe dabei schon folgendes Geschrieben :
    #include <stdio.h>
    #include <math.h>

    int main (int argc, char * argv[]) // Hauptfunktion mit Kommandozeilenparameter interpretieren
    {

    FILE*daten; // Deklaration
    float eingdaten[3];
    float i;

    if (argc<2)
    {printf("Falsche Eingabe");}
    else
    {
    daten=fopen(argv[2],"r");

    habe jetzt aber folgendes problem.
    ich weiß nicht wie ich die daten vernünftig einlesen kann um damit weiterzurechnen.
    denke mal ich muss das irgendwie mit fgets machen, aber weiß nicht genau wie.
    über hilfe wäre ich sehr dankbar!!!



  • Da bist du schon auf dem richtigen Weg. Erst mit fgets ganze Zeilen und daraus kannst du dann formatiert direkt in deine Variablen lesen.

    man: fgets(3) und man: sscanf(3) sind die Sachen, die du dir mal durchlesen solltest. Wenn dir die Manpages zu schwer vorkommen sollten, kannst du auch bei www.cppreference.com nachschauen, da gibt's sogar manchmal Beispiele anbei.

    Wenn du dann zu den Funktionen noch konkrete Fragen hast, kannst du sie ja hier stellen.

    PS: Benutze doch bitte in Zukunft die cpp-Tags



  • Hi!
    So wie ich das sehe, bist du selbst für die Erstellung der Dateien verantwortlich. Du kannst scanf direkt zum einlesen benutzen, den Umweg über fgets kannst du dir sparen.



  • ich hätte das jetzt so gelöst.
    geht das oder hab ich irgendwas falsch gemacht.
    mir gehts nur um den bereich mit fgets und fscanf

    float xeing,yeing,zeing;
    float roheing,alphaeing,höheeing;
    float reing,phieing,thetaeing;
    int i;
    FILEdaten;
    FILE
    fOUT;
    int line[100];

    if (strcmp(argv[2],"Daten.xyzk")==0)
    {
    daten=fopen(argv[2],"r");
    fOUT=fopen("Umrechnung.ku","w");

    while (i!=EOF)
    {
    i=fgets(line,100,daten);
    fscanf(line,"%f,%f,%f",&xeing,&yeing,&zeing); //Daten einlesen und Variablen zuweisen

    Ka_Ku(xeing,yeing,zeing);

    };
    fclose(daten);

    fprintf(fOUT,"Karthesisch in Kugelkoordinaten");

    fclose(fOUT);



  • sind die ganzen erstsemestler zu dumm die cpp-tags zu benutzen?
    Seit 2 monaten, häuft sich das extrem.


Anmelden zum Antworten